d1899d108b026b7d336febcab60a550b9fafc7e6
[mono.git] / mono / metadata / ChangeLog
1 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
2
3         * class.c (mono_class_get_vtable_entry): Avoid a crash if mono_class_setup_vtable ()
4         fails.
5
6 2010-06-25  Mark Probst  <mark.probst@gmail.com>
7
8         * class.c (mono_class_inflate_generic_method_full_checked): Added
9         a comment regarding a hack in mini-trampolines.c.
10
11 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
12
13         * sgen-gc.c (mono_gc_wbarrier_value_copy_bitmap): Use SIZEOF_VOID_P instead of
14         sizeof(SIZEOF_VOID_P) which is 4.
15
16         * gc.c (mono_gc_init): Move the GC disabled check to *-gc.c.
17
18 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
19
20         * null-gc.c boehm-gc.c: Define the mono_gc_ pthread wrapper functions for these
21         GCs too.
22
23         * *-gc.c (mono_gc_wbarrier_value_copy_bitmap): Implement this for all GCs.
24
25         * sgen-gc.c (mono_gc_is_moving): New function returning whenever this GC can move
26         objects.
27
28         * *-gc.c (mono_gc_set_desktop_mode): New function setting up the GC to work in
29         desktop mode.
30
31 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
32
33         * *-gc.c (mono_gc_get_description): New function returning a human readable
34         description of the current GC.
35
36 2010-06-24  Miguel de Icaza  <miguel@novell.com>
37
38         * mono-hash.c: Moved here from mono/utils as this file is
39         GC-aware, and the utils directory is not.
40
41 2010-06-23  Miguel de Icaza  <miguel@novell.com>
42
43         * Makefile.am: Add support for building a sgen-aware versions of
44         the libraries: libmonoruntimesgen.la libmonoruntimesgen-static.la,
45         they share all the components of the default, but use a differen
46         set of CFLAGS to enable SGEN instead.
47
48         Put the BOEHM defines in the CFLAGS definition. 
49
50         * domain-internals.h (MonoJitInfo): this structure used to have
51         different sizes depending on the GC that was configured (Boehm vs
52         SGen).   I have removed this difference for the sake of avoiding
53         the complexity of dealing with the mono/arch directory requiring
54         GC-specific changes to their Makefiles.
55
56 2010-06-23  Mark Probst  <mark.probst@gmail.com>
57
58         * sgen-gc.c, sgen-los.c, sgen-marksweep.c: Fix warnings.
59
60 2010-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
61
62         * metadata.c (mono_metadata_type_hash): Don't hash
63         the type kind for dynamic types since it can change.
64
65 2010-06-22 Geoff Norton  <gnorton@novell.com>
66
67         * sgen-os-mach.c: We cannot call malloc from the gc, so we need to use
68         alloca instead to prevent a deadlock.
69
70 2010-06-22  Geoff Norton  <gnorton@novell.com>
71
72         * domain.c: Allow gettings the tls key, since we need it for
73         cross thread tls poking in sgen-mach
74         * sgen-gc.(c|h), gc-internal.h: Rework sgen into having some functions
75         in external files for platform specific STW support.
76         * sgen-os-mach.c: Add a new mach kernel backend implementation of STW.
77         * sgen-os-posix.c: Move the existing posix signal based STW here.
78
79 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
80
81         * marshal.c (mono_array_to_lparray): Allow MONO_TYPE_PTR. Fixes #615952.
82
83 2010-06-21 Rodrigo Kumpera  <rkumpera@novell.com>
84
85         * object-internals.h: Map new PropertyBuilder fields.
86
87         * reflection.c (property_encode_signature): Emit an instance
88         signature if property's callconv is hasthis.
89
90         * appdomain.c: Bump corlib version.
91
92 2010-06-20  Jb Evain  <jbevain@novell.com>
93
94         * metadata-verify.c: do not consider the assembly invalid if it
95         doesn't have a #Blob stream as resource assemblies don't
96         necessarily have one.
97
98 2010-06-17  Geoff Norton  <gnorton@novell.com>
99
100         * sgen-archdep.h: sgen support for arm linux and darwin.
101
102 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
103
104         * loader.c (mono_method_get_header): Avoid a crash if the declaring method
105         has a faulty header.
106
107 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
108
109         * sgen-gc.c (mono_gc_wbarrier_value_copy_bitmap): Work in a similar
110         way to mono_gc_wbarrier_value_copy but takes a bitmap that
111         indicates which slots need a write barrier.
112
113 2010-06-14  Jonathan Pryor <jpryor@novell.com>
114
115         * Makefile.am (EXTRA_DIST): Add runtime.h.
116
117 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
118
119         * object.c (build_imt_slots): Don't crash if callbacks.get_imt_trampoline is not set.
120
121 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
122
123         * object.c (mono_method_add_generic_virtual_invocation): Fix the computation of the
124         IMT slot which is passed to callbacks.get_imt_trampoline.
125
126 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
127
128         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
129         imt trampoline per imt slot when using LLVM.
130
131 2010-06-10  Jonathan Pryor <jpryor@novell.com>
132
133         * object.c (mono_runtime_run_main): Move fire_process_exit_event() into
134           runtime.c:mono_runtime_shutdown().
135         * runtime.c: Added; adds mono_runtime_shutdown(), which invokes the
136           AppDomain.ProcessExit event in all AppDomains.
137
138 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
139
140         * marshal.c (mono_marshal_get_runtime_invoke): Don't set *exc to NULL, it is now
141         done by the caller.
142
143 2010-06-05  Mark Probst  <mark.probst@gmail.com>
144
145         * sgen-los.c: Keep bitmaps on chunk usage in LOS sections to speed
146         up freeing.
147
148 2010-06-05  Mark Probst  <mark.probst@gmail.com>
149
150         * sgen-gc.c, sgen-los.c: New LOS allocator that allocates large
151         segments of memory at once, to reduce the number of mmap/munmap
152         calls.
153
154 2010-06-05  Mark Probst  <mark.probst@gmail.com>
155
156         * sgen-gc.c, sgen-protocol.c, sgen-protocol.h: Protocol degraded
157         allocations and distinguish between normal, degraded and pinned
158         allocations.
159
160 2010-06-05  Mark Probst  <mark.probst@gmail.com>
161
162         * sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c: Make degraded
163         allocations count toward major collections and trigger major
164         collections from degraded allocations if appropriate.
165
166 2010-06-05  Mark Probst  <mark.probst@gmail.com>
167
168         * sgen-marksweep.c (ms_get_empty_block): Update heap boundaries.
169
170 2010-06-05  Mark Probst  <mark.probst@gmail.com>
171
172         * sgen-gc.c: Enable mark&sweep again.
173
174 2010-06-05  Mark Probst  <mark.probst@gmail.com>
175
176         * sgen-gc.c: Increase the maximum small object size to 8000 bytes.
177
178 2010-06-05  Mark Probst  <mark.probst@gmail.com>
179
180         * sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c: Have only one
181         major heap allowance for minor collections, instead of two
182         separate ones for small and large objects.  This reduces the
183         number of major collections.
184
185 2010-06-04  Marek Habersack  <mhabersack@novell.com>
186
187         * icall.c (ves_icall_MonoType_GetEvent): be case insensitive is
188         the BFLAGS_IgnoreCase is raised
189
190 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
191
192         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Rewrite this so it returns
193         all information in a single structure. Return information about scopes as well.
194
195         * mono-debug.c (mono_debug_lookup_locals): Ditto.
196
197 2010-06-02  Geoff Norton  <gnorton@novell.com>
198
199         * appdomain.c: If we are running with IOMAP we might
200         have been provided a string that isn't case-aware for our file-
201         system, so we need to use io-portability to check if the file 
202         exists, rather than a simple glib test.
203
204         Fixes #608849
205
206 2010-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
207
208         * verify.c (verify_generic_parameters): Verify if
209         there are not loops in constraints.
210
211 2010-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
212
213         * verify.c (is_compatible_boxed_valuetype): Constaints
214         must be recursively checked if one generic argument
215         has a constraint on another.
216
217         Fixes #610625.
218
219 2010-05-31  Miguel de Icaza  <miguel@novell.com>
220
221         * console-unix.c (terminal_get_dimensions): Fix my previous
222         botched commit and return the actual value obtained from the ioctl.
223
224 2010-05-29  Mark Probst  <mark.probst@gmail.com>
225
226         * sgen-gc.c: Always use DESC_TYPE_RUN_LENGTH for objects without
227         references so that we don't have to do the cache-cold fetch of the
228         class in copy_object_no_checks().
229
230 2010-05-29  Robert Jordan  <robertj@gmx.net>
231
232         * marshal.c (mono_marshal_asany): marshal LPWSTRs using
233         mono_marshal_string_to_utf16_copy () to avoid memory allocation
234         mismatches under Windows. Fixes pinvoke2:test_0_asany.
235
236 2010-05-28  Mark Probst  <mark.probst@gmail.com>
237
238         * sgen-gc.c: Change default nursery size to 4MB, because it
239         improves performance on many applications and benchmarks.
240
241 2010-05-28  Mark Probst  <mark.probst@gmail.com>
242
243         * sgen-gc.c, sgen-scan-object.h: Value types in arrays are not
244         always aligned to ALLOC_ALIGN.  To handle this, shift the size in
245         the GC descriptor by one bit, and don't encode the size for value
246         types not containing references.  Also get rid of
247         DESC_TYPE_STRING.
248
249 2010-05-28  Mark Probst  <mark.probst@gmail.com>
250
251         * sgen-gc.c: Don't depend on the size encoded in a GC descriptor
252         other than for remset processing.
253
254 2010-05-28  Mark Probst  <mark.probst@gmail.com>
255
256         * sgen-gc.c: More and better remset consistency checks.
257
258 2010-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
259
260         * sgen-gc.c: Add a note about the int[] trick to avoid some
261         memset.
262
263 2010-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
264
265         * sgen-gc.c (sort_addresses): Use heap sort since it has better
266         performance.
267
268         This helps programs with lots of threads or thread with big stacks
269         since the bottleneck the pin queue can get quite big.
270
271 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
272
273         * sgen-gc.c (search_fragment_for_size): Move fragment setup into
274         a separate function called setup_fragment.
275
276         * sgen-gc.c (search_fragment_for_size_range): Variant of
277         search_fragment_for_size that does search for a secondary smaller
278         size.
279
280         * sgen-gc.c (mono_gc_alloc_obj_nolock): Use search_fragment_for_size_range
281         for tlab allocation so small fragments are used.
282
283         This patch uses small fragments for tlab allocation when possible in order
284         to improve nursery utilization. With a fixed size tlab this patch is not very
285         usefull but once size gets dynamically adjusted, this will be invaluable.
286
287         Performance under pystone 500k is unchanged. Nursery utilization improves by
288         3.5% and 18 more fragments are used per minor GC.
289
290         Performance under modified binary-tree is unchanged. Nursery utilization
291         improves by 0.5% and 3 more fragments are used per minor GC.
292
293         These numbers make sense since as more pinning happens, more fragments are
294         created and so are the chances of having a bunch of small ones.
295
296 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
297         * sgen-gc.c (mono_gc_alloc_obj_nolock): Avoid wasting space     from
298         the current fragment when allocating a TLAB.
299
300         Reduces number of pystone 500k minor collections by 7%.
301
302 2010-05-25  Martin Baulig  <martin@ximian.com>
303
304         Applying a patch from Lucas Meijer <lucas@lucasmeijer.com>.
305
306         * debug-mono-symfile.c: Release memory from symfiles that were
307         loaded from memory.
308
309 2010-05-24  Zoltan Varga  <vargaz@gmail.com>
310
311         * marshal.c (mono_marshal_free_dynamic_wrappers): Avoid an assert when this is called
312         during shutdown.
313
314 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
315
316         * marshal.c (mono_marshal_get_runtime_invoke): Simplify the code computing the
317         target class and remove some dead code.
318
319 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
320
321         * metadata.c: Add a 'transient' argument to the MonoType creation functions, so
322         the MonoTypes inside method headers can be freed when the header is freed.
323
324 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
325
326         * threadpool.c: Fix the DISABLE_SOCKETS build.
327
328 2010-05-19 Martin Baulig  <martin@novell.com>
329
330         Fix #604911.
331
332         * threads.c (wait_for_tids_or_state_change): Use an
333         alertable WaitForMultipleObjectsEx().
334         (wait_for_tids): Likewise.
335
336 2010-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
337
338         * marshal.c (mono_marshal_init): Register mono_gchandle_get_target
339         icall.
340
341         * marshal.c (mono_delegate_to_ftnptr): Use a gchandle instead of
342         gc tracked memory.
343
344         * marshal.c (mono_marshal_emit_managed_wrapper): Retrieve the first
345         argument from a gchandle.
346
347         * marshal.c: Get rid of the delegate_target_locations hash table.
348
349         Fixes #605295.
350
351 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
352
353         * sgen-gc.c: Use _fast variants for string and array length.
354
355 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
356
357         * sgen-gc.c: Fix counters to be 64 bits.
358
359         * sgen-gc.c (dump_heap): Fix formating strings.
360
361 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
362
363         * sgen-gc.c (global_remset_location_was_not_added): New
364         function that implements a 2 element LRU cache for just
365         added remsets. It is used to avoid adding duplicate ones.
366
367         * sgen-gc.c (add_to_global_remset): Check cache before
368         adding new entry.
369
370         * sgen-gc.c (scan_from_remsets): Don't process global remsets
371         that fail the cache test.
372
373         * sgen-gc.c (scan_from_remsets): Simplify the global remset
374         loop removing one condtion that is not possible.
375
376         A 2 element LRU cache was chosen by profiling IronPython 2.6
377         pytones with 1M passes and corlib compilation.
378
379         For the ipy test duplication was originally 940.92, measured
380         by "Store remsets" divided by "Unique store remsets".
381
382         With a 2-element LRU, duplication went to 1.007. Without the
383         check in scan_from_remsets 1.438.
384
385         With a 16-elements LRU, duplication reduction was negligibe.
386         A single element cache was basically of no use.
387
388         With corlib compilation duplication went from  1.4 to 1.02.
389
390         Performance results is a 20% time decrease for ipy and 2%
391         with corlib.
392 2010-05-16  Zoltan Varga  <vargaz@gmail.com>
393
394         * mono-debug.c (mono_debug_cleanup): Fix a crash in the previous change.
395
396 2010-05-15  Geoff Norton  <gnorton@novell.com>
397
398         * mono-debug.c: Fix a leak of the global table on shutdown.
399
400 2010-05-15  Geoff Norton  <gnorton@novell.com>
401
402         * debug-mono-symfile.(c|h): Add mono_debug_symfile_free_location
403         to clean up MonoDebugSourceLocation's.
404
405 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
406
407         * class.c (mono_class_create_from_typedef): Fail a class
408         if there is a loop with its parent.
409
410         Fixes #598239.
411
412 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
413
414         * loader.c (mono_loader_set_error_type_load): Convert
415         a g_warninig to mono_trace_warning.
416
417 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
418
419         * class.c (mono_class_get_full): Release strings on failure
420         to avoid leaking them.
421
422 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
423
424         * class.c (mono_class_create_from_typedef): Only return
425         the class if no exceptions were detected.
426
427         * class.c (mono_class_create_from_typedef): Don't remove
428         broken classes from class_cache. Just set failure and
429         bail out.
430
431         This fixes a memory a memory leak where resolving the same
432         broken class multiple times resulted in a memory leak.
433
434         The right behavior would be to actually return the class
435         a let the caller figure it out.
436
437 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
438
439         * mono-ptr-array.h: Add mono_ptr_array_sort.
440
441         * reflection.c (mono_image_build_metadata): Replace that ugly
442         qsort call with mono_ptr_array_sort.
443
444 2010-05-13  Mark Probst  <mark.probst@gmail.com>
445
446         * sgen-gc.c: Switch to the copying major collector, because
447         Mark&Sweep is still buggy.
448
449 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
450
451         * reflection.c (mono_image_build_metadata): Don't put managed
452         references on non-tracked memory.
453
454 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
455
456         * sgen-archdep.h (ARCH_COPY_SIGCTX_REGS): Fix this for amd64.
457
458 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
459
460         * icall.c: Switch to mono-ptr-array.h.
461
462 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
463
464         * Makefile.am: Add mono-ptr-array.h.
465
466         * mono-ptr-array.h: New header that implements
467         a GC tracked equivalent of g_ptr_array. 
468
469 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
470
471         * icall.c (ves_icall_Type_GetInterfaces): Rewrite this
472         method to avoid initializing the class.
473
474         Fixes #605115.
475
476 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
477
478         * icall.c (ves_icall_System_MonoType_getFullName): It
479         doesn't require to init the class.
480
481 2010-05-11  Miguel de Icaza  <miguel@novell.com>
482
483         * console-unix.c: Signal handlers now save and restore errno.   We
484         have never had a bug report about this, ioctl does change errno. 
485
486         Hide the unused method.   
487
488         Remove internal declarations from public headers.
489
490         Document what the signal handler is doing
491
492 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
493
494         * sgen-gc.c (clear_unreachable_ephemerons): Clear
495         unreachable keys with a tombstone.
496
497         * sgen-gc.c (mark_ephemerons_in_range): Ignore
498         tombstone keys.
499
500 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
501
502         * icall-def.h:
503         * gc-internals.h:
504         * gc.c: New GC:get_ephemeron_tombstone.
505
506 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
507
508         * appdomain.c (create_exceptions): Rename to
509         create_domain_objects. Create the ephemeron tombstone object.
510
511         * domains-internals.h (MonoDomain): Add new field for the
512         ephemeron tombstone.
513
514         * domain.c (mono_domain_free): Set ephemeron_tombstone to
515         NULL.
516
517 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
518
519         * sgen-gc.c (mono_gc_clear_domain): Both ephemerons
520         and dislinks must be processed before LOS since they
521         could end up with pointers to memory returned to the
522         OS.
523
524 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
525
526         * class.c (mono_class_alloc): New helper function to centralize memory allocation
527         for classes, allocates either from the image mempool or from the heap.
528
529         * class.c: Use mono_class_alloc to allocate memory owned by classes.
530
531         * metadata.c (free_generic_class_dependents): Free more items belonging to
532         generic classes.
533
534 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
535
536         * reflection.c (mono_reflection_method_get_handle): Handle MonoGenericMethod
537         as well. Fixes #604054.
538
539 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
540
541         * metadata-verify.c: MS doesn't mind duplicates in the
542         typeref table. Move it to full verification.
543
544         Fixes #600508.
545
546 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
547
548         * image.c (do_mono_image_load): Report verification
549         errors when loading an image fails.
550
551 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
552
553         * reflection.c (mono_type_get_object): Remove chunk of code
554         no longer in use.
555
556 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
557
558         * icall-def.h
559         * icall.c: Delete some unused icalls.
560
561 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
562
563         * appdomain.c (mono_domain_has_type_resolve): Check for
564         NULL domain objects to make pedump happy.
565
566         * object.c (mono_field_get_value): Assert on NULL object.
567         It's the caller resposibility to check for this.
568
569         * object.c (mono_field_get_value_object): Ditto.
570
571         Fixes #601384.
572
573 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
574
575         * icall.c (ves_icall_type_is_subtype_of): Non iface subtype
576         checks can avoid doing a mono_class_init.
577
578         * icall.c: Remove mono_class_init from a bunch of icalls that
579         don't need it.
580
581         Hopefully we're now lazy enough to fix most victims of #601431.
582
583 2010-05-07  Mark Probst  <mark.probst@gmail.com>
584
585         * sgen-gc.c: Remove REMSET_ROOT_LOCATION.
586
587 2010-05-07  Mark Probst  <mark.probst@gmail.com>
588
589         * sgen-gc.c: Remove unnecessary checks in domain clearing code.
590
591 2010-05-07  Marek Habersack  <mhabersack@novell.com>
592
593         * culture-info-tables.h: updated to include en-TT culture. Fixes
594         bug #594035
595
596 2010-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
597
598         Move mono_class_init from mono_type_get_object to icalls.
599         This causes massive memory savings for Assembly::GetTypes () and
600         make it fail a lot less due to missing dependencies.
601
602         This is a conservative, naive change as it doesn't remove some
603         mono_class_init from places that might not need them. Carefull
604         review of those should follow.
605
606         * reflection.c (mono_type_get_object): Don't mono_class_init the
607         returning type.
608
609         * reflection.c:
610         * cominterop.c:
611         * icall.c:
612         * marshal.c: Call mono_class_init in functions receiving a MonoType
613         object.
614
615         First step into fixing #601431.
616
617 2010-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
618
619         * gc-internal.h: Add new functions required for ephemeron support.
620
621         * gc.c: Implement ves_icall_System_GC_register_ephemeron_array.
622
623         * icall-def.h: Add GC::register_ephemeron_array.
624
625         * object.c (compute_class_bitmap): sys.rt.cs.Ephemeronis an opaque type
626         under sgen. Its fields must not be marked.
627
628         * sgen-gc.c (mono_gc_clear_domain): Call cleanup function for ephemerons.
629
630         * sgen-gc.c (finish_gray_stack): Mark all reachable ephemerons before
631         handling finalizable objects. Clean dead ones after all finalizable
632         handling.
633
634         * sgen-gc.c (dump_heap): Add new kind of internal memory.
635
636         * sgen-gc.c (null_ephemerons_for_domain): Remove from the list ephemeron
637         arrays from the dead domain.
638
639         * sgen-gc.c (clear_unreachable_ephemerons): Clear dead ephemerons entries.
640
641         * sgen-gc.c (mark_ephemerons_in_range): Mark/Copy all ephemeron values
642         whose keys are reachable.
643
644         * sgen-gc.c (mono_gc_ephemeron_array_add): Register the array into the
645         list of live ephemeron arrays.
646
647 2010-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
648
649         * class.c (mono_class_layout_fields): Don't perform alignment
650         if align is zero.
651
652         * class.c (mono_class_layout_fields): Init field related information
653         to sane defaults.
654
655 2010-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
656
657         * verify.c (mono_verifier_verify_class): Verify the constraint
658         of generic type definitions.
659
660 2010-05-04  Mark Probst  <mark.probst@gmail.com>
661
662         * sgen-marksweep.c: Simplify free list maintenance in sweep.
663
664 2010-05-02  Mark Probst  <mark.probst@gmail.com>
665
666         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Unify
667         major_do_collection() across the two major collectors.
668
669 2010-05-02  Mark Probst  <mark.probst@gmail.com>
670
671         * sgen-gc.c: Add heavy statistics counter for re-added global
672         remsets.
673
674 2010-05-02  Mark Probst  <mark.probst@gmail.com>
675
676         * sgen-marksweep.c, sgen-gc.c: Use one mark bit per ALLOC_ALIGN to
677         get rid of a division in critical code.
678
679 2010-04-29  Mark Probst  <mark.probst@gmail.com>
680
681         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Have separate
682         blocks for objects without references in mark&sweep, to improve
683         performance.
684
685 2010-04-28  Mark Probst  <mark.probst@gmail.com>
686
687         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Bring heavy
688         statistics up-to-date.
689
690 2010-04-27  Mark Probst  <mark.probst@gmail.com>
691
692         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Support
693         heap-dump for mark&sweep.
694
695 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
696
697         * loader.c (mono_method_get_header): Move the is_inflated case before the
698         wrapper case, as a method can be both.
699
700 2010-04-27  Mark Probst  <mark.probst@gmail.com>
701
702         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Don't do a
703         separate pass to scan pinned and large object but use the gray
704         queue like for regular objects.
705
706 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
707
708         * boehm-gc.c: Applied patch from Robert Nagy (robert@openbsd.org). Include
709         string.h for memmove.
710
711         socket-io.c: Applied patch from Robert Nagy (robert@openbsd.org).
712         ipaddress_to_struct_in6_addr() is only needed when
713         defined(HAVE_STRUCT_IP_MREQN) || defined(HAVE_STRUCT_IP_MREQ).
714
715 2010-04-25  Mark Probst  <mark.probst@gmail.com>
716
717         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Properly
718         separate copy_object functions for major vs nursery.  Allows us to
719         get rid of a few checks and the start and end parameters for many
720         functions.
721
722 2010-04-25  Mark Probst  <mark.probst@gmail.com>
723
724         * sgen-marksweep.c, sgen-gc.c, sgen-major-copying.c,
725         sgen-protocol.c, sgen-protocol.h, Makefile.am: Major Mark&Sweep
726         collector.
727
728 2010-04-25  Zoltan Varga  <vargaz@gmail.com>
729
730         * class.c (mono_class_create_from_typedef): Initialize class->nested_in after
731         calling setup_mono_type () since the nested parent could recursively reference
732         the nested class using generic constraints. Fixes #599469.
733
734 2010-04-24  Mark Probst  <mark.probst@gmail.com>
735
736         * sgen-gc.c, sgen-pinning.c, sgen-major-copying.c: Major collector
737         abstraction.
738
739 2010-04-24  Mark Probst  <mark.probst@gmail.com>
740
741         * sgen-gc.c: Remove more unneeded code.
742
743 2010-04-24  Mark Probst  <mark.probst@gmail.com>
744
745         * sgen-gc.c: Disable managed allocator and wbarrier when the
746         binary protocol is enabled.
747
748 2010-04-24  Mark Probst  <mark.probst@gmail.com>
749
750         * sgen-gc.c: Put nursery-fragment-cleaning into its own function.
751
752 2010-04-24  Mark Probst  <mark.probst@gmail.com>
753
754         * sgen-gc.c: Remove a few commented out and unneeded bits.
755
756 2010-04-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
757
758         * threadpool.c: patch from Robert Nagy that fixes a nullref and
759         uses mono_sem_wait instead of mono_sem_timedwait for openbsd.
760
761 2010-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
762
763         * icall.c (ves_icall_type_is_assignable_from): Properly handle byref
764         types.
765
766         Fixes #331126
767
768 2010-04-21  Mark Probst  <mark.probst@gmail.com>
769
770         * sgen-gc.c: Turn off semi-precise stack mark.
771
772 2010-04-20  Sebastien Pouliot  <sebastien@ximian.com>
773
774         * reflection.c (mono_custom_attrs_from_index): Use right function
775         to free 'list' (i.e. g_list_free) if the verifier fails.
776
777 2010-04-19 Rodrigo Kumpera  <rkumpera@novell.com>
778
779                 * verify.c: Handle the case where mono_type_get_underlying_type_any
780                 returns NULL. Remove duplicated code between MONO_TYPE_GENERICINST
781                 and MONO_TYPE_VALUETYPE in those case.
782
783                 Based on a slightly modified patch by Sebastien Pouliot  <sebastien@ximian.com>
784
785                 Hopefully Fixes #564253.
786
787 2010-04-19 Gonzalo Paniagua Javier <gonzalo@novell.com>
788
789         * domain-internals.h: made threadpool_jobs volatile.
790         * mono-wsq.c: add an assert to verify that the threadpool cleaned up
791         all local jobs.
792         * threadpool.c:
793                 -When two threads try to initialize the socket IO pool,
794                 the second one waits until the intialization is finished
795                 instead of continuing right away.
796                 -Add checks for domain unload: no items added in this case.
797                 -Only measure the time every 10 elements added to the queue.
798                 This is an experiment since linux x86 gettimeofday() sucks.
799                 -Create new thread if there are none waiting for work items.
800                 -There was a missing decrement of the busy threads.
801                 -Make sure the local queue is cleaned up before exiting the
802                 thread when the program ends.
803
804 2010-04-19 Rodrigo Kumpera  <rkumpera@novell.com>
805
806         * reflection.c (mono_type_get_object): Normalize generics types
807         as to how managed code expect them to be. A generic instance over
808         the GTD arguments must have the same mirror as the GTD itself.
809
810         Fixes #473289.
811
812 2010-04-19  Zoltan Varga  <vargaz@gmail.com>
813
814         * locales.c: Implement support for DISABLE_NORMALIZATION.
815
816 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
817
818         * marshal.c (mono_marshal_get_native_func_wrapper): Set the marshal info to NULL,
819         since it is not a MonoMethod.
820
821 2010-04-16  Sebastien Pouliot  <sebastien@ximian.com>
822
823         * icall-def.h: Add get_RequiresElevatedPermissions icall to
824         System.Security.SecurityManager - used only by Moonlight
825         * security-core-clr.c|h: Add Elevated Trust/Permission support
826         for CoreCLR / Moonlight
827
828 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
829
830         * boehm-gc.c (mono_gc_base_init): Applied patch from Robert Nagy
831         (robert@openbsd.org). Fix GC_stackbottom calculation on OpenBSD.
832
833 2010-04-16  Marek Habersack  <mhabersack@novell.com>
834
835         * mono-perfcounters.c: added code for the "Mono
836         Memory/Total Physical Memory" performance counter.
837
838         * mono-perfcounters-def.h: added definition of the "Mono
839         Memory/Total Physical Memory" performance counter.
840
841 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
842
843         * class.c (mono_class_get_method_by_index): Return NULL
844         on type load failures.
845
846 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
847
848         * class.c (mono_class_from_typeref): Check if the supplied
849         image has an assembly bound to it.
850
851         Fixes #567884.
852
853 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
854
855         * loader.c (mono_method_get_signature_full): Use new function
856         inflate_generic_signature_checked to check for errors.
857
858         Fixes #560839.
859
860 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
861
862         * loader.c (inflate_generic_signature): Add _checked variant
863         and move this function to use it.
864
865 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
866
867         * class.c (mono_class_setup_vtable_general): Use error checking
868         version of mono_class_inflate_generic_method_full.
869
870         Fixes #596975.
871
872 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
873
874         * class.c (mono_class_inflate_generic_type_no_copy): Do proper
875         error handling passing MonoError around.
876
877         Fixes #560336.
878
879 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
880
881         * socket-io.c: make GetHostByName ("") work on windows.
882         Fixes bug #456723.
883
884 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
885
886         * object-internals.h:
887         * threads.c: use a spin lock when accesing the per-thread appdomain
888         list.
889
890 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
891
892         * threads.c: no need to take the threads lock in push/pop appdomain.
893
894 2010-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
895
896         * reflection.c (_mono_reflection_parse_type): MS supports
897         non-assembly-qualified types in a generic type parameter list
898         when enclosed in '[]' (which signals that they should be a fqn).
899
900         This breaks ECMA specs for how type names are encoded in cattr
901         blobs but F# does it.
902
903         Fixes #576342.
904
905 2010-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
906
907         * icall.c (ves_icall_InternalInvoke): Check if the vtable is sane
908         for instance methods/ctors.
909
910         Fixes #422113.
911
912 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
913
914         * reflection.c: Use the new verifier support for checking
915         custom attributes.
916
917         Fixes #595306.
918
919 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
920
921         * metadata-verify.c: Implement structural verification
922         of custom attributes. This check requires access to the
923         loader since to resolve the size of an enum we have to
924         look it up.
925         We don't check if named argumenments are encoded in a
926         compatible fashion to their underlying field/prop.
927         Maybe we should?
928
929         * verify-internals.h: Add two new cattr verification API.
930
931 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
932
933         * metadata-verify.c (decode_signature_header): Fix signature.
934
935 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
936
937         * verify.c (mono_verifier_is_enabled_for_method): Handle
938         assembly less images.
939
940         * verify.c (mono_verifier_is_class_full_trust): Ditto.
941
942 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
943
944         * loader.c (mono_method_signature_checked): Properly
945         init MonoError.
946
947         * loader.c (mono_method_signature): It's the calee
948         resposibility to init the error object.
949
950 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
951
952         * metadata-verify.c (decode_signature_header): Do proper
953         overflow checking.
954
955 Tue Apr 13 12:36:29 CEST 2010 Paolo Molaro <lupus@ximian.com>
956
957         * reflection.c: maintain the invariants required by
958         mono_class_layout_fields() also in typebuilder_setup_fields ().
959
960 2010-04-11  Sebastien Pouliot  <sebastien@ximian.com>
961
962         * security-core-clr.c: Call mono_class_setup_methods in 
963         get_default_ctor before checking klass->methods. Fix typo in
964         comment
965
966 2010-04-10  Jb Evain  <jbevain@novell.com>
967
968         * domain.c (supported_runtimes): remove .net 4.0 beta 2 and
969         add .net 4.0 RTM version.
970
971 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
972
973         * reflection.c (resolve_object): Properly inflate generic
974         methods when a context is supplied.
975
976         Fixes #591226.
977
978 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
979
980         * verify.c (mono_method_verify): A switch op don't empty
981         the stack for the next one. Fixes a bug when running fsi
982         under --verify-all.
983
984 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
985
986         * metadata-verify.c (is_valid_standalonesig_blob): Accept
987         fields as valid standalone sig too. F# does generate them.
988
989         * metadata-verify.c (verify_typedef_table_full): Ignore
990         what <module> extends.
991
992 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
993
994         * verify.c (do_invoke_method): It's ok to do use call with
995         virtual, non-final methods if their class is sealed.
996
997 2010-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
998
999         * icall.c (ves_icall_MonoField_GetValueInternal): This function
1000         is a near identical copy of mono_field_get_value_object. So simply
1001         call it.
1002
1003         * object.c (mono_field_get_value_object): Handle literal fields
1004         on open generic classes.
1005
1006         Fixes #594942.
1007
1008 2010-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1009
1010         * reflection.c (mono_reflection_create_runtime_class): Setup
1011         parent/supertype information again since it can be changed
1012         without notice.
1013
1014 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1015
1016         * verify.c (verify_type_compatibility_full): Properly handle
1017         stores between arrays of primitives.
1018
1019         Fixes the verifier side of #555950.
1020
1021 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1022
1023         class.c (mono_bounded_array_class_get): Properly init
1024         cast_class to take the fact that uint[] and int[] can be
1025         casted between each other.
1026
1027         Fixes #555950.
1028
1029 2010-04-07  Geoff Norton  <gnorton@novell.com>
1030
1031         * domain.c: Avoid a deadlock on osx.  Fixes #565765
1032
1033 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1034
1035         * icall.c (ves_icall_System_Enum_ToObject): Avoid a crash for unfinished type
1036         builders. Fixes #594464.
1037
1038 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1039
1040         * icall.c (ves_icall_System_Environment_Exit): Shutdown the threadpool before
1041         waiting for all threads to suspend, as those threads can't be suspended.
1042
1043 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1044
1045         * threads.c (mono_thread_suspend_all_other_threads): Call ensure_synch_cs_set ()
1046         to avoid crashes on newly created threads.
1047
1048 2010-04-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
1049
1050         * file-io.c: reset the MonoIOStat structure in case of error.
1051         Fixes bug #582667.
1052
1053 2010-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
1054
1055         * class.c (print_implemented_interfaces): Print proper type name.
1056
1057         * class.c (mono_class_setup_vtable): Don't try that hard to produce
1058         the override map for generic instances since it later ignored.
1059
1060         * class.c (mono_class_implement_interface_slow): Don't break for
1061         dynamic generic instances.
1062
1063         * object.c (mono_runtime_invoke_array): Add an assert for allocation.
1064
1065         * reflection.c (mono_reflection_method_get_handle): New method that
1066         resolves a method handle.
1067
1068         * reflection.c (mono_reflection_get_dynamic_overrides): Handle the
1069         case when we override methods from a dynamic generic instance interface.
1070
1071         Fixes #575941.
1072
1073 2010-04-05 Gonzalo Paniagua Javier <gonzalo@novell.com>
1074
1075         * threadpool.c: don't attempt to close the pipe when it has not been
1076         created.
1077
1078 2010-04-05 Gonzalo Paniagua Javier <gonzalo@novell.com>
1079
1080         * threadpool.c: if there are no waiting threads, try to start a new
1081         one. This fixes the not-so-random hangs in System.ServiceModel tests.
1082         No need to use InterlockedCompareExchange to read volatile variables.
1083
1084 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1085
1086         * verify.c (verify_type_compatibility_full): Fail mixed valuetype
1087         and reference types that point to the same class.
1088
1089         Fixes #565598.
1090
1091 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1092
1093         * verify.c (verify_stack_type_compatibility_full): Ignore constraints
1094         when verifying compatibility between a generic instance and a generic
1095         parameter.
1096
1097         * verify.c (check_is_valid_type_for_field_ops): Improve error message.
1098
1099         * verify.c (stack_slot_stack_type_full_name): Improve verification type
1100         name.
1101
1102         Fixes #587849.
1103
1104 2010-04-04  Mark Probst  <mark.probst@gmail.com>
1105
1106         * sgen-gc.c: Remove superfluous scanning of alloc-pinned objects.
1107
1108 2010-04-04  Zoltan Varga  <vargaz@gmail.com>
1109
1110         * threads.c Applied some openbsd changes from Robert Nagy <robert@openbsd.org>.
1111
1112 2010-04-03  Marek Habersack  <mhabersack@novell.com>
1113
1114         * process.c: when cross-compiling with MinGW, force GetProcessId
1115         lookup using GetProcAddress.
1116
1117 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1118
1119         * sgen-gc.c: parse_environment_string_extract_number() must be
1120         static.
1121
1122 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1123
1124         * sgen-gc.c, sgen-gray.c: Macros for gray_object_enqueue() and
1125         gray_object_dequeue(), to make sure they're inlined.
1126
1127 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1128
1129         * sgen-gc.c, sgen-gray.c: Fix a few debug levels, put a few
1130         asserts in inner loops into DEBUG and lower MAX_DEBUG_LEVEL.
1131
1132 2010-04-02  Jb Evain  <jbevain@novell.com>
1133
1134         * exception.c: remove dead code.
1135
1136 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1137
1138         * *-gc.c: Fix the signature of mono_gc_get_used/heap_size () to be consistent
1139         with mono-gc.h.
1140
1141 2010-04-01  Sanjoy Das <sanjoy@playingwithpointers.com>
1142
1143         * sgen-gc.c: Make the nursery size adjustable by the
1144         MONO_GC_PARAMS environment variable.
1145
1146         Code is contributed under MIT/X11 license.
1147
1148 2010-04-01 Gonzalo Paniagua Javier <gonzalo@novell.com>
1149
1150         * threadpool.c: threadpool threads wait is alertable.
1151         Fixes bug #592964.
1152         Reduced the stack size of the *poll_wait thread.
1153
1154 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1155
1156         * exception.c|metadata-internals.h: Add new mono_get_exception_
1157         field_access_msg and mono_get_exception_method_access_msg 
1158         functions that accept a const char* parameter to provide more 
1159         details when the exception is thrown.
1160         * security-core-clr.c|h: Rework code to allow logging exceptions
1161         (export MONO_LOG_MASK="security") and to supply more details in
1162         [TypeLoad|MethodAccess|FieldAccess]Exception thrown. Also added
1163         mono_security_core_clr_is_field_access_allowed and 
1164         mono_security_core_clr_is_call_allowed to return an exception,
1165         with messages and logging, that can be emitted by method-to-ir.c
1166
1167 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1168
1169         * sgen-gc.c, sgen-pinning-stats.c: In the heap-dump, dump each
1170         pinned object.
1171
1172 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1173
1174         * appdomain.c (mono_domain_assembly_postload_search): Avoid a crash/assert if
1175         the assembly name is not well formed utf8. Fixes #567882.
1176
1177 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1178
1179         * reflection.c (mono_reflection_create_generic_class): Set the flags field of
1180         the generic parameters from the builder. Fixes #473298.
1181
1182 2010-03-31  Miguel de Icaza  <miguel@novell.com>
1183
1184         * object.c (mono_class_proxy_vtable): Eliminate warning. 
1185
1186         * marshal.c (emit_marshal_boolean): Eliminate possible
1187         uninitialized local warning. 
1188
1189 2010-03-30  Sebastien Pouliot  <sebastien@ximian.com>
1190
1191         * class.c (mono_class_init): Postpone coreclr inheritance check
1192         until the end of the initialization (so we can check up the 
1193         default ctor manually for the core-clr inheritance rules).
1194         * security-core-clr.c: Add the missing (undocumented) checks on
1195         default constructors when verifying inheritance rules.
1196
1197 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1198
1199         * domain-internals.h (MonoJitExceptionInfo): Add new field
1200         handler_end to the data union. To be used to point the end
1201         of a finally block.
1202
1203 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1204
1205         * reflection.c: Add support for new v4 type
1206         System.Reflection.MonoModule that is the concrete version
1207         of Module which is abstract unver v4.
1208
1209 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1210
1211         * class.c (mono_class_init): Don't set class failure after
1212         inited = 1 is set. It must be done before.
1213
1214 2010-03-30  Andreas Färber  <andreas.faerber@web.de>
1215
1216         * mono-config.c: Add support for OS "haiku"
1217         * ChangeLog: Fix UTF-8 encoding
1218
1219         Code is contributed under MIT/X11 license.
1220
1221 Tue Mar 30 15:53:06 CEST 2010 Paolo Molaro <lupus@ximian.com>
1222
1223         * console-unix.c: fixed include logic for sys/ioctl.h.
1224
1225 2010-03-30  Mark Probst  <mark.probst@gmail.com>
1226
1227         * threads.c: Fix bitmap generation for TLS marking on 64 bit
1228         systems.
1229
1230 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1231
1232         * icall.c (ves_icall_System_Enum_get_underlying_type): Don't crash on
1233         unfinished/broken typebuilders.
1234
1235 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1236
1237         * sgen-gc.c: Use the same heuristic for the LOS target that we use
1238         for the minor section allowance.
1239
1240 2010-03-29  Raja R Harinath  <harinath@hurrynot.org>
1241
1242         * metadata-verify.c (INVALID_METHOD_IMPLFLAG_BITS): Allow bit 6
1243         "NoOptimization".
1244
1245 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1246
1247         * sgen-gc.c: Count bytes allocated with heavy statistics.
1248
1249 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1250
1251         * sgen-gc.c: More detailed time statistics.
1252
1253 Mon Mar 29 11:52:34 CEST 2010 Paolo Molaro <lupus@ximian.com>
1254
1255         * gc-internal.h, sgen-gc.c, threads.c, utils/mono-hash.c:
1256         fix the user defined mark interface to pass a pointer
1257         to the object location and not the object itself.
1258
1259 2010-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
1260
1261         * reflection.c (mono_method_body_get_object): Release
1262         the method header before the call to CACHE_OBJECT since
1263         this is a macro that returns.
1264
1265 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1266
1267         * class.c (inflate_generic_type): mono_metadata_type_dup
1268         already dupes array information, the g_memdup was just
1269         leaking memory.
1270
1271 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1272
1273         * verify.c: Add stack_peek function. Fix CEE_DUP
1274         to not read from invalid memory if push did expand
1275         the stack.
1276
1277 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1278
1279         * verify.c: Remove old table verification code that has
1280         been superseeded by the new metadata verifier.
1281
1282         * verify.h: Remove mono_image_verify_tables from the public
1283         API.
1284
1285         * pedump.c: Fix for removed bits.
1286
1287 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1288
1289         * verify.c: Allocate stack slows lazily to reduce stack usage
1290         in case of methods with huge stacks. Reduces memory consumption
1291         for mcs yyparse from 459Mb to 1.8Mb.
1292
1293 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1294
1295         * threadpool.c: don't try executing items from domains being
1296         unloaded. Fixes appdomain-async-invoke test.
1297
1298 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1299
1300         * threadpool.c: spin while the threadpool initializes.
1301         * mono-wsq.c: if the WSQ has not been initialized or has been shut
1302         down, don't do anything.
1303
1304 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1305
1306         * threads.c (mono_thread_create_internal): Set the GC type of the
1307         threads_starting_up hash table.
1308
1309 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1310
1311         * threadpool.c: reset 'state' to avoid returning non-null when the
1312         event type is not found.
1313
1314 Fri Mar 26 19:03:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1315
1316         * sgen-gc.c: make copy_object () take the address of the
1317         slot holding the reference. This allows saving memory stores
1318         when not needed and it allows keeping track of oldspace->nursery
1319         references for the card table code.
1320
1321 2010-03-26  Andreas Färber  <andreas.faerber@web.de>
1322
1323         * null-gc.c (mono_gc_invoke_with_gc_lock): Fix function name.
1324
1325         Code is contributed under MIT/X11 license.
1326
1327 Fri Mar 26 11:33:17 CET 2010 Paolo Molaro <lupus@ximian.com>
1328
1329         * object.c, threads.c, threads-types.h, threads.h: make the
1330         managed thread local storage references precisely tracked.
1331
1332 2010-03-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
1333
1334         * threadpool.[ch]: reworked the threadpool:
1335                 -Threadpool threads use a work-stealing queue. Adding a work
1336                 item from a threadpool thread will queue it in the thread
1337                 local queue without locking (in most cases).
1338                 -epoll events are coalesced before being added to the IO
1339                 queue.
1340                 -Dynamically change the number of active threads
1341                 -Changed the global queue to be more GC friendly
1342
1343         * class-internals.h: add 2 new performance counters for the number of
1344         threads in the threadpool and the IO threadpool.
1345
1346         * object-internals.h: new field in MonoAsyncResult.
1347         * icall-def.h: new internal call for queueing work items.
1348
1349         * Makefile.am: add 2 new files.
1350
1351         * appdomain.c: bump up corlib version.
1352
1353         * mono-wsq.[ch]: an implementation of a work-stealing queue.
1354
1355         * mono-perfcounters-def.h:
1356         * mono-perfcounters.c: added 2 new performance counters.
1357
1358 2010-03-26  Mark Probst  <mark.probst@gmail.com>
1359
1360         * sgen-gc.c: More FIXME/TODO updates.
1361
1362 2010-03-25  Mark Probst  <mark.probst@gmail.com>
1363
1364         * gc-internal.h, sgen-gc.c, sgen-gc.h, boehm-gc.c, null-gc.c: New
1365         function mono_gc_invoke_with_gc_lock() which invokes a function
1366         with the guarantee that no collection will occur during its execution.
1367
1368 2010-03-25  Mark Probst  <mark.probst@gmail.com>
1369
1370         * sgen-gc.c: Update a few comments.
1371
1372 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1373
1374         * reflection.c: Add support for new v4 type
1375         System.Reflection.MonoAssembly that is the concrete version
1376         of Assembly which is abstract unver v4.
1377
1378 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1379
1380         * reflection.c (mono_reflection_get_custom_attrs_info): Protect
1381         code that uses System.Reflection.Emit in DISABLE_REFLECTION_EMIT.
1382
1383         Expose a few macros that are needed for SR but not SRE to the
1384         world (previous inside the SRE ifdef)
1385
1386 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1387
1388         * sgen-gc.c (gc_register_current_thread): We need
1389         stack_start_limit as well in the non-attribute pthread case.
1390
1391 2010-03-23 Rodrigo Kumpera  <rkumpera@novell.com>
1392
1393         * threads.c: Fix windows build.
1394
1395 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1396
1397         * thread-types.h: Add mono_thread_resume_interruption.
1398
1399         * threads.c: Add mono_thread_resume_interruption, this
1400         function should be called after the last protected handler
1401         found at interruption time has finished.
1402
1403 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1404
1405         * threads.c (ves_icall_System_Threading_Thread_ResetAbort):
1406         Check MonoInternalThread's ::state instead of ::abort_exc
1407         since the later can be lazily created.
1408
1409         This is specially problematic when running a finally block
1410         under AbortRequested state. ResetAbort must work, but the
1411         abort_exc object has not been created because interruption
1412         has not began.
1413
1414 2010-03-22  Geoff Norton  <gnorton@novell.com>
1415
1416         * locales.c: Its possible for CFStringGetCStringPtr
1417         to return null and not convert encodings.  Use
1418         CFStringGetCString instead.
1419
1420 Mon Mar 22 18:06:38 CET 2010 Paolo Molaro <lupus@ximian.com>
1421
1422         * class-internals.h, class.c, object.c: introduce compressed
1423         interface bitmaps (for now only under small config): this saves
1424         about 600 KB of runtime memory on gmcs bootstraps or monodevelop
1425         startups.
1426
1427 Mon Mar 22 16:03:34 CET 2010 Paolo Molaro <lupus@ximian.com>
1428
1429         * mono-debug.c: don't try to get the method header, it causes a
1430         deadlock and it is not used for anything anymore.
1431
1432 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1433
1434         * loader.c (mono_method_get_marshal_info): Fix the handling of dynamic methods
1435         broken by the last change.
1436
1437 2010-03-21  Andreas Färber  <andreas.faerber@web.de>
1438
1439         * socket-io.c: Don't depend on AF_SNA, AF_DECnet,
1440         SOCK_RDM.
1441         
1442         Code is contributed under MIT/X11 license.
1443
1444 2010-03-20  Sanjoy Das <sanjoy@playingwithpointers.com>
1445
1446         * sgen-gc.c (mono_gc_get_write_barrier): Handle non-aligned
1447         nursery.
1448
1449         Code is contributed under MIT/X11 license.
1450
1451 2010-03-19  Martin Baulig  <martin@ximian.com>
1452
1453         * mono-debug.c (MonoDebugWrapperData): Replace `cil_code' with a
1454         dummy field, containing an empty string.
1455         (mono_debug_add_method): Don't call mono_disasm_code() for wrappers.
1456
1457
1458 Fri Mar 19 17:26:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1459
1460         * class.c: setup_interface_offsets() refactor to not call
1461         mono_class_get_implemented_interfaces () more times than needed and
1462         to reduce the runtime memory requirements to be O(num_interfaces)
1463         instead of O(max_interface_id).
1464
1465 2010-03-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
1466
1467         * mono-mlist.[ch]: add mono_mlist_set_next ().
1468
1469 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1470
1471         * domain-internals.h: Add MonoTryBlockHoleJitInfo struct and
1472         associated changes to support holes in the protected range of a
1473         try block.
1474
1475         * domain.c: Add mono_jit_info_get_try_block_hole_table_info, which
1476         retrieves the holes table from a given MonoJitInfo.
1477
1478 Tue Mar 16 13:11:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1479
1480         * object.h, object-internals.h, object.c, icall.c, gc-internal.h,
1481         debug-helpers.c, cominterop.c, process.c, sgen-gc.c, socket-io.c:
1482         hide the contents of the MonoString and MonoArray structs from the
1483         public API. Change the accessor macros to accessors functions where
1484         needed. Adjusted the array API to allow for pointer-sized lengths and
1485         starting positions, so 64 bit arrays can be optionally provided in an
1486         API compatible way if needed on 64 bit systems.
1487
1488 Tue Mar 16 10:18:07 CET 2010 Paolo Molaro <lupus@ximian.com>
1489
1490         * class-internals.h, class.c, loader.c, marshal.c, metadata.c,
1491         reflection.c: the MonoMethodNormal struct is now unused, so remove it.
1492
1493 Mon Mar 15 18:28:00 CET 2010 Paolo Molaro <lupus@ximian.com>
1494
1495         * class-internals.h: remove the method header from MonoMethod since
1496         from now on it will be transient. We have a header pointer for method
1497         wrappers, since in that case we need to keep track of it. For this
1498         reason, all the Reflection.Emit generated methods use MonoMethodWrapper
1499         structs now. The same happens with MonoMethodInflated.
1500         * class.c: reset the sre_method flag for inflated method structures:
1501         this makes the code that cares look at the header in the MonoMethodInflated
1502         structure.
1503         * loader.c: lookup the method header in the appropriate field now that
1504         it is removed from MonoMethod.
1505         * metadata-internals.h: add a flag to the method header to know if it
1506         can be freed inside mono_metadata_free_mh ().
1507         * method-builder.c: updates after moving the header field from
1508         MonoMethod to MonoMethodWrapper.
1509         * reflection.c: MonoMethods generated from Reflection.Emit use
1510         MonoMethodWrapper structs if they need a method header now (later take
1511         advantage of this and remove all the current unsafe uses of method_aux_hash).
1512         * metadata.c: make method header parsing not leak when verification
1513         fails. Alloc it with g_malloc() and free it in mono_metadata_free_mh().
1514         These changes save a few hundred KB of runtime memory in a mcs
1515         bootstrap or a monodevelop startup.
1516
1517 2010-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1518
1519         * verify.c: Improve error message.
1520
1521 2010-03-12  Jb Evain  <jbevain@novell.com>
1522
1523         * reflection.c (add_exported_type): populate the exported
1524         table with the type's nested type.
1525
1526 2010-03-10  Mark Probst  <mark.probst@gmail.com>
1527
1528         * sgen-gc.c (STRING_SIZE): Semi-revert r153342.  I'm an idiot who
1529         can't read parentheses.
1530
1531 2010-03-10  Mark Probst  <mark.probst@gmail.com>
1532
1533         * threads.c (thread_cleanup): Add a guard to dereferencing
1534         "thread" to avoid an unlikely race condition.
1535
1536 2010-03-09  Sebastien Pouliot  <sebastien@ximian.com>
1537
1538         * assembly.c: Fix crash in moon-unit when aname->culture is NULL
1539         instead of an empty string.
1540
1541 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1542
1543         * object-internals.h (_G_BOOLEAN_EXPR): Fix the definition of this to explicitly
1544         convert to a boolean, recent gcc versions compile this differently.
1545
1546 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1547
1548        * sgen-gc.c (safe_object_get_size): Avoid a function call so this can really be
1549        inlined.
1550
1551 2010-03-09  Mark Probst  <mark.probst@gmail.com>
1552
1553         * sgen-gc.c (STRING_SIZE): Off by one.
1554
1555 2010-03-09  Mark Probst  <mark.probst@gmail.com>
1556
1557         * sgen-archdep.h: Fix the signal context register access for
1558         AMD64.
1559
1560 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1561
1562         * sgen-gray.c: Get rid of the unused 'start' field in GrayQueueSection.
1563
1564 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1565
1566         * verify.c: Store the initial basic block returned by mono_basic_block_split
1567         so we can release the whole list and not just the first one.
1568
1569 Mon Mar 8 17:30:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1570
1571         * verify.c, debug-helpers.c, profiler.c, loader.c,
1572         mono-basic-block.c, mono-debug.c, reflection.c: prepare to make
1573         MonoMethodHeader a transient entity.
1574
1575 2010-03-08  Zoltan Varga  <vargaz@gmail.com>
1576
1577         * sgen-gc.c (scan_needed_big_objects): Call drain_gray_stack () to avoid
1578         uncontrolled growth of the gray stack.
1579
1580         * sgen-gray.c: Rewrite this so it behaves like a stack, not a queue, so recently
1581         added items are removed first, improving cache locality. Avoid freeing queue
1582         segments in the fast path, use the list of segments as the free list, truncate
1583         it to its max size at the start of collection.
1584
1585 Mon Mar 8 10:13:52 CET 2010 Paolo Molaro <lupus@ximian.com>
1586
1587         * metadata-internals.h: more memory savings, both with small config and without.
1588
1589
1590 Sat Mar 6 19:12:12 CET 2010 Paolo Molaro <lupus@ximian.com>
1591
1592         * appdomain.c, domain-internals.h, domain.c, object.c:
1593         make class_vtable_hash into an array to reduce memory usage.
1594
1595 Sat Mar 6 18:16:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1596
1597         * mempool.c, class-internals.h, class.c, icall.c, metadata.c,
1598         object-internals.h, object.c, reflection.c, threadpool.c:
1599         reduce resource usage when the small config is selected.
1600         In particular, up to 64K of methods/fields/properties/events
1601         are allowed and "other" methods in events are ignored.
1602
1603 Fri Mar 5 19:05:47 CET 2010 Paolo Molaro <lupus@ximian.com>
1604
1605         * threads.c: reduce resource usage when compiled for a small config.
1606
1607 2010-03-05  Mark Probst  <mark.probst@gmail.com>
1608
1609         * sgen-gc.c: Also collect number of degraded-alloced objects with
1610         heavy statistics.
1611
1612 2010-03-04  Geoff Norton  <gnorton@novell.com>
1613
1614         * assembly.c: Only support OSX bundling if the bundle is 
1615         actually detectable.
1616
1617 2010-03-04  Geoff Norton  <gnorton@novell.com>
1618
1619         * loader.c: The marshal specs are freed at the end of the call
1620         but it explicitly frees the strings as well as the container,
1621         so we need to dup them too to avoid referencing free'd memory.
1622
1623 2010-03-04  Geoff Norton  <gnorton@novell.com>
1624
1625         * icall-def.h:
1626         * icall.c: Add a new private internal icall to construct
1627         an object from its type without running the ctor.
1628
1629 Thu Mar 4 15:37:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1630
1631         * profiler.c: allow multiple profiler engines to be loaded
1632         at the same time.
1633
1634 Wed Mar 3 20:19:45 CET 2010 Paolo Molaro <lupus@ximian.com>
1635
1636         * profiler-private.h, profiler.c, profiler.h, sgen-gc.c: introduce
1637         profiler event to track object moves.
1638
1639 Wed Mar 3 19:20:39 CET 2010 Paolo Molaro <lupus@ximian.com>
1640
1641         * object.c, profiler.c, profiler.h, string-icalls.c:
1642         remove the reduntant MONO_PROFILE_STRING_ALLOC profiler event.
1643
1644 2010-03-03  Miguel de Icaza  <miguel@novell.com>
1645
1646         * decimal.c (mono_double2decimal): Add support for reducing the
1647         scale of a decimal.  It turns the 0.6000000000000 into 0.6 as
1648         expected.
1649
1650 2010-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1651
1652         * icall-def.h:
1653         * icall.c: Implement System.MonoType::get_core_clr_security_level icall.
1654
1655 2010-03-03  Marek Habersack  <mhabersack@novell.com>
1656
1657         * mono-config.c (mono_config_parse_assembly_bindings): added -
1658         parses assembly binding redirections from appdomain's config
1659         file.
1660
1661         * metadata-internals.h: added definition of a new function -
1662         mono_config_parse_assembly_bindings - to support parsing assembly
1663         binding redirections defined in appdomain's config file.
1664
1665         * domain-internals.h: added two new fields to _MonoDomain - a list
1666         of assembly bindings and a flag to parse the config file only
1667         once.
1668
1669         * assembly.c (assembly_binding_maps_name): empty culture name and
1670         NULL culture name are considered equal.
1671         (mono_assembly_apply_binding): added support for domain specific
1672         assembly binding redirections, read from the appdomain's
1673         configuration file. Fixes bug #580185
1674
1675 Wed Mar 3 11:46:06 CET 2010 Paolo Molaro <lupus@ximian.com>
1676
1677         * appdomain.c, domain.c, icall.c, image.c, marshal.c, object.c,
1678         reflection.c, socket-io.c, threadpool.c, threads.c: removed 1.1/1.0
1679         support.
1680
1681 2010-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1682
1683         * reflection.c (mono_image_get_memberref_token): Extract mono_image_add_memberef_row
1684         from this function. The new function receive the parent token instead of a type.
1685
1686         * reflection.c (mono_image_get_methodref_token_for_methodbuilder):
1687         * reflection.c (mono_image_get_ctorbuilder_token): Use new function to encode
1688         typebuilders. This make it possible to properly encode generic type builders since
1689         their unmanaged type don't have generics data while unfinished.
1690
1691         Fixes #583655.
1692
1693 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1694
1695         * sgen-gc.c, sgen-protocol.c, sgen-protocol.h: New facility for
1696         writing binary log files (can be enabled by #define'ing
1697         BINARY_PROTOCOL) for better debugging of timing-dependent bugs or
1698         bugs in longer running programs.
1699
1700 Mon Mar 1 19:35:32 CET 2010 Paolo Molaro <lupus@ximian.com>
1701
1702         * metadata.c: added some API documentation.
1703
1704 2010-03-01  Robert Jordan  <robertj@gmx.net>
1705
1706         * filewatcher.h: Include glib.h to fix the MSVC build.
1707
1708 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1709
1710         * class-internals.h (MonoClass): Get rid of the reflection_info field, add
1711         a GC handle instead. This is a bit slower to access, but avoids burdening the
1712         GC with 100s of individual roots.
1713
1714         * reflection.c (mono_class_get_ref_info):
1715         (mono_class_set_ref_info):
1716         (mono_class_free_ref_info): New internal helper fuctions.
1717
1718         * reflection.c appdomain.c icall.c class.c: Use the new helper functions instead
1719         of accessing klass->reflection_info directly.
1720
1721         * sgen-gc.c (alloc_complex_descriptor): Fix the computation of the number of
1722         words.
1723
1724         * gc.c (alloc_handle): Create a GC descriptor for the 'entries' array, free
1725         the previous array.
1726
1727 2010-02-28  Zoltan Varga  <vargaz@gmail.com>
1728
1729         * marshal.c (get_runtime_invoke_type): Avoid sharing byref with I, as the latter
1730         needs an indirection.
1731
1732 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1733
1734         * generic-sharing.c: Removed, moved its contents to mini/mini-generic-sharing.c,
1735         so all generic sharing code is in one place.
1736
1737         * class.c (get_implicit_generic_array_interfaces): Fix the last change so
1738         we don't call setup_interface_offsets () for unfinished types.
1739
1740 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1741
1742         * class.c (mono_class_generic_sharing_enabled): Move this to
1743         generic-sharing.c.
1744
1745         * image.c: Add an unload hook which is called before an image is unloaded.
1746
1747         * generic-sharing.c: Use the unload hook to unregister per-image data, to avoid
1748         metadata.c having to depend on generic sharing.
1749
1750 Fri Feb 26 19:23:18 CET 2010 Paolo Molaro <lupus@ximian.com>
1751
1752         * class.c: reduce size of ridiculously large cache.
1753
1754 2010-02-26  Martin Baulig  <martin@ximian.com>
1755
1756         * mono-debug.h
1757         (MONO_DEBUGGER_MINOR_VERSION): Bump to 5.
1758
1759         * threads.c (mono_thread_internal_reset_abort): New method; resets
1760         the abort, but doesn't throw any exception if no abort was requested.
1761
1762 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1763
1764         * class.c (get_implicit_generic_array_interfaces): Call
1765         mono_class_setup_interface_offsets () before accessing
1766         eclass->interface_offsets_count. This only shows up on platforms without IMT for
1767         some reason.
1768
1769 Thu Feb 25 12:12:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1770
1771         * environment.c, environment.h, icall.c: make the GetOSVersionString()
1772         icall internal.
1773
1774 Thu Feb 25 11:37:50 CET 2010 Paolo Molaro <lupus@ximian.com>
1775
1776         * metadata.c, metadata.h: make MONO_TYPE_IS* functional without
1777         direct access to the MonoType fields.
1778
1779 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1780
1781         * threads.h: Move some internal functions which were added to this header by
1782         mistake to threads-types.h.
1783
1784         * class.c (mono_class_init): Get rid of mono_setup_vtable_in_class_init.
1785
1786 Wed Feb 24 17:45:27 CET 2010 Paolo Molaro <lupus@ximian.com>
1787
1788         * class-internals.h, class.h, object.h: make MonoRemoteClass
1789         and mono_remote_class() internal.
1790
1791 Wed Feb 24 17:05:18 CET 2010 Paolo Molaro <lupus@ximian.com>
1792
1793         * metadata-internals.h, class-internals.h, metadata.h: make the
1794         MonoType guts internal as well.
1795
1796 Wed Feb 24 16:02:42 CET 2010 Paolo Molaro <lupus@ximian.com>
1797
1798         * reflection.h: the MonoTypeNameParse guts are internal now.
1799         * assembly.c, assembly.h, image.h: the MonoAssemblyName guts
1800         are internal now, provide accessors as needed.
1801         * metadata.h, metadata-internals.h: the MonoMethodSignature
1802         guts are internal now.
1803         * Makefile.am: mempool.h is an internal header now.
1804         * *.h, *.c: remove glib.h usage from the public headers.
1805
1806 2010-02-24  Atsushi Enomoto  <atsushi@ximian.com>
1807
1808         * culture-info-table.h : regenerated.
1809
1810 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1811
1812         * metadata.c: Add mono_method_get_header_summary which returns minimal
1813         information about the header of a method. This is the information used
1814         by the inline oracle to reject methods.
1815
1816         This method doesn't decode local variables and doesn't cache it's result,
1817         so it should cause a minimal reduction in memory usage.
1818
1819         * metadata-internals.h: Add MonoMethodHeaderSummary structure and
1820         mono_method_get_header_summary.
1821
1822 2010-02-22  Jeffrey Stedfast  <fejj@novell.com>
1823
1824         * threads.c (mono_thread_exit): Make sure that the main thread is
1825         non-null before dereferencing it.
1826
1827 2010-02-21  Geoff Norton  <gnorton@novell.com>
1828
1829         * Makefile.am: Add CoreFoundation linkage on darwin to properly get the current
1830         locale.
1831         * locaes.c: When running on darwin, try to get the local from CoreFoundation 
1832         before falling back to the posix lookup.
1833
1834 2010-02-19  Zoltan Varga  <vargaz@gmail.com>
1835
1836         * threads.c (mono_thread_suspend_all_other_threads): Ignore threads which have
1837         the DONT_MANAGE flag set.
1838
1839 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
1840
1841         * domain.c: Remove old v1 version strings. Let the runtime
1842         default to 2.0 instead of failing because it can't find a
1843         working 1.0 instalation.
1844
1845 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
1846
1847         * domain.c: Add v4 RC version string.
1848
1849 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
1850
1851         * mono-basic-block.c (mono_opcode_value_and_size): Use pointer variant
1852         of overflow checking function.
1853
1854 2010-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
1855
1856         * reflection.c (mono_reflection_method_on_tb_inst_get_handle): Handle non
1857         generic methods.
1858
1859         * reflection.c (mono_reflection_get_custom_attrs_info): Handle compiler context
1860         cases for ParameterInfo.
1861
1862         Fixes #579493.
1863
1864 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1865
1866         * class.c (mono_class_get_cctor): Fix support for dynamic classes, which doesn't
1867         have has_cctor set. Fixes #575946.
1868
1869 2010-02-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
1870
1871         * appdomain.c: display a warning if the parsing the config file
1872         produces any error.
1873         Skip the BOM in UTF-8 files.
1874         Copy the AppDomainSetup before setting the privateBinPath so that the
1875         correct configuration file is read.
1876
1877 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1878
1879         * object.c: Instead of using one vtable trampoline, allow the JIT to use one
1880         vtable trampoline per vtable slot index. Not used yet.
1881
1882 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1883
1884         * icall-def.h:
1885         * icall.c: add internal call that returns the system page size.
1886
1887 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1888
1889         * debug-helpers.c (mono_method_desc_search_in_image): Handle short names like
1890         'int' for system classes.
1891
1892 Fri Feb 12 18:36:02 CET 2010 Paolo Molaro <lupus@ximian.com>
1893
1894         * icall.c, icall-def.h: new icall to check for sufficient
1895         stack space.
1896
1897 2010-02-12  Mark Probst  <mark.probst@gmail.com>
1898
1899         * reflection.c (ensure_complete_type): Check that reflection_info
1900         is set, too.  Fixes crash of corlib testsuite with -O=-all.
1901
1902 2010-02-11  Rodrigo Kumpera  <rkumpera@novell.com>
1903
1904         * attrdefs.h:
1905         * tabledefs.h: Add NoOptimization flag.
1906
1907 2010-02-10  Mark Probst  <mark.probst@gmail.com>
1908
1909         * sgen-gc.c: Don't consider it a missing remset if the target
1910         object is pinned - we might have done the store but not added the
1911         remset yet.
1912
1913 2010-02-10  Mark Probst  <mark.probst@gmail.com>
1914
1915         * sgen-gc.c: When checking for missing remsets, don't assert on
1916         the first one, but print them all and then assert.
1917
1918 2010-02-10  Mark Probst  <mark.probst@gmail.com>
1919
1920         * sgen-gc.c (find_in_remset_loc): Handle the small bitmap case.
1921
1922 2010-02-09  Miguel de Icaza  <miguel@novell.com>
1923
1924         * console-unix.c: On OSX Control-Y is assigned to
1925         VDSUSP (non-Posix), the
1926         suspend-program-next-time-it-tries-to-read-input command (this is
1927         different than C-z, which suspends immediately).
1928
1929         Do the same thing that bash does and ignore this setting,
1930         making our repl/getline support pasting.
1931
1932 2010-02-10  Mark Probst  <mark.probst@gmail.com>
1933
1934         * sgen-gc.c: Simple plausibility check for scan_starts.
1935
1936 2010-02-10  Mark Probst  <mark.probst@gmail.com>
1937
1938         * sgen-gc.c: Round up when calculating the number of scan starts.
1939
1940 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
1941
1942         * reflection.c: Export mono_get_object_from_blob.
1943
1944         * object-internals.h: Ditto.
1945
1946         * icall.c: New icall property_info_get_default_value to get the default
1947         value of a property. Since using this is not common, no caching is done.
1948
1949         * icall-def.h: Add new icall.
1950
1951 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
1952
1953         * class.c: Add mono_class_get_property_default_value.
1954
1955         * class-internal.h: Export mono_class_get_property_default_value.
1956
1957 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
1958
1959         * reflection.c (mono_image_get_property_info): Encode the default value of a property.
1960
1961 Wed Feb 10 14:48:45 CET 2010 Paolo Molaro <lupus@ximian.com>
1962
1963         * sgen-gc.c: introduced critical regions to allow some lockless
1964         operations and increase scalability.
1965
1966 2010-02-10  Geoff Norton  <gnorton@novell.com>
1967
1968         * reflection.c: Support building with DISABLE_REFLECTION
1969
1970 2010-02-09 Gonzalo Paniagua Javier <gonzalo@novell.com>
1971
1972         * threadpool.c: Fixes for SetMinThreads and SetMaxThreads.
1973         Closes bug #566057.
1974
1975         * exception.c: fix typo in comment.
1976
1977 2010-02-09  Rodrigo Kumpera  <rkumpera@novell.com>
1978
1979         * icall.c (param_info_get_type_modifiers): Handle the case when the member object is a
1980         property. This happens which instances returned by PropertyInfo::GetIndexParameters ().
1981
1982         * reflection.c (mono_reflection_get_custom_attrs_info): Ditto.
1983
1984         * object-internals.h: Export mono_class_is_reflection_method_or_constructor as part of
1985         the internal API.
1986
1987         Fixes #574434.
1988
1989 2010-02-09  Mark Probst  <mark.probst@gmail.com>
1990
1991         * threads.c: Removed two assertions that were too strict.  Added a
1992         clarifying comment.  Fixes #577090.
1993
1994 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1995
1996         * domain.c (mono_jit_info_table_find): Avoid looking in the root domain, since
1997         the caller has no way of knowing the domain which owns the returned MonoJitInfo.
1998
1999         * appdomain.c (create_exceptions): Call mono_thread_push/popappdomain_ref ().
2000
2001         * verify.c (mono_type_get_stack_name): Fix a warning.
2002
2003 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
2004
2005         * marshal.c (mono_marshal_get_wrapper_info): Rename from
2006         mono_marshal_wrapper_info_from_wrapper.
2007
2008         * marshal.c (mono_marshal_set_wrapper_info): Rename from
2009         mono_marshal_method_set_wrapper_data, and export.
2010
2011         * boehm-gc.c sgen-gc.c null-gc.c: Get rid of mono_gc_get_allocator_type, store
2012         the allocator type in a AllocatorWrapperInfo structure instead, which is accesible
2013         by calling mono_marshal_get_wrapper_info ().
2014
2015         * sgen-gc.c (mono_gc_get_managed_allocator): Add a specialized allocator for
2016         small objects which does no size checks.
2017
2018 2010-02-05  Rodrigo Kumpera  <rkumpera@novell.com>
2019
2020         * icall-def.h: Rename get_MetadataToken to GetMetadataToken.
2021
2022 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2023
2024         * verify.c (mono_method_verify): Use the new basic block formation pass
2025         to avoid verifying dead basic blocks. This is the same behavior as the
2026         runtime MS verifier.
2027
2028 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2029
2030         * mono-basic-block.c:
2031         * mono-basic-block.h: New implementation of a basic block formation pass.
2032         The formation pass does static liveness analysis as well to detect dead
2033         basic blocks.
2034
2035 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2036
2037         * marshal.c (mono_marshal_get_native_wrapper): Emit a null check for the
2038         'this' argument in icalls.
2039
2040 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2041
2042         * reflection.c (resolve_object): Handle MonoArrayMethod. Fixes #575955.
2043
2044 2010-02-01  Mark Probst  <mark.probst@gmail.com>
2045
2046         * object.c, domain.c: When using SGen, we must register
2047         vtable->type as a root if it's not a MonoType, because then it
2048         wasn't pin-alloced.
2049
2050 2010-02-01  Mark Probst  <mark.probst@gmail.com>
2051
2052         * sgen-gc.c: Reset to_space_bumper to to_space_section->next_data
2053         at the start of nursery collections, because we might have had
2054         degraded allocations which changed next_data.
2055
2056 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2057
2058         * marshal.c (mono_marshal_get_managed_wrapper): Avoid constructing the
2059         custom attr so this function works in cross-compiling mode.
2060
2061 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2062
2063         * class.c (make_generic_param_class): Initialize interface offsets since we
2064         set klass->inited. Fixes #574819.
2065
2066 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2067
2068         * domain.c (mono_domain_free): Send the END_UNLOAD profiler event before
2069         calling the JIT domain cleanup hook.
2070
2071 2010-01-28  Rodrigo Kumpera  <rkumpera@novell.com>
2072
2073         * pedump.c (main): Properly set the verifier mode when running the metadata
2074         verifier.
2075
2076 2010-01-28  Rodrigo Kumpera  <rkumpera@novell.com>
2077
2078         * verify.c (verify_class_for_overlapping_reference_fields): Properly verify
2079         overlapping fields now that we're called before has_references is set.
2080
2081         * pedump.c (dump_verify_info): Clear any loader error before verifying another
2082         method. Otherwise all sort of weird stuff happens.
2083
2084 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2085
2086         * object.c (mono_field_get_value_object): Handle nullable types correctly.
2087         Fixes #572874.
2088
2089 2010-01-25  Zoltan Varga  <vargaz@gmail.com>
2090
2091         * icall.c (ves_icall_System_Array_SetValueImpl): Handle nullable types correctly.
2092         Fixes #573322.
2093
2094 2010-01-23  Mark Probst  <mark.probst@gmail.com>
2095
2096         * sgen-pinning.c (evacuate_pin_staging_area): Don't assume
2097         pin_staging_area_index is greater than 0.
2098
2099 2010-01-22 Miguel de Icaza (miguel@novell.com)
2100
2101         * loader.c: Since we do nothing with the error returned, pass NULL
2102         to ignore the error.
2103
2104 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2105
2106         * reflection.c (typebuilder_setup_fields): Pretend field setup already
2107         happened before starting to encode the actual fields. This avoid ciclic
2108         dependencies and eventual crashes.
2109
2110         Fixes #572660.
2111
2112 2010-01-21  Mark Probst  <mark.probst@gmail.com>
2113
2114         * sgen-gc.c, gc-internal.h, object.c: Make string allocation
2115         atomic and remove the half-constructed hack in SGen.
2116
2117 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2118
2119         * metadata-verify.c (parse_generic_inst): Fail a type signature if it 
2120         has a recursive reference to itself.
2121
2122         Fixes #571863.
2123
2124 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2125
2126         * loader.c (mono_method_signature): Fix error message.
2127
2128 2010-01-21  Mark Probst  <mark.probst@gmail.com>
2129
2130         * sgen-gc.c: Reuse to-space sections between nursery collections.
2131
2132 2010-01-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
2133
2134         * icall.c: don't raise AppDomain.TypeResolve when the type is loaded
2135         from the current assembly or mscorlib. Fixes bug #322957.
2136
2137 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2138
2139         * marshal.c: Calculate the target class of the delegete invoke wrappers using
2140         get_wrapper_target_class.
2141
2142 2010-01-19  Mark Probst  <mark.probst@gmail.com>
2143
2144         * sgen-gc.c: Fix warnings.
2145
2146 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2147
2148         * verify.c (store_local): Better error message.
2149
2150 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2151
2152         * object.c (mono_object_get_virtual_method): Handle generic interfaces with variant
2153         arguments.
2154
2155 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2156
2157         * icall.c (ves_icall_Remoting_RemotingServices_GetVirtualMethod): This
2158         function is generics variance aware.
2159
2160 2010-01-19  Sebastien Pouliot  <sebastien@ximian.com>
2161
2162         * security-core-clr.c (mono_security_core_clr_can_access_internals):
2163         Handle the case where 'basedir' can be NULL (e.g. SRE assemblies)
2164
2165 2010-01-19  Sylvain Dupont <duposyl@gmail.com>
2166
2167         * cominterop.c marshal.c: Added support for marshalling in, in/byref,
2168           in/out, in/out/byref parameters of type SAFEARRAY[VARIANT].
2169
2170         Code is contributed under MIT/X11 license.
2171
2172 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2173
2174         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Handle inflated generic methods
2175         on a GTD.
2176
2177 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2178
2179         * marshal.c (mono_marshal_wrapper_info_from_wrapper): New helper function to
2180         return a point to a wrapper specific info structure describing the wrapper.
2181         (mono_marshal_get_array_address): Store the rank+elem_size in the wrapper info.
2182  
2183 2010-01-18  Mark Probst  <mark.probst@gmail.com>
2184  
2185         * sgen-gc.c: Make minor collection section allowance adaptive,
2186         depending on the amount of memory reclaimed in the last major
2187         collection.  If more memory was reclaimed (i.e. more garbage
2188         produced), do the next collection earlier.
2189
2190 2010-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2191
2192         * metadata-verify.c (parse_type): Fail a type signature if it has a recursive reference
2193         to itself.
2194
2195         * metadata-verify.c (mono_verifier_verify_typespec_signature): Change signature to take
2196         the token as parameter.
2197
2198         * verify-internals.h: Ditto.
2199
2200         * metadata.c (mono_type_create_from_typespec): Pass token to verifier.
2201
2202         Fixes #571460.
2203
2204 2010-01-18  Mark Probst  <mark.probst@gmail.com>
2205
2206         * sgen-gc.c: Make store_remset_buffer_index long.
2207
2208 2010-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2209
2210         * class.c (mono_class_from_typeref): Fail loading of self-referencing typeref tokens.
2211
2212         Fixes #569579.
2213
2214 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2215
2216         * sgen-gc.c (mono_gc_base_init): Add 'conservative_stack_mark' option to turn
2217         off precise marking if it is available.
2218         (mono_gc_get_bitmap_for_descr): Fix the handling of run length descriptors.
2219
2220 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2221
2222         * sgen-gc.c (mono_gc_conservatively_scan_area): Resurrect this.
2223
2224         * sgen-pinning.c (evacuate_pin_staging_area): Don't assert if there are no
2225         pinned objects.
2226
2227         * sgen-gc.c (create_allocator): Add the missing n > MONO_ARRAY_MAX_INDEX check
2228         to the array allocator.
2229
2230 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2231
2232         * generic-sharing.c (instantiate_other_info): Don't create ftnptr's from the
2233         result of mono_compile_method (), it already includes an ftnptr.
2234
2235 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2236
2237         * metadata.c (get_image_set): Remove an assert which can happen in normal use.
2238
2239 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2240
2241         * metadata.c (mono_metadata_str_hash): New helper function to compute a stable
2242         hash value which doesn't depend on glib/eglib versions.
2243         (mono_metadata_type_hash): Use it.
2244
2245         * object.c (mono_method_get_imt_slot): Ditto.
2246
2247 2010-01-14  Rodrigo Kumpera  <rkumpera@novell.com>
2248
2249         * class.c (mono_type_has_exceptions): Check the generic instance. It can fail
2250         independently of the GTD.
2251
2252         * class.c (mono_class_setup_fields): Fail if field has negative offset.
2253
2254         * class.c (mono_class_setup_fields): Fail if valuetype has zero size. Add sizeof(MonoObject)
2255         to the upper limit since instance_size includes this amount.
2256
2257         * class.c (mono_class_layout_fields): Check if the types of the static fields have failed.
2258
2259         Fixes #569544.
2260
2261 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2262
2263         * object.c (build_imt_slots): Compute the vtable slot correctly for interfaces
2264         with static methods.
2265
2266         * object.c (build_imt_slots): Avoid asserting when static methods are
2267         encountered in an interface.
2268
2269 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2270
2271         * sgen-gc.c (to_space_expand): Fix assertion.
2272
2273 Wed Jan 13 15:42:28 CET 2010 Paolo Molaro <lupus@ximian.com>
2274
2275         * string-icalls.c: missing declaration fixes.
2276         * sgen-gc.c: portability fixes.
2277
2278 2010-01-12  Rodrigo Kumpera  <rkumpera@novell.com>
2279
2280         * class.c (mono_class_get_implemented_interfaces): Now take a MonoError argument.
2281
2282         * class.c:
2283         * cominterop.c:
2284         * icall.c:
2285         * object.c: 
2286         * class-internals.h: Adjust for new signature of mono_class_get_implemented_interfaces.
2287
2288 2010-01-12  Rodrigo Kumpera  <rkumpera@novell.com>
2289
2290         * class.c (mono_class_setup_interfaces): Now take a MonoError argument and
2291         it can fail loading the type.
2292
2293         * class.c: Add mono_class_inflate_generic_class_checked.
2294
2295         * class.c:
2296         * verify.c:
2297         * class-internals.h: Adjust for new signature of mono_class_setup_interfaces.
2298
2299 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2300
2301         * loader.c (mono_method_signature_checked): New internal function taking an
2302         MonoError argument.
2303
2304         * socket-io.c (AI_ADDRCONFIG): Applied patch from John Lightsey (jd@cpanel.net).
2305         Fixes build on rh 7.3.
2306
2307 2010-01-10  Aaron Bockover  <abockover@novell.com>
2308
2309         * assembly.c (mono_set_rootdir): Support finding the mono paths on OS X
2310         at runtime in the same way as on Windows, which yields a relocatable
2311         Mono. Uses dyld's _NSGetExecutablePath and realpath to resolve the path
2312         of the running mono process.
2313
2314         On TARGET_ARM, fallback () will always be executed.
2315
2316 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2317
2318         * icall.c (ves_icall_Type_GetInterfaceMapData): This function is generics variance aware.
2319
2320 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2321
2322         * class.c (mono_class_is_assignable_from_slow): Support variant
2323         generic delegates.
2324
2325         * class.c (mono_class_implement_interface_slow): Support types with
2326         variant generic arguments.
2327
2328 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2329
2330         * verify.c: Remove some code duplication.
2331
2332 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2333
2334         * object.c: Update docs.
2335
2336 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2337
2338         * object.c (add_imt_builder_entry): Improve DEBUG_IMT spew.
2339
2340         * object.c (build_imt_slots): Interfaces with variant generic arguments use the
2341         fallback trampoline as well.
2342
2343         * class.c (mono_class_interface_offset_with_variance): Add new non_exact_match
2344         out argument that is set to TRUE if the match was direct. 
2345
2346         * class.c (mono_class_is_assignable_from): Delegates require variance testing as well.
2347
2348         * class-internal.h: Update prototype of mono_class_interface_offset_with_variance.
2349
2350 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2351
2352         * class.c: Add mono_class_interface_offset_with_variance function that does same
2353         as mono_class_interface_offset but takes variance into account.
2354
2355         * class-internal.h: Export mono_class_interface_offset_with_variance.
2356
2357         * object.c: Fix and improve DEBUG_IMT. Added an assert for IMT thunk building.
2358
2359 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2360
2361         * object.c:
2362         * icall.c:
2363         * class.c: Add some FIXME for due to variant generic arguments.
2364
2365         object.c (mono_object_isinst_mbyref): Interfaces with variant generic arguments
2366         can't use the simple bitfield check, so call mono_class_is_assignable_from if
2367         the bitfield check fails.
2368
2369 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2370
2371         * class.c (mono_class_is_assignable_from): Rework the generics variance code
2372         to be easier to read and fix bugs in the case a non generic type implements a variant
2373         interface.
2374
2375         * class.c (mono_class_has_variant_generic_params): Make non static.
2376
2377         * class-internals.h: Export mono_class_has_variant_generic_params as part of
2378         the private API.
2379
2380 2010-01-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2381
2382         * assembly.c: fix MONO_PATH debug output.
2383
2384 2010-01-06  Atsushi Enomoto  <atsushi@ximian.com>
2385
2386         * culture-info-table.h : regenerated.
2387
2388 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2389
2390         * verify.c (mono_verifier_verify_class): Properly check for broken parent. Ignore
2391         types that are meant to not have a parent.
2392
2393 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2394
2395         * marshal.c (mono_marshal_get_runtime_invoke): Make a copy of the signature
2396         from the image mempool, so it is not leaked.
2397
2398 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2399
2400         * metadata-internals.h (_MonoImage): Remove unused generic_class_cache field.
2401
2402 2010-01-04  Sebastien Pouliot  <sebastien@ximian.com>
2403
2404         * verify.c (verify_valuetype_layout_with_target): Fix case
2405         that can lead to infinite recursion. Fix bug #567861
2406
2407 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2408
2409         * pedump.c: Run code verifier even if image verification fails
2410         due to a failed type we. This allows more errors to be shown.
2411
2412 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2413
2414         * class.c (count_virtual_methods): Remove the assert and now
2415         fail properly.
2416         
2417         * class.c (setup_interface_offsets): This can fail now.
2418
2419         * class.c (mono_class_setup_vtable_general): Check for parent vtable
2420         errors. Check setup_interface_offsets errors.
2421
2422         * class.c (setup_interface_offsets): Simplify the return error logic
2423         and remove class_init_ok.
2424
2425         Fixes #560327.
2426
2427 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2428
2429         * class.c (mono_class_init): Do class verification at the beginning. Add
2430         some asserts to avoid tripping into invalid memory.
2431
2432         * object.c (compute_class_bitmap): Replace a g_assert_not_reached with a
2433         g_error and a decent message.
2434
2435         * verify.c (mono_verifier_verify_class): Verify for invalid super type.
2436
2437         Fixes #567548.
2438
2439 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2440
2441         * mempool-internals.h (g_list_prepend_mempool): Define this and related functions
2442         as inline functions instead of defining them in mempool.c.
2443
2444         * metadata-internals.h (MonoImageSet): New structure representing a set of
2445         MonoImages, which own a collection of generic instances.
2446
2447         * metadata.c: Get rid of the global generic caches, instead assign each generic
2448         instance to the image set which consists of all the images referenced by the
2449         instance. This greatly speeds up mono_metadata_clean_for_image (), and allows
2450         the memory used by generic instances to be allocated from a per image-set mempool
2451         later.
2452
2453 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2454
2455         * marshal.c (mono_marshal_get_runtime_invoke): Fix a memory leak.
2456
2457 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2458
2459         * appdomain.c (zero_static_data): Fix a warning.
2460
2461         * locales.c (construct_culture_from_specific_name): Applied patch from
2462         José Antonio Sánchez Lázaro <jasl@darcysoft.es>. Fix a crash if a culture was
2463         not found. Fixes #567900.
2464
2465 2009-12-31  Sebastien Pouliot  <sebastien@ximian.com>
2466
2467         * loader.c (mono_method_get_signature_full): Remove two asserts.
2468         Return NULL instead so that the verifier can handle both cases 
2469         gracefully.
2470
2471 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2472
2473         * class.c (mono_class_setup_methods): Use checked version of mono_class_inflate_generic_method_full
2474         so we can properly fail types instead of crashing.
2475
2476         Fixes #567676.
2477
2478 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2479
2480         * reflection.c (reflection_methodbuilder_to_mono_method): Assert in case of a broken
2481         generic method.
2482
2483 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2484
2485         * marshal.c (mono_mb_emit_restore_result): Properly handle generic enums.
2486
2487 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2488
2489         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait): Don't close the
2490         wait handle if the wait is interrupted, since it is still in mon->wait_list, and
2491         we can't remove it from it since we don't hold the lock.
2492         (mon_new): Free the orphaned events here when a mon structure is added to the
2493         freelist. Fixes #561239. Thanks to Mike Rieker <wmrieker@nii.net> for tracking
2494         this down.
2495
2496 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2497
2498         * verify.c (init_stack_with_value_at_exception_boundary): Do stack overflow checking here
2499         as max stack might be zero.
2500
2501         Fixes #562320.
2502
2503 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2504
2505         Rework all uses of mono_class_setup_methods to accept that it can fail now.
2506
2507         * class.c (mono_class_setup_methods): This function now can fail the class. Do so for generic
2508         instances if the GTD did.
2509
2510         * class.c (mono_class_setup_properties): Ditto.
2511
2512         * class.c (mono_class_setup_events): Ditto.
2513
2514         * class.c (mono_class_setup_vtable): Fail early if the type is already broken.
2515
2516         * class.c (mono_class_setup_vtable_general): Add a few more missing broken type checks. Sanitize
2517         error setting.
2518
2519         * class.c (mono_class_init): Fail if GTD did.
2520
2521         * cominterop.c:
2522         * generic-sharing.c:
2523         * icall.c:
2524         * loader.c:
2525         * object.c:
2526         * verify.c: Properly handle failure of mono_class_setup_methods.
2527
2528 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2529
2530         * class-internals.c: Add mono_class_inflate_generic_method_full_checked and make
2531         mono_class_inflate_generic_method_full internal.
2532
2533         * class.c (inflate_generic_context): Now takes a MonoError argument.
2534
2535         * class.c (mono_class_inflate_generic_method_full): Now calls the _checked and abort on
2536         errors.
2537
2538 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2539
2540         * generic-sharing.c (instantiate_other_info): Avoid creating jump trampolines since
2541         they cannot be patched. Partly fixes #564408.
2542
2543 2009-12-24  Mark Probst  <mark.probst@gmail.com>
2544
2545         * metadata-internals.h, reflection.c: Use the
2546         MonoDynamicImage.handleref hash table only with unmanaged keys,
2547         and add a managed hash table handleref_managed for managed keys.
2548
2549 2009-12-24  Mark Probst  <mark.probst@gmail.com>
2550
2551         * sgen-gc.c: Unset to-space bumper between collections.  It might
2552         become invalid due to degraded allocations.
2553
2554 2009-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
2555
2556         * loader.c (mono_method_get_signature_full): Check if the returned signature is compatible
2557         with the one from the original method.
2558
2559         * metadata-verify.c (mono_verifier_is_sig_compatible): New function to verify signature
2560         compatibility.
2561
2562         * verify-internals.h: Add new function to the internal API.
2563
2564 2009-12-18  Dimitar Dobrev  <dpldobrev@yahoo.com>
2565
2566         * culture-info-tables.h: regenerated it to include the Georgian culture.
2567
2568 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2569
2570         * sgen-gc.c: Include mono/utils/memcheck.h.
2571
2572         * reflection.c (mono_reflection_get_type_internal_dynamic): Use assembly->domain
2573         instead of the current domain, since the two might not match if this is called
2574         from the debugger.
2575
2576         * metadata-internals.h (MonoDynamicAssembly): Add a 'domain' field to specify the
2577         domain which created this assembly.
2578
2579 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2580
2581         * debug-helpers.c (dis_one): Avoid a glib assert on empty strings.
2582
2583 2009-12-17  Mark Probst  <mark.probst@gmail.com>
2584
2585         * sgen-gc.c: Managed implementation of the specialized generic
2586         store write barrier.
2587
2588 2009-12-17  Rodrigo Kumpera  <rkumpera@novell.com>
2589
2590         * icall.c (ves_icall_Type_GetMethodsByName): Don't pin virtual methods if they are newslot.
2591         A private virtual newslot method is used to implement an interface method without exposing
2592         it to users. When querying for public instance methods, such method would hide a public one
2593         on a parent type.
2594
2595         Fixes #564379.
2596
2597 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2598
2599         * reflection.c (resolve_object): Fix the encoding of unmanaged calling
2600         conventions.
2601
2602 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2603
2604         * reflection.c (mono_type_get_object): Guard against NULL generic param owner.
2605
2606 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2607
2608         * class-internals.h (MonoDynamicGenericClass): Kill property and event related fields
2609         as they are no longer used.
2610         
2611          * metadata.c (free_generic_class_dependents): Remove reference to previous fields
2612
2613         * reflection.c (mono_reflection_generic_class_initialize): Ditto.
2614
2615 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2616
2617         * reflection.c (mono_type_get_object): If the type is VAR or MVAR check
2618         if the owner class has not been finished before returning reflection_info.      
2619
2620         Fixes #565127.
2621
2622 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2623
2624         * reflection.c (mono_custom_attrs_from_param): Avoid a crash if a dynamic
2625         param doesn't have custom attributes. Fixes #565117.
2626
2627         * class.c (mono_bounded_array_class_get): Make these classes PUBLIC. Fixes
2628         #565120.
2629
2630 2009-12-15  Rodrigo Kumpera  <rkumpera@novell.com>
2631
2632         * class.c (mono_class_setup_fields): Fail valuetypes that are bigger than 1Mb.
2633
2634 2009-12-15  Rodrigo Kumpera  <rkumpera@novell.com>
2635
2636         * pedump.c: Add partial-md mode that doesn't perform full metadata verification. It does the
2637         same amount done by a core-clr enabled runtime.
2638
2639 2009-12-15  Marek Habersack  <mhabersack@novell.com>
2640
2641         * appdomain.c (mono_make_shadow_copy): make sure access mode of
2642         the target files is reset to writable by owner and readable by
2643         everyone else to prevent problems when updating shadow copies of
2644         files whose source is read-only. Fixes bug #556884
2645
2646 2009-12-15  Mark Probst  <mark.probst@gmail.com>
2647
2648         * class.c (mono_generic_class_get_class): Allocate the generic
2649         class via malloc again, so that it can be freed when any one of
2650         the images of its constituent types is closed.
2651
2652         * metadata.c: When closing an image, don't free generic insts and
2653         generic classes right away, but put them into a list for later
2654         freeing.
2655
2656         * image.c, metadata-internals.h: Store the free list and in the
2657         second pass of closing an image, free it.
2658
2659 2009-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
2660
2661         * reflection.c (mono_generic_class_get_object): Assert if this is ever called.
2662
2663         * reflection.c (mono_reflection_register_with_runtime): Only register dynamic
2664         types in type_hash.
2665
2666         * reflection.c (resolve_object): Call ensure_complete_type on the inflated field.
2667
2668 2009-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
2669
2670         * reflection.c (mono_reflection_type_get_handle): Properly fail in case of a broken
2671         user type.
2672
2673         * reflection.c (mono_reflection_register_with_runtime): Throws in case a bad user type
2674         is used.
2675
2676 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2677
2678         * verify.c (mono_method_verify): The Unused opcodes produce an
2679         InvalidProgramException on .NET
2680
2681 2009-12-14  Sebastien Pouliot  <sebastien@ximian.com>
2682
2683         * loader.c (mono_method_get_header): Move assert after the verifier
2684         has been called on the method header.
2685
2686 2009-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
2687
2688         * object-internals.h: Remove useless field from MonoReflectionGenericClass.
2689
2690         * appdomain.c: Bump corlib version.
2691
2692 2009-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
2693
2694         To properly support user types, MonoGenericClass has to be used for regular, non SRE,
2695         types as well since otherwise generic instances would not return UT as arguments but
2696         their undelying system type.
2697
2698         * object-internals.h: Change field types of MonoGenericClass and *OnTypeBuilderInst
2699         to reflect the fact that they can have now multiple different types.
2700
2701         * reflection.c (mono_image_get_field_on_inst_token): Handle MonoField.
2702
2703         * reflection.c (mono_image_get_ctor_on_inst_token): Handle MonoCMethod.
2704
2705         * reflection.c (mono_image_get_method_on_inst_token): Handle MonoMethod.
2706
2707         * reflection.c (mono_reflection_register_with_runtime): Init super types
2708         if the image is not dynamic.
2709
2710         * reflection.c (mono_reflection_bind_generic_parameters): In case of a MonoGenericClass,
2711         check if the generic type definition is a TypeBuilder.
2712
2713         * reflection.c (mono_reflection_generic_class_initialize): If the generic type definition
2714         doesn't belong to a dynamic image, skip initialization.
2715
2716         * reflection.c (resolve_object): Properly handle *OnTypeBuilderInst types where their
2717         base definition is not a dynamic type.
2718
2719 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2720
2721         * object.c (mono_ldstr, mono_ldstr_metadata_sig): added calls to
2722         mono_profiler_string_allocation
2723
2724         * string-icalls.c (ves_icall_System_String_InternalAllocateStr):
2725         if string profiling is enabled, call
2726         mono_profiler_string_allocation
2727
2728         * profiler.h: added two MonoProfileFlags -
2729         MONO_PROFILE_IOMAP_EVENTS and MONO_PROFILE_STRING_ALLOC as well as
2730         installation functions for the hooks below.
2731
2732         * profiler-private.h, profiler.c: added two hooks:
2733         mono_profiler_string_allocation called whenever a string is
2734         allocated by InternalAllocateStr and mono_profiler_iomap called
2735         whenever IOMAP code performs an adjustement on a file path.
2736
2737 Fri Dec 11 18:24:04 CET 2009 Paolo Molaro <lupus@ximian.com>
2738
2739         * boehm-gc.c: fixed race condition while getting the target of a
2740         disappearing link (bug #522233).
2741
2742 2009-12-10  Rodrigo Kumpera  <rkumpera@novell.com>
2743
2744         * class.c (mono_type_get_full): Produce warning instead of simply swallowing
2745         the error.
2746
2747 2009-12-10  Rodrigo Kumpera  <rkumpera@novell.com>
2748
2749         * reflection.c: Add mono_reflection_register_with_runtime icall to
2750         allow a MonoGenericClass to register itself as the managed mirror of
2751         a given generic instance.
2752         This is a temporary workaround until all MGC instantiation happens in
2753         managed code.
2754
2755         * object-internals.h: Ditto.
2756
2757         * icall-def.h: Ditto.
2758
2759 2009-12-10  Mark Probst  <mark.probst@gmail.com>
2760
2761         * sgen-gc.c (find_in_remsets): Also search the generic store
2762         remsets.
2763
2764 2009-12-10  Mark Probst  <mark.probst@gmail.com>
2765
2766         * sgen-gc.c: Don't access class names in debugging code when
2767         unloading a domain, because they might not be valid anymore.
2768
2769 2009-12-10  Mark Probst  <mark.probst@gmail.com>
2770
2771         * domain.c, domain-internals.h: New function mono_domain_unset().
2772
2773         * appdomain.c (unload_thread_main): Detach the thread again at the
2774         end.
2775
2776         * threads.c: When a thread exists or is detached, unset its domain
2777         so that it's NULL when, for example, a pthread destructor runs.
2778
2779         * sgen-gc.c: Assert that there is no domain set after a thread is
2780         done.
2781
2782 2009-12-10  Mark Probst  <mark.probst@gmail.com>
2783
2784         * class.c (mono_generic_class_get_class),
2785         metadata.c (free_generic_class): Allocate generic MonoClass's from
2786         the image mempool, not via malloc.  The problem with malloc is
2787         that when unloading a domain those classes are freed before
2788         clearing the heap and SGen needs the classes.  Rewriting the
2789         unloading code to do the free later would be more work and there's
2790         no point in using malloc anyway.
2791
2792 2009-12-09  Sebastien Pouliot  <sebastien@ximian.com>
2793
2794         * loader.c (mono_method_signature): Always call mono_loader_unlock 
2795         before returning.
2796
2797 2009-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2798
2799         * metadata-verify.c: Add mono_verifier_verify_string_signature to check
2800         user string blobs.
2801
2802         * verify-internals.h: Add new function to the internal API.
2803
2804         * verify.c (do_ldstr): Call into mono_verifier_verify_string_signature to
2805         check if it's a valid string.
2806
2807         * object.c (mono_ldstr): Ditto.
2808
2809         Fixes #561943.
2810
2811 2009-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2812
2813         * icall.c (ves_icall_GetCurrentMethod): Drop all generic arguments
2814         from a method before returning it. This is the expected behavior.
2815
2816 2009-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2817
2818         * reflection.c (inflate_method): Handle the case of a regular system type.
2819
2820 2009-12-08  Mark Probst  <mark.probst@gmail.com>
2821
2822         * sgen-gc.c, sgen-pinning-stats.c, sgen-gray.c: More statistics
2823         gathering code.
2824
2825         * mempool.c, mempool-internals.h: New function
2826         mono_mempool_get_bytes_allocated().
2827
2828         * Makefile.am: sgen-pinning-stats.c added.
2829
2830 2009-12-08  Mark Probst  <mark.probst@gmail.com>
2831
2832         * sgen-gc.c (create_allocator): Only use the fast path if the
2833         object size is within the small object size limit.
2834
2835 2009-12-07  Mark Probst  <mark.probst@gmail.com>
2836
2837         * sgen-gc.c: Make sure section->data is aligned to 8 bytes by
2838         possibly adding padding to sizeof (GCMemSection).
2839
2840 2009-12-07  Mark Probst  <mark.probst@gmail.com>
2841
2842         * sgen-gc.c (mono_gc_wbarrier_nostore): Skip the remset if the
2843         reference is not in the nursery.
2844
2845 2009-12-07  Rodrigo Kumpera  <rkumpera@novell.com>
2846
2847         * class.c (mono_class_from_typeref): Bounds check idx against the 
2848         assemblyref table.
2849
2850 2009-12-07  Mark Probst  <mark.probst@gmail.com>
2851
2852         * sgen-gc.c, sgen-pinning.c: When pinning, make only one pass
2853         through the potential roots, then sort the results and find the
2854         pinned objects from there.
2855
2856         * Makefile.am: sgen-pinning.c added.
2857
2858 2009-12-07  Mark Probst  <mark.probst@gmail.com>
2859
2860         * sgen-gc.c: Record generic stores in specialized remset buffers.
2861
2862 2009-12-06  Mark Probst  <mark.probst@gmail.com>
2863
2864         * sgen-gc.c: Make pinned chunks the same size as major heap
2865         sections, and align them as well, so that we can check whether an
2866         object is in a pinned chunk or a major section in constant time.
2867
2868 2009-12-06  Mark Probst  <mark.probst@gmail.com>
2869
2870         * sgen-gc.c (build_nursery_fragments): Don't leak fragments.
2871
2872 2009-12-06  Mark Probst  <mark.probst@gmail.com>
2873
2874         * sgen-gc.c: Make all major heap sections the same size (currently
2875         128k) and allocate them on aligned addresses.  Small heap sections
2876         give us better granularity with pinned objects - we can free up
2877         much more memory.
2878
2879 2009-12-06  Mark Probst  <mark.probst@gmail.com>
2880
2881         * string-icalls.c (ves_icall_System_String_GetLOSLimit): Debug
2882         output removed.
2883
2884 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2885
2886         Applied patch from Laurent Etiemble (laurent.etiemble@gmail.com).
2887
2888         * mono/metadata/assembly.c: When opening an assembly image, pass the real
2889         names in addition to the runtime generated one.
2890
2891         * mono/metadata/image.h: Add a function to take the real name of the assembly
2892         image.
2893
2894         * mono/metadata/image.c: If a real name has been passed to load an assembly,
2895         use it instead of the runtime generated one.
2896
2897         Code is contributed under MIT/X11 license.
2898
2899 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2900
2901         * marshal.c (emit_marshal_vtype): Do the klass == date_time_class checks
2902         before the other checks to prevent problems if the DateTime class is blittable.
2903         Hopefully fixes #559600.
2904
2905 2009-12-05  Mark Probst  <mark.probst@gmail.com>
2906
2907         * string-icalls.c, string-icalls.h, icall-def.h: New icall that
2908         returns the largest string length that will not be put into the
2909         LOS.
2910
2911         * sgen-gc.c, gc-internal.h: New function that returns the largest
2912         object size that will not be put into the LOS.
2913
2914         * appdomain.c: Bump corlib version.
2915
2916 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2917
2918         * class-internals.h: Add MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2919
2920         * generic-sharing.c: Handle MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2921
2922 2009-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2923
2924         * reflection.c (inflate_method): Fix signature.
2925
2926         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Reflect change
2927         in managed code.
2928
2929 2009-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2930
2931         * reflection.c (inflate_method): Make this method work with TypeBuilder as well.
2932
2933 2009-12-03  Mark Probst  <mark.probst@gmail.com>
2934
2935         * sgen-gc.c: Abstract to-space handling.
2936
2937 2009-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
2938
2939         * loader.c (find_method_in_class): Ignore methods with broken signatures.
2940
2941         Fixes #559906.
2942
2943 2009-12-03  Mark Probst  <mark.probst@gmail.com>
2944
2945         * sgen-gc.c: Only add references from outside the nursery to
2946         within the nursery to the global remset list.
2947
2948 2009-12-03  Mark Probst  <mark.probst@gmail.com>
2949
2950         * appdomain.c (create_exceptions): Set the domain temporarily if
2951         necessary to avoid cross-domain references.
2952
2953 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
2954
2955         * verify.c (get_stack_type): Return that the type is invalid instead of
2956         asserting.
2957
2958         * verify.c (mono_method_verify): Verify that all locals and arguments
2959         have valid stack types.
2960
2961         Fixes #559913.
2962
2963 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
2964
2965         * verify.c (mono_method_verify): Bounds check the filter offset. Make all
2966         bounds checking overflow aware.
2967
2968         Fixes #559910.
2969
2970 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
2971
2972         * verify.c (do_invoke_method): Check for invalid method signatures.
2973
2974         Fixes #553450.
2975
2976 2009-12-02  Jb Evain  <jbevain@novell.com>
2977
2978         * appdomain.c (MONO_CORLIB_VERSION): bump.
2979         * icall-def.h (get_base_definition): renamed to get_base_method
2980         and add a boolean argument indicating we want the original
2981         method definition, or the immediate base method.
2982         * icall.c: apply the get_base_definition to get_base_method change.
2983
2984 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
2985
2986         * class.c (mono_class_setup_fields): Fail an enum without an instance field.
2987
2988         Fixes #558042.
2989
2990 Wed Dec 2 16:35:49 CET 2009 Paolo Molaro <lupus@ximian.com>
2991
2992         * class.c: remove asserts for invalid type token in
2993         mono_class_name_from_token(), mono_assembly_name_from_token() and
2994         mono_class_create_from_typedef () (fixes bug #553318).
2995
2996 Wed Dec 2 15:48:19 CET 2009 Paolo Molaro <lupus@ximian.com>
2997
2998         * metadata.c, class.c, loader.c: remove assert after bsearch() for
2999         incorrect assemblies (bug #553322).
3000
3001 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3002
3003         * metadata.c (mono_metadata_inflate_generic_inst): Add MonoError parameter.
3004
3005         * metadata-internals.h: Change signature of mono_metadata_inflate_generic_inst. 
3006
3007         * class.c (inflate_generic_type): Use new version of mono_metadata_inflate_generic_inst.
3008
3009         * class.c (inflate_generic_context): Ditto.
3010
3011         * loader.c (method_from_methodspec): Ditto.
3012
3013         Fixes #558230.
3014
3015 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3016
3017         * class.c (mono_type_retrieve_from_typespec): Use MonoError machinery to report errors.
3018
3019         * class.c (mono_class_create_from_typespec): Ditto.
3020
3021         * class.c (mono_class_get_full): Fix for change on the above 2 functions.
3022
3023         * class.c (mono_type_get_full): Fix for change on the above 2 functions.
3024
3025         Fixes #558184.
3026
3027 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3028
3029         * verify.c (mono_class_has_default_constructor): Check fror broken signatures.
3030
3031         * verify.c (verify_delegate_compatibility): Ditto.
3032
3033         * verify.c (do_newobj): Ditto.
3034
3035         Fixes #558046.
3036
3037 2009-12-02  Mark Probst  <mark.probst@gmail.com>
3038
3039         * sgen-gc.c: Use a gray queue instead of requiring that gray
3040         objects are in a contiguous region.
3041
3042         * sgen-gray.c: The gray queue implementation.
3043
3044         * Makefile.am: sgen-gray.c added.
3045
3046 2009-12-02  Mark Probst  <mark.probst@gmail.com>
3047
3048         * appdomain.c: When unloading a domain, zero its static data and
3049         perform a minor collection when using SGen.  That will get rid of
3050         all the remsets pointing into that domain's static data.
3051
3052         * sgen-gc.c: Allow remsets into static data.  By doing this we
3053         need less checks so we're more efficient.
3054
3055 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3056
3057         * verify.c (mono_method_verify): Check for catch clauses with broken
3058         types.
3059
3060         Fixes #558465.
3061
3062 2009-12-01  Jb Evain  <jbevain@novell.com>
3063
3064         * class.c (make_generic_param_class): set the namespace of
3065         the generic parameter class from its owner, if available.
3066
3067 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3068
3069         * verify.c (code_bounds_check): Do proper overflow checking.
3070
3071         * verify.c (mono_method_verify): The number of switch entries is
3072         an unsigned int. Properly bounds check it.
3073
3074         Fixes #558594.
3075
3076 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3077
3078         * metadata.c: Kill mono_metadata_get_param_attrs_checked. Add
3079         mono_metadata_method_has_param_attrs which only checks if a given param
3080         list has a non zero flags entry.
3081
3082         * metadata.c (mono_metadata_get_param_attrs): Add param_count parameter
3083         to inform how many params should we expect to decode.
3084
3085         * loader.c (mono_method_signature): Use mono_metadata_method_has_param_attrs
3086         as it's faster than mono_metadata_get_param_attrs.
3087
3088         * metadata-internals.h: Fix mono_metadata_get_param_attrs signature and
3089         add mono_metadata_method_has_param_attrs.
3090
3091 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3092
3093         * class.c (mono_class_setup_vtable_general): Check for mono_method_get_vtable_slot
3094         failures.
3095
3096         * class.c (mono_method_get_vtable_slot): Don't assert if the computed method slot
3097         is -1 but its class is broken.
3098
3099         Fixes #558522.
3100
3101 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3102
3103         * metadata.c: Introduce mono_metadata_get_param_attrs_checked which checks
3104         for parameter overflow.
3105
3106         * metadata.c (mono_metadata_parse_method_signature_full): Use checked version
3107         of mono_metadata_get_param_attrs.
3108
3109         * metadata-internals.h: Add mono_metadata_get_param_attrs_checked to the internal
3110         API.
3111
3112         * loader.c (mono_method_signature): Use checked version of mono_metadata_get_param_attrs.
3113
3114 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3115
3116         * class.c (mono_class_setup_fields): Check for fields with broken types.
3117
3118         Fixes #558741.
3119
3120 2009-11-28  Rodrigo Kumpera  <rkumpera@novell.com>
3121
3122         * reflection.c (ensure_generic_class_runtime_vtable): Split this function in 2
3123         so we can avoid calling ensure_runtime_vtable multiple times for the GTD during
3124         its TypeBuilder::CreateType ().
3125
3126         * reflection.c (ensure_generic_class_runtime_vtable): Avoid initializing interfaces
3127         if not needed.
3128
3129         * reflection.c: Every time we change the interface array, set interfaces_packed to NULL
3130         to make setup_interface_offsets happy.
3131
3132         * reflection.c (remove_instantiations_of_and_ensure_contents): Fix instances again as corlib
3133         compilation now works.
3134
3135 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
3136
3137         * appdomain.c (create_exceptions): New helper function extracted from
3138         mono_runtime_init () to precreate objects used during exception handling.
3139         (mono_runtime_init): Call it.
3140         (mono_domain_create_appdomain_internal): Ditto. Fixes #555264.
3141
3142 2009-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3143
3144         * reflection.c (remove_instantiations_of_and_ensure_contents): Temp hack to fix corlib
3145         compilation until the proper one is found.
3146
3147 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
3148
3149         * class.c (mono_class_setup_vtable_general): Cache the result of
3150         get_virtual_methods () since it can be slow because of the metadata
3151         optimization.
3152
3153         * metadata-internals.h (_MonoImage): Change 'method_cache' to a GHashTable
3154         from a MonoValueHashTable for now, since the later is based on an earlier
3155         version of hpj's internal probing code and seems to have serious collision
3156         issues.
3157
3158         * loader.c (mono_get_method_full): Update after the change above.
3159
3160 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3161
3162         * class-internals.h (MonoCachedClassInfo): Add 'is_generic_container' field.
3163
3164 2009-11-26  Rodrigo Kumpera  <rkumpera@novell.com>
3165
3166         * reflection.c (get_field_on_inst_generic_type): Try to fallback using the field from
3167         the GTD instead of the DGC instead of crashing.
3168
3169         * reflection.c (ensure_generic_class_runtime_vtable): Only reinflate stuff that is
3170         required. Inflate fields if needed.
3171
3172         * reflection.c (remove_instantiations_of): Ensure generic instances are properly
3173         finished. Renamed.
3174
3175 2009-11-26  Rodrigo Kumpera  <rkumpera@novell.com>
3176
3177         * class.c (check_interface_method_override): Check for NULL signatures and fail
3178         the type.
3179
3180         * debug-helpers.c (mono_signature_get_desc): Return a fixed string for NULL signatures.
3181
3182         Fixes #553428.
3183
3184 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3185
3186         * class.c (mono_class_get_virtual_methods): Call decode_row_col to obtain
3187         the MONO_METHOD_FLAGS column instead of decoding the whole row.
3188
3189 2009-11-25  Rodrigo Kumpera  <rkumpera@novell.com>
3190
3191         * loader.c (field_from_memberref): Resolve the class first then the field
3192         signature. Remove a lot of duplicated code and make sure we don't pass valid
3193         values to mono_loader_set_error_field_load.
3194
3195         Fixes #553306.
3196
3197 2009-11-25  Rodrigo Kumpera  <rkumpera@novell.com>
3198
3199         * class.c (inflate_generic_type): Change code to use new signature of
3200         mono_error_set_bad_image.
3201
3202         Fixes #558124.
3203
3204 2009-11-25  Sebastien Pouliot  <sebastien@ximian.com> 
3205
3206         * verify.c (mono_method_verify): Don't free ctx.params items if 
3207         we aborted while inflating the ctx.locals. Complete previous fix
3208
3209 2009-11-25  Sebastien Pouliot  <sebastien@ximian.com>
3210
3211         * verify.c (mono_method_verify): Use the uninflated type name, 
3212         when the inflated is null, to report errors. Also take care when
3213         freeing, not to free everything since, in case of an error, some
3214         stuff would be copies (i.e. not allocated by the function itself)
3215         Fix bug #558145
3216
3217 2009-11-24  Rodrigo Kumpera  <rkumpera@novell.com>
3218
3219         * verify.c (stack_push, stack_pop, stack_pop_safe): Assert if we underflow
3220         or overflow. The caller must have done this check explicitly. This guard us
3221         from accessing invalid memory.
3222
3223         * verify.c (do_push_static_field): Check for stack overflow.
3224
3225         Fixes #553333.
3226
3227 2009-11-24  Rodrigo Kumpera  <rkumpera@novell.com>
3228
3229         * loader.c (find_method_in_class): Don't crash if the signature cannot
3230         be resolved.
3231
3232         * metadata.c (mono_metadata_parse_generic_param): Return NULL instead
3233         of asserting for the case of invalid params.
3234
3235         Fixes #553304.
3236
3237 2009-11-24  Sebastien Pouliot  <sebastien@ximian.com>
3238
3239         * image.c (mono_image_load_module): Fix crash when a bad assembly
3240         has no module at all (fix bug #553412) and also replace the 
3241         g_assert with a return NULL (documented return value for failure)
3242
3243 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
3244
3245         * debug-helpers.c (mono_type_get_desc): Handle typedbyref.
3246
3247 2009-11-23  Miguel de Icaza  <miguel@novell.com>
3248
3249         * file-io.c: Change FindFirst/FindNext/FindClose API to return the
3250         file attribute to managed code and avoid doing the mask/attribute
3251         checks here. 
3252
3253 2009-11-22  Miguel de Icaza  <miguel@novell.com>
3254
3255         * file-io.c: Surface a smart FindFirst/FindNext/FindClose API to
3256         the managed world.
3257
3258         * icall-def.h: New entry points.
3259         
3260 2009-11-19  Mark Probst  <mark.probst@gmail.com>
3261
3262         * process.c: Don't put references to managed objects into a
3263         g_ptr_array.
3264
3265 2009-11-18  Sebastien Pouliot  <sebastien@ximian.com>
3266
3267         * class.c (can_access_internals): Allow CoreCLR to participate in
3268         allowing (or not) [InternalsVisibleTo] between assemblies.
3269         * security-core-clr.c|h: Make sure that only trusted code (a 
3270         superset of platform code) can access the internals of platform
3271         code.
3272
3273 Mon Nov 16 16:28:11 CET 2009 Paolo Molaro <lupus@ximian.com>
3274
3275         * reflection.c: use the correct base class to get the virtual method
3276         "get_UnderlyingSystemType" and speed up the icall. Fixes bug #555013.
3277
3278 2009-11-16  Sebastien Pouliot  <sebastien@ximian.com>
3279
3280         * security-core-clr.c (get_caller_no_reflection_related): 
3281         [Mono]Type.InvokeMember is outside System.Reflection[.Emit] but
3282         it's still reflection and must be filtered correctly.
3283
3284 2009-11-16  Mark Probst  <mark.probst@gmail.com>
3285
3286         * object.c (compute_class_bitmap): Fix for large bitmaps.
3287
3288 2009-11-15  Zoltan Varga  <vargaz@gmail.com>
3289
3290         (mono_gc_get_suspend_signal): Fix the build with a system libgc.
3291
3292         * boehm-gc.c (mono_gc_base_init): Applied patch from DKoushik K. Dutta (
3293         koush@koushikdutta.com). Disable GC_no_dls on android.
3294
3295 2009-11-12  Mark Probst  <mark.probst@gmail.com>
3296
3297         * sgen-gc.c (find_tlab_next_from_address): Handle the case where
3298         tlab_next points outside the TLAB because the allocator was
3299         interrupted.
3300
3301 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3302
3303         * reflection.c (mono_image_module_basic_init): Handle exceptions correctly.
3304
3305 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3306
3307         * object-internals.h: Change signature for mono_string_to_utf8_image.
3308
3309         * object.c (mono_string_to_utf8_image): Change signature to take a MonoError
3310         argument.
3311
3312         * reflection.c: Take care of mono_string_to_utf8_image change and avoid raising
3313         exceptions due to mono_string_to_utf8.
3314
3315 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3316
3317         * object-internals.h: Change signature for mono_string_to_utf8_mp.
3318
3319         * object.c (mono_remote_class): Make sure all resources are released before
3320         raising an exception.
3321
3322         * object.c (mono_print_unhandled_exception): Avoid raising an exception.
3323
3324 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3325
3326         * mono-perfcounters.c (network_get_impl): Change variable initialization
3327         ordering to fix potential memory leak in case of exceptions.
3328
3329         * mono-perfcounters.c (mono_perfcounter_create): Properly handle badly
3330         encoded strings.
3331         
3332 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3333
3334         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): Change
3335         variable initialization ordering to fix potential memory leak in case
3336         of exceptions.
3337
3338 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3339
3340         * icall.c (mono_ArgIterator_Setup): Remove the MONO_ARCH_REGPARMS stuff, its not
3341         needed.
3342
3343 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3344
3345         * appdomain.c: Fix shadow path code to better deal with exceptions.
3346
3347 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3348
3349         * appdomain.c: Use checked version of mono_string_to_utf8 to avoid raising an
3350         exception in the middle of the runtime code.
3351
3352 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3353
3354         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): Don't
3355         leak memory with broken envvar value.
3356
3357 2009-11-06  Mark Probst  <mark.probst@gmail.com>
3358
3359         * reflection.c (mono_reflection_setup_internal_class): Because
3360         nested classes are not added to the name cache, we must put them
3361         in the reflection_info_unregister_classes list.
3362
3363 2009-11-05  Sebastien Pouliot  <sebastien@ximian.com>
3364
3365         * class.c: When CoreCLR is enabled don't call mono_init_com_types
3366         if MONO_CLASS_IS_IMPORT return true unless the type reside in 
3367         platform (trusted) code. Instead we return a TypeLoadException to
3368         be thrown later. This is the exception thrown by Silverlight 2 if
3369         a type, inside application (user) code is marked with [ComImport]
3370
3371 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3372
3373         * icall.c (ves_icall_System_Diagnostics_Debugger_IsAttached_internal): Call
3374         mono_is_debugger_attached () too.
3375
3376         * mono-debug.c (mono_is_debugger_attached): New helper function.
3377         (mono_set_is_debugger_attached): Ditto.
3378
3379 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3380
3381         * object-internals.h: Add mono_string_to_utf8_checked.
3382
3383         * object.c: Implement mono_string_to_utf8_checked.
3384
3385 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3386
3387         * class.c: Add missing check for load errors after every
3388         call to mono_class_setup_fields
3389
3390         Fixes #552282.
3391
3392 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3393
3394         metadata-verify.c (verify_tables_schema): Fix the error message.
3395
3396 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3397
3398         * metadata.c: Change event table schema to use TDOR for event type
3399         as this is what it's meant to be.
3400
3401         * metadata.c (mono_metadata_compute_size): Change MONO_TABLE_ASSEMBLYPROCESSOR
3402         to MONO_TABLE_ASSEMBLYREFPROCESSOR, which is table that has a MONO_MT_TABLE_IDX
3403         entry.
3404
3405         * metadata.c (mono_metadata_compute_size): Trim MT_TABLE_IDX of code that no
3406         longer makes sense: remove MONO_TABLE_EVENT and remove checks for non-existent
3407         rows in MONO_TABLE_GENERICPARAM.
3408
3409         Fixes #552289.
3410
3411 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3412
3413         * class.c (mono_image_add_to_name_cache): Assert on duplicate
3414         insertion.
3415
3416         * reflection.c (mono_reflection_setup_internal_class): Avoid
3417         registering a gc root the same MonoClass multiple times.
3418         Don't register nested types on the global scope as they should
3419         not be available there.
3420
3421 2009-11-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3422
3423         * culture-info-tables.h: regenerated.
3424
3425 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3426
3427         * debug-helpers.c: avoid g_strdup() in mono_type_full_name().
3428
3429 2009-11-04  Sebastien Pouliot  <sebastien@ximian.com>
3430
3431         * string-icalls.c|h: Remove string internal calls that are not 
3432         used anymore by the class libraries.
3433         * icall.c: Remove System_Reflection_FieldInfo_internal_from_handle
3434         which is not used in the class librairies.
3435         * icall-def.h: Update tables.
3436
3437 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3438
3439         * class.h: Move mono_class_inflate_generic_type_checked...
3440
3441         * class-internals.h: to here and make it internal. We don't want to
3442         further expose MonoGenericContext. 
3443
3444 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3445
3446         * verify.c (mono_method_verify): Improve error message.
3447
3448 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3449
3450         * reflection.c (fieldref_encode_signature): If field_image is NULL then
3451         the token is already properly encoded. Fixs 4.0 build.
3452
3453 2009-11-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3454
3455         * locales.c (construct_number_format): Check if the number index is
3456         valid before trying to use it, if not, just return.
3457         
3458 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3459
3460         * marshal.c (mono_marshal_get_runtime_invoke): Don't reset abort exceptions,
3461         since that loses the abort state. Fixes #539394.
3462
3463 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3464
3465         * marshal.c (mono_marshal_get_native_wrapper): For icall wrappers, add an
3466         explicit this argument to the call signature.
3467         (mono_marshal_get_icall_wrapper): Ditto.
3468
3469 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3470
3471         * reflection.c (fieldref_encode_signature): Add new field_image parameter
3472         to indicate which assembly to use when resolving a custom-mod.
3473
3474         Fixes handling of volatile fields used across assemblies as reported in #551513.
3475
3476 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3477
3478         * loader.c: Improve error messages.
3479
3480 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3481
3482         * class.c (mono_class_setup_methods): Only give a slot for virtual methods
3483         of interfaces. Fixes IKVM.
3484
3485         * class.c (mono_class_setup_vtable_general): Improve debug spew.
3486
3487 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3488
3489         * verify.c (verifier_inflate_type): Return the inflated type on success.
3490
3491 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3492
3493         * debug-mono-symfile.c (check_line): Fix the handling of IL offset 0.
3494
3495         * threads.c (mono_thread_attach): Call the profiler thread start callback.
3496
3497         * object-internals.h (_MonoThreadInternal): Add a 'flags' field.
3498
3499         * threads.c (build_wait_tids): Ignore threads which have the DONT_MANAGE
3500         flag set.
3501
3502         * profiler.c: Add new profiler callbacks for runtime invoke.
3503
3504         * object.c (mono_runtime_invoke): Call the runtime invoke callbacks.
3505
3506 2009-11-01  Mark Probst  <mark.probst@gmail.com>
3507
3508         * sgen-gc.c: Keep track of the reason for a major collection and
3509         write it to the heap-dump file.
3510
3511 2009-10-31  Miguel de Icaza  <miguel@novell.com>
3512
3513         * threads.c: refactor the code that initializes the
3514         thread_start_args into a reusable function and use this in the two
3515         methods that start up threads.
3516
3517 2009-10-31  Zoltan Varga  <vargaz@gmail.com>
3518
3519         * appdomain.c (mono_domain_try_unload): Applied patch from Romain Tartière.
3520         Fix returning when WaitForSingleObjectEx returns WAIT_IO_COMPLETION.
3521
3522 2009-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3523
3524         * mono-perfcounters.c: add the "_Total" instance for CPU counters.
3525         Until now, we only had the per-cpu(core) counters.
3526
3527 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3528
3529         * gc-internal.h, boehm-gc, sgen-gc.c, null-gc: Add
3530         mono_gc_get_suspend_signal(), which returns the suspend signal
3531         number used by the GC.
3532
3533 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3534
3535         * threads.c (start_wrapper): Avoid an assert if thread_start_args () is NULL.
3536
3537         * threads.c (start_wrapper): Call mono_profiler_thread_start () later after
3538         signalling start_notify.
3539
3540 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
3541
3542         * appdomain.c: do not test the st_mode field for shadow-copies.
3543         Fixes bug #545276.
3544
3545 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
3546
3547         * threadpool.[ch]: added hooks for thread start/finish and item
3548         processing begin/end. For monotouch use only.
3549
3550 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3551
3552         * threads.c (mono_thread_get_name): New helper function.
3553
3554         * reflection.c (resolve_object): Set handle_class for strings too.
3555         (mono_reflection_create_custom_attr_data_args): New helper function to decode
3556         a cattr blob into a set of arrays and structures without creating the custom
3557         attributes themselves.
3558         (create_custom_attr_data): Simplify using create_custom_attr_data_args.
3559
3560         * mono-debug.c (mono_debug_il_offset_from_address): New helper function.
3561
3562         * debug-mono-symfile.c (mono_debug_symfile_get_line_numbers): New helper
3563         function.
3564
3565 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3566
3567         * verify.c: Replace calls to mono_class_inflate_generic_type with
3568         mono_class_inflate_generic_type_checked. Fixes #480005.
3569
3570 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3571
3572         * class.c (mono_class_inflate_generic_type_with_mempool): Clear the error
3573         object since not all paths lead to callees initing it.
3574
3575 2009-10-23  Alp Toker  <alp@nuanti.com>
3576
3577         Fix embedding API breakage from r144688. mono-compiler.h is an internal
3578         header and should not be shipped:
3579
3580         * class.h: Back out MONO_DEPRECATED change. Currently depends on config.h
3581         which is specific to the mono build. Not going to work.
3582
3583 2009-10-23  Sebastien Pouliot  <sebastien@ximian.com>
3584
3585         * security-manager.c: Report if core-clr is active from
3586         ves_icall_System_Security_SecurityManager_get_SecurityEnabled
3587         to allow Moonlight BCL to behave appropriately (both in browser
3588         and outside, e.g. smcs)
3589
3590 2009-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
3591
3592         * mono-config.c: ignore UTF-8 BOM and report parser errors.
3593         Fixes bug #549108.
3594
3595 2009-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3596
3597         * class.c: fix typo.
3598
3599 2009-10-22  Rodrigo Kumpera  <rkumpera@novell.com>
3600
3601         * class-internals.h: Change signature of mono_class_inflate_generic_type_with_mempool to take
3602         a MonoError parameter.
3603
3604         * class.h: Mark mono_class_inflate_generic_type deprecated, add new mono_class_inflate_generic_type_checked
3605         version that can does proper error handling.
3606
3607         * class.c (inflate_generic_type): Add a MonoError parameter. Don't assert on error, use new mono error machinery.
3608
3609         * class.c (mono_class_inflate_generic_type_with_mempool): Add new MonoError parameter.
3610
3611         * class.c, generics-sharing.c: Changes to handle mono_class_inflate_generic_type_with_mempool new signature.
3612
3613 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
3614
3615         * debug-helpers.c (dis_one): Fix the disassembly of empty strings when
3616         NO_UNALIGNED_ACCESS is defined.
3617
3618 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3619
3620         * marshal.c (mono_string_builder_to_utf16): Applied patch from
3621         Hib Eris  <hib@hiberis.nl>. Return empty string for empty string builders.
3622         Fixes #549173.
3623
3624 2009-10-22  Mark Probst  <mark.probst@gmail.com>
3625
3626         * sgen-gc.c: Shorten sections whenever possible.
3627
3628 2009-10-22  Mark Probst  <mark.probst@gmail.com>
3629
3630         * sgen-gc.c: Use our portable semaphore #defines.
3631
3632 2009-10-22  Mark Probst  <mark.probst@gmail.com>
3633
3634         * sgen-gc.c: A debug option for dumping the heap layout to a file
3635         after each collection.
3636
3637 2009-10-21  Mark Probst  <mark.probst@gmail.com>
3638
3639         * sgen-gc.c: Make managed write barriers atomic via
3640         thread-restarts.
3641
3642 2009-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3643
3644         * verify.c (verify_delegate_compatibility): Properly verify delegate creation of static
3645         methods. Fixes #543021.
3646
3647 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
3648
3649         * socket-io.[ch]: fix VS build.
3650
3651 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
3652
3653         * icall-def.h:
3654         * socket-io.[ch]: implemented SendFile.
3655
3656 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
3657
3658         * class.c (mono_class_create_from_typedef): Initialize class->element_class
3659         before the interfaces to avoid crashes later if class initialization fails.
3660         Fixes #548417.
3661
3662         * marshal.c (emit_marshal_vtype): Implement byref marshalling of DateTime.
3663         Fixes #548276.
3664
3665 2009-10-20  Marek Safar  <marek.safar@gmail.com>
3666
3667         * domain.c: Bump 4.0 version.
3668
3669 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3670
3671         * assembly.c (mono_assembly_load_reference): Fix leak when 'status'
3672         code is known. (parse_public_key) Remove duplicate (unneeded) NULL
3673         check since 'pubkey' can't be NULL at this stage
3674         * icall.c (ves_icall_System_Array_FastCopy): Add comment about
3675         the check. (ves_icall_Type_GetInterfaceMapData) Remove duplicate
3676         initialization of 'iter'
3677
3678 2009-10-16  Bill Holmes  <billholmes54@gmail.com>
3679
3680         * cominterop.c : Search the interface parts of vtable to find 
3681           method matches.  Fixes 547030.
3682
3683         Code is contributed under MIT/X11 license.
3684
3685 2009-10-15 Gonzalo Paniagua Javier <gonzalo@novell.com>
3686
3687         * marshal.c: BeginInvoke cannot be called on multicast delegates with
3688         multiple targets. Fixes bug #574426.
3689
3690 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3691
3692         * profiler.h: Put here the definition of
3693         MONO_PROFILER_MAX_STAT_CALL_CHAIN_DEPTH
3694         (and fix the build...).
3695
3696 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3697
3698         * profiler.c, profiler.h, profiler-private.h:
3699         Added support for different ways of getting call chains in stat mode.
3700
3701 2009-10-12  Mark Probst  <mark.probst@gmail.com>
3702
3703         * object.c, object-internals.h: New function for computing the
3704         size of an array, factored out of mono_array_new_full().  Use
3705         SGen's functions for allocating arrays and vectors.
3706
3707         * sgen-gc.c, gc-internal.h: Special functions for allocating
3708         arrays and vectors without race conditions.  A managed array
3709         allocator method.
3710
3711         * boehm-gc.c, null-gc.c: Don't provide a managed array allocator.
3712
3713 2009-10-12  Mark Probst  <mark.probst@gmail.com>
3714
3715         * object.c, object.h, icall.c: Write barriers do the copying now,
3716         as well, so no need for an additional memcpy.
3717
3718         * sgen-gc.c: Lock when storing remsets.  Do the memory
3719         copying/moving in the write barriers.
3720
3721         * null-gc.c, boehm-gc.c: Write barriers must copy here, too.
3722
3723         * reflection.c: Added an assert.
3724
3725 2009-10-12  Mark Probst  <mark.probst@gmail.com>
3726
3727         * threads.c, process.c: A few missing write barriers.
3728
3729 2009-10-12  Joel W. Reed <joelwreed@gmail.com>
3730
3731         * mono-perfcounters.c, mono-perfcounters-def.h: Add
3732         network performance counters for bytes sent per second, bytes
3733         received per second, and bytes total per second.
3734
3735         Code is contributed under MIT/X11 license.
3736
3737 2009-10-09  Mark Probst  <mark.probst@gmail.com>
3738
3739         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
3740         Fix warning.
3741
3742 2009-10-09  Mark Probst  <mark.probst@gmail.com>
3743
3744         * threads.c, object-internals.h, object.c: Move code for
3745         transferring an object to a different domain (via
3746         serialization/remoting) to object.c.
3747
3748         * object.c (call_unhandled_exception_delegate): If the exception
3749         is in a different domain than the delegate, transfer the exception
3750         to that domain.
3751
3752 2009-10-07  Zoltan Varga  <vargaz@gmail.com>
3753
3754         * marshal.c (emit_marshal_vtype): Emit marshalling of DateTime to OLE DATE.
3755         Fixes #322934.
3756
3757 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3758
3759         * domain.c (DEFAULT_RUNTIME_VERSION): Change this to v2.0.
3760
3761 2009-10-06  Mark Probst  <mark.probst@gmail.com>
3762
3763         * object.c (mono_method_return_message_restore): Handle the case
3764         where the argument is an instance of a generic type.  Fixes
3765         #544446.
3766
3767 2009-10-06  Mark Probst  <mark.probst@gmail.com>
3768
3769         * object.c (set_value): Write barrier fix - we must pass the
3770         count, not the size.
3771
3772 2009-10-05  Zoltan Varga  <vargaz@gmail.com>
3773
3774         * domain.c (mono_init_internal): Print a useful error message when encountering
3775         an old mscorlib, instead of crashing. Fixes #544307.
3776
3777 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3778
3779         * appdomain.c (copy_app_domain_setup): Fix a warning.
3780
3781         * debug-helpers.c (dis_one): Ditto.
3782
3783 2009-10-04  Mark Probst  <mark.probst@gmail.com>
3784
3785         * domain-internals.h, appdomain.c: The AppDomainSetup is copied
3786         into the new domain, instead of referencing the original one.
3787
3788         * marshal.c, marshal.h: Make mono_marshal_xdomain_copy_value()
3789         non-static.
3790
3791         * appdomain.c: Corlib version bump.
3792
3793 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3794
3795         * threadpool.c: one more...
3796
3797 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3798
3799         * threadpool.c: forgot a LeaveCriticalSection when telling the idle
3800         threads to die because we're shutting down. delgate5.exe works again.
3801
3802 2009-10-01  Bill Holmes  <billholmes54@gmail.com>
3803
3804         * cominterop.c (mono_marshal_free_ccw_entry): Updating the
3805           ccw_interface_hash table when a ccw is finalized.
3806
3807         Code is contributed under MIT/X11 license.
3808
3809 2009-09-30  Mark Probst  <mark.probst@gmail.com>
3810
3811         * assembly.c, domain.c, image.c, metadata-internals.h: Split
3812         domain and image unloading into two steps.  We must do this
3813         because clearing the domain in SGen requires the class metadata to
3814         be intact, but we need to free the mono_g_hash_tables in case a
3815         collection occurs during domain unloading and the roots would trip
3816         up the GC.
3817
3818 2009-09-30  Mark Probst  <mark.probst@gmail.com>
3819
3820         * object-internals.h: Remove serialized culture fields from
3821         MonoInternalThread.
3822
3823         * icall-def.h, thread-types.h, threads.c: Remove serialized
3824         culture icalls.
3825
3826         * appdomain.c: Corlib version bump.
3827
3828 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3829
3830         * marshal.c (emit_marshal_object): Emit out marshalling of stringbuilders.
3831         Fixes #543133.
3832
3833 2009-09-30  Mark Probst  <mark.probst@gmail.com>
3834
3835         * sgen-gc.c: Try to shorten the new section after a major
3836         allocation to avoid ever-growing sections.
3837
3838 2009-10-13  Martin Baulig  <martin@ximian.com>
3839
3840         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
3841         `MONO_DEBUGGER_EVENT_TRAMPOLINE' into
3842         `MONO_DEBUGGER_EVENT_OLD_TRAMPOLINE' and added a new
3843         `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
3844
3845         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 4.
3846
3847 2009-09-29 Gonzalo Paniagua Javier <gonzalo@novell.com>
3848
3849         * threadpool.c: fixed the order in which 'completed' and the wait
3850         handle, if any, are set.  Fixes bug #542933 and delegate2.exe
3851         No need to use the wait_handle field of ASyncCall. Make sure the
3852         threadpool is active when adding a job or queueing an idle thread.
3853
3854 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3855
3856         * object.c (mono_unhandled_exception): Fix a crash if there is no main thread.
3857
3858         * threads.c (build_wait_tids): Fix a crash if there is no main thread, like
3859         when using --compile-all.
3860
3861 2009-09-27  Mark Probst  <mark.probst@gmail.com>
3862
3863         * metadata.c (free_generic_class): Unregister the field_objects
3864         roots if we're using SGen.
3865
3866 2009-09-27  Mark Probst  <mark.probst@gmail.com>
3867
3868         * reflection.c (mono_dynamic_image_free): Deregister the GC root
3869         for GenericParamTableEntry.gparam.
3870
3871 2009-09-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
3872
3873         * marshal.c: don't create the handle when calling. It is created later
3874         if needed.
3875
3876 2009-09-26  Mark Probst  <mark.probst@gmail.com>
3877
3878         * sgen-gc.c: Warning fixes.
3879
3880 2009-09-26  Mark Probst  <mark.probst@gmail.com>
3881
3882         * sgen-gc.c: New debug option "xdomain-checks", which scans the
3883         whole heap for cross-domain references before each collection.
3884
3885         * sgen-scan-object.h: The scan action can now use SCAN to scan the
3886         object.
3887
3888         * threadpool-internals.h, threadpool.c: New function
3889         mono_thread_pool_is_queue_array() for checking whether a given
3890         array is used as a (cross-domain) queue by the thread pool code.
3891
3892 2009-09-26  Mark Probst  <mark.probst@gmail.com>
3893
3894         * sgen-gc.c: New function mono_gc_scan_for_specific_ref() which
3895         searches the whole heap for objects containing a specific
3896         reference.  Only for debugging.
3897
3898 2009-09-26  Mark Probst  <mark.probst@gmail.com>
3899
3900         * appdomain.c (MONO_CORLIB_VERSION): Bumped.
3901
3902         * icall-def.h, threads.c, threads-types.h: New icalls for copying
3903         byte arrays between domains.
3904
3905 2009-09-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
3906
3907         * threadpool.c:
3908         * class-internals.h:
3909         * mono-perfcounters-def.h:
3910         * mono-perfcounters.c:
3911         -There is a list of idle threads
3912         -Each of those idle threads wait on their own WaitHandle instead
3913         of all of them using the same semaphore. When a new work item is
3914         added, the job is assigned directly to an idle thread or a newly
3915         created one if possible and then the handle for that thread is
3916         signaled. Compare that to the current approach where all the
3917         threads in the pool compete to dequeue a job from the same
3918         queue.
3919         -New struct ThreadPool that brings together the bunch of static
3920         variable for each threadpool (IO and regular).
3921         -New performance counters: # of items added and its rate per
3922         threadpool. The rate will be used later, perhaps together with
3923         other perf. counters, to decide when idle threads should exit.
3924
3925 2009-09-25  Jonathan Chambers  <joncham@gmail.com>
3926
3927         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal): 
3928         Fix typo on Windows build.      
3929         (ves_icall_System_Net_Sockets_Socket_Accept_internal): Fix typo on Windows build.
3930         
3931         Code is contributed under MIT/X11 license.
3932
3933 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3934
3935         * object-internals.h: The Thread class is split up into Thread and
3936         InternalThread now.  We have exactly one InternalThread per
3937         thread, and at most one Thread per appdomain per thread.  Most
3938         data is stored in InternalThread.  All InternalThread objects live
3939         in the root domain.
3940
3941         * class-internals.h: Add internal_thread_class to MonoDefaults.
3942
3943         * appdomain.c (mono_domain_unload), attach.c (receiver_thread),
3944         domain.c, gc.c, icall-def.h, monitor.c, object.c, sgen-gc.c,
3945         socket-io.c, threadpool.c, thread-types.h, threads.c: Changes
3946         resulting from the split of the Thread class.
3947
3948         * gc-internal.h: Prototype for new function for checking whether a
3949         thread is the finalizer thread.
3950
3951         * appdomain.c: Corlib version bump.
3952
3953 2009-09-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3954
3955         * appdomain.c|h: Add a mono_domain_try_unload method which is
3956         equivalent to mono_domain_unload, except that it returns an exception
3957         instead of throwing it. Make mono_domain_unload use the
3958         mono_domain_try_unload method to avoid code-duplication.
3959
3960 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3961
3962         * debug-helpers.c (dis_one): Avoid unaligned accesses on platforms where that is
3963         a problem.
3964
3965 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3966
3967         * marshal.c (emit_ptr_to_object_conv): Generate an exception instead of
3968         aborting when a conversion is not implemented.
3969
3970 2009-09-23  Miguel de Icaza  <miguel@novell.com>
3971
3972         * verify.c: when comparing culture strings, use g_ascii_strcmp
3973
3974         * assembly.c (mono_public_tokens_are_equal): Change g_strcasecmp
3975         when comparing public key tokens to use memcmp on 16 bytes.   I do
3976         not believe this ever worked as advertised in the past.
3977
3978         The standard Public Key is 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00
3979         which would have always failed earlier.
3980
3981 2009-06-25  Miguel de Icaza  <miguel@novell.com>
3982
3983         * gc.c: Raise a NullArgumentException if the object passed is
3984         null.
3985
3986 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3987
3988         * image.c (mono_image_close): Atomically decrement the reference count and
3989         remove the image from the hash tables, to prevent another thread from seeing a
3990         dying MonoImage. Fixes #541194.
3991
3992 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3993
3994         * threadpool.c: actually use the minimum number of 'completion ports'
3995         (for us is just a potential worker thread).
3996
3997 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3998
3999         * threadpool.c: remove ares_htable. It does not make sense any more
4000         since the same objects are now stored in GC-tracked arrays while they are
4001         in the queue.
4002
4003 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4004
4005         * threadpool.c: increase the minimum length of the queues to 128.
4006         Remove warning.
4007
4008 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
4009
4010         * marshal.c (mono_marshal_get_string_ctor_signature): New internal function to
4011         return the modified signature used by string ctors.
4012
4013 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
4014
4015         * marshal.c (mono_marshal_get_runtime_invoke_dynamic): New internal function
4016         to return a runtime-invoke wrapper which uses DYN_CALL to call the wrapped
4017         method, to be used by full-aot.
4018
4019 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
4020
4021         Since the runtime supports lazy initialization of a type's vtable and this can cause a type
4022         to fail, we need to ensure that the vtable is properly initialized at spots were the type must
4023         be known to be good.
4024
4025         * class.c (mono_class_init): Fail array types if their element type fails initialization
4026         as well.
4027
4028         * object.c (mono_class_create_runtime_vtable): Fail array types if their element type fails
4029         initialization, additionally we request the element_type vtable to be initialized as well.
4030
4031         This is fine and should not increase the working set in any meaningful way since it's reasonable
4032         to assume       that most code will create an array and eventually populate it, which will require the
4033         type's vtable to be initialized.
4034
4035         * loader.c (field_from_memberref): Add a comment for a possibly useless mono_class_init call.
4036
4037 2009-09-17  Atsushi Enomoto  <atsushi@ximian.com>
4038
4039         * normalization-tables.h : regenerated.
4040
4041 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
4042
4043         * mono-debug.c (mono_debug_add_method): Increase the size of the buffer,
4044         a leb128 encoding can take up to 5 bytes.
4045
4046 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
4047
4048         * class.c (verify_class_overrides): Remove useless argument.
4049
4050         * class.c (mono_class_setup_vtable_general): Move the overrides check to happen
4051         before interface enumeration as this is no longer required.
4052
4053 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
4054
4055         * class.c: New function mono_class_is_assignable_from_slow that is safe to be
4056         used under mono_class_init context. This functions avoid any code path that
4057         calls mono_class_init, which leads it to be slow as some things like the interface
4058         bitmap are not available.
4059
4060         * class.c (verify_class_overrides): Use mono_class_is_assignable_from_slow instead
4061         of it's own broken version. Fixes the verifier part of #538588.
4062
4063         * class-internals.h: Export mono_class_is_assignable_from_slow as part of the internal
4064         API.
4065
4066 2009-09-15  Mark Probst  <mark.probst@gmail.com>
4067
4068         * class.c (mono_class_init): Always set an exception in a class if
4069         vtable setup fails.  Fixes #538577.
4070
4071         * generic-sharing.c: Raise an exception if mono_class_vtable()
4072         returns NULL.
4073
4074 2009-09-13  Zoltan Varga  <vargaz@gmail.com>
4075
4076         * marshal.c (mono_marshal_get_runtime_invoke): Don't share instance 
4077         methods of vtypes, as they could be incorrectly shared with static methods
4078         taking an IntPtr argument.
4079
4080 2009-09-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
4081
4082         * domain.c:
4083         * object.c:
4084         * class-internals.h: renamed waithandle_class to
4085         manualresetevent_class.
4086         * marshal.c: propagate the exception if a remoting BeginInvoke call
4087         fails.
4088
4089 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4090
4091         * object.c: Properly handle vtable failures.
4092
4093 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4094
4095         * socket-io.c: Assert on vtable failure.
4096
4097         * mono-mlist.c: Assert on vtable failure.
4098
4099 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4100
4101         * marshal.c: Assert on vtable failure.
4102
4103 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4104
4105         * icall.c: Properly handle vtable failures.
4106
4107 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4108
4109         * debug-helpers.c (mono_class_describe_statics): Properly handle vtable failures.
4110
4111 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4112
4113         * cominterop.c (ves_icall_System_ComObject_CreateRCW): Property handle vtable failures.
4114
4115         * console-unix.c (do_console_cancel_event): Same.
4116
4117 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4118
4119         * class-internals.h: Add mono_class_vtable_full function that allows control
4120         if an exception should be raised or not.
4121
4122         * object.c (mono_class_vtable): Call into mono_class_vtable_full. Fix this function
4123         to do what its documentation say, that is to return NULL and set exception_type on
4124         failure.
4125
4126         * object.c (mono_class_create_runtime_vtable): Add new raise_on_error parameter
4127         and change the code to honor it.
4128
4129 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4130
4131         * verify.c: Fix typo in error message.
4132
4133 2009-09-10  Sebastien Pouliot  <sebastien@ximian.com>
4134
4135         * security-core-clr.c: Fix default_platform_check so it can run
4136         the runtime coreclr tests (without an infinite recursion when
4137         throwing an exception).
4138
4139 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4140
4141         object.c (mono_delegate_ctor_with_method): Guard against null method.
4142
4143 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4144
4145         * marshal.c (mono_marshal_get_xappdomain_dispatch): Add an assert
4146         that should be replaced with error handling later.
4147
4148 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4149
4150         * marshal.c (mono_delegate_end_invoke): Fix warning.
4151
4152 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4153
4154         * loader.c (mono_field_from_token): Properly handle invalid
4155         dynamic tokens.
4156
4157 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4158
4159         * pedump.c (verify_image_file): Skip types that can't be
4160         decoded.
4161
4162 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4163
4164         * verify.c: Look for recursive valuetypes only against the
4165         type been initialized as this is a lot simpler and works.
4166
4167 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4168
4169         * verify.c: Ensure that fields are properly loaded before
4170         checking them.
4171
4172 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
4173
4174         * object.c (mono_object_get_virtual_method) : Call 
4175           mono_cominterop_get_invoke if the object is a COM object.
4176
4177         Code is contributed under MIT/X11 license.
4178
4179 2009-09-09  Rodrigo Kumpera  <rkumpera@novell.com>
4180
4181         * verify.c: Check for recursive valuetype definitions.
4182
4183 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
4184
4185         Use inheritance-aware interface offsets. Inherited types use the same offsets
4186         of their parents. This reduce offset duplication in case more than one type in
4187         the inheritance tree explicitly implements the same interface.
4188
4189         This also removes a source of vtable bubbles found in #532409. An abstract type
4190         isn't required to provide abstract methods to all interfaces it implements, which
4191         resulted in a bubble with the previous scheme as the child would get a non-full
4192         vtable from its parent. We fail all concrete types with vtable bubbles, so this
4193         should be fixed.
4194
4195         This change causes an increase of 1.7% in vtable memory usage for IronPython pystone but
4196         it's expected to not cause any significant increase beyond that.
4197
4198         * class.c (setup_interface_offsets): Compute super class iface offsets
4199         first to force sharing.
4200
4201         * class.c: Add VTABLE_SELECTOR macro to the vtable debug macros to help
4202         dumping only the relevant ones.
4203
4204         * class.c (mono_class_setup_vtable_general): Give newslot, non final, virtual
4205         methods a new slot regardless if they belong to an interface or not. This allows
4206         an inherited type to override the iface method separately from the class one.
4207
4208 2009-09-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
4209
4210         * threadpool.c: make the Sleep() alertable to prevent delays exiting
4211         applications that take less than 2s to execute.
4212         Bug #524984 fixed.
4213
4214 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
4215
4216         * object-internals.h (MonoRuntimeCallbacks): Add a 'get_runtime_build_info' callback.
4217
4218         * object.c (mono_get_runtime_callbacks): New helper function to return
4219         the runtime callbacks.
4220
4221         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Use the result of
4222         mono_get_runtime_build_info () as the display name.
4223         
4224 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4225
4226         * marshal.c (emit_marshal_array): Call conv.ovf.i on the array parameter
4227         argument, since NEWARR expects a native int. Fixes #481559.
4228
4229 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4230
4231         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Guard
4232         against broken SRE methods.
4233
4234 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4235
4236         * class.c (mono_type_get_full): Don't call mono_metadata_free_type on
4237         a NULL variable. Abort early on failure.
4238
4239 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4240
4241         * class.c (can_access_type): Fail visibility test for non nested
4242         types with nested visibility.
4243
4244 2009-09-02  Sebastien Pouliot  <sebastien@ximian.com>
4245
4246         * assembly.c (parse_public_key): Avoid allocating (and not 
4247         freeing) the public key array when it's not requested by the 
4248         caller.
4249         * threads.c (mono_thread_manage, mono_thread_create_internal, 
4250         ves_icall_System_Threading_Thread_Thread_internal): Free 
4251         allocated memory on error.
4252
4253 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4254
4255         * icall.c, icall-def.h: Remove some dead code from early SRE changes.
4256
4257 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4258
4259         * class.c (mono_class_setup_fields): Remove duplicated local variable
4260         named gklass.
4261         Rename gklass to gtd to reflect the fact that it points to the generic
4262         type definition.
4263         Remove the duplicated call to mono_class_setup_fields on gtd and move
4264         the error check to the beginning.
4265
4266 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4267
4268         * marshal.c (mono_array_to_lparray): Do DISABLE_COM properly.
4269         Remove cruft of the previous patch.
4270
4271 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4272
4273         * metadata-verify.c (verify_method_table): Check for abstract + final.
4274         Fixes #534175.
4275
4276 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4277
4278         * verify.c (verify_class_fields): Check for duplicate fields.
4279
4280 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4281
4282         * metadata-verify.c: Verify the typeref table for duplicates.
4283
4284 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4285
4286         This reverts r140936 and properly handles interfaces with static methods. The
4287         right fix is to ensure vtables without bubles which is an easier to verify
4288         constraint. We should avoid such special cases as of the reverted patch as those
4289         only make the runtime more brittle.
4290
4291         * class.c (mono_class_setup_vtable_general): Revert previous change that handle
4292         static methods on interfaces.
4293
4294         * class.c (setup_interface_offsets): Use the number of virtual methods when
4295         calculating interface offsets instead of the number of methods. This way we
4296         avoid bubles on the layout.
4297
4298 2009-08-31  Rodrigo Kumpera  <rkumpera@novell.com>
4299
4300         * metadata-verify.c (verify_metadata_header): Some very smart
4301         obfuscators like to add extra stream headers. Ignore them.
4302
4303 2009-08-30  Zoltan Varga  <vargaz@gmail.com>
4304
4305         * class.c (mono_class_setup_vtable_general): Verify interfaces with static
4306         methods correctly.
4307
4308 2009-08-29  Rodrigo Kumpera  <rkumpera@novell.com>
4309
4310         * metadata-verify.c: Verify for duplicated types.
4311
4312 2009-08-28  Rodrigo Kumpera  <rkumpera@novell.com>
4313
4314         * metadata-verify.c (verify_typedef_table): Verify for nested types
4315         without an entry on the nested class table.
4316
4317 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4318
4319         * cominterop.c (cominterop_get_ccw): Applied patch from tom hindle
4320         <tom_hindle@sil.org>. Add locking around hash table accesses.
4321
4322 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4323
4324         * verify.c (mono_verifier_verify_class): Verify all interface if
4325         really are interfaces. Fixes #534184.
4326
4327 2009-08-27  Rodrigo Kumpera  <rkumpera@novell.com>
4328
4329         * pedump.c: Initialize all types during metadata validation so we report
4330         errors only detected as part of class initialization.
4331
4332 2009-08-26  Rodrigo Kumpera  <rkumpera@novell.com>
4333
4334         * metadata-verify.c (verify_method_table): PInvoke requires method to
4335         be static. Fixes #534189
4336
4337 2009-08-26  Zoltan Varga  <vargaz@gmail.com>
4338
4339         * threads.c (mono_thread_suspend_all_other_threads): Handle 'threads_starting_ip'
4340         being NULL.
4341
4342 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4343
4344         * class.c (mono_class_setup_vtable_general): Verify the resulting vtable
4345         for holes or bad methods. Fixes #525314.
4346
4347 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4348
4349         * class.c (setup_interface_offsets): Don't allocate slot
4350         for the same interface multiple times. This creates bubbles
4351         that waster space and make vtable verification harder.
4352
4353         The same interface get a slot multiple times since we need
4354         to get the closure of all implemented interfaces, which means
4355         the same interface is reported multiple times.
4356
4357 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4358
4359         * verify.c (mono_verifier_verify_class): Don't check the fields
4360         of generic instances since the context on which they got expanded
4361         might lead to false positives.
4362
4363         Such thing happens when a generic type is inflated in the context
4364         of a generic method and the inflated type of a field turns into a
4365         generic method argument, which causes the checking code to think
4366         it's an invalid class when it's not.
4367
4368 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4369
4370         * verify.c (mono_type_is_valid_in_context): Verify if type
4371         is NULL and remove duplicate test.
4372
4373 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4374
4375         * verify.c (mono_verifier_verify_class): Check fields for
4376         invalid generic arguments.
4377
4378 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4379
4380         * class.c (verify_class_overrides): Verify if for static
4381         and non virtual methods.
4382
4383 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4384
4385         * icaa.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor):
4386         Check for errors after retrieving the vtable.
4387
4388 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4389
4390         * class.c (mono_class_setup_vtable_general): Verify
4391         if method overrides are valid before processing them.
4392
4393 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4394
4395         * marshal.c (mono_array_to_lparray): Fix minimal build with
4396         cominterop disabled.
4397
4398         * marshal.c (mono_free_lparray): Same.
4399
4400 2009-08-21  Mark Probst  <mark.probst@gmail.com>
4401
4402         * threadpool.c (mono_thread_pool_init): Use mono_object_hash() as
4403         the hash function for the ares_htable.
4404
4405 2009-08-20  Rodrigo Kumpera  <rkumpera@novell.com>
4406
4407         * metadata-verify.c (verify_assembly_table): Accept 0x10 as a valid
4408         bit for assembly flags. MS is ok with it but there is no spec anywhere
4409         on its mean
4410
4411 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4412
4413         * class.c (mono_class_create_from_typedef): Emit profiler events
4414         in all cases.
4415
4416 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4417
4418         * icall.c (ves_icall_Type_GetMethodsByName): Don't leak loader errors.
4419         Release memory on failure.
4420
4421 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4422
4423         * class-internals.h: Add mono_metadata_load_generic_param_constraints_full
4424         to the internal API.
4425
4426         * metadata.c (get_constraints): Use a single-linked table as we don't
4427         traverse it backward. Fail and return FALSE if only of the contraint types
4428         is not found.
4429
4430         * metadata.c (mono_metadata_load_generic_param_constraints_full): Identical
4431         to mono_metadata_load_generic_param_constraints except for having a return value.
4432         This has to be done since the later is part of the public API.
4433
4434         * class.c (mono_class_create_from_typedef): Properly check the loading of constrains
4435         and fail the type.
4436
4437         * loader.c (mono_get_method_from_token): Properly check the loading of constraints
4438         and fail the method.
4439
4440 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4441
4442         * metadata-verify.c (is_valid_method_header): Add work-around to deal
4443         with MS broken behavior of emmitting EH section sizes without the
4444         header size added.
4445
4446 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4447
4448         * metadata.c (mono_type_create_from_typespec): Don't allocate image
4449         memory until we're sure that we'll need it. This avoids leaking for
4450         broken types or duplicated instantiation.
4451
4452 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4453
4454         * metadata-verify.c (is_valid_method_header): Fix stupid formating
4455         mistake.
4456
4457 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4458
4459         * metadata-verify.c (is_valid_method_header): Fix number of clauses
4460         and expected size calculation.
4461
4462 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4463
4464         * class.c (mono_class_get_field_idx): Add fixme for broken
4465         behavior for types with multiple fields with the same name.
4466         I would rather fix it, but have no idea on how to generate
4467         such artifact for testing.
4468
4469 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4470
4471         * verify.c (verifier_load_field): We should allow references to
4472         fields to be made using the generic type definition. It's up to
4473         the loader system to fail invalid ops.
4474
4475         * verify.c (get_boxable_mono_type): Only uninstantiated GTDs
4476         are invalid.
4477
4478 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4479
4480         * class.c: Fix usage of mono_metadata_interfaces_from_typedef_full.
4481
4482         * metadata-internals.h: Fix declaration of 
4483         mono_metadata_interfaces_from_typedef_full.
4484
4485         * metadata.c (mono_metadata_interfaces_from_typedef_full): Add extra
4486         heap_alloc_result parameter that controls if the result should be
4487         g_malloc'd.
4488
4489         * metadata.c (mono_metadata_interfaces_from_typedef): Let the resulting
4490         array be g_malloc'd and properly document this public API function.
4491
4492 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4493
4494         * cil-coff.h: Fix METHOD_HEADER_FORMAT_MASK to be 2 bits and
4495         remove METHOD_HEADER_TINY_FORMAT1.
4496
4497         * reflection.c: Remove reference to METHOD_HEADER_TINY_FORMAT1.
4498
4499         * metadata.c (mono_metadata_parse_mh_full): Kill tiny format1.
4500
4501         Both spec and MS uses only 2 bits to enumerate the kind of header.
4502         So given that 0x6 and 0x2 are equal under a 2 bits mask, tiny format1
4503         is superfluous, only used for tiny headers with odd code lengths.
4504
4505         This change also make sure that mono doesn't wronly interpret bit 2
4506         of fat header flags, which is currently reserved.
4507
4508 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4509
4510         * metadata.c (do_mono_metadata_parse_type): Do error
4511         checking for element types. Don't abort if presented
4512         with a broken type kind.
4513
4514 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4515
4516         * metadata.c (mono_metadata_parse_method_signature_full):
4517         Gracefully fail bad vararg signatures.
4518
4519 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4520
4521         * profiler.c:
4522         * class.c: Fix warnings for uninitialized variables.
4523
4524 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4525
4526         * icall.c: Fix _NSGetEnviron method declaration warning.
4527
4528 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4529
4530         * icall.c:
4531         * reflection.c: Make bitwise checks explicit.
4532
4533 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4534
4535         * debug-helpers.c:
4536         * marshal.c: Fix printf warnings.
4537
4538 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4539
4540         * reflection.c (encode_cattr_value): Fix a warning.
4541
4542 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4543
4544         * metadata.c (mono_metadata_parse_array_full): Fix memory leak
4545         of array bounds.
4546
4547 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4548
4549         * loader.c (mono_method_signature): Don't assert on broken
4550         signature. Print a more useful error message.
4551
4552 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4553
4554         * loader.c (mono_method_get_marshal_info): Assert if
4555         signature is invalid. Bounds check stores to the
4556         mspecs array;
4557
4558 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4559
4560         * loader.c (field_from_memberref): Fix warning.
4561
4562 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4563
4564         * loader.c (mono_method_get_param_names): Check if signature
4565         is null. Don't store beyond the size of the name array.
4566
4567 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4568
4569         * loader.c (mono_get_method_constrained): Check if signature
4570         is null.
4571
4572 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4573
4574         * loader.c (mono_loader_set_error_bad_image): Improve
4575         error messages.
4576
4577 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4578
4579         * loader.c (mono_get_method_full): Convert an assertion
4580         into a loader error.
4581
4582 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4583
4584         * class-internals.h, class.c: Better naming and documentation.
4585
4586 2009-08-17  Zoltan Varga  <vargaz@gmail.com>
4587
4588         * boehm-gc.c (mono_gc_add_weak_track_handle): Don't do any work if
4589         obj is NULL.
4590
4591 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4592
4593         * loader.c (mono_method_get_signature_full): Fail gracefully if signature
4594         parsing fails.
4595
4596 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4597
4598         * loader.c (mono_loader_error_prepare_exception): Handle missing field
4599         errors with no class set.
4600
4601         * loader.c (field_from_memberref): If the field signature is of the wrong
4602         type fail with a MissingFieldException instead of a BadImageException as
4603         this is the behavior observed on MS. 
4604
4605 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4606
4607         * loader.c (field_from_memberref): Don't crash if either the field
4608         signature or the typespec class are invalid.
4609
4610 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4611
4612         * verify.c (verifier_load_field): Don't allow field related
4613         ops to reference fields on generic type definition.
4614
4615 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4616
4617         * metadata-verify.c: Add new warning level for errors specified
4618         by ECMA 335 but that MS ignores.
4619
4620         * metadata-verify.c (verify_method_table): Make compiler controled
4621         visibility + (rt)specialname error a warning as MS ignores this. Ignoring
4622         this check is safe because the end result will only be some visibility
4623         exceptions been thrown.
4624
4625 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4626
4627         * verify.c (get_boxable_mono_type): Don't allow the
4628         use of the generic type definition on boxed type positions.
4629
4630         Fixes #531237.
4631
4632 2009-08-14  Mark Probst  <mark.probst@gmail.com>
4633
4634         * threadpool.c: Make sure no cross-domain references remain in
4635         ares_htable or the arrays that are thrown away when resizing.
4636
4637 2009-08-14  Mark Probst  <mark.probst@gmail.com>
4638
4639         * appdomain.c, metadata-internals.h, image.c: In MonoImage add a
4640         list of classes for which we have to unregister reflection_info
4641         with the GC and which are not in the namespace cache.
4642
4643         * reflection.c (mono_reflection_initialize_generic_parameter): Add
4644         the class to the list.
4645
4646 2009-08-14  Mark Probst  <mark.probst@gmail.com>
4647
4648         * domain.c (mono_domain_free): Unregister the GC roots in
4649         MonoDomain.
4650
4651 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
4652
4653         * reflection.c (mono_reflection_type_get_handle): Fix typo.
4654
4655 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
4656
4657         * class.c: Add mono_class_get_field_from_name_full which does
4658         the same as mono_class_get_field_from_name but does check field
4659         signature as well.
4660
4661         * class-internals.h: Export mono_class_get_field_from_name_full as
4662         part of the internal API.
4663
4664         * loader.c (field_from_memberref): Search fields by name and signature
4665         as it's valid to have two fields with same name but different types.
4666
4667         Fixes #528055.
4668
4669 2009-08-10  Rodrigo Kumpera  <rkumpera@novell.com>
4670
4671         * icall-def.h: Add a bunch of temporary icalls to MonoGenericClass.
4672
4673         * reflection.c (mono_reflection_type_get_handle): Handle MonoGenericClass.
4674
4675         * reflection.c (encode_cattr_value): Use mono_reflection_type_get_handle to encode
4676         System.Type.
4677
4678 2009-08-13  Zoltan Varga  <vargaz@gmail.com>
4679
4680         * gc.c (GCHandle_CheckCurrentDomain): Moved this here from icall.c.
4681
4682         * boehm-gc.c (mono_gc_add_weak_track_handle): Handle nulls.
4683
4684 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4685
4686         * sgen-gc.c, sgen-scan-object.h: Object scanning code factored out
4687         to sgen-scan-object.h, which can be included and parameterized via
4688         macros.
4689
4690         * Makefile.am: sgen-scan-object.h added.
4691
4692 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4693
4694         * gc.c: #define GC_dont_gc if we're compiling with SGen.
4695
4696 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4697
4698         * domain.c (mono_domain_free): Free a domain's mono_g_hash_tables
4699         before clearing a domain in the GC.
4700
4701 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4702
4703         * exception.c (mono_exception_from_name_domain): Actually create
4704         the exception in the specified domain.
4705
4706         * appdomain.c (mono_domain_create_appdomain_internal): Create the
4707         OutOfMemoryException a bit later so that the domain is inialized
4708         "enough" that it works.
4709
4710 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4711
4712         * threads.c (thread_cleanup): Clean up the cached_culture_info
4713         array to prevent cross-domain references.
4714
4715 Tue Aug 11 14:38:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4716
4717         * metadata.c: more documentation for MonoType accessors.
4718
4719 2009-08-11  Raja R Harinath  <harinath@hurrynot.org>
4720
4721         Fix incorrect size definitions where the tail array isn't a list
4722         of pointers
4723         * class-internals.h (MONO_SIZEOF_MARSHAL_TYPE): Use offsetof to
4724         define size.
4725         * domain-internals.h (MONO_SIZEOF_JIT_INFO): Likewise.
4726         * metadata.h (MONO_SIZEOF_TYPE): Likewise.
4727         * reflection.h (MONO_SIZEOF_CUSTOM_ATTR_INFO): Likewise.
4728
4729 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4730
4731         * reflection.h:
4732         * reflection.c: MONO_SIZEOF_CUSTOM_ATTR_INFO.
4733
4734 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4735
4736         * metadata.c:
4737         * loader.c:
4738         * metadata-internals.h:
4739         * method-builder.c:
4740         * reflection.c: use MONO_SIZEOF_METHOD_HEADER.
4741
4742 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4743
4744         * cominterop.c:
4745         * metadata.c:
4746         * metadata.h:
4747         * loader.c:
4748         * marshal.c:
4749         * reflection.c: #define for sizeof in MonoType and
4750         MonoMethodSignature.
4751
4752 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4753
4754         * domain.c:
4755         * domain-internals.h: add and use #define's instead of sizeof()
4756         for MonoJitInfo and MonoJitInfoTable.
4757
4758 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4759
4760         * object.c:
4761         * class.h: use #define instead of sizeof() for MonoRemoteClass.
4762
4763 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4764
4765         * metadata.c:
4766         * metadata.h:
4767         * object.c:
4768         * class-internals.h:
4769         * generic-sharing.c:
4770         * marshal.c: use a #define instead of sizeof() for a few
4771         structures that use a zero-length array.
4772
4773 2009-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
4774
4775         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Add new fields
4776         to handle inflated generic methods.
4777
4778         * appdomain.c: Bump corlib version.
4779
4780         * reflection.c (mono_image_get_method_on_inst_token): Handle generic method
4781         instances.
4782
4783         * reflection.c (fixup_method): Same
4784
4785         * reflection.c (resolve_object): Same.
4786
4787         * reflection.c (inflate_method): Replace a g_assert_not_reached with a
4788         g_error and a decent message.
4789
4790 2009-08-06  Massimiliano Mantione  <massi@ximian.com>
4791
4792         * bohem-gc.c (mono_gc_add_weak_track_handle): Get the domain
4793         from the object because it could not yet be available globally
4794         (it happens if the profiler tries to create a gchandle on the
4795         MonoThread object of a thread that is still registering itself
4796         with the runtime).
4797
4798 2009-08-04  Rodrigo Kumpera  <rkumpera@novell.com>
4799
4800         * reflection.c (mono_generic_class_get_object): Initialized the
4801         managed type arguments array.
4802
4803         * object-internals.h (MonoReflectionGenericClass): Add type_arguments field.
4804
4805         * appdomain.c: Bump corlib version.
4806
4807 2009-08-04  Zoltan Varga  <vargaz@gmail.com>
4808
4809         * threads.c (thread_cleanup): Free serialized_ui_culture_info. Fixes
4810         #527902.
4811
4812 2009-08-03  Zoltan Varga  <vargaz@gmail.com>
4813
4814         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
4815         Avoid a crash if synch_cs is not set.
4816         
4817         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
4818         Handle the case when the handle is 0.
4819
4820         * appdomain.c: Bump corlib version.
4821
4822 2009-08-02  Zoltan Varga  <vargaz@gmail.com>
4823
4824         * reflection.c (mono_type_get_object): Fix a warning.
4825
4826 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4827
4828         * sgen-gc.c (mono_gc_wbarrier_value_copy): Don't compute the GC
4829         descriptor here.  We assume it's already been computed.
4830
4831         * generic-sharing.c (instantiate_other_info): Compute the GC
4832         descriptor for info type MONO_RGCTX_INFO_KLASS.
4833
4834 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4835
4836         * reflection.c (mono_type_get_object): MonoDomain is an unmanaged
4837         type, so don't use MONO_OBJECT_SETREF to set a field.
4838
4839 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4840
4841         * gc.c: We were missing one case where invoking a finalizer would
4842         not reset the domain.  Also, in the finalizer thread loop, assert
4843         that we're in the root domain.
4844
4845 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4846
4847         * icall.c (ves_icall_MonoType_GetArrayRank): Throw ArgumentException
4848         if the type is not an array.
4849
4850 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4851
4852         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Return the
4853         method bound to the declaring type of the method. Raise an exception
4854         if the type is not a generic param.
4855
4856 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4857
4858         * class.c (print_unimplemented_interface_method_info): Print the
4859         full type name.
4860
4861         * class.c (mono_class_setup_vtable_general): When dealing with a
4862         generic instance first check if the generic type definition is
4863         not broken.
4864
4865 2009-02-11 Tom Hindke <tom_hindle@sil.org>
4866
4867         * marshal.c (mono_array_to_lparray): Implemented so managed object types are converted to native types.
4868
4869         * marshal.c: Added new method mono_free_lparray to free memory allocated by mono_array_to_lparray
4870
4871         * marshal.c (emit_marshal_array): call emit mono_free_lparray where approprate.
4872
4873         * marshal.c (conv_to_icall): added MONO_MARSHAL_FREE_LPARRAY case
4874
4875         * metadata.h (MonoMarshalConv enum): added MONO_MARSHAL_FREE_LPARRAY
4876
4877         Code is contributed under MIT/X11 license
4878
4879 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4880
4881         * verify.c: Fix naming of stelem and ldelem.
4882
4883 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4884
4885         * generic-sharing.c: Replace the templates lock with the loader
4886         lock because of very hard to resolve deadlock issues.
4887
4888 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
4889
4890         * icall.c (ves_icall_Type_GetMethodsByName): Use 
4891         mono_class_get_vtable_size () instead of accessing klass->vtable_size
4892         directly. Fixes #525338.
4893
4894         * class.c (mono_class_get_vtable_size): New helper function.
4895
4896         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle_type): Fix the second argument, its a MonoType* not a MonoClass*. Check whenever
4897         the field belongs to the type. Fixes #525733.
4898
4899 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4900
4901         * sgen-gc.c: When we stop a thread and its stack top is not within
4902         its allocated stack (because it's in an altstack signal handler),
4903         restart it and stop it again, until it is.
4904
4905 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4906
4907         * sgen-gc.c: Take a thread's stack top and registers from the
4908         sigcontext in the suspend signal handler.
4909
4910         * sgen-gc.h, sgen-archdep.h, Makefile.am: Move arch-dependent
4911         stuff to sgen-archdep.h.
4912
4913         * gc.c, gc-internal.h: Remove the get_ip_from_sigctx installer and
4914         caller, because have code in sgen-archdep.h to acquire that data.
4915
4916 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
4917
4918         * profiler.c, profiler.h, profiler-private.h:
4919         Added support for keeping track of code chunks and buffers.
4920
4921 2009-07-29 Rodrigo Kumpera  <rkumpera@novell.com>
4922
4923         * metadata-verify.c: Fix endianness problems on decoding functions.
4924         Based on a patch by Ulrich Weigand <uweigand@de.ibm.com>
4925
4926 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
4927
4928         * icall.c (ves_icall_Type_make_array_type): Handle the new encoding
4929         schema for vectors and one dimension SZARRAY.
4930
4931 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
4932
4933         * reflection.c (mono_reflection_type_get_handle): Handle the new encoding
4934         schema for vectors and one dimension SZARRAY.
4935
4936 2009-07-27  Mark Probst  <mark.probst@gmail.com>
4937
4938         * icall-def.h, thread-types.h, threads.c: New separate icalls for
4939         Interlocked.(Compare)Exchange with object arguments, which invoke
4940         write barriers.
4941
4942 2009-07-26  Miguel de Icaza  <miguel@novell.com>
4943
4944         * icall.c (ves_icall_Type_GetNestedType): Throw an exception when
4945         passed invalid arguments.   Fixes another crasher in the
4946         Silverlight test suite.
4947
4948         * class.c (mono_class_array_element_size): Return 0 for the size
4949         of the class;  This fixes the crasher exposed by :
4950
4951         typeof (void).MakeArrayType ();
4952
4953         * icall.c (ves_icall_MonoType_GetEvent): Do not dereference method
4954         if there is no method to dereference.    Put all the code that
4955         depends on this inside the if (method) block.
4956
4957         This fixes the crasher exposed by Microsoft's Silvelright CLR test
4958         suite  ./Reflection/Emit/TypeBuilder/TypeBuilderGetEvent.exe
4959
4960         With this change, we pass the test.
4961         
4962         * reflection.c (mono_reflection_sighelper_get_signature_local):
4963         Only dereference the assembly if it has been set.    Fixes a
4964         crasher exposed by #525328
4965
4966 2009-07-25  Mark Probst  <mark.probst@gmail.com>
4967
4968         * sgen-gc.c, object.h, null-gc.c, boehm-gc.c, marshal.c: Really
4969         don't perform the store in mono_gc_wbarrier_generic_nostore().
4970         Remove the second argument (value), which is not needed.
4971
4972 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
4973
4974         * null-gc.c (mono_gc_wbarrier_generic_nostore): Define this to fix
4975         the build.
4976
4977         * boehm-gc.c: Ditto.
4978         
4979 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4980
4981         * sgen-gc.c, marshal.c, object.h: Make the managed write barrier
4982         not perform the store itself.  Introduce
4983         mono_gc_wbarrier_generic_nostore(), which is the same as
4984         mono_gc_wbarrier_generic_store(), except it doesn't perform the
4985         store.
4986
4987 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4988
4989         * icall.c (ves_icall_System_Array_SetGenericValueImpl):
4990         mono_gc_wbarrier_value_copy() doesn't perform the copy itself, so
4991         we still need the memcpy().
4992
4993 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4994
4995         * sgen-gc.c: Align array bounds calculation to mono_array_size_t
4996         so that big arrays are handled correctly.  Always use
4997         safe_object_get_size() to calculate array object sizes, which
4998         takes bounds into account.
4999
5000 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5001
5002         * sgen-gc.c (mono_gc_wbarrier_value_copy): Make sure the class's
5003         GC descriptor is computed before we use it.
5004
5005 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5006
5007         * icall.c (ves_icall_System_Array_SetGenericValueImpl): Use a
5008         write barrier if necessary.
5009
5010 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5011
5012         * icall-def.h, icall.c, thread-types.h: New separate icall for
5013         VolatileWrite(object&,object) that uses a write barrier.
5014
5015         * console-unix.c, file-io.c, icall.c, threads.c: Use write
5016         barriers in icalls which write to "ref" or "out" arguments.
5017
5018 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
5019
5020         * marshal.c (mono_marshal_get_runtime_invoke): Do the work done in the exception
5021         handler in a separate icall, to reduce the size of the wrappers.
5022
5023 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5024
5025         * metadata-verify.c (is_valid_typespec_blob): Fix error message.
5026
5027 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5028
5029         * metadata-verify.c (parse_field): Allow byref field.
5030
5031         * metadata-verify.c (parse_locals_signature): Allow byref locals.
5032
5033         * metadata-verify.c (is_valid_typespec_blob): Allow byref typespec.
5034
5035 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5036
5037         * verify.c (do_cast): Fail for any non reference type that isn't boxed.
5038         Fixes #522784.
5039
5040 2009-07-20  Robert Jordan  <robertj@gmx.net>
5041
5042         * cominterop.c (cominterop_get_managed_wrapper_adjusted):
5043         Fix invalid IL in valuetype handling (STOBJ must push the
5044         corresponding class). Fixes bug #523149.
5045
5046         Code is contributed under MIT/X11 license.
5047
5048 2009-07-20  Geoff Norton  <gnorton@novell.com>
5049
5050         * gc.c: Use proper semaphores where available on posix and darwin.
5051
5052 2009-07-19  Geoff Norton  <gnorton@novell.com>
5053
5054         * gc.c: Unnamed posix semaphores are broken on darwin-arm too.
5055
5056 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
5057
5058         * refletion.c (is_sre_usertype): Change name to is_usertype and
5059         invert it's result so it returns true if the type is an user type
5060         and not the opposite.
5061
5062         * reflection.c (is_*_type): Change all of those to use new macro
5063         check_corlib_type_cached that cached the type lookup so we don't
5064         need to do string comparisons all the type. Changed the signature
5065         to take a MonoClass instead.
5066
5067         * reflection.c: Change mono_image_create_token and resolve_object
5068         to use is_sre_* functions.
5069
5070 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5071
5072         * sgen-gc.c: Check for writes to the stack in the managed
5073         wbarrier as well.
5074
5075 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5076
5077         * sgen-gc.c: When a thread is unregistered, don't free its remsets
5078         but put them on a list which is processed with the other thread's
5079         remsets.
5080
5081 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5082
5083         * sgen-gc.c: Fix and enable the internal allocator instead of
5084         using malloc/free (which causes deadlocks).
5085
5086 2009-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
5087
5088         * refletion.c: Fix builds with SRE disabled by adding a minimal
5089         implementation of mono_reflection_type_get_handle.
5090
5091 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
5092
5093         * refletion.c: Make mono_reflection_type_get_handle non static.
5094
5095         * object-internals.h: Export mono_reflection_type_get_handle.
5096
5097         * icall.c (ves_icall_MonoGenericClass_InflateType): Resolve the
5098         unmanaged handle using mono_reflection_type_get_handle.
5099
5100 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
5101
5102         * refletion.c: Replace all reads of MonoReflectionType::type with
5103         calls to mono_reflection_type_get_handle. Only the functions that
5104         deal with constructing TypeBuilder::type have not been changed
5105         because they have to deal with NULL values.
5106
5107         This is a first step into supporting reflection types that don't
5108         map directly into their unmanaged counterpart.
5109
5110 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
5111
5112         * metadata-verify.c (parse_locals_signature): Don't complain
5113         on signature with zero locals since MS generates it and doesn't
5114         bother with.
5115
5116 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
5117
5118         * reflection.c (mono_image_get_array_token): Resolve return
5119         type using mono_reflection_type_get_handle.
5120
5121         * reflection.c (mono_image_get_array_token): Resolve array method
5122         parent type using mono_reflection_type_get_handle.
5123
5124 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
5125
5126         * reflection.c (mono_image_basic_init): Applied patch from
5127         <Dax@daxxfiles.net>. Set the public key token from the assembly
5128         builder. Fixes #518909.
5129
5130         * appdomain.c: Bump corlib version.
5131
5132 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
5133
5134         * class.c (mono_class_needs_cctor_run): Make this return false if
5135         the class has no cctor.
5136
5137 2009-07-13  Mark Probst  <mark.probst@gmail.com>
5138
5139         * sgen-gc.c: When the minor GC needs to allocate a new section,
5140         invoke the major GC afterwards.
5141
5142 2009-07-14  Bill Holmes  <billholmes54@gmail.com>
5143
5144         * process.c  (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal) :
5145           Applying the window_style field to the SHELLEXECUTEINFO struct.
5146
5147         Code is contributed under MIT/X11 license.
5148
5149 2009-07-13  Mark Probst  <mark.probst@gmail.com>
5150
5151         * sgen-gc.c: Fix the race condition in the unmanaged allocator by
5152         locking earlier.  Fix it in the managed allocator by making sure
5153         that no thread is stopped there before the GC runs.  If we do stop
5154         a thread there, we restart it and let it run a but, until it stops
5155         somewhere else.
5156
5157         * gc-internal.h, gc.c: Function for getting the IP from a signal
5158         context via a function registered by mini.
5159
5160 2009-07-11  Zoltan Varga  <vargaz@gmail.com>
5161
5162         * object-internals.h (MonoIntPtr): New structure describing a boxed
5163         IntPtr.
5164
5165         * object.c (mono_runtime_invoke_array): Handle ptr arguments and
5166         returns. Fixes #519953.
5167
5168         * marshal.c (mono_marshal_get_runtime_invoke): Handle pointer returns.
5169
5170 2009-07-09  Mark Probst  <mark.probst@gmail.com>
5171
5172         * class-internals.h, generic-sharing.c: New RGCTX info type for
5173         getting a remoting invoke with check wrapper.
5174
5175 2009-07-07  Geoff Norton  <gnorton@novell.com>
5176
5177         * icall-def.h: Fix the enable-minimal build.
5178
5179 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5180
5181         * object-internals.h: Add MonoReflectionDerivedType.
5182
5183         * reflection.c: Implement support for PointerType.
5184         Fixed tons of warnings.
5185
5186 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5187
5188         * object-internals.h: Add MonoReflectionByRefType.
5189
5190         * reflection.c: Implement support for ByRefType.
5191
5192 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5193
5194         * icall-def.h: Add System.Reflection.Emit.DerivedType::create_unmanaged_type.
5195
5196         * object-internals.h: Add MonoReflectionArrayType and
5197         mono_reflection_create_unmanaged_type.
5198
5199         * reflection.c: Implement support for ArrayType.
5200
5201 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5202
5203         * metadata-verify.c (is_valid_method_header): Parse EH block
5204         flags correctly.
5205
5206 2009-07-03  Mark Probst  <mark.probst@gmail.com>
5207
5208         * sgen-gc.c (finish_gray_stack): Set the to_space pointer after
5209         processing the disappearing links, and process disappearing links
5210         in a loop until no new objects are copied.
5211
5212 2009-07-03  Mark Probst  <mark.probst@gmail.com>
5213
5214         * object.c (handle_enum): Invoke the write barrier when copying
5215         value type instances.
5216
5217         * sgen-gc.c: Register remsets for unmanaged write barriers only
5218         when the address written to is actually on the heap.  This makes
5219         set_value() in object.c work without requiring that the result be
5220         on the heap.
5221
5222 2009-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
5223
5224         The runtime wrappers are all bound to a given type that must
5225         exist in the same image. For regular images we use the <Module>
5226         type, which is required to exist for all images.
5227
5228         The <Module> type can't be used for dynamic images because it
5229         might not exist at the time the wrapper is required, so we create
5230         a synthetic type to use instead.
5231
5232         The current code works because of the 2 stage setup of MonoClass,
5233         but once this is gone it will no longer work.
5234
5235         * icall-def.h: Add ModuleBuilder::set_wrappers_type.
5236
5237         * metadata-internals.h (MonoDynamicImage): Add wrappers_type.
5238
5239         * object-internals.h: Export mono_image_set_wrappers_type icall
5240         as part of the internal API.
5241
5242         * marshal.c (get_wrapper_target_class): If the image is dynamic,
5243         use MonoDynamicImage::wrappers_type instead of the <Module> type.
5244
5245         reflection.c: Add mono_image_set_wrappers_type qhixh sets the dynamic
5246         image wrappers_type to the provided value.
5247
5248 2009-07-01 Rodrigo Kumpera  <rkumpera@novell.com>
5249
5250         * appdomain.c (deregister_reflection_info_roots): No need
5251         to use the image lock here.
5252
5253 2009-07-02  Mark Probst  <mark.probst@gmail.com>
5254
5255         * sgen-gc.c (collect_nursery): Also scan from write-barrier roots.
5256
5257 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
5258
5259         * threads.c: Store the thread start argument in a hash table instead of
5260         registering it as a root, as libgc doesn't support unregistering roots
5261         under windows, leading to 'too many root sets' errors when many threads
5262         are created.
5263
5264         * gc.c (mono_gc_run_finalize): Avoid finalizing dynamic methods during
5265         shutdown, they can still be referenced by the other dying objects.
5266         Fixes #514506.
5267
5268 2009-06-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
5269
5270         * socket-io.c: DontLinger does not allow LingerOptions.
5271
5272 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5273
5274         * metadata-verify.c: The spec doesn't mention that it's possible to add
5275         custom attribute to a generic parameter. Fixed.
5276
5277 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5278
5279         * class.c (inflate_generic_type): Don't crash while trying to output a message
5280         on why we're aborting.
5281
5282 2009-06-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
5283
5284         * socket-io.c: DontLinger can take an int or a boolean too.
5285
5286 Fri Jun 26 17:00:04 CEST 2009 Paolo Molaro <lupus@ximian.com>
5287
5288         * gc.c: check for a null argument to SuppressFinalize () and
5289         ReRegisterForFinalize ().
5290
5291 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5292
5293         * loader.c (method_from_methodspec): Call into the verifier to check
5294         the signature.
5295
5296         * metadata-verify.c: Addmono_verifier_verify_methodspec_signature.
5297
5298         * verify-internals.h: Export mono_verifier_verify_methodspec_signature as
5299         part of the internal API.
5300
5301 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5302
5303         * metadata.c (mono_type_create_from_typespec): Call into the verifier to check
5304         the signature.
5305
5306         * metadata-verify.c: Add mono_verifier_verify_typespec_signature.
5307
5308         * verify-internals.h: Export mono_verifier_verify_typespec_signature as
5309         part of the internal API.
5310
5311 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5312
5313         * metadata.c (mono_metadata_parse_mh_full): Call into the verifier to check
5314         the signature.
5315
5316         * metadata-verify.c: Add mono_verifier_verify_standalone_signature. Fix
5317         blob verification.
5318
5319         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
5320         part of the internal API.
5321
5322 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5323
5324         * metadata-verify.c: Use is_valid_blob_object to verify blob validity
5325         when doing basic verification. 
5326
5327         This check must be done since the runtime peeks into signatures in much
5328         more places than it does decoding so it makes sense to ensure that all
5329         pointers to blob objects are well formed.
5330
5331 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5332
5333         * metadata-verify.c (is_valid_blob_object): Add extra minsize argument.
5334         Use proper overflow dectection. Fix usage of it.
5335
5336 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5337
5338         * loader.c (field_from_memberref): Call into the verifier to check
5339         the signature.
5340
5341         * loader.c (mono_method_get_signature_full): Same.
5342
5343         * loader.c (method_from_memberref): Same.
5344
5345         * metadata-verify.c: Add mono_verifier_verify_memberref_signature.
5346
5347         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
5348         part of the internal API.
5349
5350 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5351
5352         * threadpool.c (mono_thread_pool_add): If the domain is unloading
5353         or unloaded, still return an AsyncResult, but don't add it to the
5354         threadpool.
5355
5356 2009-06-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
5357
5358         * threads.c: fix missing colon when DEBUG is defined.
5359
5360 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5361
5362         * threadpool.c: Don't add new calls to a threadpool if the domain
5363         of the call is unloading or unloaded.  When dequeuing a job, null
5364         the reference in the queue.
5365
5366 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5367
5368         * sgen-gc.c (null_link_in_range): Add the dislink for the old
5369         generation if an object was moved.
5370
5371 2009-06-25  Sylvain Dupont <duposyl@gmail.com>
5372
5373         * cominterop.h cominterop.c marshal.c: Added support for marshalling out 
5374           parameters of type SAFEARRAY[VARIANT].
5375
5376         * reflection.c (encode_marshal_blob): Properly generate element type
5377           (SafeArraySubType marshal attribute option).
5378
5379         Code is contributed under MIT/X11 license.
5380
5381 Thu Jun 25 15:48:09 CEST 2009 Paolo Molaro <lupus@ximian.com>
5382
5383         * reflection.c: in mono_method_clear_object () really ensure all the
5384         objects are removed.
5385
5386 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5387
5388         * loader.c (mono_method_signature): Call into the verifier to check
5389         the method signature.
5390
5391         * metadata-verify.c (verify_method_table): Move signature verification
5392         to verify_method_table_full.
5393
5394         * metadata-verify.c: Add mono_verifier_verify_method_signature.
5395
5396         * verify-internals.h: Export mono_verifier_verify_method_signature as
5397         part of the internal API.
5398
5399 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5400
5401         * loader.c (mono_method_get_header): Call into the verifier to
5402         check the method header.
5403
5404         * metadata-verify.c: Add mono_verifier_verify_method_header.
5405
5406         * verify-internals.h: Export mono_verifier_verify_method_header as
5407         part of the internal API.
5408
5409 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5410
5411         * class.c (mono_class_find_enum_basetype): Call into the verifier to
5412         check the field signature. Replace an assert with an explicit check.
5413
5414         * class.c (mono_class_setup_fields): Call into the verifier to check
5415         the field signature.
5416
5417         * metadata-verify.c: Add mono_verifier_verify_field_signature.
5418
5419         * verify-internals.h: Export mono_verifier_verify_field_signature as
5420         part of the internal API.
5421
5422 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5423
5424         * class.c (mono_class_find_enum_basetype): Simplify this function
5425         by moving code outside of the loop and not decoding static fields.
5426
5427 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5428
5429         * metadata-verify.c (verify_typedef_table): Check the extends
5430         token here. Move to here a flags check from verify_typedef_table_full.
5431
5432 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
5433
5434         * metadata-verify.c (is_valid_method_header): Fix a warning.
5435
5436         * metadata-internals.h (MonoImage): Remove the unused 
5437         static_rgctx_invoke_wrapper_cache.
5438
5439         * image.c marshal.c: Ditto.
5440
5441 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5442
5443         * image.c (do_mono_image_load): Enable table data verification.
5444
5445 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5446
5447         * metadata-verify.c (is_valid_constant): Fix nullref check.
5448
5449 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5450
5451         * metadata-verify.c (is_valid_constant): Fix string bounds check.
5452
5453 2009-06-22  Mark Probst  <mark.probst@gmail.com>
5454
5455         * sgen-gc.c: Managed allocation with pthreads TLS.
5456
5457         * threads.c, threads-types.h: Functions for the JIT to tell the
5458         runtime whether it supports the MONO_TLS opcode.
5459
5460 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5461
5462         * metadata-verify.c (verify_param_table): Fix a crash for assemblies
5463         without methods.
5464
5465 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5466
5467         * metadata-verify.c (is_valid_constant): Fix the string length check.
5468         Use safe overflow checking. Add decent error messages.
5469
5470 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5471
5472         * metadata-verify.c: Move remaininh blob checks to the offline
5473         verification path.
5474
5475 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5476
5477         * metadata-verify.c: Move more blob checks to the offline verification
5478         path.
5479
5480 2009-06-22  Bill Holmes  <billholmes54@gmail.com>
5481
5482         * object-internals.h : Adding interrupt_on_stop field.
5483
5484         * threads.c (mono_thread_request_interruption) : On Windows exit the
5485           thread if interrupt_on_stop is set.
5486
5487         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
5488          Removing old interrupt logic and setting the interrupt_on_stop for the
5489          thread when calling accept.
5490
5491         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal) :
5492          setting the interrupt_on_stop for the thread when calling accept.
5493
5494         Contributed under MIT/X11 license.
5495
5496 2009-06-20  Martin Baulig  <martin@ximian.com>
5497
5498         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 3.
5499
5500 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
5501
5502         * appdomain.c (mono_try_assembly_resolve): Don't call managed code when
5503         running in no-exec mode.
5504
5505 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5506
5507         * metadata-verify.c (verify_method_table): Move header
5508         checking to verify_method_table_full.
5509
5510         * metata-verify.c (mono_verifier_verify_full_table_data):
5511         Call verify_method_table_full.
5512
5513 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5514
5515         * metadata-verify.c (verify_field_table): Move signature
5516         checking to verify_field_table_full.
5517
5518         * metata-verify.c (mono_verifier_verify_full_table_data):
5519         Call verify_field_table_full.
5520
5521 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5522
5523         * metadata-verify.c (verify_typedef_table): Move remaining
5524         stuff to verify_typedef_table_full.
5525
5526 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5527
5528         * metadata-verify.c: Kill is_corlib from VerifyContext.
5529         It is only used by the offline mode.
5530         So we better remove it from the runtime path.
5531
5532 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5533
5534         * metadata-verify.c: Add new mono_verifier_verify_full_table_data
5535         function that perform the offline metadata verification steps.
5536
5537         * metadata-verify.c (verify_typedef_table): Move some checks to
5538         verify_typedef_table_full and make it been called by new function
5539         mono_verifier_verify_full_table_data.
5540
5541         * pedump.c: Call mono_verifier_verify_full_table_data.
5542
5543         * verify-internals.h: Export mono_verifier_verify_full_table_data as
5544         part of the internal API.
5545
5546 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5547
5548         * metadata-verify.c (typedef_is_system_object): Fix System.Object
5549         check.
5550
5551         * metadata-verify.c (verify_implmap_table): Fix implmap invalid
5552         flags bits. SupportLastError was confused as bit 7 instead of 6.
5553
5554         * metadata-verify.c (verify_implmap_table): Fix import scope verification
5555         to check against the module ref table instead of module.
5556
5557         * metadata-verify.c (verify_implmap_table): Fix corlib check.
5558
5559         * pedump.c: Call mono_image_load_names.
5560
5561 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5562
5563         * image.c: Extract mono_image_load_names from do_mono_image_load.
5564
5565         * metadata-internals.h: Export mono_image_load_names as part of
5566         the internal API.
5567         
5568 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
5569
5570         * metadata.c (mono_metadata_cleanup): Free the generic method cache
5571         first, as it could reference data in the other caches.
5572
5573 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
5574
5575         * metadata-verify.c: Finished with method header verification.
5576
5577 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
5578
5579         * metadata-verify.c: Added more header verification code.
5580         Now only EH clauses are missing.
5581
5582 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
5583
5584         * marshal.c (get_runtime_invoke_type): Don't share primitive types
5585         for return values.
5586
5587 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
5588
5589         * metadata-verify.c: Initial method header verification.
5590
5591 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
5592
5593         * metadata-verify.c (verify_import_table): The IAT contents
5594         might end been patched by the windows DL when running with
5595         coree enabled.
5596
5597 2009-06-15 Rodrigo Kumpera  <rkumpera@novell.com>
5598
5599         * class.c (mono_class_from_typeref): If the enclosing type is not
5600         found return null instead of crashing. Fixes #508487.
5601
5602 2009-06-15  Atsushi Enomoto  <atsushi@ximian.com>
5603
5604         * normalization-tables.h : updated to the latest unicode charcter
5605           data.
5606         * appdomain.c : bump corlib version.
5607
5608 2009-06-14  Zoltan Varga  <vargaz@gmail.com>
5609
5610         * class.c (mono_class_from_name): Fix support for assembly references
5611         in the EXPORTEDTYPE table. Fixes #511704.
5612
5613 2009-06-13  Geoff Norton  <gnorton@novell.com>
5614
5615         * domain.c: Ensure that mono_domain_assembly_open actually opens the
5616         assembly in the target domain.
5617
5618 2009-06-12  Robert Jordan  <robertj@gmx.net>
5619
5620         * cominterop.c (cominterop_get_ccw): Increment mspec's SizeParamIndex
5621         because "this" of the managed signature has become an
5622         ordinary parameter in the unmanaged signature.
5623
5624 2009-06-12  Zoltan Varga  <vargaz@gmail.com>
5625
5626         * class-internals.h (struct _MonoGenericContainer): Add an 'image'
5627         field for owner-less generic containers.
5628
5629         * reflection.c (mono_reflection_initialize_generic_parameter): Set the
5630         image field of the owner-less generic containers created here.
5631
5632         * metadata.c (mono_metadata_load_generic_params): Ditto, the
5633         contain is ownerless until the caller sets its owner.
5634
5635         * metadata.c (type_in_image): Handle owner-less generic containers
5636         correctly.
5637         
5638 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
5639
5640         * image.c (mono_image_close): Support debug_assembly_unload for
5641         dynamic images too.
5642
5643 2009-06-11 Andrés G. Aragoneses  <aaragoneses@novell.com>
5644
5645         * class.c: Fix some typos in comments.
5646
5647 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
5648
5649         * reflection.c (add_custom_modifiers): Avoid reading invalid memory.
5650
5651         * threads.c (mono_thread_execute_interruption): Avoid creating the
5652         abort exception object while holding the synch_cs lock.
5653
5654 2009-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5655
5656         * metadata-verify.c: Verify basic cattr content.
5657
5658 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
5659
5660         * reflection.c (add_exported_type): Don't set the FORWARDER flag on
5661         nested types.
5662         
5663         * reflection.c (mono_image_fill_export_table_from_type_forwarders): Add
5664         support for nested types. Fixes #511704.
5665
5666 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5667
5668         * metadata-verify.c: Verify methodspec signatures.
5669
5670 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5671
5672         * metadata-verify.c: Verify typespec signatures.
5673
5674 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
5675
5676         * metadata.c (free_inflated_method): Call 
5677         mono_marshal_free_inflated_wrappers (), which was missed earlier.
5678
5679 2009-06-08  Miguel de Icaza  <miguel@novell.com>
5680
5681         * mono-config.c: Small change to report the PPC64/ILP32 model.
5682
5683 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5684
5685         * metadata-verify.c (parse_type): Check szarray.
5686
5687 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5688
5689         * metadata-verify.c (parse_type): Check fnptr.
5690
5691 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5692
5693         * metadata-verify.c (parse_type): Check generic instances.
5694
5695 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5696
5697         * metadata-verify.c (parse_type): Check array shape.
5698
5699 2009-06-05  Robert Jordan  <robertj@gmx.net>
5700
5701         * class.c (mono_class_create_from_typedef): Check only for
5702         mscorlib's System.Array.
5703
5704 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5705
5706         * metadata-verify.c (parse_type): Check pointer, class/valuetype
5707         and generic params. 
5708
5709         * metadata-verify.c (parse_field): Check the signature.
5710
5711 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5712
5713         * metadata-verify.c: Implement locals signature check.
5714
5715 2009-06-04  Marek Safar  <marek.safar@gmail.com>
5716
5717         * domain.c: Add .NET 4.0 Beta 1 version.
5718
5719 2009-06-04  Bill Holmes  <billholmes54@gmail.com>
5720
5721         * cominterop.c (cominterop_ccw_queryinterface): Fix for bug 499566.
5722           For QueryInterface on CCWs consider the base class
5723           interfaces as well.
5724
5725         Code is contributed under MIT/X11 license.
5726
5727 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
5728
5729         * wrapper-types.h: Delete STATIC_RGCTX_INVOKE.
5730
5731         * marshal.c (mono_marshal_ret_static_rgctx_invoke): Remove, no longer
5732         used.
5733
5734         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
5735         adding a static-rgctx invoke wrapper, it is done by the runtime trampolines.
5736
5737         * generic-sharing.c (inflate_other_data): Ditto.
5738         
5739 2009-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5740
5741         * metadata-verify.c: Implement property signature check.
5742
5743 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5744
5745         * sgen-gc.h: Register saving support for PPC.
5746
5747 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5748
5749         * sgen-gc.c: Fixed a pthread TLS screwup.
5750
5751 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5752
5753         * sgen-gc.c: Do TLS using pthread API if __thread keyword is not
5754         supported.
5755
5756 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5757
5758         * sgen-gc.c: Disable TLA and managed allocation if the __thread
5759         keyword is not supported.
5760
5761 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
5762
5763         * marshal.c metadata.c: Applied patch from Ulrich Weigand 
5764         <uweigand@de.ibm.com>: Free the wrappers of inflated generic methods when
5765         the inflated method is freed. Fixes #508389.
5766
5767         The code is contributed under the MIT/X11 license.
5768         
5769 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
5770
5771         * marshal.c (get_wrapper_target_class): New helper function.
5772         (mono_marshal_get_runtime_invoke): Place runtime-invoke wrappers into
5773         the <Module> class of the image. Fixes #509049.
5774
5775 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5776
5777         * threads.c (ves_icall_System_Threading_Thread_Sleep_internal):
5778         Check if the thread was interrupted and proccess it straight away.
5779         Makes abortion much more responsive.
5780
5781 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5782
5783         * threads.c (mono_thread_execute_interruption): Use atomic cas with
5784         MonoThread::interruption_requested to match it's counterpart.
5785
5786         Fixes a hang in abort-stress-1 on a 2 core x86.
5787
5788         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
5789         Fix warning.
5790
5791 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5792
5793         Change MonoImage::name_cache to be protected by the image lock
5794         instead of the loader lock.
5795
5796         * appdomain.c (deregister_reflection_info_roots): Protect access
5797         to name_cache.
5798
5799         * class.c (mono_image_init_name_cache): Change from the loader lock
5800         to the image lock. Check if the cache wasn't already created.
5801
5802         * class.c: Change from the loader to the image lock.
5803
5804         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Fix
5805         the code to hold the image lock while iterating over name_cache and
5806         not go into mono_array_new holding it.
5807
5808         * metadata-internals.h: Add a comment about this change.
5809
5810 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5811
5812         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
5813         Under the 2.0 profile raise the loader error.
5814
5815         Fixes #508532.
5816
5817 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5818
5819         * marshal.c (mono_marshal_get_runtime_invoke): Emit the right kind
5820         of ldind opcode for generic instances so we don't fail for direct wrappers.
5821         This only affect direct calls.
5822
5823 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
5824
5825         * reflection.c (create_dynamic_mono_image): Fix warnings.
5826
5827         * generic-sharing.c (other_info_equal): Ditto.
5828         
5829 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5830
5831         * metadata-verify.c: Implement field signature check.
5832
5833 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5834
5835         * metadata-verify.c: Implement standalone signature check.
5836
5837 2009-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5838
5839         * metadata-verify.c: Implement methodref signature check.
5840
5841 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
5842
5843         * object-internals.h (MonoRuntimeCallbacks): New structure containing
5844         callbacks supplied by the runtime.
5845
5846         * object.c (mono_install_callbacks): New internal function to install
5847         the callbacks.
5848
5849         * object.c (mono_create_ftnptr): Move the implementation of this to
5850         mini/.
5851
5852         * object.c (mono_get_addr_from_ftnptr): Ditto.  
5853
5854 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5855
5856         * metadata-verify.c (parse_return_type): Proper byref check.
5857         * metadata-verify.c (is_valid_method_signature): Check for zero arity
5858         generic signatures and method params.
5859
5860 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5861
5862         * metadata-verify.c (decode_signature_header): Fix bounds check.
5863
5864         * metadata-verify.c (parse_custom_mods): Check custom mods.
5865
5866         * metadata-verify.c (parse_type): Do initial basic verification
5867         of valid values.
5868         
5869         * metadata-verify.c (is_valid_method_signature): Parse the generic
5870         param count.
5871
5872 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
5873
5874         * icall.c (ves_icall_Type_GetMethodsByName): Virtual methods should be
5875         discarded based on their most specific definition so we set the method_slots
5876         array before checking if the method is acceptable or not.
5877
5878         Fixes #506757.
5879
5880 2009-05-26  Mark Probst  <mark.probst@gmail.com>
5881
5882         * icall.c: Free the old array when resizing a mono_ptr_array.
5883
5884 2009-05-26  Mark Probst  <mark.probst@gmail.com>
5885
5886         * reflection.c (create_dynamic_mono_image): Use mono_object_hash()
5887         for the hashes whose keys are managed objects.
5888
5889 2009-05-26  Mark Probst  <mark.probst@gmail.com>
5890
5891         * object-internals.h, threads.c: Set the execution context on
5892         thread start here, not in corlib.
5893
5894         * appdomain.c: Bump corlib version.
5895
5896 2009-05-27  Martin Baulig  <martin@ximian.com>
5897
5898         * mono-debug.c (mono_debug_init): Use `MONO_DEBUG_FORMAT_DEBUGGER'
5899         if `_mono_debug_using_mono_debugger' is set to make things work
5900         properly when embedding Mono.
5901
5902 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5903
5904         * class.c (mono_class_setup_fields): Don't mark simd types as having
5905         16 bytes alignment as the whole runtime doesn't support.
5906
5907 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5908
5909         * metadata-verify.c (safe_read): Use endian safe read macros.
5910
5911 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
5912
5913         * object.c (mono_create_ftnptr): Don't allocate from the code mempool since
5914         it is read-only when using full aot.
5915
5916 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
5917
5918         * metadata-verify.c (is_valid_method_signature): Verify parts
5919         of the return type. Provide an error message in case of failure.
5920
5921 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
5922
5923         * metadata-verify.c (is_valid_method_signature): Verify the call conv.
5924
5925 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
5926
5927         * metadata-verify.c: Include the size prefix in the bounds check.
5928
5929 2009-05-22  Miguel de Icaza  <miguel@novell.com>
5930
5931         * icall.c: Remove warnings.
5932
5933         * mono-config.c: Allow for CONFIG_CPU to be set in config.h and
5934         prevent auto-detection based on GCC defines.
5935
5936         Add PS3
5937
5938         * metadata-verify.c: Do not include signal.h
5939
5940         * generic-sharing.c, marshal.c: Add returns to avoid some warning
5941         messages.  Not sure why the g_assert_not_reached is not enough to
5942         quiet the compiler.
5943         
5944
5945         * appdomain.c: Remove code that is not used when
5946         DISABLE_SHADOW_COPY is set.
5947
5948         * image.c: use g_getenv
5949
5950 2009-05-21  Miguel de Icaza  <miguel@novell.com>
5951
5952         * reflection.c: Remove code that it not used with
5953         DISABLE_REFLECTION_EMIT is defined.
5954
5955 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5956
5957         * marshal.c (mono_marshal_get_runtime_invoke): Share more runtime
5958         invoke wrappers.
5959
5960 2009-05-20  Miguel de Icaza  <miguel@novell.com>
5961
5962         * socket-io.c
5963         (ves_icall_System_Net_Sockets_Socket_Available_internal): Remove
5964         the ifdef here and instead put that on io-layer
5965
5966 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
5967
5968         * metadata-verify.c: Verify the generic param constraint table.
5969
5970 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
5971
5972         * metadata-verify.c (verify_generic_param_table): Fix
5973         thinko on the valid flags bits for generic params.
5974
5975 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
5976
5977         * metadata-verify.c: Verify the methodspec table.
5978
5979 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
5980
5981         * metadata-verify.c: Verify the generic param table.
5982
5983 2009-05-19  Mark Probst  <mark.probst@gmail.com>
5984
5985         * sgen-gc.c: Store and use the count with REMSET_VTYPE.
5986
5987 2009-05-19  Mark Probst  <mark.probst@gmail.com>
5988
5989         * sgen-gc.c: Use generation enum more consistently and use the
5990         correct generation in mono_gc_register_for_finalization().
5991
5992 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
5993
5994         * metadata-verify.c: Verify the nested class table.
5995
5996 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
5997
5998         * metadata-verify.c: Verify the manifest resource table.
5999
6000 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
6001
6002         * debug-helpers.c (dis_one): Add little-endian support for ldstr.
6003
6004 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
6005
6006         * class.c (mono_class_get_vtable_entry): Avoid adding static-rgctx
6007         wrappers, this is now done in the JIT.
6008         
6009         * class.c (mono_set_generic_sharing_supported): New internal function.
6010         (mono_class_generic_sharing_enabled): Move the #ifdef stuff to the JIT.
6011
6012 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6013
6014         * metadata-verify.c: Verify the exported type table.
6015
6016 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6017
6018         * pedump.c (main): Fake an assembly for netmodules to make the verifier happy.
6019
6020 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6021
6022         * metadata-verify.c: Verify the file table.
6023
6024 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6025
6026         * metadata-verify.c (verify_assembly_table): Fix an error message.
6027
6028         * metadata-verify.c: Verify the assemblyref table.
6029
6030 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6031
6032         * metadata-verify.c (verify_assembly_table): Fix the valid
6033         bits mask for flags.
6034
6035 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
6036
6037         * debug-helpers.c (mono_method_full_name): Print generic parameters of
6038         generic methods as well.
6039
6040 2009-05-15  Geoff Norton  <gnorton@novell.com>
6041
6042         * gc.c: MachO/Darwin supports and uses semaphores fine for this 
6043         use-case and is significantly more performant than the wapi layer.
6044
6045 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6046
6047         * metadata-verify.c: Verify the assembly table.
6048
6049 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6050
6051         * metadata-verify.c: Fix rows limit check.
6052
6053 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6054
6055         * metadata-verify.c: Verify the fieldrva table.
6056
6057 2009-05-13  Mark Probst  <mark.probst@gmail.com>
6058
6059         * sgen.c: Speed up weak links and finalizers by grouping them by
6060         generation.
6061
6062 2009-05-13  Mark Probst  <mark.probst@gmail.com>
6063
6064         * marshal.c (delegate_hash_table_add): When overwriting an entry,
6065         free the old GCHandle (only applies to SGen).
6066
6067 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
6068
6069         * loader.c (mono_get_method_from_token): Avoid the expensive call to
6070         mono_metadata_load_generic_params () for non-generic methods.
6071
6072 2009-05-12  Mark Probst  <mark.probst@gmail.com>
6073
6074         * monitor.c, monitor.h (mono_monitor_get_object_monitor_weak_link):
6075         New function for returning a monitor's weak link if it has one.
6076
6077         * sgen-gc.c: Remove an object's monitor's weak link (if it has
6078         one) when clearing a domain.  These can still be around because
6079         the object might not have been collected.
6080
6081 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
6082
6083         * gc.c: Fix a warning.
6084
6085 2009-05-12  Kornél Pál  <kornelpal@gmail.com>
6086
6087         * gc.c (mono_gc_init): Set gc_thread on creation. This avoids the
6088         prevous wait that resulted in a deadlock on Windows when initializing
6089         the runtime form DllMain. Also results in improved startup time.
6090         (finalizer_thread): Get rid of thread_started_event.
6091         * threads.c, threads-types.h (mono_thread_create_internal): Return the
6092         resulting MonoThread.
6093
6094         Contributed under MIT/X11 license.
6095
6096 2009-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
6097
6098         * metadata-verify.c: Verify the implmap table.
6099         Don't require that #US and #Strings be present.
6100
6101 2009-05-11  Sebastien Pouliot  <sebastien@ximian.com>
6102
6103         * security-core-clr.c: Delegate checks are done at creation time,
6104         not a invocation time. Fix exception for Telerik Silverlight demo
6105
6106 2009-05-11  Mark Probst  <mark.probst@gmail.com>
6107
6108         * sgen-gc.c (need_remove_object_for_domain): Remove the special
6109         case for the Thread class.
6110
6111         * threads.c: Do clean-up of abort exception/state in
6112         thread_cleanup() instead of Thread.free_internal().  Also clean up
6113         current_appcontext.  The reason we have to do that is because
6114         those references might point into another domain and if that
6115         domain is unloaded before the thread is finalized, they point to
6116         invalid data.
6117
6118 2009-05-10  Andreas Faerber  <andreas.faerber@web.de>
6119
6120         * null-gc.c (mono_gc_weak_link_add, mono_gc_clear_domain): Fix
6121         stub signatures.
6122         
6123         Contributed unter MIT/X11 license.
6124
6125 2009-05-09  Miguel de Icaza  <miguel@novell.com>
6126
6127         * verify.c, metadata-verifier.c: Add support for disabling the
6128         verifier in some builds.
6129
6130         [ Sorry, my previous commit accidentally commited some work in
6131         progress ]
6132
6133 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
6134
6135         * class.c (mono_class_setup_fields): Set class->field.first for
6136         generic instances.
6137
6138 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
6139
6140         * metadata-verify.c: Verify the typespec table.
6141
6142 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
6143
6144         * metadata-verify.c: Verify the module table.
6145
6146 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6147
6148         * metadata-verify.c: Verify the methodimpl table.
6149
6150 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6151
6152         * metadata-verify.c: Verify the property table.
6153
6154 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
6155
6156         * debug-helpers.c (mono_method_desc_match): Add support for generic
6157         glob patterns.
6158
6159 2009-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
6160
6161         * metadata-verify.c: Verify the propertymap table.
6162
6163 2009-05-04 Rodrigo Kumpera  <rkumpera@novell.com>
6164
6165         * metadata-verify.c: Verify the event table.
6166
6167         * metadata-verify.c (search_sorted_table): Fix offset
6168         calculation.
6169
6170 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
6171
6172         * domain-internals.h (struct _MonoJitInfo): Add a 'from_llvm' flag.
6173
6174 2009-05-01  Mark Probst  <mark.probst@gmail.com>
6175
6176         * gc.c (mono_gc_run_finalize): Don't set the domain too late,
6177         because mono_delegate_free_ftnptr() needs it.
6178
6179 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6180
6181         * metadata-verify.c: Verify the eventmap table.
6182
6183 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6184
6185         * metadata-verify.c: Verify the standalonesig table.
6186
6187 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6188
6189         * metadata-verify.c: Verify the field layout table.
6190
6191 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6192
6193         * class.c (mono_type_get_name_recurse): Don't crash
6194         for ownerless generic params.
6195
6196         * debug-helpers.c (mono_type_get_desc): Correct the format
6197         for ownerless generic params.
6198
6199 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6200
6201         * metadata-verify.c: Verify the class layout table.
6202
6203 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6204
6205         * metadata-verify.c: Verify the decl security table.
6206
6207 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6208
6209         * domain.c (mono_domain_set_internal_with_options): Don't do
6210         anything if the old domain is the same as the old one.  Fixes
6211         #499326.
6212
6213 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6214
6215         * appdomain.c: Deregister the reflection_info roots when unloading
6216         a domain.
6217
6218         * sgen-gc.c, domain.c, gc-internal.h: mono_gc_clear_domain() nulls
6219         memory allocated by a domain and frees its disappearing links.
6220
6221         * boehm-gc.c, null-gc.c: Empty implementation of
6222         mono_gc_clear_domain().
6223
6224 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6225
6226         * appdomain.c (clear_cached_vtable): Free the static fields memory
6227         block.
6228
6229 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6230
6231         * gc.c: Set the correct domain when invoking finalizers.
6232
6233         * appdomain.c: Set the correct domain when creating threads.
6234
6235 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6236
6237         * sgen-gc.c: Fix skip size for vectors.
6238
6239 2009-05-03  Martin Baulig  <martin@ximian.com>
6240
6241         * mono-debug-debugger.c
6242         (mono_debugger_check_breakpoints): Check class init handlers even
6243         if we don't have any method load handers.
6244
6245 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
6246
6247         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid 
6248         returning refonly assemblies if refonly is FALSE. Fixes #499013.
6249
6250 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
6251
6252         * metadata-verify.c: Verify the field marshal table.
6253
6254 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
6255
6256         * metadata-verify.c: Verify the custom attribute table.
6257
6258 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6259
6260         * metadata-verify.c: Verify the constant table.
6261
6262 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6263
6264         * metadata-verify.c: Verify the memberef table.
6265
6266 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6267
6268         * metadata-verify.c (get_coded_index_token): Remove
6269         dead argument.
6270
6271 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6272
6273         * metadata-verify.c: Verify the interfaceimpl table.
6274
6275 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6276
6277         * verify.c: Improve error message.
6278
6279         * debug-helpers.c (mono_type_get_desc): Harden the code that
6280         deals with VAR and MVAR.
6281
6282 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
6283
6284         * image.c (mono_image_fixup_vtable): Avoid casting an lvalue. Fixes 
6285         part of #498692.
6286
6287 2009-04-23 Tom Hindle <tom_hindle@sil.org>
6288
6289         * cominterop.c (ves_icall_System_Runtime_InteropServices_Marshal_ReleaseComObjectInternal):
6290         changed to match .Net behaviour of not aborting on additional calls to ReleaseComObject.
6291
6292 2009-04-28  Sebastien Pouliot  <sebastien@ximian.com>
6293
6294         * security-core-clr.c: Avoid redundant checks for platform code, 
6295         e.g. check for method and for class (very common) and check
6296         for class and outer class (less common)...
6297
6298 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
6299
6300         * reflection.c: Avoid returning random cattrs for synthetic methods.
6301         Fixes #498545.
6302
6303 2009-04-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
6304
6305         * assembly.c: assemblies in the GAC should never be shadow-copied.
6306
6307 2009-04-26  Mark Probst  <mark.probst@gmail.com>
6308
6309         * domain.c, domain-internals.h: Disable
6310         track_resurrection_{objects,handles}_hash in MonoDomain if using
6311         SGen.
6312
6313 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6314
6315         * metadata-verify.c: Verify the param table.
6316
6317 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6318
6319         * metadata-verify.c (verify_typedef_table): Range check FieldList and
6320         MethodList.
6321
6322         * metadata-verify.c (verify_method_table): Proper check the ParamList
6323         field.
6324
6325 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6326
6327         * metadata-verify.c (verify_method_table): Check for runtime
6328         implemented functions such as delegate .ctors. Remove spurious
6329         printf.
6330         
6331 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6332
6333         * pedump.c: Proper initialize the runtime forcing the 2.0 profile.
6334
6335 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6336
6337         Don't allocate MonoGenericInfo for ownerless generic params.
6338         * class-internals.h (MonoGenericParam::info): Move field to ...
6339         (MonoGenericParamFull): ... this.  New struct.
6340         (MonoGenericContainer::type_params): Change type to
6341         MonoGenericParamFull.
6342         (MonoGenericParam, MonoGenericContainer): Update accessors.
6343         * metadata.c (mono_metadata_parse_generic_param): Don't initialize
6344         'info' field for ownerless generic param.
6345         (mono_metadata_load_generic_params): Update to changes.
6346         * reflection.c (mono_reflection_create_generic_class): Likewise.
6347         (reflection_methodbuilder_to_mono_method): Likewise.
6348         (mono_reflection_initialize_generic_parameter): Likewise.
6349
6350 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6351
6352         Don't use MonoGenericParamInfo for ownerless generic params.
6353         * class.c (get_anon_gparam_class, set_anon_gparam_class): New.  Don't
6354         use ParamInfo class at all.
6355         (mono_class_from_generic_parameter): Use them.
6356         (make_generic_param_class): Fix a couple of instances where 'pinfo
6357         == NULL' wasn't handle.
6358
6359 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6360
6361         * class.c (make_generic_param_class): Carve out of ...
6362         (mono_class_from_generic_parameter): ... here.
6363
6364 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6365
6366         Simplify mono_class_from_generic_parameter
6367         * class-internals.h (MonoGenericParamInfo::token): New field.
6368         * metadata.c (mono_metadata_load_generic_params): Initialize it
6369         from metadata.
6370         * class.c (mono_class_from_generic_parameter): Use it instead of
6371         searching through metadata.
6372
6373 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6374
6375         * metadata-verify.c: Add verification of the method table.
6376
6377 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6378
6379         * icall.c (ves_icall_Type_GetMethodsByName): Fix memleak for the
6380         Delegate::Invoke optimization.
6381
6382 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6383
6384         * appdomain.c (mono_domain_create_appdomain_internal): Free the
6385         string returned by get_shadow_assembly_location_base.
6386
6387         * appdomain.c (get_shadow_assembly_location_base): Add a comment
6388         about caller's ownership.
6389
6390 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6391
6392         * reflection.c: Add mono_reflection_cleanup_domain to cleanup
6393         reflection memory on domain unload.
6394
6395         * domain.c (mono_domain_free): Don't free refobject_hash, let the
6396         reflection cleanup code do it.
6397
6398         * domain-internals.h: Add mono_reflection_cleanup_domain.
6399
6400         This fixes a memory leak for managed mirrors of reflection objects
6401         on domain unload. 
6402
6403 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
6404
6405         * metadata-verify.c: Implement more verification of the field table.
6406
6407 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
6408
6409         * pedump.c (main): Init mono with mscorlib so it defaults to 2.0 and
6410         doesn't try to parse the input assembly, which can be broken.
6411
6412 2009-04-23  Mark Probst  <mark.probst@gmail.com>
6413
6414         * boehm-gc.c, gc-internal.h, gc.c, monitor.c, null-gc.c,
6415         sgen-gc.c: Implement track resurrection in weak GC handles in SGen
6416         by using the lowest bit in the link to store whether the link is
6417         tracked.  Move the track_resurrection hashes into boehm-gc.c.
6418
6419 2009-04-22  Miguel de Icaza  <miguel@novell.com>
6420
6421         * Makefile.am: Split the console support in platform specific code
6422         and put together a framework for making this easy in the future so
6423         that we can start splitting code instead of having a mess of PLATFORM_WIN32
6424
6425 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6426
6427         * pedump.c: Fix a warning.
6428
6429 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6430
6431         * verify.c (mono_delegate_type_equal): Compare valuetypes using
6432         mono_class_from_mono_type to avoid bad interactions with the dual representation
6433         of the generic type definition.
6434
6435 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6436
6437         * verify.c (do_invoke_method): Use mono_class_from_mono_type to
6438         get the MonoClass for the call context type as it might be a generic
6439         instance.
6440
6441         Fixes #491483.
6442
6443 2009-04-21  Mark Probst  <mark.probst@gmail.com>
6444
6445         * object-internals.h: The Thread object has no execution_context
6446         member anymore.
6447
6448         * threads.c, threadpool.c, threads-types.h: Accessor functions for
6449         the execution context.
6450
6451         * appdomain.c: Bump corlib version.
6452
6453 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6454
6455         * verify.c (do_newobj): Improve error message.
6456
6457 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6458
6459         * verify.c (verify_clause_relationship): Only mask as an error if the exception clause
6460         is nested in the filter block.
6461
6462         * verify.c (verify_clause_relationship): The disjoint check must verify if the exception
6463         block is not fully nested.
6464
6465         Fixes #495656.
6466
6467 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6468
6469         * verify.c (verify_type_compatibility_full): Compare MonoClass and
6470         not MonoType to check for equality of valuetypes as the generic type
6471         definition allows for two different encodings: the generic type definition
6472         class or a generic instance over the GTD arguments.
6473
6474         Fixes #496175.
6475
6476 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6477
6478         * verify.c (dump_stack_value): Fix compilation with extra debug turned on.
6479
6480         * verify.c (do_initobj): Improve error message.
6481
6482 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6483
6484         * metadata-verify.c: Enable pe verification as the issue with #496453
6485         is that the authenticode data directory have a different unspecified
6486         format. Ignore it for now.
6487
6488         * pedump.c: Run the metadata verifier together with the IL verifier.
6489
6490         Fixes ##496453.
6491
6492 2009-04-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6493
6494         * metadata-verify.c: Temporarily disable pe verification due to #496453.
6495
6496 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6497
6498         * class.c (can_access_type): Check visibility against
6499         the element type for pointers and arrays.
6500
6501         Fixes #496150.
6502
6503 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6504
6505         * metadata-verify.c: Fix cli and table verification to use information
6506         from the MonoImage. A lot of duplicated code got killed.
6507
6508 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6509
6510
6511         This patch starts to integrate the metadata verifier with the runtime code.
6512
6513         This patch causes major regression in functionality for the metadata verifier
6514         as cli and table verification are disabled since they require to be ported to
6515         use MonoImage information.
6516
6517         * image.c (do_mono_image_load): Split the code in this function
6518         into mono_image_load_pe_data and mono_image_load_cli_data.
6519         Add     care_about_pecoff parameter to not load pecoff data.
6520         Call into the metadata verifier for pecoff and cli verification.
6521
6522         * image.c (mono_image_open_raw): New function that doesn't perform
6523         any parsing of the image contents.
6524         
6525         The reason for the 3 new functions is to give pedump better control
6526         into the interaction with the verifier.
6527
6528         * metadata-internals.h: Add new functions from image.c as part of the
6529         internal mono API.
6530
6531         * metadata-verify.c: Split mono_image_verify into mono_verifier_verify_pe_data,
6532         mono_verifier_verify_cli_data and mono_verifier_verify_table_data. Prepare
6533         to make those functions work together with the runtime.
6534
6535         * verify.c: Add mono_verifier_is_enabled_for_image function that returns
6536         true if the image needs to be verified.
6537
6538         * verify-internals.h: Export new functions from metadata-verify.c and verify.c.
6539
6540         * pedump.c: Use new metadata verifier API.
6541
6542 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
6543
6544         * object.c (mono_install_vtable_trampoline): Make this receive a
6545         trampoline creation function instead of trampoline, allowing the JIT
6546         to use a different trampoline for each vtable.
6547
6548 2009-04-18  Mark Probst  <mark.probst@gmail.com>
6549
6550         * object.c (mono_raise_exception): Don't reset the thread abort
6551         exception state here.
6552
6553 2009-04-18  Mark Probst  <mark.probst@gmail.com>
6554
6555         * icall-def.h: New icall for getting the thread abort exception
6556         state for a thread.
6557
6558         * object.c, thread.c, object-internals.h: A thread's abort
6559         exception state is now a GC handle.  To get the object it stands
6560         for, we must move it into the current app domain, if it's
6561         different than the one where it originated from.
6562
6563         * appdomain.c: Bump corlib version.
6564
6565         * domain.c, domain-internals.h: New function for setting the
6566         domain and migrate the thread abort exception or not.
6567
6568 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6569
6570         * metadata-verify.c: Add initial verification of the
6571         field table.
6572
6573 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6574
6575         * metadata-verify.c: Add a macro to conditionally enable
6576         dumping of verification information. Add  make_coded_token
6577         and search_sorted_table to enable search sorted tables
6578         by a given coded token.
6579
6580 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6581
6582         * metadata-verify.c: Add array mapping from table index
6583         to description offset. Add get_col_offset and get_col_size
6584         functions.
6585
6586 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6587
6588         * metadata-verify.c: Add remaining table descriptions offsets.
6589         Add remaining coded index descriptions.
6590
6591 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6592
6593         * metadata-verify.c: Fixed constant table description.
6594         Fixed calculation of HasCustomAttribute coded index size.
6595         Fixed calculation of size for many table indexes. 
6596
6597 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6598
6599         * pedump.c (dump_metadata): Dump table offset instead
6600         of useless pointer in memory.
6601
6602 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6603
6604         * metadata-verify.c (verify_typedef_table): Add tests for MethodList.
6605
6606 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6607
6608         * metadata-verify.c (verify_typedef_table): Add tests for FieldList and
6609         a missing of for interface types.
6610
6611 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6612
6613         * metadata-verify.c (verify_pe_optional_header): Add comment of why
6614         the code is commented.
6615
6616         * metadata-verify.c (verify_resources_table): Remove spurious printf
6617         and don't fail if there are unmanaged resources. Gmcs generates a useless
6618         one     for all assemblies - I bet it's some MS compatibility junk.
6619
6620 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6621
6622         * metadata-verify.c (verify_typedef_table): Verify the extends field.
6623
6624         * metadata-verify.c (mono_image_verify): Add a is_corlib.
6625
6626         * verify-internals.h: Same.
6627
6628         * pedump.c: Fix for mono_image_verify new signature.
6629
6630 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6631
6632         * metadata-verify.c (verify_typedef_table): Verify for some invalid
6633         flags combinations.
6634
6635 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6636
6637         * metadata-verify.c (verify_module_table): Ignore the generation field.
6638
6639 2009-04-15  Martin Baulig  <martin@ximian.com>
6640
6641         * debug-mono-symfile.c
6642         (mono_debug_symfile_lookup_location): Don't print a warning for
6643         unknown extended opcodes if they're within 0x40 and 0x7f.
6644
6645 2009-04-15  Zoltan Varga  <vargaz@gmail.com>
6646
6647         * marshal.c (mono_marshal_get_runtime_invoke_sig): Don't share runtime
6648         invoke signatures returning an enum. Fixes #494847.
6649
6650 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6651
6652         * metadata-verify.c: Initial code to verify the typedef table.
6653
6654 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6655
6656         * verify.c (mono_method_verify): Don't fail if an unconditional branch
6657         with non empty stack happens before the beginning of a try block.
6658
6659         Fixes #494812.
6660
6661 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6662
6663         * metadata-verify.c: Verify typename and typenamespace fields of
6664         the typeref table.
6665
6666 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
6667
6668         * metadata-verify.c: Initial code to verify the typeref table.
6669
6670 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
6671
6672         * verify.c (verify_delegate_compatibility): Fix error message.
6673
6674 2009-04-14  Sebastien Pouliot  <sebastien@ximian.com>
6675
6676         * security-core-clr.c: Fix typo
6677
6678 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
6679
6680         * marshal.c (delegate_hash_table_add): Make delegate_target_locations 
6681         a MonoGHashTable to keep its values alive.
6682         (emit_marshal_boolean): Fix a warning.
6683
6684 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
6685
6686         * socket-io.c: don't return IPv4/IPv6 addresses if the machine does
6687         not have any interface configured for IPv4/IPv6.
6688
6689 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
6690
6691         * assembly.c: fix typo in error message.
6692
6693 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
6694
6695         * marshal.c (mono_delegate_to_ftnptr): Use mono_gc_alloc_fixed () for
6696         allocating the location holding the this argument to prevent
6697         'too many root sets' errors.
6698
6699         * object.c (mono_class_create_runtime_vtable): Set field->offset to -1
6700         to mark fields as special static.
6701         (mono_field_static_get_value): Handle special static fields.
6702         (mono_field_static_set_value): Ditto.
6703
6704         * class-internals.h (struct _MonoClassField): Document this.
6705
6706 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
6707
6708         * cominterop.c (mono_cominterop_emit_marshal_com_interface): Assigning
6709           the argument a value of null for the MARSHAL_ACTION_MANAGED_CONV_OUT
6710           case.  This will handle when managed code returns null to native code.
6711
6712         Code is contributed under MIT/X11 license.
6713
6714 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
6715
6716         * object.c (build_imt_slots): Changing a free to a g_free to match
6717           the g_malloc0 in add_imt_builder_entry that allocated this memory.
6718
6719         Code is contributed under MIT/X11 license.
6720
6721 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
6722
6723         * marshal.c (emit_marshal_boolean): Adding code to ensure that
6724           the correct TRUE value is passed through the marshaling layer.
6725
6726         Code is contributed under MIT/X11 license.
6727
6728 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
6729
6730         * marshal.c (mono_marshal_emit_managed_wrapper): Handle closed delegates
6731         correctly. Fixes #492330.
6732         
6733         * marshal.c: Fix the embedding of object pointers into JITted code in
6734         the native-to-managed wrappers by allocating some GC tracked memory, and
6735         embedding the address of that.
6736
6737 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
6738
6739         * object.c (mono_class_create_runtime_vtable): Avoid putting MonoMethod
6740         pointers into the vtable.
6741
6742 2009-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
6743
6744         * verify.c (mono_delegate_type_equal): Proper check MONO_TYPE_CLASS.
6745
6746         * verify.c (verify_ldftn_delegate): Improve error message.
6747
6748 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
6749
6750         * reflection.c (my_mono_class_from_mono_type): Remove.
6751
6752 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
6753
6754         Prepare to reduce memory usage of owner-less generic parameters (1/n)
6755         * class-internals.h (MonoGenericParam): Carve out pklass, name, flags
6756         and constraints fields into ...
6757         (MonoGenericParamInfo): ... this.
6758         (mono_generic_param_info, mono_generic_container_get_param_info):
6759         New accessors.
6760         * class.c, debug-helpers.c, icall.c: Update to changes.
6761         * metadata.c, reflection.c, verify.c: Likewise.
6762
6763 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
6764
6765         * debug-helpers.c (dis_one): Fix decoding of strings in dynamic images.
6766
6767         * marshal.c (get_runtime_invoke_type): Share enums with their base types.
6768         
6769         * marshal.c (get_runtime_invoke_type): Share pointers with ints and
6770         booleans with sbytes.
6771
6772 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6773
6774         * class.c (can_access_instantiation): Verify accesibility of element types
6775         for arrays and pointers.
6776
6777         * class.c (can_access_type): Return true if the target class is VAR or MVAR.
6778
6779         * class.c (mono_method_can_access_method_full): Fix typos in the documentation.
6780
6781         Fixes #493068.
6782
6783 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6784
6785         * verify.c (do_invoke_method): Improve error messages.
6786
6787 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
6788
6789         * verify.c:  Fixing the MSVC build.
6790
6791         Code is contributed under MIT/X11 license.
6792
6793 2009-04-08  Sebastien Pouliot  <sebastien@ximian.com>
6794
6795         * security-core-clr.c: Simplify get_reflection_caller not to call
6796         mono_method_get_last_managed (another stack walk) and adjust the
6797         callers to handle a (should not happen) NULL return value.
6798
6799 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
6800
6801         Add accessors to some MonoGenericParam fields
6802         * class-internals.h (mono_generic_param_owner): New accessor.
6803         (mono_generic_param_num): Likewise.
6804         (mono_type_get_generic_param_owner): New helper.
6805         (mono_type_get_generic_param_num): New helper.
6806         * class.c, icall.c, metadata.c, reflection.c, verify.c: Use them.
6807
6808 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
6809
6810         * class-internals.h (mono_generic_container_get_param): New wrapper.
6811         * class.c, icall.c, metadata.c, verify.c: Use it.
6812
6813 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
6814
6815         Fix gtest-252.cs
6816         * verify.c (mono_type_is_valid_type_in_context): Rewrite to use
6817         the standard case/loop.  In particular, don't complain about
6818         references to generic type definitions.
6819
6820 2009-04-07  Zoltan Varga  <vargaz@gmail.com>
6821
6822         * debug-helpers.c (dis_one): Decode string arguments.
6823
6824 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
6825
6826         * pedump.c (dump_verify_info): Dump type name correctly.
6827
6828 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
6829
6830         * verify.c (mono_method_verify): Don't init code slots for exception boundaries if they
6831         are larger than code size.
6832
6833         This can happen in valid code if the try/catch block is not followed by any instruction
6834         and do a backward branch on the leave instruction.
6835
6836         Fixes #492494.
6837
6838 2009-04-06  Sebastien Pouliot  <sebastien@ximian.com>
6839
6840         * security-core-clr.c: Fix typo while comparing second method names
6841         in can_avoid_corlib_reflection_delegate_optimization
6842
6843 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
6844
6845         * verify.c (do_throw): Don't allow an unboxed generic param ar argument.
6846
6847         Fixes #487738.
6848
6849 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
6850
6851         * metadata.c (do_mono_metadata_parse_type): Fail if we are decoding
6852         a MVAR using a class context.
6853
6854         Fixes #490335.
6855
6856 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
6857
6858         * object.c (mono_class_compute_gc_descriptor): Make this non-static.
6859
6860         * domain-internals.h (struct _MonoJitInfo): Add a 'gc_info' field.
6861
6862         * gc-internal.h (MonoGCCallbacks): New stucture containing the callback
6863         functions supplied by the JIT for the SGEN GC.
6864
6865         * sgen-gc.c: Call the callbacks supplied by the JIT to do stack marking.
6866         
6867 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
6868
6869         monitor.c (mono_monitor_try_enter_internal):
6870         Added calls to profile monitor contentions.
6871         Also duplicated a small piece of code (the "get the monitor" logic)
6872         from the fast path to the slow path, and changed the relevant goto
6873         statements, so that monitor acquisition events can be emitted from the
6874         slow path (this is by Paolo Molaro).
6875
6876 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
6877
6878         * profiler.c, profiler.h, profiler-private.h:
6879         Added support for profiling monitor contentions.
6880
6881 2009-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
6882
6883         * metadata-verify.c: Verify the modules table.
6884
6885 2009-04-02 Rodrigo Kumpera  <rkumpera@novell.com>
6886
6887         * verify.c (mono_generic_param_is_constraint_compatible): Inflate the candidate
6888         using the context of the method been verifier and not of the method been called.
6889
6890         * verify.c: Add verifier_inflate_type and mono_type_is_valid_type_in_context to
6891         safely inflate generic types. 
6892
6893 2009-04-02  Sebastien Pouliot  <sebastien@ximian.com>
6894
6895         * security-core-clr.c: Change the strategy for checking the 
6896         "reflection using delegates optimization" to avoid unneeded 
6897         attributes in multiple class libraries.
6898
6899 2009-04-02  Mark Probst  <mark.probst@gmail.com>
6900
6901         * sgen-gc.c: Remove object element in the disappearing link struct
6902         by storing the object pointer in the link.
6903
6904 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
6905
6906         * pedump.c (dump_verify_info): Don't crash if signature decoding fails.
6907
6908 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
6909
6910         * verify.c (verifier_load_field): Fail if the field parent could not be loaded.
6911
6912         * verify.c (mono_method_verify): Do proper bounds checking of exception
6913         clause ranges.
6914
6915 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
6916
6917         * loader.c (mono_field_from_token): Don't crash if the field parent could
6918         not be decoded.
6919
6920 2009-03-31  Mark Probst  <mark.probst@gmail.com>
6921
6922         * sgen-gc.c: Execute critical finalizers after ordinary
6923         finalizers.
6924
6925         * class-internals.h, domain.c: Add CriticalFinalizerObject to
6926         mono_defaults.
6927
6928 2009-03-31 Jb Evain <jbevain@novell.com>
6929
6930         * verify.c (do_ldstr): don't check if a string is in the user strings
6931         heap if the current image is dynamic.
6932
6933 2009-03-31  Mark Probst  <mark.probst@gmail.com>
6934
6935         * sgen-gc.c: Wait until the last finalizer has executed when
6936         returning from WaitForPendingFinalizers.
6937
6938 2009-03-31  Martin Baulig  <martin@ximian.com>
6939
6940         * mono-debug-debugger.h (MonoDebuggerEvent): Add
6941         `MONO_DEBUGGER_EVENT_CREATE_APPDOMAIN' and
6942         `MONO_DEBUGGER_EVENT_UNLOAD_APPDOMAIN'.
6943         (mono_debugger_event_create_appdomain): New function.
6944         (mono_debugger_event_unload_appdomain): New function.
6945
6946         * appdomain.c (mono_domain_create_appdomain_internal): Call
6947         mono_debugger_event_create_appdomain().
6948
6949 2009-03-31  Martin Baulig  <martin@ximian.com>
6950
6951         * mono-debug-debugger.c
6952         (mono_debugger_register_class_init_callback): Also register the
6953         class init callback if the class is already initialized to make
6954         things work with shadow copied assemblies.
6955
6956 2009-03-31  Sebastien Pouliot  <sebastien@ximian.com>
6957
6958         * security-core-clr.c
6959         (mono_security_core_clr_ensure_reflection_access_field): Let 
6960         critical code access the field (just like we do for methods). Use
6961         check_field_access helper.
6962         (mono_security_core_clr_ensure_reflection_access_method): Use 
6963         check_field_access helper.
6964
6965 2009-03-31  Mark Probst  <mark.probst@gmail.com>
6966
6967         * sgen-gc.c: Remove data (callback) element from FinalizeEntry and
6968         call the run-finalize function directly.
6969
6970         * gc.c, gc-internal.h: Make run_finalize() non-static.
6971
6972 2009-03-31  Mark Probst  <mark.probst@gmail.com>
6973
6974         * sgen-gc.c: Use a separate struct for disappearing links.
6975
6976 2009-03-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
6977
6978         * socket-io.c: don't fail if the SocketOptionsFlag has Partial or
6979         * MaxIOVectorLength enabled, just ignore them.
6980         Fixes bug #349688.
6981
6982 2009-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
6983
6984         * metadata-verify.c: Fix eglib build.
6985
6986 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
6987
6988         * threads-types.h: Fix the win32 build.
6989
6990 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
6991
6992         * class.c: move coreclr inheritance/override checks to 
6993         security-core.clr.c
6994         * security-core.clr.c|h: add code from class.c with additional
6995         documentation. Fix override check when the method is not critical.
6996
6997 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
6998
6999         * debug-helpers.c (mono_method_desc_match): Make '*' match anything.
7000         (match_class): Ditto.
7001
7002 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
7003
7004         * metadata-verify.c: Rename bounds_check_offset to bounds_check_datadir.
7005
7006         * metadata-verify.c: Implement table layout row size calculation. Verify
7007         the total size of the tables.
7008
7009 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
7010
7011         * metadata-verify.c: Verify heap sizes and size to decode row counts. 
7012
7013 2009-03-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
7014
7015         * appdomain.c:
7016         * console-io.[ch]: added new mono_console_init() to make sure that
7017         file descriptors 0, 1 and 2 are opened.
7018         Bug #489019 fixed.
7019
7020 2009-03-27  Sebastien Pouliot  <sebastien@ximian.com> 
7021
7022         * appdomain.h: Export a new callback type and a new function to
7023         set this callback. This allow a mono host to provide it's own
7024         definition for "platform code".
7025         * metadata-internals.h: Add a core_clr_platform_code flag on 
7026         _MonoImage to (cache and) know if it is representing platform 
7027         code.
7028         * image.c (do_mono_image_open): Set core_clr_platform_code flag 
7029         on platform code images.
7030         * security-core-clr.c|h 
7031         (mono_security_set_core_clr_platform_callback): Allow the host
7032         to provide it's own platform check definition.
7033         (mono_security_core_clr_determine_platform_image): Detect if an 
7034         image is platform code (using the specified callback).
7035         (mono_security_core_clr_is_platform_image): Return cached value 
7036         for platform code.
7037
7038 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
7039
7040         * threads.c (mono_create_thread): New helper function to wrap CreateThread
7041         which has different parameter types for the 'tid' argument in windows and
7042         the io-layer.
7043
7044         * appdomain.c attach.c threads.c: Use the new helper.
7045
7046 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
7047
7048         * metadata-verify.c: Verify valid table bits.
7049
7050 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
7051
7052         * metadata-verify.c (verify_metadata_header): Store size in the size field.
7053
7054         * metadata-verify.c: Add initial table schema verification.
7055
7056 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
7057
7058         * icall.c (ves_icall_get_parameter_info): Add a 'member' argument, used to
7059         obtain the refclass argument needed by mono_param_get_objects (). Fixes
7060         #488383.
7061
7062         * reflection.c (mono_param_get_objects_internal): Add a 'refclass' argument.
7063
7064         * appdomain.c (MONO_CORLIB_VERSION): Bump this.
7065
7066 2009-03-26  Sebastien Pouliot  <sebastien@ximian.com>
7067
7068         * security-core-clr.c: Add/update documentation
7069
7070 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
7071
7072         * marshal.c (emit_marshal_object): Generate code to throw an exception
7073         instead of throwing it. Fixes #488670.
7074
7075 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com>
7076
7077         * appdomain.c: Bump MONO_CORLIB_VERSION to 73.
7078         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Add
7079         an extra 'throwOnBindFailure' parameter to the icall. Remove FIXME
7080         and add a call to mono_security_core_clr_ensure_delegate_creation
7081         to do the extra checks required by CoreCLR.
7082         * security-core-clr.c|h: Add function to check delegate creation,
7083         both in the binding and accessibility, under CoreCLR.
7084
7085 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com> 
7086
7087         * reflection.c (mono_reflection_create_dynamic_method): when 
7088         coreclr is enabled make sure that every resolved object are
7089         checked (e.g. field and method access).
7090         * security-core-clr.c|h: Add function to check objects resolved
7091         when a dynamic method is created.
7092
7093 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
7094
7095         * metadata-verify.c: Cache directory rva translations.
7096
7097         * metadata-verify.c: Add cli-header and streams verification.
7098
7099 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
7100
7101         * image.c (load_metadata_ptrs): We decode MonoImage::md_version_minor at
7102         the wrong offset (8 instead of 6).
7103
7104 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
7105
7106         * marshal.c (mono_delegate_to_ftnptr): For delegates wrapping pinvoke
7107         methods, return the native function address itself. Fixes
7108         #487758.
7109
7110 2009-03-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
7111
7112         * console-io.c: some of the values for control characters might not be
7113         present.
7114
7115 2009-03-21  Sebastien Pouliot  <sebastien@ximian.com>
7116
7117         * exception.c|h: Add helpers to create [Field|Method]AccessException
7118         * icall.c: Add required coreclr check calls for field reflection.
7119         Move the existing (method) check logic into security-core-clr.c
7120         * security-core-clr.c: Add functions to check if the access of a
7121         field or method is allowed when reflecting under coreclr. This is
7122         mostly done using a stack walk to find the "real" caller: i.e. the
7123         code that is calling the reflection
7124
7125 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
7126
7127         * gc-internal.h: Change location of gc_wrapper.h
7128
7129 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com> 
7130
7131         * class.c: Simplification to coreclr checks for overrides that
7132         makes it easier to set breakpoints.
7133
7134 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com>
7135
7136         * security-core-clr.c|h: (mono_security_core_clr_class_level, 
7137         mono_security_core_clr_method_level): Avoid potential 
7138         MonoCustomAttrInfo allocation for transparent assemblies (e.g. 
7139         user/application code) and make it easier to set breakpoints
7140
7141 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7142
7143         * metadata-verify.c: Reject cli header tables that mono don't handle.
7144
7145 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7146
7147         * pedump.c: Fix CLI header dumping.
7148
7149 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7150
7151         * metadata-verify.c: More CLI header verification.
7152
7153 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
7154
7155         * locales.c (get_current_locale_name): Use g_malloc instead of malloc.
7156
7157 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
7158
7159         * metadata-verify.c: Initial verification of the CLI header.
7160
7161 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
7162
7163         * metadata-verify.c (verify_resources_table): Fix verification of zero
7164         sized resource section and id entries count.
7165
7166 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
7167
7168         * icall.c: Handle user types in many Type icalls. Fixes #486303.
7169
7170 2009-03-17  Jb Evain  <jbevain@novell.com>
7171
7172         * profiler.c: call mono_gc_base_init from mono_profiler_load.
7173
7174 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
7175
7176         * sgen-gc.c (mono_gc_make_descr_for_object): Fix 64 bit support.
7177         (mono_gc_make_descr_for_array): Ditto.
7178
7179 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
7180
7181         * verify.c (mono_verifier_is_class_full_trust): Add support for
7182         CoreCLR security mode where trusted assemblies are defined as
7183         "platform code".
7184
7185 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7186
7187         * metadata-verify.c: Add minimal PECOFF resource verification.
7188
7189 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7190
7191         * metadata-verify.c: Be less restrictive with some coff fields.
7192
7193 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7194
7195         * verify.c (init_stack_with_value_at_exception_boundary): Init generic
7196         params as boxed values on stack. Fixes #485706.
7197
7198 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
7199
7200         * console-io.c: the termios values may vary in different flavors of unix.
7201
7202 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
7203
7204         * console-io.[ch]: return the entire set of control characters when
7205         initializing the terminal.
7206         * appdomain.c: bump corlib version.
7207
7208 Mon Mar 16 11:11:26 CET 2009 Paolo Molaro <lupus@ximian.com>
7209
7210         * mono-perfcounters.c: added support for in-process custom
7211         performance counters.
7212
7213 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7214
7215         * metadata-verify.c: Small cleanup and add comment for IAT directory entry. 
7216
7217 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7218
7219         * metadata-verify.c: Verify the data pointed by the import table. 
7220
7221 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7222
7223         * metadata-verify.c (load_data_directories): Store data
7224         directory contents.
7225
7226         * metadata-verify.c: Verify the import table. 
7227
7228 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7229
7230         * metadata-verify.c: Verify data directories.
7231
7232 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7233
7234         * metadata-verify.c: Check section header flags.
7235
7236 2009-03-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
7237
7238         * appdomain.c: if the assembly name is a shadow-copied file, return
7239         TRUE from mono_is_shadow_copy_enabled but don't actually do anything
7240         in mono_make_shadow_copy.
7241         * icall.c: if the assembly name is a shadow-copied file, replace it
7242         with the original assembly path.
7243
7244         Bug #484244 fixed. NUnit tests for corlib can be run without
7245         --noshadow now.
7246
7247 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
7248
7249         * sgen-gc.c (add_to_global_remset): Fix the handling of root global remset
7250         entries when the table is reallocated.
7251
7252         * icall.c: Allocate the memory used by the mono_ptr_array macros using
7253         mono_gc_alloc_fixed () since it contains GC refs.
7254
7255 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
7256
7257         * reflection.c (ensure_complete_type): New helper function to call
7258         type resolve handlers for unfinished dynamic types.
7259         (resolve_object): Call it for MonoClassFields. Fixes #483852.
7260
7261 2009-03-09  Zoltan Varga  <vargaz@gmail.com>
7262
7263         * reflection.c (mono_custom_attrs_has_attr): Handle interfaces. Fixes
7264         #483247.
7265
7266 2009-03-08 Rodrigo Kumpera  <rkumpera@novell.com>
7267
7268         * appdomain.c (get_shadow_assembly_location): Fix memleak.
7269
7270 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
7271
7272         * domain-internals.h (struct _MonoDomain): Add new hash tables mapping
7273         between GCHandles of type WeakTrackResurrection and the objects they
7274         point to.
7275
7276         * gc.c: Partly implement the sematics of GCHandles of type 
7277         WeakTrackResurrection: these handles should only be cleared after the
7278         finalizer of the object they are pointing to has ran.
7279
7280 2009-03-06  Mark Probst  <mark.probst@gmail.com>
7281
7282         * icall.c: Partially revert r126631 because using the jump
7283         trampolines for generic shared methods makes it superfluous.
7284
7285 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
7286
7287         * threads.c (handle_store): Create the 'threads' hash table with the proper
7288         MONO_HASH_VALUE_GC type.
7289
7290 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
7291
7292         * domain-internals.h (struct _MonoDomain): Move 'typeof_void' before
7293         FIRST_GC_TRACKED.
7294
7295         * domain.c (mono_domain_create): Register the fields between FIRST_GC_TRACKED
7296         and LAST_GC_TRACKED as a GC root.
7297
7298         * gc-internal.h: Fix the comment of mono_gc_alloc_fixed.
7299
7300         * object.c (mono_class_create_runtime_vtable): Create a GC descriptor for
7301         the static data even if it consists of 1 reference.
7302
7303         * boehm-gc.c (mono_gc_alloc_fixed): Allocate using GC_MALLOC_EXPLICITLY_TYPED
7304         if there is a GC descriptor.
7305
7306         * reflection.c (ALLOC_REFENTRY): Allocate ReflectedEntry-es using malloc
7307         instead of through the GC since they contain no object references.
7308
7309 2009-03-05  Mark Probst  <mark.probst@gmail.com>
7310
7311         * generic-sharing.c (instantiate_other_info): Always return a jump
7312         trampoline for method code.
7313
7314 2009-03-05  Marek Habersack  <mhabersack@novell.com>
7315
7316         * culture-info-tables.h: generated to include the en-tt culture.
7317
7318 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
7319
7320         * domain-internals.h (MonoDomain): Add two fields to cache invoke wrappers to
7321         capture the thread context.
7322
7323         * object.c (mono_async_result_new): Cache the invoke wrappers to
7324         ExecutionContext::Capture.
7325
7326 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
7327
7328         * marshal.h: Add a prototype for what mono_compile_method returns
7329         for invoke wrappers.
7330
7331         * gc.c: Use the new prototype declaration.
7332
7333 2009-03-04  Geoff Norton  <gnorton@novell.com>
7334
7335         * boehm-gc.c: Add some MONO_LOG tracing for the GC
7336         * gc-internal.h:
7337         * mono-gc.h: Expose mono_gc_invoke_finalizers in the embedding api.
7338
7339 2009-03-04  Martin Baulig  <martin@ximian.com>
7340
7341         * mono-debug.h
7342         (mono_debugger_runtime_invoke): Removed.
7343
7344         * mono-debug-debugger.c
7345         (mono_runtime_invoke): Moved into ../mini/debug-mini.c.
7346
7347 2009-03-02  Martin Baulig  <martin@ximian.com>
7348
7349         * mono-debug.h
7350         (mono_debugger_unhandled_exception): Removed.
7351         (mono_debugger_handle_exception): Removed.
7352         (mono_debugger_throw_exception): Removed.
7353
7354         * mono-debug.c
7355         (mono_debug_debugger_version): Bump to 5.
7356
7357         * mono-debug-debugger.c: Moved the exception handling code to
7358         ../mini/debug-mini.c
7359
7360 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
7361
7362         * domain-internals.h (struct _MonoDomain): Add a separate lock for the
7363         finalize_objects_hash.
7364
7365         * gc.c: Use the separate lock to access the finalize_objects_hash field.
7366         
7367         * domain-internals.h (struct _MonoDomain): Add finalize_runtime_invoke
7368         field.
7369
7370         * metadata-internals.h (struct _MonoImage): Add runtime_invoke_vcall_cache
7371         cache.
7372
7373         * image.c (mono_image_close): Free it.
7374         
7375         * marshal.c (mono_marshal_get_runtime_invoke): Add a 'virtual' argument
7376         allowing a creation of a wrapper which invokes its method using a CALLVIRT
7377         on the this argument.
7378
7379         * gc.c (run_finalize): Optimize the calling of the finalizers.
7380
7381 2009-03-03  Martin Baulig  <martin@ximian.com>
7382
7383         * mono-debug.h (MONO_DEBUGGER_MAJOR_VERSION): Bump to 81 because
7384         of the `MonoGenericInst' changes.
7385
7386 2009-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7387
7388         * icall.c (ves_icall_MonoType_GetGenericArguments): Use
7389         mono_array_class_get_cached to reduce locking contention. Extract
7390         a domain var.
7391
7392         * icall.c (ves_icall_Type_GetFields_internal): Avoid allocating
7393         intermediary managed arrays. Use caching version of mono_array_new
7394         to allocate the result array.
7395
7396         * icall.c (ves_icall_Type_GetEvents_internal): Same.    
7397
7398         * icall.c (ves_icall_Type_GetNestedTypes): Same.        
7399
7400         * locales.c (create_names_array_idx):  Use mono_array_new_cached
7401         to reduce locking contention.
7402
7403 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
7404                 
7405         * object.c (mono_method_add_generic_virtual_invocation): Put back the
7406         thunk builder code for the non-interface case.
7407
7408 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
7409
7410         * object.c (get_generic_virtual_entries): New helper function to collect
7411         the virtual generic method instances which need to be added to an IMT
7412         thunk.
7413         (mono_method_add_generic_virtual_invocation): Add a 'vtable' argument.
7414         Instead of creating a new IMT thunk, reset the vtable slot to the
7415         trampoline, the thunk will be created the next time the trampoline is called.
7416         (build_imt_slots): Add support for virtual generic methods in interfaces by
7417         adding to the IMT thunk all the methods registered using 
7418         mono_method_add_generic_virtual_invocation ().
7419
7420         * object-internals.h (_MonoImtBuilderEntry): Add a 'has_target_code' field.
7421         (struct _MonoIMTCheckItem): Ditto.
7422
7423         * object.c (mono_method_add_generic_virtual_invocation): Take a
7424         MonoMethod argument instead of a MonoGenericInst. Fix the construction of
7425         the IMT thunk to include all items.
7426         
7427         * object.c (mono_class_create_runtime_vtable): Add a missing
7428         mono_loader_unlock ().
7429
7430 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7431
7432         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7433
7434         * object-internals.h (MonoReflectionEvent): Add cached_add_event.
7435
7436 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7437
7438         * object-internals.h: Rename _MonoReflectionEvent to
7439         MonoReflectionMonoEvent so it reflects the right managed type.
7440         Add a MonoReflectionEvent that correctly represents System.EventInfo.
7441
7442         * icall.c:
7443         * reflection.c: Adjust code to use the new MonoReflectionMonoEvent
7444         type.
7445
7446 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7447
7448         * icall.c (ves_icall_Type_GetMethodsByName): Avoid allocating
7449         intermediary managed arrays. Use caching version of mono_array_new
7450         to allocate the result array.
7451
7452 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7453
7454         * reflection.c: Use cached version of mono_array_new alongside
7455         the mono_reflection_get_custom_attrs_by_type call path.
7456
7457 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7458
7459         * icall.c (ves_icall_Type_GetInterfaces): Avoid allocating
7460         intermediary managed arrays. Use caching version of mono_array_new
7461         to allocate the result array.
7462
7463         * icall.c (ves_icall_Type_GetConstructors_internal): Same.
7464
7465 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7466
7467         * icall.c: Add small implementation of a growable stack bound array.
7468
7469         * icall.c (ves_icall_System_Enum_get_hashcode): Fix warning.
7470
7471         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid allocating
7472         intermediary managed arrays. Use caching version of mono_array_new
7473         to allocate the result array.
7474
7475 2009-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
7476
7477         * icall.c: New icall ves_icall_System_Enum_compare_value_to that
7478         helps Enum::CompareTo to be implemented without reboxing all enums
7479         to their underlying type.
7480 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
7481
7482         * domain.c (SET_APPDOMAIN): Avoid calling TlsSetValue () on some platforms,
7483         since it acquires a global lock leading to scalability problems.
7484
7485         * profiler.c: Make the stat profiler work with multiple appdomains, this
7486         currently only works when no appdomains are unloaded.
7487
7488 2009-02-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
7489
7490         * appdomain.c: make the check to avoid copying when the assembly is
7491         already shadow copied actually work.
7492
7493 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
7494
7495         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7496
7497         * object-internals.h (struct _MonoReflectionGenericClass): Sync with
7498         changes to the managed side.
7499
7500 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
7501
7502         * metadata-internals.h (struct _MonoImage): Add a new cache for szarray
7503         classes + a separate lock for it, as it is used frequently at runtime, not
7504         just during metadata loading/JIT compilation.
7505
7506         * class.c (mono_bounded_array_class_get): Use the separate cache + lock
7507         for szarrays.
7508         
7509         * object-internals.h (mono_class_from_name_cached): New macro to cache
7510         the results of the lookup locally without having to declare a static
7511         variable to hold it.
7512         (mono_class_get_field_from_name_cached): Ditto.
7513         (mono_array_class_get_cached): Ditto.
7514
7515         * threadpool.c threads.c locales.c icall.c reflection.c socket-io.c: Use
7516         the new macros.
7517         
7518         * object.c (mono_get_delegate_invoke): Call setup_methods () to avoid the
7519         slower search in metadata.
7520
7521         * pedump.c: Fix a warning.
7522
7523 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
7524
7525         * reflection.c (encode_locals): Add checks for user types.
7526         (method_encode_clauses): Ditto.
7527         (method_encode_code): Ditto.
7528         (mono_image_create_token): Ditto.
7529
7530         * object-internals.h: Change the type of more fields from MonoReflectionType*
7531         to MonoObject*.
7532
7533 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
7534
7535         * threads.c (mono_thread_suspend_all_other_threads): Handle the case when
7536         the a thread does not suspend within 100ms.
7537
7538         * monitor.c (mono_monitor_try_enter_internal): Handle SuspendRequested
7539         in addition to StopRequested as well.
7540
7541         * mono-debug.c: Call _mono_debug_get_image () while holding the debug lock.
7542
7543         * debug-mono-symfile.c (mono_debug_symfile_lookup_method): Actually
7544         search the method_hash before inserting a new entry, to avoid crashes when
7545         the same method is inserted multiple times, causing the old 
7546         MonoDebugMethodInfo structure to be freed by the value dtor function.
7547
7548 2009-02-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
7549
7550         * socket-io.c: support SO_MAXCONN, SO_USELOOPBACK and
7551         SO_EXLUSIVEADDRUSE where available.
7552
7553 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
7554
7555         * marshal.c (mono_marshal_get_runtime_invoke): Fix _another_ bug sharing
7556         runtime invoke wrappers, this time it is string ctor wrappers, which
7557         pass a dummy string as 'this' instead of their obj argument. Fixes
7558         #478473.
7559
7560 2009-02-21  Jb Evain  <jbevain@novell.com>
7561
7562         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
7563         only get create_culture once.
7564
7565 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
7566
7567         * reflection.c (mono_reflection_setup_internal_class): Move the user type
7568         check before the locking.
7569         
7570         * reflection.c (mono_reflection_setup_internal_class): Check for user types.
7571         (mono_reflection_create_runtime_class): Ditto.
7572         (mono_reflection_sighelper_get_signature_local): Ditto.
7573         (mono_reflection_sighelper_get_signature_field): Ditto.
7574
7575         * object-internals.h (CHECK_MONOTYPE): New macro to check that a Type object
7576         is a System.MonoType object or similar.
7577         (monotype_cast): New helper function to cast a MonoObject to a 
7578         MonoReflectionType object.
7579
7580         * object-internals.h: Change MonoReflectionType* members in structures to
7581         MonoObject* members to force the usage of the monotype_cast () function.
7582
7583         * reflection.c icall.c: Use monotype_cast () for accessing Type members of
7584         structures/arrays. This causes us to assert instead of crashing when 
7585         instances of user defined subclasses of System.Type are encountered.
7586
7587 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
7588
7589         * cil-coff.h:
7590         * icall-def.h:
7591         * icall.c: add new GetUnmanagedResourcePtr that returns a pointer to a
7592         win32 resource loaded from a PE file.
7593
7594         * image.c: fix mono_image_lookup_resource.
7595
7596 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
7597
7598         * icall-def.h:
7599         * threads-types.h:
7600         * threads.c: added internal call for WaitHandle.SignalAndWait.
7601
7602 2009-02-19  Bill Holmes  <billholmes54@gmail.com>
7603
7604         * cominterop.c : Adding cominterop_type_from_handle and 
7605           registering it as an icall.  Replacing all references
7606           to type_from_handle.
7607
7608         Code is contributed under MIT/X11 license.
7609
7610 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
7611
7612         * Makefile.am: Add lock-tracer.h and lock-trace.c.
7613
7614         * appdomain.c: Call the tracer init function.
7615
7616         * domain-internals.h: Enable the tracer for the domain locks.
7617
7618         * image.c: Enable the tracer for image locks.
7619
7620         * loader.c: Enable the trace for the loader lock.
7621
7622         * lock-tracer.h:
7623         * lock-tracer.c: Initial implementation of the lock trace utility.
7624         The tracer requires a compile time define to be enabled and a env var
7625         to be enabled at runtime.
7626
7627 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
7628
7629         * domain.c (mono_domain_code_foreach): Improve documentation.
7630
7631 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
7632
7633         * appdomain.c:
7634         * generic-sharing.c:
7635         * object.c:
7636         * reflection.c:  Adjust locking order to the new semantics where the loader lock
7637         comes first.
7638
7639 2009-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
7640
7641         * domain.c: Add mono_domain_code_* functions that perform locking
7642         around the domain codeman.
7643
7644         * domain-internals.h: Export those functions.
7645
7646         * object.c: Use new functions instead of acquiring the domain lock.
7647
7648 2009-02-19  Zoltan Varga  <vargaz@gmail.com>
7649
7650         * marshal.c (mono_ftnptr_to_delegate): Convert a NULL ftnptr to a null
7651         delegate. Fixes #477396.
7652
7653 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
7654
7655         * reflection.c (create_custom_attr): Get rid of alloca.
7656
7657 2009-02-18  Bill Holmes  <billholmes54@gmail.com>
7658
7659         * cominterop.c (cominterop_get_managed_wrapper_adjusted) :
7660           Adding exception handling for all CCW calls.
7661
7662         Code is contributed under MIT/X11 license.
7663
7664 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
7665
7666         * reflection.c (mono_reflection_init): Remove the unused reflection mutex.
7667
7668         * marshal.c (emit_marshal_boolean): Add null checks to the new 
7669         native->managed marshalling code. Fixes #476247.
7670
7671 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
7672
7673         * class.c (mono_class_get_vtable_entry): Move the addition of
7674         static rgctx invoke wrappers for vtable methods here, this simplifies
7675         a lot of code and causes fewer rgctx wrappers to be created.
7676
7677         * marshal.c (mono_marshal_get_static_rgctx_invoke): Change the
7678         name of the statistics to begin with an uppercase.
7679
7680 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
7681
7682         * reflection.c: Revert previous change as it breaks the build.
7683         
7684 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
7685
7686         * verify.c: Properly handle SZARRAY element type.
7687
7688         Fixes #474271.
7689
7690 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
7691
7692         * reflection.c (mono_image_create_method_token): Correctly encode
7693         MethodDef MemberRefParent token.
7694
7695         Fixes #472845.
7696
7697 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
7698
7699         * image.c (mono_image_close): Delete the critical section before
7700         freeing the memory holding it.
7701
7702 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7703
7704         * verify.c (mono_method_verify): rethrow opcode doesn not fall through.
7705         Fixes #476257.
7706
7707 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7708
7709         * pedump.c (main): Call mono_marshal_init so pedump
7710         doesn't crash.
7711
7712 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7713
7714         * loader.c (method_from_memberref): Properly fix #474271 and
7715         don't break the runtime bad.
7716
7717 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
7718
7719         * domain.c (mono_domain_alloc): Add locking so the caller doesn't have to.
7720         (mono_domain_alloc0): Ditto.
7721
7722 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7723
7724         * loader.c (method_from_memberref): Don't abort if the array
7725         method is not found. A regular loader failure is more informative
7726         and correct.
7727
7728         Fixes #474271.
7729
7730 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7731
7732         *loader.c: Guard MonoImage::method_cache/methodref_cache
7733         using the image lock instead of the loader lock.
7734
7735         * metadata.h: Add comments about which fields are protected by
7736         the image lock.
7737
7738 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
7739
7740         * appdomain.c (mono_set_private_bin_path_from_config): Fix a warning.
7741
7742         * generic-sharing.c (mono_method_construct_object_context): Remove the
7743         wrapper_type == NONE assert, it is not needed.
7744
7745 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
7746
7747         * reflection.c (clear_cached_object): New helper function.
7748         (mono_method_clear_object): New function to clear the cached reflection
7749         objects for a dynamic method.
7750
7751         * object.c (mono_runtime_free_method): Call mono_method_clear_object ().
7752         Partly fixes # 463323.
7753         
7754 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
7755
7756         * class.c:
7757         * loader.c:
7758         * reflection.c: Remove all explicit uses of MonoImage::property_hash.
7759
7760 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
7761
7762         * image.c: Add mono_image_property_(lookup,insert,remove) functions that
7763         take the image lock instead of the loader lock.
7764
7765         * metadata-internals.h: Export new functions.
7766
7767 2009-02-12  Miguel de Icaza  <miguel@novell.com>
7768
7769         * domain.c (app_config_parse): Remove another use of stat that is
7770         not necessary as g_file_get_contents already does the presence
7771         check. 
7772
7773 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
7774
7775         * cominterop.c icall-def.h: Fix the DISABLE_COM build.
7776
7777         * marshal.c: Move the bstr handling code to cominterop.c.
7778
7779         * marshal.c: Remove some COM interop code missed previously.
7780
7781 2009-02-12  Miguel de Icaza  <miguel@novell.com>
7782
7783         More Paolo patches from the Wii port:
7784         
7785         * security.c: Remove ves_icall_System_Environment_get_UserName
7786         from here.
7787
7788         * icall.c: And put ves_icall_System_Environment_get_UserName
7789         here. 
7790
7791         * appdomain.c (mono_set_private_bin_path_from_config): Remove
7792         redundant call to stat that was only used to test for the file
7793         existence.   Patch from Paolo.
7794
7795         * gc.c (run_finalize): If COM is disabled, do not link in
7796         mono_marshal_free_ccw.
7797
7798         * generic-sharing.c: Use alloca.h here as well.
7799
7800 2009-02-13 Rodrigo Kumpera  <rkumpera@novell.com>
7801
7802         * reflection.c (mono_reflection_lookup_dynamic_token): Do the locking properly.
7803
7804 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
7805
7806         * cominterop.c cominterop.h: New files.
7807
7808         * marshal.c: Move the COM interop related code to cominterop.c. Make a few
7809         function/typedefs which are needed by cominterop.c global.
7810
7811 2009-02-12  Mark Probst  <mark.probst@gmail.com>
7812
7813         * generic-sharing.c: Don't take the loader lock to guard image
7814         mempool allocs.
7815
7816 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
7817
7818         * reflection.c (mono_reflection_lookup_dynamic_token): This function might be
7819         called without the loader lock which is required to guard MonoImage:tokens.
7820
7821 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
7822
7823         * class.c:
7824         * metadata.c:
7825         * method-builder.c:
7826         * marshal.c:
7827         * reflection.c: Don't take the loader lock to alloc memory from the image mempool.
7828
7829 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
7830
7831         * metadata.c: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
7832         Rework the code to use regular mono_image_alloc/0.
7833
7834         * loader.c: Rework the code to use regular mono_image_alloc/0.
7835
7836         * metadata-internals.h: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
7837
7838 2009-02-12  Bill Holmes  <billholmes54@gmail.com>
7839
7840         * object-internals.h : Fixing a typo in the 
7841           MonoReflectionComVisibleAttribute struct.
7842
7843         * marshal.c (cominterop_com_visible): Check the implemented 
7844           interfaces for ComImport.
7845
7846         * marshal.c (cominterop_get_native_wrapper_adjusted): For COM calls 
7847           assume that bools should be treated as VARIANTBOOLs.
7848
7849         * marshal.c (emit_marshal_boolean): Adding cases for 
7850           MARSHAL_ACTION_MANAGED_CONV_IN and MARSHAL_ACTION_MANAGED_CONV_OUT.
7851
7852         * marshal.c (mono_marshal_emit_managed_wrapper): Adding calls to 
7853           emit_marshal MARSHAL_ACTION_MANAGED_CONV_IN and OUT for bools.
7854
7855         * marshal.c (cominterop_get_ccw): For COM calls assume that bools
7856           should be treated as VARIANTBOOLs.    
7857
7858         Code is contributed under MIT/X11 license.
7859
7860 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
7861
7862         * image.c (mono_image_alloc, mono_image_alloc0, mono_image_strdup): Guard mempool
7863         allocation with the image lock.
7864
7865 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
7866
7867         This patch is the last of a series to remove explicit reference of MonoImage::mempool
7868         and use mono_image_alloc set of functions instead. This time we finish with reflection.c
7869
7870         * object.c: Add mono_string_to_utf8_image.
7871
7872         * object-internals.h: Export mono_string_to_utf8_image.
7873
7874         * reflection.c: Rework all explicit references to the the image mempool to go thought
7875         the mono_image_alloc set of functions.
7876
7877 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
7878
7879         This patch is the third of a series to remove explicit reference of MonoImage::mempool
7880         and use mono_image_alloc set of functions instead. This time we finish with marshal.c
7881         and generics-sharing.c.
7882
7883         * generics-sharing.c (set_other_info_templates): Take a MonoImage instead of a MonoMemPool
7884         as first argument. Note that this function remains broken as it doesn't perform locking around the
7885         mempool allocation.
7886
7887         * generics-sharing.c (rgctx_template_set_other_slot): Pass the image and not the mempool.
7888
7889         * image.c: Add g_slist_append_image.
7890
7891         * metadata.c (mono_metadata_field_info_with_mempool): Remove the mempool argument and use
7892         the supplied image for allocation. Move code into mono_metadata_field_info_full.
7893
7894         * metadata.c (mono_metadata_parse_marshal_spec_full): Take a MonoImage instead of a MonoMemPool.
7895         Fix all related code to do the same.
7896
7897         * marshal.c (mono_marshal_load_type_info): Pass the image instead of the mempool.
7898
7899         * metadata-internals.h: Fix the signatures.
7900
7901 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
7902
7903         This patch is the second of a series to remove explicit reference of MonoImage::mempool
7904         and use mono_image_alloc set of functions instead. This time we rework mono_metadata_type_dup
7905         and similar to work using MonoImage.
7906
7907         * class.c (mono_mempool_dup): Rename to mono_image_memdup and take a MonoImage instead of a
7908         MonoMemPool.
7909
7910         * class.c (mono_dup_array_type): Take a MonoImage instead of a MonoMemPool as first argument.
7911
7912         * class.c (mono_metadata_signature_deep_dup): Same.
7913
7914         * class.c (inflate_generic_type): Same.
7915
7916         * class.c (mono_class_inflate_generic_type_with_mempool): Same.
7917
7918         * metadata.c (mono_metadata_signature_dup_full): Same.
7919
7920         * metadata.c: Add mono_metadata_signature_dup_mempool and extract common functionality from 
7921         mono_metadata_signature_dup_full.
7922
7923         * metadata.c (mono_metadata_type_dup): Same.
7924
7925         * marshal.c: Pass the image to calls to mono_metadata_type_dup.
7926
7927         * reflection.c: Same.
7928
7929         * generic-sharing.c: Pass the image to calls to mono_class_inflate_generic_type_with_mempool.
7930
7931         * metadata-internals.h: Fix the signatures.
7932
7933         * class-internals.h: Same.
7934
7935 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
7936
7937         This patch is the first of a series to remove explicit reference of MonoImage::mempool
7938         and use mono_image_alloc set of functions instead. 
7939
7940         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy):
7941         Rename to mono_class_inflate_generic_type_no_copy and take a MonoImage instead
7942         of a MonoMemPool.
7943
7944         * class.c (mono_class_setup_fields): Adapt to mono_class_inflate_generic_type_no_copy.
7945
7946         * class.c (g_list_prepend_mempool): Removed.
7947
7948         * class.c (mono_class_get_nested_types): Use g_list_prepend_image instead of g_list_prepend_mempool.
7949
7950         * image.c: Add g_list_prepend_image.
7951
7952         * metadata-internals.h (struct MonoImage): Fix comment. Export g_list_prepend_image as internal.
7953
7954         * reflection.c (mono_reflection_create_runtime_class): Use g_list_prepend_image instead of g_list_prepend_mempool.
7955
7956
7957 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
7958
7959         * metadata-internals.h (struct MonoImage): Add lock field. Export mono_image_lock and
7960         mono_image_unlock.
7961
7962         * image.c (mono_image_init): Init the lock field.
7963  
7964         * image.c (mono_image_init): Cleanup the lock field.
7965
7966         * image.c: Add mono_image_(un)lock functions.
7967
7968 2009-02-11  Mark Probst  <mark.probst@gmail.com>
7969
7970         * class.c, class-internals.h: mono_method_get_context_general()
7971         combines the functionality of mono_method_get_context() and
7972         mini_method_get_context().
7973
7974         * generic-sharing.c, domain-internals.h:
7975         mono_method_construct_object_context() and
7976         mono_domain_lookup_shared_generic() moved from mini.
7977
7978         * icall.c (ves_icall_InternalInvoke): Handle the case where the
7979         method doesn't have the correct instantiation because it's shared
7980         generic code.  Fixes #473999.
7981
7982 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
7983
7984         * loader.c (mono_method_get_wrapper_data): Handle inflated methods as well.
7985
7986         * loader.c (mono_loader_lock): Add a comment pointing to the locking document.
7987         
7988 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
7989
7990         * metadata.c: Make mono_image_alloc_lock and mono_image_alloc0_lock non static.
7991
7992         * metadata-internals.h: Export mono_image_alloc_lock and mono_image_alloc0_lock.
7993
7994         * loader.c (mono_get_method_full): Drop the loader lock while constructing the method
7995         and recheck the cache for dups after it.
7996
7997         * loader.c (mono_get_method_from_token): Use _lock version of mono_image_alloc0.
7998
7999         Fixes one of the deadlocks found in #473150.
8000
8001 2009-02-11  Bill Holmes  <billholmes54@gmail.com>
8002
8003         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
8004           For Win32, add additional break conditions for accept.
8005
8006         Code is contributed under MIT/X11 license.
8007
8008 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
8009
8010         * marshal.c (mono_marshal_get_native_func_wrapper): Use get_cache to
8011         lazily initialize the native wrapper cache.
8012         (mono_marshal_get_native_wrapper): Put aot-ed native wrappers into a separate
8013         cache, since they are different from the normal wrappers.
8014
8015         * image.c (mono_image_init): Initialize native_wrapper_cache lazily as well.
8016
8017         * metadata-internals.h (struct _MonoImage): Add a new wrapper for
8018         AOT compiled native wrappers.
8019
8020 2009-02-09  Geoff Norton  <gnorton@novell.com>
8021
8022         * appdomain.h:
8023         * security-core-clr.c: Allow enabling core-clr from the embedding
8024         API.
8025
8026 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8027
8028         * socket-io.c: when requesting all the local ips, if there are no
8029         interfaces up and running, MS returns 127.0.0.1.
8030
8031 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8032
8033         * mono-perfcounters-def.h: processor time is an inverse time.
8034         Fixes bug #468625.
8035
8036 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8037
8038         * socket-io.c: an empty host name returns the list of local IPs.
8039         Fixes bug #386637 part 1/2.
8040
8041 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
8042
8043         * verify.c (mono_class_interface_implements_interface): Call
8044         mono_class_setup_interfaces ().
8045         (merge_stacks): Ditto.
8046
8047 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
8048
8049         * class.c (mono_class_setup_interfaces): New function to lazily initalize
8050         klass->interfaces.
8051         (mono_generic_class_get_class): Don't initalize klass->interfaces.
8052         (mono_generic_class_get_class): Ditto.
8053
8054 2009-02-06  U-QUACK\miguel  <miguel@quack>
8055
8056         * icall-defs.h: Include also the Encrypt/Decrypt string methods as
8057         they live in security.c
8058
8059         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Integrated
8060         another bit from Paolo's code.
8061
8062 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
8063
8064         * object.c (build_imt_slots): Add a small optimization to avoid inflating
8065         methods which will be discarded by add_imt_builder_entry ().
8066
8067         * marshal.c (get_runtime_invoke_type): Avoid sharing enum types since they
8068         need to be boxed.
8069
8070         * loader.c: Add a statistics for the size of the memberref signature cache.
8071         
8072         * loader.c (find_cached_memberref_sig): New helper function.
8073         (cache_memberref_sig): Ditto.
8074
8075         * loader.c: Cache the result of parsing memberref signatures, since otherwise
8076         they will be parsed again for every generic instantiation, leading to unbounded
8077         memory growth.
8078
8079 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8080
8081         * loader.c (mono_get_method_from_token): Avoid creating class for the generic
8082         parameters of generic methods.
8083
8084         * class.c (mono_class_inflate_generic_method_full): Set is_mb_open again
8085         after the original method is copied to the inflated method.
8086         (mono_class_get_vtable_entry): Handle rgctx invoke wrappers more efficiently.
8087
8088         * class-internals.h (struct _MonoMethodInflated): Move the is_mb_open
8089         field to MonoMethod since it only consumes 1 bit there, and 4/8 bytes here.
8090
8091         * class.c metadata.c: Update after the changes above.
8092
8093 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
8094
8095         * metadata-verify.c: Simplified error handling and added
8096         section table validation.
8097
8098 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8099
8100         * class-internals.h (MonoClassExt): New structure containing rarely used
8101         fields of MonoClass.
8102         (struct _MonoClass): Move rarely used fields to MonoClassExt, accessed
8103         through a new 'ext' field.
8104
8105         * class.c (mono_class_alloc_ext): New helper function to allocate 
8106         class->ext.
8107
8108         * class.c metadata.c reflection.c: Update after MonoClass structure changes.
8109
8110 2009-02-05  Mark Probst  <mark.probst@gmail.com>
8111
8112         * object.c (mono_object_get_virtual_method): Properly inflate
8113         generic methods.  Fixes #472692.
8114
8115 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
8116
8117         * class.c (mono_class_create_from_typedef): The CLR supports SystemF
8118         recursive types such as List<T>:Cons<T,List<T>> so when doing the lookup
8119         for the parent type, the created type must be ready to be used on a generic
8120         instantiation.
8121         We fill this_arg/byval_arg if the parent is a generic instance to make sure
8122         we won't have duplicated entries in generic_inst_cache.
8123
8124         Fixes #469553.
8125
8126 2009-02-05  Miguel De Icaza  <miguel@novell.com>
8127
8128         * threadpool.c (socket_io_add_poll): Remove the BSD6 define and
8129         replace with plain BSD per the comments on the bug MONO77637.
8130
8131 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8132
8133         * class.c (mono_class_get_generic_class): New accessor function.
8134         (mono_class_get_generic_container): Ditto.
8135
8136         * class-internals.h (struct _MonoClass): Add 'is_generic' and 'is_inflated'
8137         fields, similar to the ones in MonoMethod.
8138
8139         * class.c (mono_generic_class_get_class): Set klass->is_inflated.
8140         (mono_class_create_from_typedef): Set klass->is_generic if needed.
8141
8142         * reflection.c (mono_reflection_create_generic_class): Set klass->is_generic.
8143         
8144         * class-internals.h (struct _MonoClass): Remove enum_basetype, it contains
8145         the same information as element_class->byval_arg.
8146
8147         * class.c reflection.c: Remove references to class->byval_arg.
8148
8149         * class.c marshal.c: Use mono_class_enum_basetype () instead of accessing 
8150         klass->enum_basetype directly.
8151
8152         * verify.c metadata.c object.c icall.c reflection.c: Use 
8153         mono_class_enum_basetype () instead of accessing klass->enum_basetype 
8154         directly.
8155
8156 2009-02-04  Miguel de Icaza  <miguel@novell.com>
8157
8158         * icall-def.h: Remove internal calls for sockets when
8159         DISABLE_SOCKET is defined, file system writing features when the
8160         OS only support reading and not writing data and Policy support if
8161         the Policy is disabled.
8162         
8163         * image.c (do_mono_image_open): Apply Paolo's patches for using
8164         mono_file_map_ APIs here.
8165
8166         * assembly.c: Add support for platforms to avoid prefix
8167         auto-detection. 
8168
8169 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
8170
8171         * generic-sharing.c (mono_method_fill_runtime_generic_context): Fix a
8172         warning.
8173
8174         * class.c (mono_class_inflate_generic_class): New helper function.
8175
8176         * class.c: Use mono_class_inflate_generic_class in a few places. Add
8177         statistics for inflated methods/classes.
8178
8179         * loader.c (inflate_generic_header): Use mono_class_inflate_generic_class.
8180
8181         * icall.c (ves_icall_Type_GetMethodsByName): Optimize the case when
8182         the call is made from Delegate.CreateDelegate () for the invoke method of
8183         a delegate.
8184
8185         * loader.c: Add a statistics for the memory occupied by inflated signatures.
8186
8187         * metadata.c (mono_metadata_signature_size): New helper function.
8188
8189         * class.c (mono_class_get_method_from_name_flags): Add an optimization for
8190         generic instances.
8191
8192         * metadata.c (inflated_method_in_image): Avoid calling 
8193         mono_method_signature () if the method does not already have a signature.
8194
8195 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8196
8197         * verify.c (is_compatible_boxed_valuetype): When checking if the boxed 
8198         valuetype is compatible with target type, check by inheritance as a
8199         VT is not really compatible with System.ValueType, for example.
8200
8201         * verify.c (do_invoke_method): Improve error message.
8202
8203         * verify.c (do_box_value): If boxing a nullable, use the type argument
8204         on stack instead.
8205
8206         * verify.c (do_newobj): Improve error message.  
8207
8208         Fixes #469549.
8209
8210 2009-02-03  Miguel de Icaza  <miguel@novell.com>
8211
8212         * appdomain.c: Add support for DISABLE_SOCKETS and DISABLE_SHADOW_COPY
8213
8214 2009-02-03  Mark Probst  <mark.probst@gmail.com>
8215
8216         * generic-sharing.c: Don't hold domain lock when calling
8217         instantiate_other_info().  Fixes #471958.
8218
8219         * domain-internals.h, loader.c: Describe locking policy of domain
8220         lock vs loader lock.
8221
8222 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8223
8224         * verify.c (mono_delegate_signature_equal): Make it possible to check
8225         first-arg-bound delegates to static method.
8226
8227         * verify.c (verify_delegate_compatibility): Correctly verify delegates to
8228         static methods with the first arg bound.
8229
8230         Fixes #469529.
8231
8232 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8233
8234         * verify.c: Added stack_slot_full_name to provide decent and more meanfull
8235         errors.
8236
8237         * verify.c (is_compatible_boxed_valuetype): Be less restrictive when not
8238         under strict mode. Any type, when boxed can be seen as a reference type.
8239
8240         Fixes #469528.
8241
8242 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8243
8244         * object.h: The lower bound of an array is a signed integer value.
8245         Introduce mono_array_lower_bound_t typedef. It should be used instead of
8246         gint32 as under MONO_BIG_ARRAYS it will be a gint64.
8247
8248         * icall.c: Cast MonoArrayBounds::length to a signed value so correctly
8249         calculate the upper bound.
8250         
8251         Fixes #471252.
8252
8253 2009-02-02  Miguel de Icaza  <miguel@novell.com>
8254
8255         From Paolo's work, refactored, cleared up:
8256         
8257         * threadpool.c, icall.c: ifdef code that requires a working socket
8258         stack.
8259
8260         * metadata.c (mono_metadata_field_info): Do not attempt to return
8261         a value from a function declared as void.
8262
8263         * console-io.c: Use MONO_NULL_TTYDRIVER to remove the tty driver
8264         from the console stack.
8265
8266         * assembly.c: use strrchr instead of rindex.
8267
8268         * class.c, object.c, marshal.c, icall.c, reflection.c: include
8269         alloca.h on systems that have it.
8270
8271         * environment.c: Avoid code that uses stuff from
8272         HAVE_SYS_UTSNAME_H
8273         
8274         * appdomain.c: Include sys/time.h.
8275
8276         * console-io.c: include sys/ioctl.h if it is available.
8277
8278 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
8279
8280         * method-builder.h (_MonoMethodBuilder): Add a 'skip_visibility' flag.
8281
8282         * method-builder.c (mono_mb_create_method): Set method->skip_visibility from
8283         the method builder.
8284
8285         * marshal.c: Set mb->skip_visibility instead of setting it on the method
8286         after it was created and cached, as the later is not thread safe.
8287         
8288 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
8289
8290         * mono-debug.c (mono_debug_print_stack_frame): Avoid crashes when this is
8291         called while the debugging module is not initialized. Fixes #471669.
8292
8293 2009-02-02 Rodrigo Kumpera  <rkumpera@novell.com>
8294
8295         * icall.c (type_from_name): Ignore reflection frames to find out the real caller.
8296
8297         Fixes #471255.
8298
8299 2009-02-02  Mark Probst  <mark.probst@gmail.com>
8300
8301         * generic-sharing.c (lookup_or_register_other_info): Make sure the
8302         loader lock is not taken while the templates lock is held.  Fixes
8303         #471089.
8304
8305 2009-02-02  Mark Probst  <mark.probst@gmail.com>
8306
8307         * metadata.c (type_in_image): Added a check to fix a monodis
8308         crash.
8309
8310 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
8311
8312         * marshal.c (mono_marshal_get_runtime_invoke): Add support for byref
8313         nullable arguments.
8314
8315         * object.c (mono_runtime_invoke_array): Ditto.
8316         
8317         * marshal.c (mono_marshal_free_dynamic_wrappers): New function for
8318         freeing wrappers of dynamic methods.
8319
8320         * loader.c (mono_free_method): Call it. Fixes #463323.
8321         
8322         * marshal.c (mono_marshal_get_runtime_invoke): Disable sharing for
8323         methods taking vtype/byref arguments, to fix yet another bug caused by
8324         the sharing of runtime invoke wrappers. Partly fixes #471259.
8325
8326 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
8327
8328         * debug-mono-symfile.c (check_line): Return NULL instead of returning
8329         <first file in file table>:1 when the IL offset does not have an associated
8330         line number.
8331
8332 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
8333
8334         * mono-debug.c (mono_debug_lookup_locals): New function to return local
8335         variable info for a method.
8336
8337         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Ditto.
8338         
8339 2009-01-30  Jb Evain  <jbevain@novell.com>
8340
8341         * pedump.c: reuse code from monodis to make sure pedump honors
8342         MONO_PATH, which is needed to verify net_2_1 assemblies.
8343
8344 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
8345
8346         * mono-debug.c (mono_debug_print_stack_frame): Print the IL offset even when
8347         there is no line number info.
8348
8349 2009-01-29  Raja R Harinath  <harinath@hurrynot.org>
8350
8351         Avoid some MonoType allocations
8352         * reflection.c (mono_reflection_initialize_generic_parameter):
8353         Reuse MonoType from param->pklass rather than allocating one.
8354         (mono_dynamic_image_free): Update to changes.
8355
8356 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
8357
8358         Rearrange some code to improve consistency
8359         * reflection.c (mono_reflection_setup_generic_class): Move body ...
8360         (mono_reflection_initialize_generic_parameter): ... here.
8361
8362 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
8363
8364         * generic-sharing.c (has_constraints): Enable gshared for methods/classes
8365         with type constraints as an experiment.
8366
8367         * boehm-gc.c (on_gc_notification): Update mono_stats.
8368
8369 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
8370
8371         Avoid some allocations
8372         * class-internals.h (_MonoGenericInst::type_argv): Convert from
8373         pointer to tail array to avoid extra allocation.
8374         * metadata.c (free_generic_inst): Update to changes.
8375         (mono_metadata_get_generic_inst): Likewise.  Use alloca instead of
8376         on-stack struct.
8377
8378 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
8379
8380         * icall.c (ves_icall_System_Type_EqualsInternal): For user-defined types,
8381         return TRUE if the two type objects are the same.
8382
8383 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
8384
8385         * marshal.c (mono_marshal_load_type_info): Fill out info->min_align.
8386         (mono_class_native_size): Use klass->marshal_info->min_align instead of
8387         klass->min_align, since klass->min_align contains the managed alignment,
8388         while the native alignment can be different, like for longs on x86.
8389         Fixes #469135.
8390
8391         * class-internals.h (MonoMarshalType): Add a min_align field.
8392
8393 2009-01-26 Rodrigo Kumpera  <rkumpera@novell.com>
8394
8395         * assembly.c (mono_assembly_try_decode_skip_verification): Add a hack to check
8396         the 1.0 format.
8397
8398 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
8399
8400         * domain-internals.h (struct _MonoJitInfo): Add a 'from_aot' field plus
8401         some comments about the usage of the used_regs field.
8402
8403         * marshal.c (emit_marshal_ptr): Allow pointers to blittable structures.
8404         Fixes #469217.
8405
8406 2009-01-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
8407
8408         * appdomain.c: return NULL instead of throwing FileNotFoundException
8409         when LoadAssembly() fails.
8410
8411 2009-01-23  Mark Probst  <mark.probst@gmail.com>
8412
8413         * metadata.c (mono_metadata_generic_param_equal): Only compare the
8414         image if the owner is NULL.  Fixes the AOT failures.
8415
8416 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
8417
8418         * metadata.c (mono_metadata_load_generic_params): Initialize the 
8419         MonoGenericParam structure using memset so the image field is initialized
8420         as well.
8421
8422 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8423
8424         * appdomain.c (mono_domain_unload): Change the InterlockedIncrement to
8425         a plain store.
8426
8427 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
8428
8429         * class.c (mono_class_setup_vtable_general): In the generic instance
8430         optimization, set method->slot for abstract virtual methods. Fixes part of
8431         #467834.
8432
8433 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8434
8435         * domain-internals.h: Add new appdomain state MONO_APPDOMAIN_UNLOADING_START
8436         which signals that the unloading has started but all appdomain services must
8437         remain operational.
8438
8439         * appdomain.c (mono_domain_unload): The initial state for unloading now
8440         is unloading_start and we switch to unloading after the managed call to
8441         AppDomain::DomainUnload has finished.
8442
8443         The new unloading state has to be created because managed code in the
8444         DomainUnload event can depend on things like the threadpool still working.
8445         The domain must remain fully functional while the event executes.
8446
8447         This shown as an issue due to Process::WaitForExit, which waits for
8448         async reads of stdout and stderr to complete. Since those are processed
8449         in the threadpool the code deadlocks because the DomainUnload callback 
8450         waits for the async read finished event, which should have been set by a
8451         threadpool job but has been discarded due to the domain been in unload
8452         state.
8453
8454 2009-01-21  Mark Probst  <mark.probst@gmail.com>
8455
8456         * metadata.c (mono_metadata_generic_param_equal): Owner as well as
8457         image must match.
8458
8459 2009-01-21  Mark Probst  <mark.probst@gmail.com>
8460
8461         * reflection.c (resolve_object): For fields, inflate the class and
8462         then get the field in the inflated class.
8463
8464 2009-01-20  Mark Probst  <mark.probst@gmail.com>
8465
8466         * object-internals.h (struct _MonoException): Added a comment
8467         explaining the new use of trace_ips.
8468
8469 2009-01-20  Mark Probst  <mark.probst@gmail.com>
8470
8471         * generic-sharing.c (inflate_other_data): Inflate array methods
8472         correctly.
8473
8474         * loader.c, class-internals.h: Rename search_in_array_class() to
8475         mono_method_search_in_array_class() and make it non-static.
8476
8477 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
8478
8479         * metadata.c (inflated_signature_in_image): Call signature_in_image as well.
8480         Hopefully fixes #458168.
8481
8482 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
8483
8484         * object.c (mono_raise_exception): Remove call to InterlockedIncrement
8485         as it is performed elsewhere.
8486
8487         Code is contributed under MIT/X11 license
8488
8489 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
8490
8491         * mono-perfcounters-def.h: Add counters for asp.net requests total and
8492         requests queued.
8493         * object.c (mono_raise_exception): Increment the exceptions total
8494         counter when an exception is thrown.
8495         * class-internals.h: Add a location for storing the total number of
8496         asp.net requests served.
8497         * mono-perfcounters.c: Implement update support for asp.net counters
8498         from the class libraries. Implement read support for asp.net counters
8499         and exceptions total counter.
8500
8501 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
8502
8503         * loader.c (search_in_array_class): Call mono_class_setup_methods () before
8504         accessing klass->methods. Fixes #467385.
8505
8506 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
8507
8508         * marshal.c (emit_marshal_custom): Avoid calling MarshalNativeToManaged
8509         for byval arguments without an [Out] attribute. Fixes #467212.
8510
8511         * attach.c: Applied patch from Koushik Dutta (koush@koushikdutta.com). 
8512         Fix compilation under android.
8513         
8514         * sgen-gc.c: Instead of scanning gray objects after all roots have been 
8515         processed, scan them directly after they are copied, to achieve better locality
8516         and cache usage.
8517
8518         * socket-io.c: Applied patch from Koushik Dutta
8519         (koush@koushikdutta.com). Disable IPV6 when running under android.
8520
8521 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
8522
8523         * icall.c (ves_icall_InternalExecute): Add write barriers.
8524
8525         * marshal.c (mono_marshal_get_write_barrier): Remove, this is now done in
8526         the GC code.
8527
8528         * sgen-gc.c: Implement write barriers in IL code.
8529
8530 2009-01-17  Geoff Norton  <gnorton@novell.com>
8531
8532         * image.c: Avoid trying to walk the reference table of dynamic assemblies.
8533
8534 2009-01-17  Geoff Norton  <gnorton@novell.com>
8535
8536         * image.c: When unloading the image->references table, there can be gaps
8537         in it.  Ensure that we iterate every entry to avoid leaking assembly references
8538         when unloading an appdomain.
8539
8540 2009-01-16  Zoltan Varga  <vargaz@gmail.com>
8541
8542         * sgen-gc.c: Add support for allocating a nursery at an aligned address, to
8543         speed up ptr-in-nursery checks.
8544
8545         * threads.c (mono_threads_abort_appdomain_threads): Abort threads outside the
8546         threads_lock () to prevent deadlocks.
8547
8548         * sgen-gc.c gc-internal.h: Add a new root type root-with-wbarrier, which
8549         does not need to be scanned during minor collections, since writes to it
8550         must use write barriers.
8551
8552 2009-01-15 Rodrigo Kumpera  <rkumpera@novell.com>
8553
8554         * metadata-verify.c: Add pe nt header verification.
8555         
8556 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
8557
8558         * gc.c: Fix a few warnings when using SGEN.
8559
8560 2009-01-14 Rodrigo Kumpera  <rkumpera@novell.com>
8561
8562         * metadata-verify.c: Add pe optional header verification.
8563
8564 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
8565
8566         * sgen-gc.c: Add support for user defined marker functions, used by
8567         MonoGHashTable to avoid registering a GC root for every hash node.
8568
8569 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
8570
8571         * sgen-gc.c: Fix warnings. Optimize copy_object () a bit. Split pinned/
8572         non-pinned roots into separate hashes to avoid having to traverse them
8573         in functions which are only interested in one kind.
8574
8575 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
8576
8577         * metadata-verify.c: Add pe header machine field verification.
8578         
8579 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
8580
8581         * metadata-verify.c: Add pe header size verification.
8582
8583 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
8584
8585         * reflection.c (ALLOC_REFENTRY): Don't allocate the ReflectionEntry structures
8586         using the GC, they don't contain references.
8587
8588         * domain.c (mono_domain_create): Create ldstr_table using MONO_HASH_KEY_VALUE_GC.
8589
8590 2009-01-13  Geoff Norton  <gnorton@novell.com>
8591
8592         * appdomain.c|h: Expose mono_domain_unload to the embedding api so that 
8593         AppDomains created on the native side can be cleaned up on the native side.
8594
8595 2009-01-13  Geoff Norton  <gnorton@novell.com>
8596
8597         * appdomain.c: Ensure that we call mono_context_init for the embedding api
8598         as well as the managed api.
8599
8600 2009-01-13  Geoff Norton  <gnorton@novell.com>
8601
8602         * appdomain.h|c: New API for creating a MonoDomain in the embedding api
8603         with a MonoAppDomain initialized against it.
8604
8605 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
8606
8607         * reflection.c (MOVING_GC_REGISTER): Fix a warning.
8608         
8609         * reflection.c (mono_image_get_generic_param_info): Use MOVING_GC_REGISTER.
8610
8611         * marshal.c: Avoid setting the exception clauses after a method has been entered 
8612         into the wrapper caches. Fixes #465700.
8613
8614         * method-builder.c (mono_mb_set_clauses): New function to set the clauses of the
8615         method builder.
8616         (mono_mb_create_method): Set the clauses from the method builder.
8617
8618 2009-01-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
8619
8620         * threadpool.c: include sys/socket.h. Fixes compilation on FreeBSD.
8621         Patch from Makoto Kishimoto.
8622
8623 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
8624
8625         * sgen-gc.c (mono_gc_make_descr_from_bitmap): Handle large bitmaps by 
8626         encoding them as ROOT_DESC_COMPLEX.
8627         (precisely_scan_objects_from): Implement support for ROOT_DESC_COMPLEX.
8628
8629 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
8630
8631         * sgen-gc.c (scan_from_remsets): Clear the global remset of pointers which
8632         no longer point to the nursery.
8633
8634         * sgen-gc.c: Add a few comments/FIXMEs.
8635         
8636         * sgen-gc.c: Implement scanning of the alloc_pinned objects.
8637
8638         * marshal.c (mono_marshal_get_synchronized_wrapper): Make the 
8639         initialization of the various _method variables thread safe. Fixes
8640         #465377.
8641
8642 2009-01-12  Mark Probst  <mark.probst@gmail.com>
8643
8644         * domain.c, domain-internals.h: Remove the shared_generics_hash
8645         and its lookup functions.
8646
8647 2009-01-12  Bill Holmes  <billholmes54@gmail.com>
8648
8649         * socket-io.c:  Fixing the MSVC build. 
8650
8651         Code is contributed under MIT/X11 license.
8652
8653 2009-01-12 Rodrigo Kumpera  <rkumpera@novell.com>
8654
8655         * metadata-verify.c: Add pe header watermark verification.
8656
8657 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
8658
8659         * metadata-verify.c: Add lfanew verification.
8660
8661 2009-01-12  Jb Evain  <jbevain@novell.com>
8662
8663         * tabldefs.h: rename METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE to
8664         METHOD_ATTRIBUTE_STRICT to match the ECMA terminology.
8665
8666 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
8667
8668         * socket-io.c: Fix the build.
8669
8670         * environment.c: Fix an #ifdef.
8671
8672 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
8673
8674         * threadpool.c (async_invoke_thread): Handle the wait function returning
8675         WAIT_IO_COMPLETION as well.
8676         (async_invoke_io_thread): Ditto.
8677
8678 2009-01-09  Bill Holmes  <billholmes54@gmail.com>
8679
8680         * threads.c: Fixing the Windows build.
8681
8682         Code is contributed under MIT/X11 license.
8683
8684 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
8685  
8686         * threads.c (signal_thread_state_change): Call wapi_interrupt_thread () to
8687         interrupt a wait.
8688         (mono_thread_execute_interruption): Call wapi_clear_interruption () to enable
8689         the thread to wait again.
8690
8691 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
8692
8693         * metadata-verify.c: Initial skeleton of the metadata verifier.
8694
8695         * pedump.c: Add support for the metadata verifier.
8696
8697         * verify-internal.h: Export the whole assembly metadata verifier function.
8698
8699 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
8700
8701         * gc.c (mono_gc_init): Fix the comments about deadlock on windows.
8702
8703 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
8704
8705         * Makefile.am: Upgrade dtrace-prelink.sh location.
8706
8707 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
8708
8709         * gc.c (mono_gc_init): Wait for finalizer thread to init on windows as
8710         well. Otherwise the shutdown deadlock that happens on unix will can happen
8711         as well.
8712         If the main thread code finishes too fast it's possible that the finalizer
8713         thread won't have executed yet, won't record itself as the finalizer thread
8714         and the shutdown sequence will wait on it forever.
8715
8716 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
8717
8718         * threads.c (mono_thread_current): Make THREAD_DEBUG work on windows
8719         with MSVC.
8720
8721 2009-01-08  Miguel de Icaza  <miguel@novell.com>
8722
8723         * appdomain.c: Initialize the mono_strtod_mutex here, thanks to
8724         Robert Jordan for pointing this out.
8725
8726 2009-01-08  Christian Prochnow  <cproch@seculogix.de>
8727
8728         * icall.c
8729         * icall-def.h: added internal calls ves_icall_System_IO_DriveInfo_GetDiskFreeSpace,
8730         ves_icall_System_IO_DriveInfo_GetDriveType.
8731
8732 2009-01-07  Miguel de Icaza  <miguel@novell.com>
8733
8734         * icall.c: Wrap calls to mono_strtod in CriticalSection
8735         invocations when using eglib, to work around #464316.
8736
8737 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
8738
8739         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Double check the
8740         return value of GetCurrentDirectory to never access unitialized memory.
8741
8742 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
8743
8744         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Properly check the
8745         return value of GetCurrentDirectory and expand the buffer if needed.
8746
8747         Fixes #459094.
8748
8749 2009-10-07 Tom Hindle  <tom_hindle@sil.org>
8750
8751         * marshal.c (GetIUnknownForObjectInternal, GetIUnknownForObjectInternal) : 
8752           Adding a call to mono_init_com_types.
8753
8754         Code is contributed under MIT/X11 license.
8755
8756 2009-01-07  Geoff Norton  <gnorton@novell.com>
8757
8758         * socket-io.c: ioctlsocket(FIONREAD) returns the size of the UDP header as well on 
8759         darwin.  Use getsockopt SO_NREAD instead to get the right values for TCP and UDP.
8760         ai_canonname can be null in some cases on darwin, where the runtime assumes it will 
8761         be the value of the ip buffer.
8762
8763 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
8764
8765         * verify.c (mono_class_interface_implements_interface): Verify parents as we can't rely on
8766         interfaces_packed here.
8767
8768         Fixes part of #463294.
8769
8770 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
8771
8772         * verify.c (is_array_type_compatible): Ignore bounds and sizes when checking array compatibility.
8773
8774         Fixes part of #463294.
8775
8776 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
8777
8778         * verify.c (stack_slot_is_complex_type_not_reference_type): Check if the type
8779         is a boxed complex as well.
8780
8781         Fixes part of #463294.
8782
8783 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
8784
8785         * reflection.c (mono_image_get_methodref_token): Add an extra create_typespec parameter to
8786         control if a methodspec should be created for the generic method definition from external assemblies.
8787         Caching of methodspec is done using the handleref hash table.
8788
8789         Fixes #462592.
8790
8791 2009-01-05 Rodrigo Kumpera  <rkumpera@novell.com>
8792
8793         * loader.c (find_method): When searching the interfaces of a class
8794         check the transitive closure of implemented interfaces.
8795
8796         Fixes #463303.
8797
8798 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
8799
8800         * class.c (get_implicit_generic_array_interfaces): Improve debugging code.
8801         
8802 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
8803
8804         * class.c (get_implicit_generic_array_interfaces): Extract valuetype
8805         interfaces calculation to fill_valuetype_array_derived_types.
8806
8807         * class.c (get_implicit_generic_array_interfaces): Valuetypes need IList /
8808         ICollection / IEnumerator interfaces for their extra twin type - sbyte for byte
8809         for example.
8810
8811         * class.c (get_implicit_generic_array_interfaces): InternalEnumerator gets
8812         interfaces for valuetypes if needed.    
8813
8814         * class.c (fill_valuetype_array_derived_types): Enums should have interfaces
8815         for their basetype as well. Types are array expanded if rank is > 0.
8816
8817         Fixes #400716.
8818
8819 2008-12-30  Bill Holmes  <billholmes54@gmail.com>
8820
8821         * socket-io.h : Changing the signature of
8822           ves_icall_System_Net_Sockets_Socket_Accept_internal to pass
8823           the blocking state.
8824
8825         * icall-def.h :  Changing the signature of
8826           System.Net.Sockets.Socket.Accept_internal to pass the blocking state.
8827
8828         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
8829           For Windows only.  Avoid blocking when calling accept by
8830           querying for a connection via select.  The loop also queries
8831           the thread state every 1000 micro seconds for the thread
8832           stop state.  This will avoid the process hanging on shutdown
8833           when using a TcpChannel that is never connected to.
8834
8835         Code is contributed under MIT/X11 license.
8836
8837 2008-12-30  Marek Safar  <marek.safar@gmail.com>
8838
8839         * tabledefs.h: Add METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE.
8840
8841 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
8842
8843         * class.c (get_implicit_generic_array_interfaces): Extract common
8844         code to a helper function making it a lot easier on the eyes.
8845
8846 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
8847
8848         * class.c (get_implicit_generic_array_interfaces): If the internal
8849         enumerator is an interface inflate System.Object instead of itself.
8850
8851         Fixes #461261.
8852
8853 2008-12-24 Rodrigo Kumpera  <rkumpera@novell.com>
8854
8855         * object.c (mono_runtime_invoke_array): Don't assert with
8856         byref nullable types.
8857
8858         * marshal.c (mono_marshal_get_runtime_invoke): To handle
8859         byref nullables we unbox the object and store it on the
8860         stack. 
8861         We can't use the boxed object since it is the T of Nullable<T>
8862         and the boxed representation of a nullable it's underlying type
8863         or null.
8864         We could cheat and create a boxed nullable and use the same
8865         machinery of other byref VTs but this feels like a hack and
8866         using the stack has the bonus of reducing heap pressure.
8867
8868         Fixes #461941.
8869
8870 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
8871
8872         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
8873         return value.
8874
8875         Fixes #461867.
8876
8877 2008-12-19  Bill Holmes  <billholmes54@gmail.com>
8878
8879         * icall-def.h : Adding an internal call definition for 
8880           System.Environment.internalBroadcastSettingChange.
8881
8882         * icall.c : Adding a Windows only implementation to broadcast a 
8883           WM_SETTINGCHANGE when an environment variable has changed.
8884
8885         Code is contributed under MIT/X11 license.
8886
8887 2008-12-19  Mark Probst  <mark.probst@gmail.com>
8888
8889         * class.c, class-internals.h: Made
8890         mono_class_has_parent_and_ignore_generics() non-static.
8891
8892 Thu Dec 18 16:35:22 CET 2008 Paolo Molaro <lupus@ximian.com>
8893
8894         * image.c: deal with the mmap failing when loading an image.
8895
8896 2008-12-17  Geoff Norton  <gnorton@novell.com>
8897
8898         * threadpool.c: Ensure that the io_queue_lock is initialized
8899         in all circumstances, as we always attempt to cleanup against it.
8900
8901 2008-12-17  Miguel de Icaza  <miguel@novell.com>
8902
8903         * icall.c (ves_icall_System_Environment_get_Platform): For
8904         compatibility reasons for existing client code we will keep
8905         returning 4 for a while.   
8906
8907         For how long will depend on the documentation being updated, and
8908         for us to give client code a chance to be updated.
8909
8910         This reverts the original decison on #433108 since we did not
8911         catch roughly 33 instances of the broken code in our own source
8912         code base, we did not catch failures on the buildbots, and QA did
8913         not bring this as a problem.
8914
8915         Only today I found some customer's code breaking due to our own
8916         class libraries not being fully updated and tracked it down to
8917         this change.  I am reverting it because if we could not even get
8918         our story straight in our own code base, how can we hope that our
8919         end user code be fixed?
8920
8921         As of this morning, our Wiki page that documents how to detect
8922         Unix had not been fixed.    
8923
8924 2008-12-16  Zoltan Varga  <vargaz@gmail.com>
8925
8926         * metadata.c (inflated_method_in_image): Add a workaround for #458168.
8927
8928         * class.c (mono_class_get_fields): Handle loading errors.
8929
8930 2008-12-12 Mark Mason <mmason@upwardaccess.com>
8931
8932         * 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.
8933         
8934 2008-12-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
8935
8936         * mono-perfcounters.c: avoid warning.
8937
8938 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
8939
8940         * reflection.c (ensure_runtime_vtable): Work on generic instances and
8941         make sure all interfaces have MonoClass::interface_id set.
8942
8943         * reflection.c (ensure_generic_class_runtime_vtable): Ensure the
8944         method table is property set.
8945
8946 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
8947
8948         * class.c: New function mono_class_setup_interface_id that setup
8949         MonoClass::interface_id if needed.
8950
8951         * class-internals.h: Export new function.
8952
8953 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
8954
8955         * class.c: Add code to sanity check the vtable after setup_vtable_general
8956         has done it's work.
8957
8958 2008-12-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
8959
8960         * icall.c: make Assembly.GetExecutingAssembly work properly when
8961         reflection is used to invoke the method.
8962         Bug #321781 fixed.
8963
8964 2008-12-11  Mark Probst  <mark.probst@gmail.com>
8965
8966         * metadata/generic-sharing.c: Look for constraints in all type
8967         arguments, not just the first one.
8968
8969 2008-12-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
8970
8971         * appdomain.c: return the correct CodeBase for an Assembly instance
8972         that was loaded from the shadow-copy directories.
8973         Bug #458190 fixed.
8974
8975 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
8976
8977         * sgen-gc.c (build_nursery_fragments): Clear nursery_next/nursery_frag_real_end.
8978
8979         * sgen-gc.c (check_object): New debugging helper function.
8980
8981         * object.c: Fix calls to mono_value_copy_array ().
8982
8983 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
8984
8985         * class.c (mono_class_setup_fields): If working on an inflated class
8986         first check if the generic definition did init with success.
8987
8988         Fixes #445361.
8989
8990 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
8991
8992         pedump.c (main): Fix a warning.
8993
8994 2008-12-10  Bill Holmes  <billholmes54@gmail.com>
8995
8996         * object-internals.h : Adding a definition for 
8997           MonoReflectionComVisibleAttribute.
8998
8999         * marshal.c (cominterop_com_visible) :  Method added to check the 
9000           ComVisible attribute of a class.
9001
9002         * marshal.c (cominterop_raise_hr_exception, cominterop_get_interface) :  
9003           cominterop_raise_hr_exception added to consolidate common code 
9004           to raise hr exceptions.
9005
9006         * marshal.c (cominterop_can_support_dispatch) :  Method added to determine 
9007           if a managed class should support IDispatch.
9008
9009         * marshal.c 
9010           (cominterop_get_idispatch_for_objec, cominterop_ccw_queryinterfacet) :  
9011           Added additional checks for managed object when getting 
9012           an IDispatch interface.
9013
9014         Code is contributed under MIT/X11 license.
9015
9016 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9017
9018         pedump.c (main): Handle mono_get_method () returning NULL. 
9019
9020 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
9021
9022         * marshal.h: Fix a warning.
9023
9024 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
9025
9026         * marshal.c : Adding cominterop_release_all_rcws to release all
9027           runtime callable wrappers held by the runtime.
9028
9029         * marshal.h : Adding declaration for cominterop_release_all_rcws.
9030           
9031         Code is contributed under MIT/X11 license.
9032
9033 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
9034
9035         * metadata.c (mono_image_alloc_lock): New helper function.
9036         (mono_image_alloc0_lock): Ditto.
9037
9038         * metadata.c: Use the alloc_lock () helper functions for allocating
9039         memory from the image mempool.
9040
9041 2008-12-08 Rodrigo Kumpera  <rkumpera@novell.com>
9042
9043         * class.c (mono_class_from_generic_parameter): Document it's
9044         locking behavior. Fix double checked locking here, we stored in
9045         param->pklass a partially initialized MonoClass and no membar was used.
9046
9047 2008-12-05  Marek Habersack  <mhabersack@novell.com>
9048
9049         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
9050         (3) functions are present in the C library use them to do the
9051         job. If they are absent, make sure that the sum of int_part and
9052         dec_part is rounded before returning. This is necessary due to the
9053         division of dec_part by the power of 10 before the final addition
9054         is performed - if the result is not rounded in some cases it will
9055         yield invalid results.
9056
9057 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
9058
9059         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
9060         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
9061         instruction instead of a pointer constant.
9062
9063 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
9064
9065         * loader.c (mono_method_get_header): Do most of the work outside the
9066         loader lock, to avoid assembly load hook deadlocks.
9067
9068         * metadata.c (mono_metadata_parse_mh_full): Use finer-grained locking.
9069         (mono_metadata_parse_type_full): Ditto.
9070
9071 2008-12-02 Rodrigo Kumpera  <rkumpera@novell.com>
9072
9073         * mempool.c (mono_backtrace): Take the number of allocated bytes as argument.
9074         Make the stack depth fixed. Ensure proper argument passing to the backtrace
9075         funtions. Finally, use a lock to produce well ordered output.
9076
9077         The lock looks silly, as all calls to the corlib mempool should be guarded
9078         with the loader lock, but for some reason this fact doesn't help. 
9079
9080         * mempool.c (mono_mempool_alloc0): Add support for TRACE_ALLOCATIONS.
9081
9082 2008-12-02  Mark Probst  <mark.probst@gmail.com>
9083
9084         * socket-io.c: 64 bit big-endian fixes.
9085
9086 2008-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
9087
9088         * verify.c (is_compatible_boxed_valuetype): Rewrite function to work properly with
9089         targets that require strict compatibility between the types.
9090
9091         * verify.c (verify_stack_type_compatibility_full): Boxed values are not compatible
9092         to unboxed types. All cases that this is true are checked by is_compatible_boxed_valuetype.
9093         Kill the strict argument and create a new one valuetype_must_be_boxed.
9094
9095         * verify.c (verify_delegate_compatibility): Use verify_stack_type_compatibility_full to
9096         state that all valuetypes must be boxed.
9097
9098         Fixes #448560.
9099
9100 2008-11-29  Kornél Pál  <kornelpal@gmail.com>
9101
9102         * coree.c (MonoFixupExe): Use sizeof(IMAGE_BASE_RELOCATION) instead of
9103         IMAGE_SIZEOF_BASE_RELOCATION as newer Vista SDKs no longer define the latter.
9104
9105         Contributed under MIT/X11 license.
9106
9107 2008-11-28 Rodrigo Kumpera  <rkumpera@novell.com>
9108
9109         * class.c (mono_class_setup_fields): Don't copy MonoType::attrs as
9110         the inflate_generic_type machinery should handle it.
9111
9112         This avoids a crash when the field's flags is zero and it's type is
9113         a primitive.
9114         What happens is that mono_metadata_parse_type_full will see that opt_attrs
9115         is zero and will return one of the cached built-in primitive types. Since
9116         those types live in read-only memory, the code that copies it crashes.  
9117
9118 2008-11-28  Mark Probst  <mark.probst@gmail.com>
9119
9120         * object.c: Don't put function descriptors into generalized IMT
9121         thunks.
9122
9123 2008-11-28  Mark Probst  <mark.probst@gmail.com>
9124
9125         * class.c: Enable generic code sharing on PPC64.
9126
9127 2008-11-27  Mark Probst  <mark.probst@gmail.com>
9128
9129         * mempool.c, mempool-internals.h: Added g_slist_append_mempool()
9130         from mini/mini.c.
9131
9132         * generic-sharing.c: Allocate the method template slists from the
9133         image mempool so it doesn't leak.
9134
9135 2008-11-27 Rodrigo Kumpera  <rkumpera@novell.com>
9136
9137         * class.c (generic_array_methods): Release the linked list.
9138
9139 2008-11-27  Mark Probst  <mark.probst@gmail.com>
9140
9141         * marshal.c (mono_string_builder_to_utf8): Fixed a wrong
9142         invocation to g_utf16_to_utf8().
9143
9144 2008-11-26  Mark Probst  <mark.probst@gmail.com>
9145
9146         * icall.c (mono_ArgIterator_IntGetNextArg): Handle sub-word sized
9147         arguments on big endian archs.
9148
9149 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
9150
9151         * reflection.c: (_mono_reflection_parse_type) skip leading spaces in
9152         the type name (test added in corlib).
9153
9154 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
9155
9156         * pedump.c: initialize perf. counters. Fixes a segv.
9157
9158 2008-11-25  Martin Baulig  <martin@ximian.com>
9159
9160         * mono-debug-debugger.c
9161         (mono_debugger_runtime_invoke): Return the exception object if an
9162         exception was thrown.  Visual Studio displays the exception object
9163         in the locals window.
9164
9165 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9166
9167         * mini-trampolines.c (mono_delegate_trampoline): Don't return a
9168         ftnptr.
9169
9170 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9171
9172         * marshal.c (mono_type_native_stack_size): MONO_TYPE_I and
9173         MONO_TYPE_U are sizeof (gpointer), too.
9174
9175 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9176
9177         * marshal.c (mono_type_native_stack_size): Fixed size and
9178         alignment for reference types.
9179
9180 2008-11-23  Mark Probst  <mark.probst@gmail.com>
9181
9182         * class.c (mono_class_generic_sharing_enabled): Disable generic
9183         code sharing for PPC64.
9184
9185 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
9186
9187         * icall.c (mono_method_get_equivalent_method): Make sure
9188         method->klass->methods is inited before looping over it.
9189
9190 2008-11-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
9191
9192         * object.c: when calling ExecuteAssembly in a newly created domain,
9193         the configuration file and application base are already set up.
9194         Bug #446353 take 2 fixed.
9195
9196 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
9197
9198         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
9199         Fixes #444715. Fix a warning.
9200
9201 2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
9202
9203         * appdomain.c: write the full path of the assembly to the .ini file
9204         created when "shadow-copying"
9205         Bug #446353 fixed.
9206
9207 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
9208
9209         * debug-helpers.c (mono_method_full_name): Stringify wrapper types even
9210         if signature==FALSE.
9211
9212 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
9213
9214         * marshal.h : Fix the cygwin build.
9215            marshal.c:12442: undefined reference to `_IID_IMarshal'
9216           
9217         Code is contributed under MIT/X11 license.
9218
9219 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
9220
9221         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
9222           free threaded marshaler when QueryInterface is called on a COM callable
9223           wrapper requesting the IMarshal interface.
9224           
9225         Code is contributed under MIT/X11 license.
9226
9227 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
9228
9229         * domain-internals.h (MonoDomain): Update MONO_DOMAIN_LAST_GC_TRACKED.
9230
9231         * reflection.c (mono_type_get_object): Special case the very common
9232         void type.
9233
9234         * domain-internals.h (struct _MonoDomain): Add 'typeof_void' field to
9235         hold typeof(void).
9236
9237 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
9238
9239         * process.h : Adding method declaration for
9240           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9241           
9242         * process.c : Adding implementation for
9243           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9244           
9245         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
9246           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9247
9248         Code is contributed under MIT/X11 license.
9249
9250 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
9251
9252         * appdomain.c (unload_thread_main): Clean up threadpool by
9253         calling mono_thread_pool_remove_domain_jobs.
9254
9255         * domain-internals.h (struct _MonoDomain): Add new fields to
9256         help coordinate the cleanup of the threadpool.
9257
9258         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
9259         that cleans up the threadpool of all jobs associated with an appdomain.
9260         It does that by cleaning up the queues and making sure all active
9261         threads are accounted.
9262
9263         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
9264         unloaded or in the process of. Take this is such way that there is
9265         no race condition between another thread starting the unload and the
9266         current thread acknowledging it.
9267
9268         * threadpool.c (async_invoke_thread): Same.
9269
9270         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
9271         firing the new thread.
9272
9273         * threadpool.c (start_tpthread): Same.
9274
9275         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
9276
9277         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
9278
9279 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
9280
9281         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9282         Add support for DuplicateHandle.
9283         
9284         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9285         Add support for DuplicateHandle.
9286         
9287         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9288         Add support for DuplicateHandle.
9289
9290         Code is contributed under MIT/X11 license.
9291
9292 2008-11-06  Mark Probst  <mark.probst@gmail.com>
9293
9294         * class-internals.h: Make min_align into a whole byte.
9295
9296         * class.c: Set min_align for SIMD types to 16.
9297
9298 2008-11-05  Geoff Norton  <gnorton@novell.com>
9299
9300         * attach.c: Default the attacher to enabled for all cases including
9301         embedded.
9302
9303 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
9304
9305         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
9306         change r117650.
9307
9308 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9309
9310         * monitor.c, monitor.h: New function for querying offsets of
9311         members of MonoThreadsSync.
9312
9313 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9314
9315         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
9316         to speed up this function and to avoid the boundless memory growth caused by
9317         the signature_dup () calls.
9318
9319 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9320
9321         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
9322         wrapper.
9323
9324         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
9325         by 1 bit.
9326
9327         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
9328
9329 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
9330
9331         * appdomain.c:
9332         * domain-internals.h: made mono_set_private_bin_path_from_config()
9333         "internal".
9334         * object.c: call the above function after setting the configuration
9335         file path for the root domain.
9336         Fixes bug #314478.
9337
9338 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
9339
9340         * assembly.c: when the assembly is loaded from an absolute path, end
9341         basedir with a directory separator.
9342         Bug #440781 fixed.
9343
9344 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9345
9346         * monitor.c (mono_monitor_get_fast_enter_method): If
9347         CompareExchange is not available, don't create the fastpath
9348         instead of asserting.  (The method is missing in the 1.1 profile.)
9349
9350 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9351
9352         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
9353
9354         * monitor.c, monitor.h: Code for generating Monitor.Enter and
9355         Monitor.Exit IL fastpaths.
9356
9357 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9358
9359         * class.c (mono_class_create_from_typedef): Added Vector2ul.
9360
9361 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9362
9363         * class.c (mono_class_create_from_typedef): Added Vector2l.
9364
9365 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9366
9367         * class.c (mono_class_create_from_typedef): Added Vector2d.
9368
9369 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
9370
9371         * appdomain.c: translate \ into / for cache_path.
9372         * domain-internals.h: new mono_is_shadow_copy_enabled().
9373         * icall.c: (fill_reflection_assembly_name) do the same path
9374         manipulations that get_code_base does.
9375         (get_code_base) use mono_is_shadow_copy_enabled.
9376
9377 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
9378
9379         * appdomain.c: shadow-copied assemblies go to CachePath +
9380         ApplicationName when both are set. DynamicBase has nothing to do with
9381         shadow copies.
9382         Bug #406877 fixed.
9383
9384 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9385
9386         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
9387         STANDALONESIG table.
9388
9389         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
9390         standalone signatures.
9391
9392         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
9393         comparison code: instead of comparing the signatures using a custom
9394         equals function, transform them to a common signature and compare that. This
9395         works better with AOT.
9396
9397 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
9398
9399         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
9400
9401         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
9402         call for generic instances.
9403         (mono_class_setup_properties): Call setup_properties () before accessing
9404         gklass->properties.
9405
9406         * class.c (mono_class_get_virtual_methods): New helper function to iterate
9407         over the virtual methods of a class using metadata if possible, avoiding the
9408         creation of MonoMethod's for non-virtual methods.
9409         
9410         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
9411         get_virtual_methods () to iterate over the virtual methods of classes.
9412
9413 2008-10-25  Martin Baulig  <martin@ximian.com>
9414
9415         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
9416
9417 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9418
9419         * class.c (mono_class_create_from_typedef): Added Vector4i.
9420
9421 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9422
9423         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
9424         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
9425         special-casing applies to eliminate the call completely.
9426
9427 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9428
9429         * class.c (mono_class_create_from_typedef): Added Vector8s.
9430
9431 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9432
9433         * class.c (mono_class_create_from_typedef): Added Vector16sb.
9434
9435 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
9436
9437         * icall.c: get rid of annoying warning.
9438
9439 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
9440
9441         * threadpool.c: in 1.x, if you change the background status of the
9442         threadpool thread, it's not reset.
9443         Remove unnecessary calls to SetState.
9444
9445 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9446
9447         * threadpool.c: asynchronously create a set of idle threads upon first
9448         use of the threadpool. SetMinThreads will now start the appropriate
9449         number of idle threads if they are not already running. The default is
9450         1 threadpool thread per CPU. Increased the maximum number of threads
9451         per CPU to 10.
9452
9453 2008-10-22  Martin Baulig  <martin@ximian.com>
9454
9455         Revert r116521 from Zoltan, it breaks the debugger:
9456
9457         * class.c (mono_class_get_virtual_methods): New helper function to iterate
9458         over the virtual methods of a class using metadata if possible, avoiding the
9459         creation of MonoMethod's for non-virtual methods.
9460         
9461         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
9462         get_virtual_methods () to iterate over the virtual methods of classes.
9463
9464 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9465
9466         * threads.c: when creating a threadpool thread, set its state to
9467         'background'.
9468         * threadpool.c: reset the background state of a threadpool thread
9469         after finishing each work item
9470         Bug #437888 fixed.
9471
9472 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
9473
9474         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
9475         
9476         * class.c (mono_class_setup_vtable_general): Add an optimized version for
9477         generic instances which works by inflating the methods in the container
9478         class's vtable.
9479
9480         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
9481         variant which doesn't make a copy if no inflation was done.
9482         (mono_class_setup_fields): Use it.
9483
9484         * metadata.c (mono_metadata_get_shared_type): New helper function to
9485         return a shared instance of a given MonoType.
9486
9487         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
9488         a copy of most non-generic types.
9489
9490 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
9491
9492         * threadpool.c: remove one more GetSystemInfo () call.
9493
9494 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
9495
9496         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
9497         use the code in mono-proclib.h to get processor information.
9498
9499 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9500
9501         * appdomain.c: fixed the logic that determines whether assemblies in a
9502         directory are "shadow-copied" or not. Bug #433483 fixed.
9503
9504 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
9505
9506         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
9507         warning.
9508
9509 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9510
9511         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
9512         returning a vtype.
9513
9514         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
9515         reflection.c: Use mono_field_get_name () for accessing a field's name.
9516
9517         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
9518         class.c
9519
9520         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
9521         field.
9522
9523         * loader.c (find_method_in_class): Reenable the metadata optimization by
9524         not using it for generic instances.
9525
9526         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
9527         data/def_type fields from MonoClassField into a separate structure.
9528         (struct MonoClassField): Remove data/def_type fields.
9529         (struct _MonoClass): Add a 'field_def_values' array to store the default
9530         values/RVA for fields.
9531
9532         * class.c reflection.c: Update after the changes.
9533         
9534         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
9535         for accessing field->data.
9536
9537         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
9538
9539         * loader.c (find_method_in_class): Revert the last change for now as
9540         it breaks Mono.C5 unit tests.
9541
9542         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
9543         'field_generic_types' and 'field_objects' which contain the information
9544         previously stored in MonoInflatedField.
9545         (MonoInflatedField): Delete.
9546         (struct _MonoClassField): Delete 'generic_info' field.
9547
9548         * reflection.c: Store the information which was previously in 
9549         field->generic_info in MonoDynamicGenericClass instead.
9550
9551         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
9552         MonoClassField changes.
9553
9554 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
9555
9556         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
9557         store the value inside the data array of the MonoMethodWrapper.
9558         This saves memory, is faster and fixes the lifetime issues (methods
9559         were never removed from the hash previously). May also fix bug#436996.
9560
9561 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9562
9563         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
9564         generic instances, compute the type from the generic definition instead of
9565         looking in field->generic_info.
9566
9567         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
9568         for inflated fields, the only user was get_fieldref_token () which no
9569         longer needs it.
9570
9571         * class.c (mono_class_init): Revert the last change as it seems to cause
9572         crashes.
9573
9574         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
9575         bytes on 64 bit platforms.
9576
9577         * object.c (mono_class_create_runtime_vtable): Fix a warning.
9578         
9579         * object.c (mono_class_create_runtime_vtable): Don't initalize
9580         field->data/field->def_type here, it is done lazily by 
9581         mono_class_get_field_default_value ().
9582
9583         * icall.c (ves_icall_get_enum_info): Call 
9584         mono_class_get_field_default_value () instead of directly accessing
9585         field->data and field->def_type.
9586
9587         * object.c (get_default_field_value): Ditto.
9588
9589         * class.c (mono_field_get_data): Ditto.
9590         
9591         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
9592         call for generic instances.
9593
9594         * loader.c (find_method_in_class): If klass != from_class, then inflate
9595         the method with the context of from_class, since the caller assumes this.
9596
9597 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
9598
9599         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
9600         for accessing method->slot.
9601
9602 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
9603
9604         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
9605
9606 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9607
9608         * class.c (mono_method_get_vtable_index): Use
9609         mono_method_get_vtable_slot () for accessing method->slot.
9610
9611         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
9612         accessing klass->methods.
9613
9614         * class.c (mono_method_get_vtable_slot): New helper function.
9615         (mono_class_get_vtable_entry): Ditto.
9616         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
9617         accessing method->slot.
9618
9619         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
9620         method to get_inflated_method ().
9621
9622         * class.c (mono_class_get_inflated_method): New helper method to obtain
9623         a method of an inflated class without calling setup_methods ().
9624         (mono_class_get_cctor): Use get_inflated_method.
9625
9626         * generic-sharing.c (mono_class_get_method_generic): Ditto.
9627         
9628         * marshal.c image.c: Lazily create all the marshal caches.
9629
9630         * image.c (mono_image_init): Move initialization of runtime_invoke
9631         caches to marshal.c.
9632
9633         * marshal.c (get_cache): New helper function to lazily initialize a 
9634         wrapper cache.
9635         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
9636
9637         * debug-helpers.c (mono_method_full_name): Include generic arguments.
9638
9639 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
9640
9641         * loader.c: fixed check for interface type.
9642
9643 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
9644
9645         * appdomain.c: check for NULL setup before it's referenced.
9646
9647 p
9648 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
9649
9650         * class.c: remove the unused old vtable setup code.
9651
9652 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
9653
9654         * class.c: don't depend on interface order in
9655         setup_interface_offsets (bug #435777).
9656         * reflection.c: sort the InterfaceImpl table (patch from
9657         Jb Evain  <jbevain@novell.com>).
9658
9659 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9660
9661         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
9662         the low level assemblies lock.
9663
9664 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
9665
9666         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
9667         object.c, reflection.c, socket-io.c, threads.c: introduced
9668         mono_framework_version () to return the major framewrok version,
9669         changed the code that was using more complex patterns to use it.
9670         Return the correct value for PlatformID for OSX.
9671
9672 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
9673
9674         * icall-def.h, process.h, process.c: added an icall to get info about
9675         processes using mono-proclib.
9676
9677 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
9678
9679         * mono-perfcounters.c: use the mono-proclib functions to
9680         access process information.
9681
9682 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
9683
9684         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
9685         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
9686         reflection.c: remove rawbuffer usage: mmap support is more sanely
9687         provided by utils/mono-mmap.
9688
9689 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
9690
9691         * gc.c: use posix semaphores when possible so that
9692         mono_gc_finalize_notify() is signal safe.
9693
9694 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
9695
9696         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
9697         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
9698         be #ifdef-ed out, the linker will remove the rest.
9699
9700         * marshal.c: Implement DISABLE_COM.
9701
9702         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
9703
9704 2008-10-11  Miguel de Icaza  <miguel@novell.com>
9705
9706         * locales.c (string_invariant_compare_char): Optimization: do not
9707         call g_unichar_type unless we actually need the information.
9708
9709 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9710
9711         * object.c, class-internals.h: Also create remoting trampolines
9712         for generic methods.  Pass the domain to the remoting trampoline
9713         creation function, too.
9714
9715 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9716
9717         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
9718
9719 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9720
9721         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
9722         Vector4ui.
9723
9724 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
9725
9726         * assembly.c:
9727         * locales.c: remove the use of g_strdown. Fixes bug #322313.
9728
9729 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
9730
9731         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
9732         for the least possible amount of time (extending the fix in r113458).
9733
9734 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9735
9736         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
9737
9738 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9739
9740         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
9741         as possible simd intrinsic types.
9742         Optimized the test to check for the common prefix first.
9743
9744 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
9745
9746         * class.c: back out part of a broken optimization committed on
9747         May 23th (bug #433908).
9748
9749 2008-10-09  Mark Probst  <mark.probst@gmail.com>
9750
9751         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
9752         Win32.  Should fix #432388 for most cases until we have the new
9753         profiler on Win32.
9754
9755 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9756
9757         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
9758         instead of using inst->id so the hash is stable for AOT.
9759
9760 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
9761
9762         * appdomain.c:
9763         * icall.c: create a .ini file for shadow-copied assemblies that
9764         contains the location of the original assembly. Use this to return the
9765         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
9766         Also fix the number of '/' for windows when returning the CodeBase.
9767         Fixes bug #430920.
9768
9769 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9770
9771         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
9772
9773         Code is contributed under MIT/X11 license.
9774
9775 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9776
9777         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
9778           if if the class vtable needs initialized.
9779
9780         Code is contributed under MIT/X11 license.
9781
9782 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9783
9784         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
9785           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
9786           STRING->BSTR, and CLASS->INTERFACE.
9787
9788         Code is contributed under MIT/X11 license.
9789
9790 2008-10-07  Marek Habersack  <mhabersack@novell.com>
9791
9792         * sysmath.h: changed the declaration of the
9793         ves_icall_System_Math_Round2 icall by adding an extra
9794         away_from_zero parameter.
9795
9796         * sysmath.c (ves_icall_System_Math_Round2): added support for
9797         away from zero rounding. The icall now takes an extra boolean
9798         parameter to signal that away from zero operation is requested.
9799
9800 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9801
9802         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
9803         the delegate klass so it can work with full-aot.
9804         (mono_marshal_get_delegate_end_invoke): Ditto.
9805         (mono_marshal_get_delegate_invoke): Ditto.
9806
9807 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
9808
9809         * gc.c, attach.h, attach.c: remove a bad pattern:
9810         add_finalizer_callback () is not implemented correctly, it can't
9811         without adding more overhead to the finalizer loop and it's not
9812         even needed, since we know exactly what we need to call, so there is
9813         no need to do so through an expensive function pointer.
9814
9815 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
9816
9817         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
9818         for the no-gc case.
9819         * attach.c (mono_attach_init): Remove the #ifdef.
9820
9821 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
9822
9823         * attach.c (mono_attach_init): Don't use
9824         mono_gc_add_finalizer_thread_callback when compiling without GC.
9825         Fixes #432306.
9826         
9827         Code is contributed under MIT/X11 license.
9828
9829 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9830
9831         * class.c (mono_class_create_from_typedef): Remove the 
9832         #ifndef DISABLE_SIMD stuff.
9833
9834 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9835
9836         * class-internals.h (MonoClass): Added simd_type bit field.
9837
9838         * class.c (mono_class_create_from_typedef): Check if type is a simd
9839         intrinsic.
9840
9841 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9842
9843         * object.c (mono_method_add_generic_virtual_invocation): Only add
9844         instantiations to the thunk whose count is at least as large as
9845         the threshold.
9846
9847 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
9848
9849         * icall.c: changed the Type of the exception thrown when trying to
9850         invoke a constructor on an abstract class. Part of the fix for bug
9851         #324185.
9852
9853 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9854
9855         * class.c, class-internals.h (mono_method_get_vtable_index): New
9856         function which returns the index into the vtable and properly
9857         handles inflated virtual generic methods.
9858
9859 2008-10-01  Mark Probst  <mark.probst@gmail.com>
9860
9861         * object.c, domain.c, object-internals.h, domain-internals.h:
9862         Generalize IMT thunk machinery to also handle thunks for virtual
9863         generic method invokes.  When a virtual generic method is invoked
9864         more than a number of times we insert it into the thunk so that it
9865         can be called without lookup in unmanaged code.
9866
9867         * generic-sharing.c, class-internals.h: Fetching a
9868         MonoGenericInst* for a method from an (M)RGCTX.
9869
9870 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
9871
9872         * marshal.c (emit_marshal_string): Applied a variant of a patch by
9873         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
9874         marshalling. Fixes #431304.
9875
9876 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
9877
9878         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
9879           handle when ref is specified without In or Out.
9880
9881         Code is contributed under MIT/X11 license.
9882
9883 2008-09-30  Mark Probst  <mark.probst@gmail.com>
9884
9885         * loader.c (mono_get_method_constrained): Don't expand method with
9886         the class's context, because it's already a method of that class.
9887
9888 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
9889
9890         * attach.c : should be correct build fix.
9891
9892 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
9893
9894         * attach.c: Fix the previous change.
9895
9896 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
9897
9898         * attach.c : quick w32 build fix.
9899
9900 2008-09-27  Miguel de Icaza  <miguel@novell.com>
9901
9902         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
9903         crashes MonoDevelop: #430455.
9904
9905 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
9906
9907         * domain-internals.h (struct _MonoDomain): Move most fields used only by
9908         the JIT do MonoJitDomainInfo in ../mini/mini.h.
9909
9910         * domain.c: Remove initialization/cleanup of the removed fields.
9911
9912 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9913
9914         * class.c (mono_class_generic_sharing_enabled): Enable generic
9915         code sharing for PPC.
9916
9917 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
9918
9919         * attach.c : Fixing the Windows builds.
9920
9921         Code is contributed under MIT/X11 license.
9922
9923 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
9924
9925         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
9926         the default generic sharing mode to 'all'.
9927
9928 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9929
9930         * generic-sharing.c, class-internals.h: New function for checking
9931         whether a method needs a static RGCTX invoke wrapper.  A few
9932         funtions moved from mini/generic-sharing.c.
9933
9934         * icall.c: New function used.
9935
9936 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9937
9938         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
9939         Static RGCTX invoke wrapping applies to value type methods, too.
9940
9941         * class.c (mono_class_setup_vtable_general): In generic-shared
9942         value types, wrap methods with a static RGCTX invoke wrapper.
9943
9944 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
9945
9946         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
9947         osx build.
9948
9949 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
9950
9951         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
9952         register a callback which is called when the finalizer thread is woken
9953         up.
9954         (finalizer_thread): Call the callback if it exists.
9955
9956         * attach.h attach.c: New files, implementing the attach mechanism.
9957
9958         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
9959         
9960         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
9961         by the previous change.
9962
9963 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
9964
9965         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
9966         loader.c, marshal.c, metadata-internals.h, metadata.c,
9967         method-builder.c, object.c, reflection.c: introduced specific functions
9968         to allocate from the domain and image mempools and cleaned up most of
9969         the code to use them (still missing a few in reflection.c).
9970         Keep the loader bytes counter updated.
9971
9972 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
9973
9974         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
9975         loader-related counters.
9976
9977 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
9978
9979         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
9980         added more MS-compatible counters.
9981
9982 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
9983
9984         * class.c (mono_class_setup_fields): Call setup_fields before accessing
9985         class->blittable. Fixes #428217.
9986
9987 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
9988
9989         * reflection.c (mono_image_get_field_on_inst_token): Call 
9990         field_encode_signature () since that handles custom modifiers too.
9991         Fixes #424663.
9992
9993 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
9994
9995         * reflection.c (add_custom_modifiers): New helper function to merge custom
9996         modifiers stored in objects to a MonoType.
9997         (fieldref_encode_signature): Encode custom modifiers.
9998         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
9999         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
10000
10001 2008-09-19  Kornél Pál  <kornelpal@gmail.com>
10002
10003         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
10004         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
10005         64-bit IL only images because imports are not resolved for IL only images.
10006         Special thanks to Bill Holmes for finding this bug and testing the patch.
10007         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
10008
10009         Contributed under MIT/X11 license.
10010
10011 2008-09-19  Miguel de Icaza  <miguel@novell.com>
10012
10013         * mono-config.c (dllmap_start): Add support for the bits keyword
10014         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
10015
10016 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10017
10018         * reflection.c (inflate_mono_method): When the class the method is
10019         to be inflated for is itself not inflated, just return the method.
10020
10021 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
10022
10023         * mono-perfcounters.c: use more user friendly process instance names.
10024
10025 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
10026
10027         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
10028           handle "[in] ref" and "[in][out] ref" cases.
10029
10030         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
10031           to mono_mb_create_method.  This was causing problems calling native to
10032           managed passing Variants by value.
10033
10034         Code is contributed under MIT/X11 license.
10035
10036 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
10037
10038         * class.c (can_access_internals): Call mono_assembly_load_friends ()
10039         before accessing the friend_assembly_names field.
10040
10041         * assembly.c (mono_assembly_load_friends): Make this callable multiple
10042         times.
10043         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
10044         called lazily when it is needed.
10045
10046         * metadata-internals.h (struct _MonoAssembly): Add 
10047         'friend_assembly_names_inited' flag.
10048
10049 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
10050
10051         * mono-perfcounters-def.h: fix the types of a few counters.
10052         * mono-perfcounters.c: implemented the instance names getter
10053         and a few bugfixes.
10054
10055 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
10056
10057         * culture-info-table.h : regenerated.
10058
10059 2008-09-17  Robert Jordan  <robertj@gmx.net>
10060
10061         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
10062         context bound objects. Fixes #415577.
10063
10064         Code is contributed under MIT/X11 license.
10065
10066 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
10067
10068         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
10069         implementation (bug #423582).
10070
10071 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
10072
10073         * object.c (mono_object_get_virtual_method): Handle the case method->slot
10074         is not set. Fixes #426309.
10075
10076 2008-09-16  Jb Evain  <jbevain@novell.com>
10077
10078         * class.c (mono_class_from_name): fix the exported type look up
10079         when the type is defined in a referenced assembly.
10080
10081 2008-09-16  Jb Evain  <jbevain@novell.com>
10082
10083         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
10084         increment the next index counter on each iteration to make that work
10085         for more than one type forwarder. Unmanaged part to fix #422929.
10086
10087 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10088
10089         * object-internals.h: enum ComInterfaceType in
10090         MonoInterfaceTypeAttribute is guint32, not guint16.
10091
10092 2008-09-12  Mark Probst  <mark.probst@gmail.com>
10093
10094         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
10095         writing code.
10096
10097 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10098
10099         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
10100         not gboolean.
10101
10102 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10103
10104         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
10105         Endianness fixes for MonoSymbolFileOffsetTable.
10106
10107 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
10108
10109         * process.c (complete_path) : Removing quotes from the 
10110           input path.  The glib file routines do not handle file paths
10111           that have quotes around them.
10112
10113         Code is contributed under MIT/X11 license.
10114
10115 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
10116
10117         * socket-io.h : Adding a comment to provide locations where 
10118           changes to MonoSocketAsyncResult need to be synced.
10119
10120         Code is contributed under MIT/X11 license.
10121
10122 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
10123
10124         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
10125         parameters as well. Fixes #425001.
10126
10127 2008-09-08  Miguel de Icaza  <miguel@novell.com>
10128
10129         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
10130         windows build.
10131
10132 2008-09-07  Miguel de Icaza  <miguel@novell.com>
10133
10134         * console-io.c: Add support for tracking the window size if it
10135         changes.
10136
10137         The setup is very simple: the TtySetup function will now return a
10138         pointer to a location in memory that tracks the current console
10139         size.  The managed code checks its current value every time its
10140         queried against the last value set, and updates accordingly.
10141
10142         With this setup we can work with multiple consoles, and we do not
10143         require to poke into managed code from a signal handler.
10144
10145         Additionally, the environment for COLUMNS and LINES is now handled
10146         in unmanaged code.
10147
10148         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
10149
10150 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10151
10152         * marshal.c (mono_type_native_stack_size): Treat
10153         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
10154
10155 2008-09-04  Jb Evain  <jbevain@novell.com>
10156
10157         * class.c (mono_class_is_assignable_from): fix assignability of nullables
10158         to nullables.
10159
10160 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
10161
10162         * verify.c (verify_type_compatibility_full): Revert change
10163         to allow converting a native int to unmanaged pointer be verifiable
10164         under non-strict mode.
10165         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
10166
10167         * verify.c: Added some TODOs.
10168
10169 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
10170
10171         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
10172           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
10173           Changed to use GlobalAlloc for the memory returned on Windows platforms.
10174
10175         Code is contributed under MIT/X11 license.
10176
10177 2008-09-02  Jb Evain  <jbevain@novell.com>
10178
10179         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
10180
10181 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
10182
10183         reflection.c (typebuilder_setup_fields): Handle classes with
10184         explicit size.
10185
10186 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
10187
10188         class.c (mono_class_setup_events): Add memory barrier due to
10189         double checked locking.
10190         
10191         class.c (mono_class_setup_properties): Same.
10192
10193 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10194
10195         * class.c (mono_class_is_assignable_from): Fix the build.
10196         
10197         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
10198         before accessing klass->interface_bitmap. Fixes #421744.
10199
10200 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10201
10202         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
10203         the runtime into no-exec mode, useful when running the AOT compiler.
10204
10205         * appdomain.c gc.c object.c: Avoid executing managed code when running
10206         in no-exec mode.
10207         
10208         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
10209
10210         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
10211         special case when the mono_assembly_loaded () returns NULL because the 
10212         search hook is not installed.
10213
10214 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10215
10216         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
10217         crashes in bstr marshalling on linux.
10218
10219 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10220
10221         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
10222         with more than one parameter.
10223
10224 2008-08-24  Miguel de Icaza  <miguel@novell.com>
10225
10226         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
10227         start/stop flow control as well when turning off ICANON (allows
10228         C-s and C-q to be read by Console.ReadKey).
10229
10230 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10231
10232         * class.c (mono_class_init): Move the initialization of nested classes
10233         into mono_class_get_nested_types (). Fixes #418433.
10234
10235         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
10236         flag.
10237
10238         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
10239         iterating tough the nested classes of a class.
10240
10241 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10242
10243         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
10244         on arm.
10245
10246 2008-08-22  Miguel de Icaza  <miguel@novell.com>
10247
10248         * console-io.c (sigcont_handler): Support signal chaining for
10249         SIGCONT.
10250
10251         (console_set_signal_handlers): Use best practices with sigaction,
10252         clear the structure before using it. 
10253
10254 2008-08-22  Robert Jordan  <robertj@gmx.net>
10255
10256         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
10257         Fix the Windows build.
10258
10259 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10260
10261         * class.c (mono_class_generic_sharing_enabled): Make the default
10262         sharing mode 'corlib'.
10263
10264 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10265
10266         * console-io.c (console_set_signal_handlers): Fix a warning.
10267
10268         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
10269         method normally, the JIT will take care of avoiding recursion.
10270
10271 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10272
10273         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
10274
10275         Code is contributed under MIT/X11 license.
10276
10277 2008-08-20  Miguel de Icaza  <miguel@novell.com>
10278
10279         * console-io.c (sigcont_handler): We need to restore the entire
10280         termios state, not only the original settings, as things like echo
10281         can be controlled after this (Booish exposes this issue with its
10282         own ReadLine implementation).
10283
10284         Additionally, we need to set the terminal back into keypad_xmit
10285         mode.
10286         
10287         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
10288         string as a paramter as well.   Otherwise we get different
10289         keyboard sequences.
10290
10291 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10292
10293         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
10294         delegates with byref out parameter passing. Fixes #351520.
10295
10296         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
10297         a generic context.
10298         (mono_type_get_desc): Add the type arguments for GENERICINST.
10299         (mono_method_full_name): Stringify the class name using mono_type_full_name
10300         so it picks up generic arguments.
10301
10302 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
10303
10304         * console-io.c: Removed debug output.
10305
10306 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
10307
10308         reflection.c (mono_reflection_create_runtime_class): Alloc
10309         the nested classes linked list using the dynamic image mempool.
10310         Fixes leak in corlib compilation.
10311
10312 2008-08-19  Miguel de Icaza  <miguel@novell.com>
10313
10314         * console-io.c: Fix incredibly annoying behavior on the console
10315         after resuming execution after control-z.   This affected every
10316         console application.
10317
10318 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
10319
10320         * mempool-internals.h: Header for mono private mempool functions. The first
10321         two function are for allocating glib linked lists using pools.
10322
10323         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
10324
10325         * Makefile.am: Added mempool-internals.h.
10326
10327 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10328
10329         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
10330         (mono_domain_free): Ditto.
10331
10332         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
10333         be used by the JIT to store its domain-specific information, instead of putting
10334         it directly into MonoDomain.
10335
10336         * domain.c (mono_install_create_domain_hook): New helper function to install
10337         a hook which initializes domain->runtime_info.
10338
10339         * domain.c (mono_install_free_domain_hook): Ditto.
10340         
10341 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10342
10343         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
10344         asserting if the ares parameter is null.
10345
10346         * mono-perfcounters.c: Fix warnings.
10347
10348         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
10349         is not needed, don't check for interruptions either.
10350         (mono_marshal_get_delegate_end_invoke): Ditto.
10351
10352 2008-08-15  Marek Habersack  <mhabersack@novell.com>
10353
10354         * mono-perfcounters.c (predef_readonly_counter): added support for
10355         reading the ASP.NET Requests Queued counter from another process.
10356
10357 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10358
10359         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
10360         MonoImage to simplify the AOT code.
10361
10362 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
10363
10364         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
10365         marshalling. Fixes #416078.
10366
10367 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10368         
10369         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
10370         it is set, looking up the icall address is deferred to the JIT, since 
10371         in embedded scenarios, the icall might not be registered in the runtime
10372         doing the AOT compilation. Backported from the 2.0 branch.
10373
10374 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10375
10376         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
10377         Fixes #415621.
10378
10379 2008-08-05  Marek Habersack  <mhabersack@novell.com>
10380
10381         * Makefile.am: added support for cross-compilation.
10382
10383 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
10384
10385         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
10386
10387 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
10388
10389         * mono-perfcounters.c: jitted methods and jitted bytes counters.
10390
10391 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
10392
10393         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
10394         mono-perfcounters.c: performance counters implementation.
10395
10396 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
10397
10398         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
10399         to gpointer, letting the AOT code decide what to store in it.
10400
10401 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
10402
10403         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
10404           mono_class_setup_methods if the methods are not initialized.
10405
10406         Code is contributed under MIT/X11 license.
10407
10408 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10409
10410         * verify.c: Remove some debug code I commited by accident.
10411
10412         * verify.c (mono_method_is_valid_in_context): Change the return value
10413         to make possible to distinguish between invalid and unverifiable.
10414
10415         * verify.c (verifier_load_method): Don't return NULL for unverifiable
10416         methods.
10417
10418 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10419
10420         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
10421         constraints. Fixes regression in gtest-253.
10422
10423 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10424
10425         * verify.c (mono_verifier_verify_class): Don't allow generic types
10426         with explicit layout.
10427
10428         * verify.c (mono_method_verify): Check locals and argument types.
10429
10430 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
10431
10432         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
10433         wait if the thread is in StopRequested state.
10434
10435         * class.c (mono_class_from_name): Refactor the module searching code into
10436         a separate function so it can be reused in the AOT case too.
10437
10438 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
10439
10440         * verify.c (mono_type_is_valid_in_context): Improve the error message.
10441         Check both the type and it's generic type definition for loader errors.
10442         
10443         * verify.c (mono_method_is_valid_in_context): Don't generate another
10444         error when a type errors occur, this leads to the wrong exception been
10445         thrown.
10446
10447 2008-07-28  Dick Porter  <dick@ximian.com>
10448
10449         * icall-def.h
10450         * process.c
10451         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
10452         New internal calls to duplicate and close a process handle.
10453
10454 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
10455
10456         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
10457
10458 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10459
10460         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
10461
10462 2008-07-27  Robert Jordan  <robertj@gmx.net>
10463
10464         * class.c (mono_class_init): Don't compute class.has_finalize for
10465         valuetypes. Fixes #412477.
10466
10467 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
10468
10469         * verify.c: Implement constraint equivalence checking.
10470         This is required when a generic parameter is used as
10471         argument to a constrained one.
10472
10473         Fixes #410637.
10474
10475 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10476
10477         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10478
10479         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
10480
10481         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
10482         synch with managed object layout.
10483
10484 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
10485
10486         * verify.c (do_branch_op): Handle valuetypes and generic
10487         arguments properly.
10488
10489         * verify.c (do_cmp_op): Same.
10490
10491         Fixes #410383.
10492
10493 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10494
10495         * generic-sharing.c: Fix memory leaks.
10496
10497         * class.c, class-internals.h: Make
10498         mono_class_inflate_generic_type_with_mempool() non-static.
10499
10500 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
10501
10502         * pedump.c (dump_verify_info): Dump full class name.
10503
10504 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10505
10506         * generic-sharing.c: Removed some old code that didn't do anything.
10507
10508 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
10509         * profiler.c: Added runtime_initialized_event,
10510         mono_profiler_install_runtime_initialized and
10511         mono_profiler_runtime_initialized. This new hook tells the profiler
10512         when the runtime is sufficiently initialized to be able to call
10513         mono_thread_attach on the root appdomain.
10514         * profiler.h, profiler-private.h: Likewise.
10515
10516 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
10517
10518         * verify.c (do_cast): Do boxing for generic arguments as well.
10519
10520         * class.c (is_nesting_type): Drop generic instantiations before
10521         checking for nesting.
10522
10523         * class.c (can_access_instantiation): Allow access to generic
10524         arguments.
10525
10526 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
10527
10528         * verify.c (verify_class_for_overlapping_reference_fields):
10529         On some cases, the field size might be zero, guard against that.
10530         Fix the explicit layout check to work as expected.
10531
10532 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
10533
10534         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
10535         mono_thread_resume () during shutdown, since the thread we want to abort
10536         might be suspended.
10537
10538 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
10539
10540         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
10541         warning.
10542
10543         * debug-mono-symfile.c: Fix a warning.
10544
10545         * mono-perfcounters.c (get_cpu_times): Fix a warning.
10546
10547         * object.c (mono_class_vtable): Check if exception_type is set, and return
10548         NULL as defined by the function comments.
10549
10550 2008-07-22  Mark Probst  <mark.probst@gmail.com>
10551
10552         * mempool.c: Use malloc for every single mempool allocation if the
10553         configure option is set.  This makes it easier to track mempool
10554         allocations with tools like Valgrind.
10555
10556 2008-07-22  Jb Evain  <jbevain@novell.com>
10557
10558         * reflection.c (create_dynamic_mono_image): emit the same
10559         metadata version that SL2 does when creating a SL2 image.
10560
10561 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
10562
10563         * icall-def.h:
10564         * icall.c: New icall System.Enum:get_hashcode. This function
10565         avoids the overhead of boxing the enum to the underlying type.
10566
10567 2008-07-21  Mark Probst  <mark.probst@gmail.com>
10568
10569         * reflection.c (mono_method_get_object): Don't let static RGCTX
10570         invoke wrappers get into MonoReflectionMethods.
10571
10572 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
10573
10574         * object-internals.h:
10575         * object.c: New mono_runtime_class_init_full function
10576         that makes throwing the exception optinal.
10577
10578         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
10579         for the case where the exception object is supplied.
10580
10581 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
10582
10583         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
10584         old ld versions.
10585
10586         Contributed under MIT/X11 license.
10587
10588 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
10589
10590         * string-icalls.c (ves_icall_System_String_InternalSplit):
10591         Optimize array allocation by caching the MonoClass of the
10592         array type.
10593
10594         * icall.c (ves_icall_Type_GetMethodsByName): Same.
10595
10596         * reflection.c (mono_param_get_objects): Same.
10597
10598 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
10599
10600         * icall-def.h:
10601         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
10602         It inflates the given type using the class context.
10603
10604 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
10605
10606         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
10607         the vtable if it already exists.
10608
10609         * object-internals.h: Add mono_class_try_get_vtable as part of the
10610         internal API.
10611
10612         * reflection.c (mono_type_get_object): Use the MonoObject from the
10613         vtable when possible. Reduces locking contention on reflection heavy
10614         code.
10615
10616 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
10617
10618         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
10619         g_bit_nth_msf () since that macro is not implemented in eglib.
10620
10621 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
10622
10623         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
10624         on platforms which do not support it.
10625
10626 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
10627
10628         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
10629
10630 2008-07-11  Martin Baulig  <martin@ximian.com>
10631
10632         * mono-debug-debugger.h
10633         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
10634
10635         * mono-debug-debugger.c
10636         (_mono_debugger_interruption_request): New global volatile variable.
10637         (mono_debugger_check_interruption): New public function.
10638
10639         * threads.c
10640         (mono_thread_current_check_pending_interrupt): Call
10641         mono_debugger_check_interruption().
10642         (mono_thread_interruption_checkpoint_request): Likewise.
10643
10644 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10645
10646         * verify.c: Add more type checks for loaded types. Verify the result
10647         handle from ldtoken.
10648
10649 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10650
10651         * loader.c (field_from_memberref): Don't crash if the field
10652         wasn't found.
10653
10654 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10655
10656         * verify.c: Verify if type and method instantiations
10657         don't have invalid VAR or MVAR arguments.
10658
10659 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10660
10661         * verify.c: Fix double free of function pointer list.
10662
10663 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10664
10665         * object.c (mono_string_to_utf8): Comment the new code as it
10666         breaks under eglib.
10667
10668 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
10669
10670         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
10671
10672 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
10673
10674         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
10675           is not throw too many times.
10676
10677         Code is contributed under MIT/X11 license.
10678
10679 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
10680
10681         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
10682         debugging is turned off.
10683
10684 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
10685
10686         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
10687
10688 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10689
10690         * class-internals.h, class.c: Added new generic sharing option:
10691         Share only stuff in System.Collections.Generic, which is now the
10692         default.
10693
10694 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10695
10696         * generic-sharing.c, class-internals.h: New function for getting a
10697         generic method in a generic class given the corresponding method
10698         for a different instantiation of the class.  Partly refactored
10699         from mini-trampolines.c.
10700
10701         * class.c: Make sure generic methods have a class_inst if they are
10702         part of a generic class.
10703
10704         * metadata.c (mono_type_stack_size_internal): Handle type
10705         variables.
10706
10707 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10708
10709         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
10710         Signifies whether information on the this/vtable/mrgctx variable
10711         is available.
10712
10713 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10714
10715         * object.c, object-internals.h, icall.c: New function
10716         mono_delegate_ctor_with_method(), which does the same as
10717         mono_delegate_ctor(), but takes an explicit method argument
10718         instead of taking the method from the jit info.
10719
10720         * marshal.c: When creating a delegate with an inflated method take
10721         the "this" argument as the target class for the castclass.
10722
10723 2008-07-03  Mark Probst  <mark.probst@gmail.com>
10724
10725         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
10726         mono_jit_info_table_find() to perform very badly in some cases.
10727
10728 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
10729
10730         * icall.c (type_from_typename): Handle 'string'.
10731
10732         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
10733         wrappers into the wrapper_hash, since the key is not a MonoMethod.
10734
10735 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
10736
10737         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
10738
10739         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
10740         number of available managed allocator types.
10741
10742         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
10743         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
10744
10745 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
10746
10747         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
10748         which is a low level lock protecting just the 'jit_code_hash' hash table.
10749
10750         * domain.c: Initialize+cleanup jit_code_hash_lock.
10751         
10752 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
10753
10754         * coree.c (mono_load_coree): Set coree_module_handle global variable only
10755         after initialization.
10756
10757         * coree.h: Make MonoFixupExe internal.
10758
10759         Contributed under MIT/X11 license.
10760
10761 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
10762
10763         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
10764         because that is platform independent. Check NumberOfRvaAndSizes in PE32
10765         as well.
10766         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
10767         image being loaded is a CLI image and _CorValidateImage gets called.
10768
10769         * coree.h: Add MonoLoadImage.
10770
10771         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
10772         instead of LoadLibrary.
10773
10774         Contributed under MIT/X11 license.
10775
10776 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
10777
10778         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
10779         for any primitive type.
10780
10781 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
10782
10783         * object.c (mono_array_new_specific): Optimize this and the other allocation
10784         functions a bit.
10785         
10786         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
10787         domains too if mono_dont_free_domains is set.
10788
10789         * domain-internals.h (mono_dont_free_domains): New internal option controlling
10790         whenever to free appdomain data after it has been unloaded.
10791
10792         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
10793         
10794 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
10795
10796         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
10797         (mono_method_get_equivalent_method): Fix a warning.
10798
10799         * object.c (mono_message_init): Avoid looking up array types for each call.
10800
10801 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
10802
10803         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
10804         call.
10805
10806         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
10807         even more.
10808
10809         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
10810         each iteration.
10811
10812         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
10813         fields of an enum.
10814
10815 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
10816
10817         * object.c (mono_value_box): Fix boxing of nullables.
10818
10819 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
10820
10821         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
10822         mono_module_handle that is defined by the linker; no initialization required.
10823         * coree.h: Remove mono_module_handle, add __ImageBase, update
10824         mono_image_open_from_module_handle.
10825         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
10826         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
10827         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
10828         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
10829         to 4 GB away from image base address. IA64 version is not tested but was very
10830         easy to implement and should work if we ever need it.
10831         * domain.c (mono_init_internal): Avoid system error message boxes.
10832         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
10833         with has_entry_point. Handle do_mono_image_load fauilre correctly.
10834         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
10835         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
10836         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
10837
10838         Contributed under MIT/X11 license.
10839
10840 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
10841
10842         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
10843         as part of the private mono API.
10844         
10845         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
10846         Do proper argument checking for methods that belong to generic classes.
10847         Do proper type resolution for GMFH/2.
10848         Fixes #377324.
10849         
10850 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
10851
10852         * verify.c (do_switch): Fix a memory corruption bug with
10853         the jump index is out of bound.
10854
10855 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
10856
10857         * verify.c: Disable debug code.
10858
10859 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
10860
10861         * reflection.c (mono_image_get_methodbuilder_token): Use
10862         mono_image_get_methodspec_token_for_generic_method_definition
10863         instead of mono_image_get_memberref_token. We cache more memberef
10864         entries now.
10865
10866 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
10867
10868         * verify.c: Inflate exception clause types.
10869         Fixes #402606.
10870         
10871 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
10872
10873         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
10874         name.
10875
10876         * reflection.c (mono_image_get_ctorbuilder_token): Same.
10877
10878         * reflection.c (mono_image_create_method_token): Same.
10879
10880 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
10881
10882         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
10883         It does the same as mono_image_get_methodref_token but works on
10884         MethodBuilder.
10885
10886         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
10887         and always generate a methodspec. This follows the old behavior and fixes
10888         the regressions in System.Core. 
10889
10890 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
10891
10892         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
10893         don't event mono_class_get () succeeds. Fixes #402182.
10894
10895 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
10896
10897         * metadata-internals.h: Added MonoDynamicImage::methodspec
10898         hashtable to store methodspec tokens created for MethodBuilders.
10899
10900         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
10901         MethodBuilders as open instantiations if a methodspec was requested.
10902
10903         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
10904
10905         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
10906
10907         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
10908
10909         Fixes bug #349190.
10910
10911 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
10912
10913         * loader.c (method_from_methodspec): Avoid crashing if the
10914         method lookup fails.
10915
10916 2008-06-20  Dick Porter  <dick@ximian.com>
10917
10918         * socket-io.c (get_socket_assembly): Cope with Moonlight network
10919         classes being in a different assembly.  Fixes bug 399184.
10920
10921 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
10922
10923         * loader.c (mono_loader_init): Make this callable multiple times.
10924         (mono_dllmap_insert): Call mono_loader_init () so this works even before
10925         the runtime is initialized. Fixes #401755.
10926
10927 2008-06-19  Dick Porter  <dick@ximian.com>
10928
10929         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
10930         Fixes bug 349688.
10931
10932 2008-06-19  Dick Porter  <dick@ximian.com>
10933
10934         * socket-io.c:
10935         * icall-def.h: Implement Socket generic Send() and Receive()
10936         methods.  Fixes bug 395168.
10937
10938 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
10939
10940         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
10941
10942         Contributed under MIT/X11 license.
10943
10944 2008-06-18  Martin Baulig  <martin@ximian.com>
10945
10946         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
10947         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
10948         set to 80.0.  The debugger <-> runtime interface is now frozen as
10949         well.   
10950
10951         * mono-debug.c
10952         (mono_debug_debugger_version): Bump to 4.
10953
10954 2008-06-18  Martin Baulig  <martin@ximian.com>
10955
10956         * debug-mono-symfile.c
10957         (load_symfile): Don't check the minor version.
10958
10959         * debug-mono-symfile.h: Bump the version number to 50.0.
10960
10961 2008-06-18  Martin Baulig  <martin@ximian.com>
10962
10963         * debug-mono-symfile.c
10964         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
10965         minimum required version.
10966
10967 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
10968
10969         * reflection.c (mono_custom_attrs_from_property): Fix support for
10970         retriveving cattrs of dynamic inflated generic types.
10971
10972         * reflection.c (mono_custom_attrs_from_event): Same.
10973
10974         * reflection.c (mono_custom_attrs_from_field): Same;
10975
10976         * reflection.c (typebuilder_setup_events): Same cattrs of events.
10977
10978         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
10979         Moved to metadata.c.
10980
10981         * metadata.c: New functions to retrive the equivalent field, event
10982         of property from the generic type definition.
10983
10984         * metadata-internals.h: Added new functions from metadata.c.
10985
10986 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
10987
10988         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
10989         to cached in a mempool is used.
10990
10991         * metadata.c (free_generic_class): In some situations field generic_info type
10992         is not properly dup'ed and leads to double free'ing.
10993
10994         Fixes #400643.
10995
10996 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10997
10998         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
10999         this arguments (will be needed later for generic methods).
11000         Collect stats.
11001
11002 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11003
11004         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
11005         Create a static RGCTX invoke wrapper for methods which require it.
11006
11007 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11008
11009         * object.c, class-internals.h: New function for checking whether
11010         an individual field is special static.
11011
11012 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
11013
11014         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
11015         linear search since the table is sorted.
11016
11017         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
11018         Fixes #324180.
11019
11020 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
11021
11022         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
11023         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
11024
11025         * gc.c (mono_domain_finalize): Allow an infinite timeout.
11026
11027         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
11028         
11029         * threads.c (mono_thread_request_interruption): Get rid of locking, use
11030         InterlockedCompareExchange to query and modify 
11031         thread->interruption_requested.
11032
11033         * object-internals.h (struct _MonoThread): Change interruption_requested
11034         to a gint32 so it can be modified by atomic operations. Add 
11035         'critical_region_level' from the managed side, change small_id to a guint32,
11036         add new set of 'unused' fields.
11037
11038         * appdomain.c: Bump corlib version.
11039
11040 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11041
11042         * class.c (mono_class_from_name): Search modules as well. Fixes
11043         #322332.
11044
11045 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11046
11047         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
11048         templates.  Templates are generalized with an additional type_argc
11049         argument.  RGCTX templates have type_argc==0, MRGCTX templates
11050         have type_argc>0.
11051
11052         * domain-internals.h, domain.c: New hash table for looking up
11053         MRGCTXs.
11054
11055         * metadata.c, metadata-internals.h: Rename hash and equal
11056         functions for MonoGenericInst's and make them public.
11057
11058         * class-internals.h: New data structures for the MRGCTX.  Macros
11059         for distinguishing slots in the RGCTX and the MRGCTX.
11060
11061 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11062
11063         * object.c (mono_method_get_imt_slot): Put the same methods of
11064         different instantiations of the same generic interface in the same
11065         IMT slots, to make generic sharing simpler.
11066
11067 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11068
11069         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
11070
11071         * metadata.c (mono_metadata_field_info_with_mempool): Added.
11072         This function works just like mono_metadata_field_info, but
11073         accept a mempool as argument to be used allocating memory.
11074
11075         * marshal.c (mono_marshal_load_type_info): Use new function
11076         to load marshal data into image mempool.
11077
11078 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11079
11080         * class.c (mono_class_inflate_generic_type_with_mempool):
11081         This function allows to inflate a generic type using
11082         a mempool.
11083
11084         * class.c (inflate_generic_type): Take a mempool as argument
11085         and use it to do type dup'ing.
11086
11087         * class.c (mono_class_setup_fields): Field type for generic
11088         generic classes are allocated from the image mempool.
11089
11090         * metadata.c (free_generic_class): Inflated field type is
11091         now allocated in the image mempool.
11092
11093 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11094
11095         * threads.c (thread_cleanup): Free MonoThread::name.
11096
11097 2008-06-12  Marek Habersack  <mhabersack@novell.com>
11098
11099         * appdomain.c (ensure_directory_exists): avoid unnecessary
11100         mkdir(2) calls when the shadow directory already exists.
11101         (mono_make_shadow_copy): copy also satellite assemblies from the
11102         private bin directories.
11103
11104 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
11105
11106         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
11107         
11108         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
11109         a page boundary. Fixes #396219.
11110
11111 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11112
11113         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
11114         due to double-checked locking.
11115
11116 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11117
11118         * assembly.c (build_assembly_name): Release memory on failure.
11119
11120         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
11121
11122 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11123
11124         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
11125         memory on failure.
11126
11127 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11128
11129         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
11130         memory on failure.
11131
11132 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11133
11134         * loader.c (field_from_memberref): Check if field signature type is equal
11135         to the non-inflated type of the field. Fixes #398980.
11136
11137 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
11138
11139         * assembly.c (mono_assembly_load_from_full): Call 
11140         mono_assembly_load_friends () outside the assemblies lock, since it can
11141         acquire the loader lock. Fixes #323696.
11142
11143         * reflection.c (resolve_object): Inflate the inst with the context for
11144         FieldOnTypeBuilderInst. Fixes #399010.
11145
11146 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11147
11148         * reflection.c (mono_image_get_field_on_inst_token): Don't
11149         inflate the field to encode it's signature. If it's a
11150         VAR or MVAR it should stay that way in the signature.
11151         Fixes #399047.
11152
11153 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11154
11155         * reflection.c (resolve_object): Release memory of inflated types.
11156
11157 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11158
11159         * loader.c (mono_method_get_signature_full): Remove assert about
11160         loading a methodspec to a generic method. We have such methods, such as
11161         System.Threading.Interlocked::CompareExchange<T>.
11162         This assert was removed since it crashes the verifier when it checks
11163         methods calling CompareExchange<T>.
11164
11165 2008-06-10  Marek Safar  <marek.safar@gmail.com>
11166
11167         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
11168         of Type array and not MonoType.
11169
11170 2008-06-10  Marek Habersack  <mhabersack@novell.com>
11171
11172         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
11173         <lupus@ximian.com>
11174
11175 2008-06-10  Martin Baulig  <martin@ximian.com>
11176
11177         * debug-mono-symfile.h
11178         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
11179         changes to the file format, but we were generating incorrect
11180         source file indices in the line number table due to a bug, which
11181         made backtraces report an incorrect source file.
11182
11183 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11184
11185         * mono-debug.c: Moved mono_debug_free_method_jit_info from
11186         mini/debug-mini.c to here.
11187
11188         * mono-debug.c (il_offset_from_address): Free memory from find_method.
11189
11190         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
11191         use it to release structs returned by mono_debug_find_method.
11192
11193 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
11194
11195         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
11196         since it needs to set method->slot for all interface methods.
11197
11198 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11199
11200         * class-internals.h: Forgot to add.
11201
11202 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11203
11204         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
11205
11206         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
11207         Lookup the custom attributes from property_hash.
11208
11209         * reflection.c (mono_save_custom_attrs): Save the custom attributes
11210         in property_hash. Allocate all data using the image mempool.
11211
11212         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
11213         for dynamic_custom_attrs to checks if the image is dynamic.
11214
11215 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11216
11217         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
11218         assemblies array.
11219         
11220         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
11221         runtime functions while holding the domain assemblies lock.
11222
11223 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11224
11225         * verify.c: Reapplied the last bit of the reverted changes.
11226
11227 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11228
11229         * verify.c: Reapplied more of the reverted changes.
11230
11231 2008-06-09  Martin Baulig  <martin@ximian.com>
11232
11233         * debug-mono-symfile.c (load_symfile): Check the major version
11234         first; if it's wrong, don't print the minor version in the error message.
11235
11236 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11237
11238         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
11239         lock instead of the domain lock to avoid deadlocks, since the thread might
11240         already hold the loader lock.
11241
11242         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
11243         (mono_thread_attach): Ditto.
11244
11245         * monitor.c: Use a TLS variable for holding the current thread id instead
11246         of calling pthread_self ().
11247         (mono_monitor_init_tls): New internal function to initialize the TLS
11248         variable.
11249         (mono_monitor_try_enter_internal): Put the owner == id check after the
11250         owner == 0 check.
11251
11252         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
11253         missed optimizations when using gcc-4.3.
11254
11255 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
11256
11257         * reflection.c (mono_dynamic_image_free): Free the memory
11258         used by MonoGenericParam in MonoDynamicImage::gen_param.
11259
11260         * reflection.c (mono_reflection_setup_generic_class): Allocate
11261         container from mempool.
11262
11263         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
11264         container from mempool.
11265
11266 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11267
11268         * threads.c (mono_set_pending_exception): New internal function to set the
11269         pending exception of the current thread.
11270         (mono_thread_get_and_clear_pending_exception): Check for 
11271         thread->pending_exception as well.
11272
11273         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
11274
11275         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
11276         it can trigger a collection.
11277
11278 2008-06-06  Martin Baulig  <martin@ximian.com>
11279
11280         Merged the `debugger-kahalo' branch.
11281
11282         * mono-debug.h
11283         (MONO_DEBUGGER_VERSION): Bumped to 72.
11284
11285         * debug-mono-symfile.h
11286         (MonoSymbolFileMethodIndexEntry): Removed.
11287         (MonoSymbolFileMethodEntry): New public typedef.
11288         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
11289         (MonoSymbolFileSourceEntry): Remove everything except `index' and
11290         `data_offset'.
11291         (MonoSymbolFileMethodEntry): Removed.
11292         (MonoSymbolFileLexicalBlockEntry): Removed.
11293         (MonoSymbolFileLineNumberEntry): Removed.
11294         (MonoDebugLexicalBlockEntry): Removed.
11295         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
11296         removed `num_il_offsets' and `il_offsets'.
11297         (MonoSymbolFile): Replace `version' with `major_version' and
11298         `minor_version'.
11299         (MONO_SYMBOL_FILE_VERSION): Replace with
11300         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
11301         `MONO_SYMBOL_FILE_MINOR_VERSION'.
11302
11303         * debug-mono-symfile.c
11304         (mono_debug_symfile_lookup_location): Add support for the new line
11305         number table format.
11306
11307 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11308
11309         * metadata.c (free_generic_class): Release the inflated
11310         MonoClass of dynamic generic classes if it's not a generic
11311         type definition.
11312
11313 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11314
11315         * verify.c: Reapplied more of the reverted changes.
11316
11317 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11318
11319         * reflection.c (lookup_custom_attr): Clean the cached flag or
11320         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
11321         for SRE types.
11322
11323 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11324
11325         * verify.c: Reapplied a small part of the reverted changes.
11326
11327 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11328
11329         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
11330
11331         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
11332         previously in managed code.
11333         (mono_monitor_exit): Ditto.
11334         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
11335
11336         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
11337         the managed definition.
11338
11339 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
11340
11341         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
11342
11343 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11344
11345         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
11346         
11347         * monitor.c: Add some micro optimizations.
11348
11349         * icall.c (type_from_typename): Handle 'bool'.
11350
11351 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
11352
11353         * verify.c: Implement constructor verification per P III 1.8.1.4.
11354         Fixes #396716.
11355
11356 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11357
11358         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
11359         holding the assemblies lock here too.
11360
11361 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11362
11363         * verify.c: Kill stack_top function.
11364
11365 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11366
11367         * verify.c: Kill stack_get function.
11368
11369 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11370
11371         * verify.c (mono_method_verify): Last change broke the build. Fixed.
11372
11373 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11374
11375         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
11376         more reliable.
11377
11378         * verify.c (mono_method_verify): Inflate params and locals to avoid
11379         mismatch when checking for compatibility.
11380
11381 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
11382
11383         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
11384         Length prefix should be size in bytes. Fix bug #339530.
11385         
11386         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
11387         Length prefix should be size in bytes. Fix bug #339530.
11388
11389         Code is contributed under MIT/X11 license.
11390
11391 2008-06-05  Bill Holmes <billholmes54@gmail.com>
11392
11393         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
11394
11395         Contributed under MIT/X11 license.
11396
11397 2008-06-05  Martin Baulig  <martin@ximian.com>
11398
11399         * mono-debug-debugger.c
11400         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
11401
11402 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
11403
11404         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
11405         while holding the assemblies lock to prevent deadlocks. Handle the case
11406         where the search hook returns NULL but the assembly was still loaded.
11407         Fixes #323696.
11408
11409         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
11410         modify domain state.
11411
11412 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
11413
11414         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
11415         * Makefile.am (pedump_LDADD): Post-process object files and
11416         add dtrace-generated object file, if necessary.
11417
11418         Code is contributed under MIT/X11 license.
11419
11420 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11421
11422         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
11423
11424 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11425
11426         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
11427
11428 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11429
11430         * threads.c: Try to free everything from the delayed free table
11431         when shutting down threads, and set the variable to NULL after the
11432         table is freed so that calling
11433         mono_thread_hazardous_try_free_all() when shutting down the root
11434         domain doesn't crash.
11435
11436 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11437
11438         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
11439         the caller if resulting type was inflated.
11440
11441         * class.c (mono_class_create_from_typespec): Free the MonoType if it
11442         was inflated.
11443
11444         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
11445
11446
11447 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
11448
11449         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
11450         class library tests.
11451
11452         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
11453         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
11454         #396989.
11455
11456 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11457
11458         * domain.c, domain-internals.h: The JIT infos are now freed by the
11459         JIT info table code.  They are freed immediately if there only a
11460         single JIT info table in circulation.  If there is more, the free
11461         is delayed via a queue.
11462
11463         * threads.c, threads-types.h: New hazard pointer function for
11464         freeing all freeable delayed items in one sitting.
11465
11466 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11467
11468         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
11469
11470         * reflection.c (typebuilder_setup_properties): Same.
11471
11472         * reflection.c (typebuilder_setup_events): Same.
11473
11474 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11475
11476         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
11477         and use it for allocating memory.
11478
11479         * reflection.c (mono_marshal_spec_from_builder): Same.
11480
11481         * reflection.c: Change code to use new signatures.
11482
11483         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
11484
11485 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11486
11487         * decimal.c (rescale128): Put back one line which was accidently commented
11488         out.
11489         
11490         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
11491         to cause crashes.
11492
11493 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11494
11495         * reflection.c (mono_reflection_generic_class_initialize): Name must
11496         be always malloc'ed so we can free it later on. Do this for field, property
11497         and event.
11498
11499         * metadata.c (free_generic_class): Free field, property and event names.
11500
11501 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11502
11503         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
11504         instead of g_memdup.
11505
11506         * reflection.c (typebuilder_setup_fields): Same.
11507
11508 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11509
11510         * decimal.c (rescale128): Optimize this function a bit more.
11511
11512 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11513
11514         * metadata.c (free_generic_class): Release some memory from
11515         SRE generic classes.
11516
11517 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11518
11519         * reflection.c (mono_image_get_generic_field_token): No reference
11520         to name is kept, free it.
11521
11522         * reflection.c (mono_reflection_generic_class_initialize): Free
11523         more memory of the inflated field.
11524
11525 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11526
11527         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
11528         code.
11529
11530 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
11531
11532         * reflection.c (mono_dynamic_image_free): Release memory used by
11533         MonoDynamicImage::array_methods elements.
11534
11535         * reflection.c (assembly_add_win32_resources): Release memory after
11536         encoding.
11537
11538 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
11539
11540         * decimal.c (log2_32): Use an optimized version for this function too.
11541         
11542         * decimal.c (log2_64): Fix this on 32 bit machines.
11543
11544 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
11545
11546         * class.c (mono_dup_array_type): Implement allocation using a mempool.
11547
11548         * class.c (mono_metadata_signature_deep_dup): Same.
11549
11550         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
11551         a mempool.
11552
11553         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
11554
11555         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
11556
11557         * metadata-internals.h: Added mono_metadata_signature_dup_full.
11558
11559         * class-internals.h: Update signatures to take a MonoMemPool.
11560
11561 2008-06-02  Dick Porter  <dick@ximian.com>
11562
11563         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
11564         * icall-def.h: Add
11565         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
11566         FormatMessage API to get the error text.  Fixes bug 321827.
11567
11568 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
11569
11570         * decimal.c: Add some micro optimizations to make decimal operations faster.
11571
11572 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
11573
11574         * reflection.c (method_encode_clauses): Take a mempool
11575         as parameter and use it to allocate the clause array.
11576
11577         * reflection.c (mono_image_get_field_on_inst_token): Free
11578         the inflated type after encoding it.
11579
11580         * reflection.c (mono_dynamic_image_free): Free each element
11581         of MonoDynamicImage::gen_params.
11582
11583         * reflection.c (reflection_methodbuilder_to_mono_method):
11584         Allocate the generic param array from the mempool.
11585         Allocate signature params from the mempool.
11586
11587         * reflection.c (mono_reflection_generic_class_initialize):
11588         Free inflated fields after been used.
11589
11590 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
11591
11592         * icall.c: Reapply the memory leak fixes as they no
11593         longer make mono crash.
11594
11595 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
11596
11597         * reflection.c (mono_type_get_object): Don't store the suplied
11598         MonoType with type_hash. A caller which pass a type that
11599         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
11600         might end with a pointer to freed memory.
11601         The solution is to use byval_arg or this_arg from the associated
11602         MonoClass of the supplied type.
11603
11604 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
11605
11606         * icall.c: Revert the rest of the last change as it breaks the build too.
11607
11608 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11609
11610         * icall.c: Revert a leak fix as it's breaking the build.
11611
11612 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11613
11614         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
11615
11616 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11617
11618         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
11619
11620 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11621
11622         * icall.c: Fix some memory leaks.
11623
11624 2008-05-29  Dick Porter  <dick@ximian.com>
11625
11626         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
11627         async socket operations from the pending list when a socket
11628         closes.  Leaving it until the threadpool services the event
11629         exposes a race condition when a socket descriptor is reused.
11630         Fixes bug 377589.
11631
11632 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11633
11634         * object.c: Fix negative index check for array alocation.
11635
11636 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11637
11638         * icall.c, marshal.c: Delegate wrappers should skip visibility.
11639         This check is performed by the verifier for IL created delegates
11640         and by Delegate::CreateDelegate for programatically created ones.
11641         Fixes #372406.
11642
11643 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11644
11645         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
11646         Fix code to use mono_array_size_t instead of int.
11647
11648         Based on patch by Luis F. Ortiz.
11649         Contributed under X11 license.
11650         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11651
11652 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11653
11654         * icall.c: Added ves_icall_System_Array_GetLongLength and
11655         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
11656         arrays.
11657
11658         * icall.h: Export both new functions.
11659
11660         Based on patch by Luis F. Ortiz.
11661         Contributed under X11 license.
11662         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11663
11664 2008-05-28  Martin Baulig  <martin@ximian.com>
11665
11666         The debugger now requires exactly r103463.
11667
11668         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
11669         This version is not supported by the debugger, wait for 72.
11670
11671 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11672
11673         * object.h: Changed array related functions to use
11674         mono_array_size_t instead of guint32. Forgot to commit this file.
11675
11676         Patch by Luis F. Ortiz.
11677         Contributed under X11 license.
11678         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11679
11680
11681 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11682
11683         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
11684         don't define it. Use the number literal instead.
11685
11686 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11687
11688         * icall.c: Changed array related functions to use
11689         mono_array_size_t instead of guint32.
11690
11691         * icall.c (ves_icall_System_Array_GetLength): Check for length
11692         overflow under MONO_BIG_ARRAYS.
11693
11694         Based on patch by Luis F. Ortiz.
11695         Contributed under X11 license.
11696         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11697
11698 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11699
11700         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
11701
11702         Based on patch by Luis F. Ortiz.
11703         Contributed under X11 license.
11704         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11705
11706 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11707
11708         * object.c, object.h: Changed array related functions to use
11709         mono_array_size_t instead of guint32.
11710
11711         Patch by Luis F. Ortiz.
11712         Contributed under X11 license.
11713         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11714
11715 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11716
11717         * object.h: Introduced mono_array_size_t typedef. This must be used
11718         in all places an array length is expected. This is 64bits wide if
11719         MONO_BIG_ARRAYS is enabled.
11720
11721         Patch by Luis F. Ortiz.
11722         Contributed under X11 license.
11723         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11724
11725 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
11726
11727         * security-manager.c class.c: Set the class exception info by calling
11728         mono_class_set_failure ().
11729
11730         * class.c (mono_class_get_exception_data): New accessor function.
11731         (mono_class_set_failure): Store exception_data in the property hash.
11732
11733         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
11734         the struct as a property.
11735
11736         * loader.c (mono_get_method_full): Store the lookup result for method
11737         tokens in method_cache, the others in methodref_cache to decrease the memory
11738         usage of hash tables.
11739
11740         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
11741         (mono_image_init): method_cache is lazy inited now.
11742
11743         * metadata-internals.h (struct _MonoImage): Change method_cache to
11744         a MonoValueHashTable, add a separate methodref_cache.
11745
11746 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
11747
11748         * number-formatter.h: Fix tables to avoid arithemtic overflow in
11749           Double.ToString as exposed by Bug #383531.
11750
11751 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
11752
11753         * number-formatter.h: Make some tables static.
11754
11755         * class.c (mono_method_set_generic_container): New accessor function.
11756         (mono_method_get_generic_container): Ditto.
11757
11758         * class-internals.h (struct _MonoMethod): Remove rarely used 
11759         'generic_container' field, store it in the property hash instead. Add 
11760         'is_generic' boolean field instead.
11761
11762         * image.c (mono_image_init): Initialize property_hash.
11763         (mono_image_close): Destroy property_hash.
11764
11765         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
11766         hold rarely used fields of runtime structures belonging to this image.
11767
11768         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
11769         to get/set method->generic_container.
11770
11771         * loader.c (mono_get_method_from_token): Avoid loading the method header for
11772         generic methods.
11773
11774 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
11775
11776         * class.c (mono_class_inflate_generic_method_full): Don't increase
11777         mono_stats.inflated_method_count for methods found in the cache.
11778
11779         * threads.c (mono_thread_request_interruption): Add a comment about 
11780         QueueUserAPC ().
11781
11782 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
11783
11784         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
11785         interface_offsets_packed table.
11786         
11787         * class.c (mono_class_init): Remove some dead code.
11788
11789         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
11790         mono_class_setup_vtable () when CAS is active to detect security problems.
11791
11792 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
11793
11794         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
11795
11796         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
11797         parameters as it's irrelevant for delegate checking.
11798
11799 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
11800
11801         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
11802
11803         * class.c (mono_class_init): Control the creation of a generic vtable using
11804         a global which is true by default, but set to false by the runtime startup code.
11805         
11806         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
11807         Disabled for now since it breaks the embedding API.
11808         Move the setup of class->methods for arrays to mono_class_setup_methods ().
11809         (mono_class_setup_methods): Add a memory barrier.
11810
11811         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
11812         when mono_class_init () doesn't compute the generic vtable.
11813         
11814 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
11815         * profiler.c: Added mono_profiler_install_statistical_call_chain,
11816         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
11817         to support call chains (backtrace) in the stat profiler.
11818         * profiler.c, profiler-private.h: Likewise.
11819
11820 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11821
11822         * generic-sharing.c: Init generic class when a method of it is
11823         requested via a runtime generic context.
11824
11825 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
11826
11827         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
11828
11829         * reflection.c (mono_type_get_object): Add a FIXME.
11830
11831         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
11832
11833         * class.c (mono_class_get_method_by_index): New helper function, returning an
11834         entry in the class->methods array.
11835
11836 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
11837
11838         * class.c (mono_class_init): Only do the array optimization for szarrays. 
11839         Avoid creating a generic vtable for generic instances as well.
11840         (mono_class_get_method_from_name_flags): Don't search in the metadata for
11841         generic instances.
11842
11843 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
11844
11845         * loader.c (mono_get_method_constrained): Inflate the signature
11846         with class context. Fix #325283.
11847
11848 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
11849
11850         * object.c (mono_class_create_runtime_vtable): Add a comment.
11851
11852         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
11853         where needed.
11854         (setup_interface_offsets): Handle the case when this is called twice for arrays.
11855         (mono_class_setup_vtable_general): Add an assert.
11856         (mono_class_init): Avoid creating a generic vtable for arrays.
11857
11858         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
11859         here, let mono_class_init () do that.
11860
11861         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
11862         interfaces in mscorlib.
11863
11864         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
11865         interfaces. Add some comments.
11866         (mono_class_init): Call mono_class_setup_methods () here since it is no
11867         longer called by mono_class_setup_vtable ().
11868
11869         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
11870         not set in class->vtable.
11871         (mono_class_create_runtime_vtable): Reenable the disabled code.
11872
11873         * object.c (mono_class_create_runtime_vtable): Disable the last change for
11874         now as it causes some test failures.
11875
11876         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
11877         if using the vtable trampoline. Also remove some strange code which put the
11878         generic methods themselves into the vtable slots. Remove the AOT init_vtable
11879         stuff as it is no longer needed.
11880
11881 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
11882
11883         * pedump.c: Give make --verify all option check code as well.
11884         Using --verify code won't check for metadata now.
11885
11886 2008-05-19  Martin Baulig  <martin@ximian.com>
11887
11888         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
11889
11890         * mono-debug.c
11891         (_mono_debug_using_mono_debugger): New global variable; it's set
11892         directly by the debugger, so mono_debug_using_mono_debugger() also
11893         works after attaching.
11894
11895 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
11896
11897         * object.c (mono_class_create_runtime_vtable): Use memory barriers
11898         as we do double checked locking on MonoClass::runtime_info and
11899         MonoClassRuntimeInfo::domain_vtables.
11900
11901 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
11902
11903         * debug-helpers.c (print_field_value): Fix a warning.
11904
11905 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
11906
11907         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
11908         set in the AOT case.
11909
11910 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
11911
11912         * class.c (mono_class_setup_vtable_general): Use memory barriers
11913         as we do double checked locking on MonoClass::vtable.
11914
11915 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
11916
11917         * reflection.c (resolve_object): Inflate only if the generic context
11918         is not null. Fixes #389886.
11919
11920 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
11921
11922         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
11923         instead of g_free.
11924
11925         Code is contributed under MIT/X11 license.
11926
11927 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
11928
11929         * class.c: Revert unrelated change.
11930
11931 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
11932
11933         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
11934         a generic instantiation, use mono_class_from_mono_type instead of playing
11935         with MonoType directly.
11936
11937 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
11938
11939         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
11940         checks must ignore generic instantiations, so mono_class_has_parent is not
11941         suitable. Fixes #390128.
11942
11943 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
11944
11945         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
11946         it to avoid registering tokens during metadata generation. Fixes #390023.
11947
11948 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
11949
11950         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
11951         consistent.
11952
11953         Contributed under MIT/X11 license.
11954
11955 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
11956
11957         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
11958         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
11959         to fixup the EXE image.
11960         (mono_cleanup): Use mono_close_exe_image.
11961         (mono_close_exe_image): New function.
11962         * image.c: Include "marshal.h".
11963         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
11964         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
11965         counting when the image is loaded outside of mono_image_open_full. Set status
11966         based on GetLastError.
11967         * coree.c: Include required headers. Add init_from_coree.
11968         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
11969         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
11970         (_CorExeMain): Set init_from_coree.
11971         (CorExitProcess): Only call ExitProcess for now.
11972         (CorBindToRuntimeEx): New stub implementation.
11973         (CorBindToRuntime): New function.
11974         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
11975         (MonoFixupExe): ILONLY executables require no fixups.
11976         (mono_set_act_ctx): New function to set activation context.
11977         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
11978         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
11979         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
11980         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
11981         as MONO_INTERNAL.
11982         * domain-internals.h: Add mono_close_exe_image.
11983
11984         Contributed under MIT/X11 license.
11985
11986 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
11987
11988         * metadata.c (mono_metadata_compute_size): Correctly calculate field
11989         size for generic param and event tables. Fixes #388977.
11990
11991 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
11992
11993         * loader.c (mono_method_signature): Use memory barriers because of the double
11994         checked locking pattern.
11995
11996         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
11997         aborting or aborted as well. Fixes #376391.
11998         
11999         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
12000         existing runtime state in the Suspend handler during shutdown.
12001
12002 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
12003
12004         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
12005
12006         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
12007         which are starting up or shutting down.
12008
12009         * threads.c (mono_threads_set_shutting_down): Don't return a value since
12010         this function never returns if the runtime is already shutting down.
12011
12012         * icall.c (ves_icall_System_Environment_Exit): Update after 
12013         mono_threads_set_shutting_down () signature change.
12014         
12015 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
12016
12017         * class.c: Added can_access_instantiation to verify if the instantiation
12018         is visible. Fix access check for nested types as they returned TRUE
12019         before doing type and generic instantiation visibility checks.
12020
12021 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
12022
12023         * reflection.c (mono_reflection_create_generic_class): The created type
12024         must have a different container from its TypeBuilder. Otherwise they
12025         will end sharing generic arguments, which is wrong.
12026
12027         Due to the sharing, making a generic instance of the created type using
12028         the TypeBuider generic arguments resulted in the generic type definition
12029         been returned, which is wrong as well.
12030
12031         As a bonus the code was leaking the type_params array. This memory should
12032         be allocated from the image mempool.
12033
12034         This fixes bug #354047.
12035
12036 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
12037
12038         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
12039         to here         as they are now used in assembly.c new code.
12040         Added a skipverification flag to MonoAssembly.
12041         New internal function mono_assembly_has_skip_verification.
12042
12043         * assembly.c: New function mono_assembly_has_skip_verification. It checks
12044         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
12045         part of #387274.
12046
12047 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12048
12049         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
12050         needed. Fixes #387034.
12051
12052         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
12053
12054 2008-05-06  Miguel de Icaza  <miguel@novell.com>
12055
12056         * assembly.c (mono_assembly_load_reference): Prevent crash while
12057         disassembling Silverlight 2.0 executables while we still do not
12058         have GACed libraries.
12059
12060 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12061
12062         * reflection.c: Special case generic type definitions as well. Fixes #383444.
12063
12064 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
12065
12066         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
12067         of the dynamic case. Fixes #387404.
12068
12069 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12070
12071         *verify.c (mono_verifier_is_class_full_trust): If under
12072         verify_all and the verifier mode was not set, only
12073         gac and corlib types are fulltrust. This makes --verify-all
12074         usable to detect unverifiable code, which is the expected
12075         use case.
12076
12077 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12078
12079         * verify.h: Ops, commited the header with debug
12080         enabled.
12081
12082 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12083
12084         * verify.c (merge_stack): Use the new value on unverifiable
12085         stack merges.
12086
12087         * verify.c (verify_type_compatibility_full): Comparison
12088         of nullable types can't use mono_class_is_assignable_from.
12089
12090         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
12091         that makes all verification errors be reported.
12092
12093         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
12094         mono_method_verify.
12095
12096 2008-05-05  Robert Jordan  <robertj@gmx.net>
12097
12098         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
12099         support for value types. See #386415.
12100
12101         * object.c: comments.
12102
12103         Code is contributed under MIT/X11 license.
12104
12105 2008-05-05  Martin Baulig  <martin@ximian.com>
12106
12107         * debug-mono-symfile.h
12108         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
12109         for old pre-terrania symbol files.
12110
12111 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
12112
12113         * mono-config.c: Add ppc64 architecture.
12114
12115         Code is contributed under MIT/X11 license.
12116
12117 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
12118
12119         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
12120           PPC64 uses function descriptors as well.
12121
12122         Code is contributed under MIT/X11 license.
12123
12124 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
12125
12126         * object.c (compute_class_bitmap): Ignore literal static fields.
12127
12128         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
12129         var has an invalid format.
12130         (describe_ptr): Add some sanity checks for the vtable.
12131         (add_nursery_frag): Clear unused nursery fragments.
12132         (major_collection): Clear all remaining nursery fragments.
12133
12134 2008-05-03  Robert Jordan  <robertj@gmx.net>
12135
12136         * image.c, metadata-internals.h: add thunk_invoke_cache.
12137
12138         * marshal.c, marshal.h: implement
12139         mono_marshal_get_thunk_invoke_wrapper ().
12140
12141         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
12142
12143         Code is contributed under MIT/X11 license.
12144
12145 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
12146
12147         * verify.c (do_leave): Empty the stack.
12148
12149 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
12150
12151         * class.c (mono_class_is_assignable_from): Variance
12152         doesn't work between reference and value types. For example,
12153         given type C<T+>, C<int32> is not assignable to C<object>.
12154         Break the argument checking loop on first error. 
12155
12156 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
12157
12158         * icall.c : base64_to_byte_array() needs some more strict
12159           check for sequence of '=' characters. Patch by Santa
12160           Marta (http://deee.g.hatena.ne.jp/santamarta).
12161
12162           Contributed under MIT/X11 license.
12163           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
12164
12165 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
12166
12167         * domain.c: Disable LoadLibrary support to fix Win32 build.
12168
12169         Code is contributed under MIT/X11 license.
12170
12171 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
12172
12173         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
12174         to help with cache behaviour.
12175
12176 2008-05-01  Miguel de Icaza  <miguel@novell.com>
12177
12178         * appdomain.c (mono_domain_from_appdomain): Add new accessor
12179         method. 
12180
12181 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
12182
12183         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
12184
12185 2008-05-01  Dick Porter  <dick@ximian.com>
12186
12187         * process.c (process_get_fileversion): Only pass 16 bits of
12188         language ID to VerLanguageName.  Fixes bug 381204.
12189
12190 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
12191
12192         * verify.c (mono_method_verify): Fix the comparison
12193         operator for code bounds check.
12194
12195 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
12196
12197         * verify.c (mono_method_verify): Check the bounds of
12198         all access of the code array.
12199
12200 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
12201
12202         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
12203
12204 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
12205
12206         * image.c (mono_image_strong_name_position): Fix return value when the rva is
12207         not valid.
12208
12209 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
12210
12211         * loader.c (mono_get_method_from_token, mono_method_signature): Add
12212         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
12213         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
12214         fixup main EXE images when using mono.exe for mixed-mode assembly support.
12215         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
12216         mono_runtime_load.
12217         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
12218         runtime initialization from metadata.
12219         * assembly.c: Remove obsolete ceGetModuleFileNameA.
12220         (mono_set_rootdir): Use mono_get_module_file_name.
12221         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
12222         handles.
12223         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
12224         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
12225         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
12226         MonoCLIImageInfo. Add support for module handles.
12227         (load_cli_header): Update mono_cli_rva_image_map signature.
12228         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
12229         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
12230         (mono_image_rva_map): Add support for module handles.
12231         (mono_image_ensure_section_idx): Add support for module handles.
12232         (mono_image_close): Add support for module handles.
12233         (do_load_header): Add support for module handles.
12234         (mono_image_open_from_module_handle): New function for internal use.
12235         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
12236         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
12237         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
12238         handles.
12239         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
12240         * image.h: Add mono_image_fixup_vtable.
12241         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
12242         support.
12243         * coree.h: New file.
12244         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
12245         unsupported native code.
12246         (mono_marshal_set_callconv_from_modopt): New function splitted from
12247         mono_marshal_get_managed_wrapper.
12248         (mono_marshal_get_managed_wrapper): Use
12249         mono_marshal_set_callconv_from_modopt.
12250         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
12251         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
12252         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
12253         that results in a deadlock when the runtime is loaded in _CorDllMain.
12254         * Makefile.am: Add coree.c and coree.h.
12255
12256         Contributed under MIT/X11 license.
12257
12258 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12259
12260         * generic-sharing.c: Search for type arguments in array element
12261         types as well.
12262
12263 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12264
12265         * class-internals.h, generic-sharing.c: New, small runtime generic context.
12266
12267         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
12268
12269         * object.c: Don't setup the RGCTX when the vtable is created,
12270         because we're setting it up lazily now.
12271
12272 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
12273
12274         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
12275         64 bit support.
12276
12277 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
12278
12279         * verify.c (verify_class_for_overlapping_reference_fields): 
12280         If class is under fulltrust allow reference types to overllap
12281         if they have the same RVA.
12282
12283 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
12284
12285         * pedump.c: Added new flag valid-only, that makes the verifier
12286         behaves just like --security=validil. It won't fail type load
12287         due to unverifiable restrictions.
12288
12289 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
12290
12291         * class-internals.h (struct MonoMethod): Added a verification_success
12292         field to cache verifier executions. Reduced MonoMethod:slot size by
12293         one bit.
12294
12295 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12296
12297         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
12298         instead of a 'vt' argument to save an indirection and to allow these to be used
12299         for valuetypes.
12300         (scan_vtype): New helper function to scan an area using a gc descriptor.
12301         (mono_gc_wbarrier_value_copy): Implement this.
12302         (handle_remset): Add support for REMSET_VTYPE.
12303         (find_in_remset_loc): Ditto.
12304         (mono_gc_base_init): Allow some debugging options to be controlled through the
12305         use of the MONO_GC_DEBUG env variable.
12306         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
12307         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
12308
12309 2008-04-23  Martin Baulig  <martin@ximian.com>
12310
12311         * domain.c (mono_domain_create): Move the call to
12312         mono_debug_domain_create() down, after allocating the domain id.
12313
12314 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
12315
12316         verify.c (verify_class_for_overlapping_reference_fields): Skip
12317         static fields while verifying for overlapping fields as they
12318         don't matter at all.
12319
12320 2008-04-23  Marek Habersack  <mhabersack@novell.com>
12321
12322         * domain-internals.h: added a declaration of
12323         mono_make_shadow_copy.
12324
12325         * assembly.c (mono_assembly_open_full): shadow copying of
12326         assemblies moved to here, so that all the assemblies within the
12327         application domain's private binary directories can be
12328         processed. Fixes bug #380546
12329
12330         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
12331         mono_make_shadow_copy and made non-static. The decision whether
12332         to shadow-copy an assembly is made based on its location - it's
12333         copied if it's in one of the private application domain binary
12334         directories and its different to the target file in the shadow
12335         directory. Fixes bug #380546
12336
12337 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12338
12339         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
12340
12341         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
12342         types.
12343
12344         * reflection.c (mono_image_create_token): Handle 
12345         Method/ConstructorOnTypeBuilderInst.
12346         (resolve_object): Ditto.
12347         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
12348         so it can be called from resolve_object. Also handle the case when the inflated
12349         class already has its methods setup.
12350
12351 2008-04-21  Martin Baulig  <martin@ximian.com>
12352
12353         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
12354
12355 2008-04-20  Geoff Norton  <gnorton@novell.com>
12356
12357         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
12358         pointer dereference.
12359
12360 2008-04-15  Marek Habersack  <mhabersack@novell.com>
12361
12362         * appdomain.c (try_load_from): if IOMAP is in effect, call the
12363         portability API to look up the assembly file. Fixes behavior in
12364         situations when the application has a bin/ directory, but the
12365         assembly search patch refers to Bin/ (and thus the requested file
12366         name is Bin/SomeLibrary.dll). Fixes bug #379888
12367
12368 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
12369
12370         verify.c (mono_type_is_generic_argument): Extracted this check
12371         from a dozen places to here.
12372
12373         verify.c: Fixed all issues related to boxing generic arguments
12374         and their constraints.
12375
12376 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
12377
12378         verify.c (mono_class_interface_implements_interface): Fix win32 build.
12379
12380 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12381
12382         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
12383         isn't finished yet. Fixes #363447.
12384
12385 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
12386
12387         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
12388         Fixes #346419.
12389
12390 2008-04-13  Jb Evain  <jbevain@novell.com>
12391
12392         * domain.c: update the 2.1 profile versions.
12393         Merged from the Moonlight 2 branch.
12394
12395 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
12396
12397         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
12398         mscorlibs for the non-refonly case as well.
12399
12400         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
12401         in mono_assembly_load_from_full (). Fixes #378924.
12402
12403 2008-04-11  Geoff Norton  <gnorton@novell.com>
12404
12405         * icall.c: The global extern environ doesn't exist on Mac.  We
12406         need to call NSGetEnviron instead.
12407
12408 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12409
12410         verify.c: Add generic method constraint verification.
12411
12412 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12413
12414         class.c (mono_class_inflate_generic_method_full): Add a long
12415         explanation to the is_mb_open hack. Remove the FIXME.
12416
12417 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12418
12419         * verify.c (mono_method_verify): Mark all unknown opcodes
12420         as invalid. Mark jmp as unverifiable.
12421
12422 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12423
12424         * verify.c: Add code to do type constraint verification on class instances.
12425
12426         * verify.c (mono_verifier_verify_class): Use the type constraint 
12427         verification code.
12428
12429 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12430
12431         * class.c (mono_class_get_field_default_value): Don't pass cindex
12432         as hint to mono_metadata_get_constant_index. The local is not initialized
12433         and should contain garbage most of the time. This could only work
12434         with a lot of luck.
12435
12436 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
12437
12438         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
12439
12440 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
12441
12442         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
12443
12444         * class.c (mono_class_from_generic_parameter): Save the token of the
12445         generic param in MonoClass::sizes.generic_param_token.
12446
12447         * reflection.c (mono_custom_attrs_from_class): If the class type is
12448         VAR or MVAR retrieve the attributes of the generic param.
12449
12450 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12451
12452         * class.c (mono_class_init): Do class verification if the verifier
12453         is enabled.
12454
12455 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12456
12457         * verify-internal.h: Added mono_verifier_verify_class.
12458
12459         * verify.c: Added mono_verifier_verify_class. It checks for
12460         classes with explicit layout that have overlapping reference fields.
12461
12462         * pedump.c: Init the verifier state prior to verification. Fixed
12463         command line arguments.
12464
12465 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12466
12467         * Makefile.am: Added verify-internals.h, hopefully fix the build.
12468
12469 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12470
12471         * verify-internals.h: Fix a warning.
12472
12473 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
12474
12475         * verify-internals.h: New header with the verifier configuration
12476         extracted from mini.c.
12477
12478         * verify.c: Implemented the new functions exported by verify-internals.h.
12479
12480 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
12481
12482         * verify.c: Add proper verification of ckfinite.
12483
12484 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12485
12486         * verify.c (do_conversion): Improved error message to something
12487         more meanfull.
12488
12489         * verify.c (check_is_valid_type_for_field_ops): Fix to work
12490         with primitive types.
12491
12492 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12493
12494         * verify.c: Added tail prefix checking. Marked icall
12495         as unverifible.
12496
12497 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12498
12499         * verify.c: Fix the detection of branches to the middle
12500         of an instruction.
12501
12502 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
12503
12504         * verify.c: Implemented verification of volatile. and
12505         unaligned. prefix. Check if a type is valid after retrieving it.
12506
12507 2008-04-01  Dick Porter  <dick@ximian.com>
12508
12509         * process.c (process_get_fileversion): If there's no string block,
12510         set the file language to en_US.  Fixes the other new part of bug
12511         374600.
12512
12513 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
12514
12515         * class.c: New functions mono_method_can_access_field_full and
12516         mono_method_can_access_method_full. They perform type visibility
12517         and type site check.
12518
12519         * class-internal.h: Added exported functions.
12520
12521         * verify.c: Use new functions to implement proper visibility checks.
12522
12523 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
12524
12525         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
12526
12527 2008-03-28  Dick Porter  <dick@ximian.com>
12528
12529         * process.c (process_get_fileversion): Use the first language ID
12530         we see, rather than insisting on an invariant language.  Fixes bug
12531         374600.
12532
12533 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
12534
12535         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
12536         the streams to fix reading of invalid memory later.
12537
12538         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
12539         to ease debugging.
12540
12541 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12542
12543         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
12544         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
12545
12546 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
12547         * threads.h: Added MonoThreadManageCallback type and
12548         mono_thread_set_manage_callback prototype
12549         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
12550         (used to store the mono_thread_manage callback).
12551         * threads.c: Added mono_thread_set_manage_callback, and handle
12552         "MonoThread->manage_callback" in build_wait_tids.
12553
12554 2008-03-26  Dick Porter  <dick@ximian.com>
12555
12556         * process.c (process_get_fileversion): Set FileVersionInfo strings
12557         to Empty when the resource doesn't have the particular info.
12558         Fixes bug 355717.
12559
12560 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
12561
12562         * verify.c (mono_method_verify): Proper prefix validation.
12563
12564 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12565
12566         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
12567         itself in a separate argument instead of throwing them. Fixes #373448.
12568
12569         * appdomain.c: Bump corlib version.
12570
12571 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
12572
12573         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
12574
12575 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
12576
12577         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
12578         version macros.
12579
12580 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12581
12582         * generic-sharing.c, class-internals.h: Code for putting
12583         reflection types into the runtime generic context.
12584
12585 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
12586
12587         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
12588         Fixes #340662. 
12589
12590
12591 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
12592
12593         * verify.c (VerifyContext): Added instruction prefix data to the struct.
12594
12595         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
12596
12597         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
12598
12599         * verify.c (do_cast): Let the result value keep the boxed status.
12600
12601         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
12602
12603 2008-03-17  Jb Evain  <jbevain@novell.com>
12604
12605         * reflection.c: when running on a 2.0 runtime, emit
12606         unconditionally the #~ header version as 2.0, and the
12607         CLI header version as 2.5, for symmetry's sake with csc.
12608
12609 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
12610
12611         * class.c: Remove the unused cache_interface_offsets stuff.
12612
12613         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
12614         profiler.c: Fix warnings.
12615
12616 2008-03-16  Mark Probst  <mark.probst@gmail.com>
12617
12618         * generic-sharing.c, class-internals.h: Support for putting
12619         methods into the runtime generic context.
12620
12621 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
12622
12623         * class.c (mono_class_setup_fields): Ignore calls made to this function for
12624         classes which are generic instances of not-yet finished typebuilders. Fixes
12625         #351172.
12626
12627         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
12628
12629 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
12630
12631         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
12632
12633         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
12634         field, replace it with a hash table in MonoDynamicImage.
12635
12636         * reflection.c (inflate_mono_method): Access the generic definition object from
12637         image->generic_def_objects instead of imethod->reflection_info.
12638
12639         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
12640
12641         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
12642         
12643         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
12644         function in reflection.c so it is easier to keep in sync with the dynamic image
12645         creation code.
12646
12647         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
12648         mono_image_close ().
12649
12650 2008-03-15  Mark Probst  <mark.probst@gmail.com>
12651
12652         * class.c (mono_class_generic_sharing_enabled): Disable generic
12653         sharing for all architectures except AMD64 and x86 to fix build.
12654
12655 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
12656
12657         * verify.c: Use the generic definition MonoGenericContext when available.
12658         Remove code for checking generics instance compatibility in favor of
12659         mono_class_is_assignable_from.
12660
12661 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12662
12663         * marshal.c, marshal.h, metadata-internals.h, image.c,
12664         wrapper-types.h: New wrapper for invoking a shared static method
12665         without having to pass the runtime generic context argument.
12666
12667 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
12668
12669         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
12670
12671 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12672
12673         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
12674         
12675         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
12676         create a token from a FieldOnTypeBuilderInst.
12677         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
12678         (resolve_object): Ditto.
12679
12680         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
12681         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
12682
12683 2008-03-14  Martin Baulig  <martin@ximian.com>
12684
12685         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
12686
12687         * debug-mono-symfile.h
12688         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
12689         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
12690
12691 2008-03-10  Martin Baulig  <martin@ximian.com>
12692
12693         * debug-mono-symfile.h
12694         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
12695         `lexical_block_table_offset'.
12696         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
12697         `lexical_blocks'.
12698         (MonoSymbolFile): Added `version'.
12699
12700         * mono-debug.h
12701         (MonoDebugLexicalBlockEntry): Removed.
12702         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
12703         `lexical_blocks'.
12704
12705         * mono-debug.c (mono_debug_add_method): Don't compute lexical
12706         blocks here; the debugger now does this internally.
12707
12708 2008-02-27  Martin Baulig  <martin@ximian.com>
12709
12710         * object.c (mono_runtime_exec_main): Call
12711         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
12712         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
12713
12714 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
12715
12716         * verify.c (verify_type_compatibility_full): Allow native int to be converted
12717         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
12718
12719 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
12720
12721         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
12722         ldftn with a virtual method.
12723
12724 2008-03-13  Geoff Norton  <gnorton@novell.com>
12725
12726         * decimal.c:  Only include memory.h if the platform has it.
12727
12728 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
12729
12730         * assembly.c, class.c, metadata-internals.h: make sure public key
12731         tokesns are compared in a case-insensitive way. Also, all
12732         the lookups in the GAC use a lowercase public key token
12733         (gaacutil already does the lowercasing on install). Fixes
12734         bug #369541.
12735
12736 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
12737
12738         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
12739         and return value.
12740
12741 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
12742
12743         * image.c: when someone loads a mscorlib from a file, return the
12744         currently loaded mscorlib (fixes bug #369253).
12745
12746 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
12747
12748         * class.c: handle types with no parents by forcing them to have
12749         System.Object as a parent and marking them as broken (this currently
12750         allows the first part of bug #369173 to work as well, likely because
12751         we don't check for typeload exceptions everywhere yet).
12752
12753 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
12754
12755         * class.c: more complete check that types belong to corlib
12756         (fixes second part of bug #369173).
12757
12758 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
12759
12760         * generic-sharing.c:  Including glib.h for the MSVC builds to define
12761           "inline" to "__inline" before including mono-membar.h.
12762           
12763         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
12764           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
12765           MSVC builds.
12766
12767         Contributed under MIT/X11 license.
12768
12769 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
12770
12771         * verify.c (do_invoke_method): Remove return type validation.
12772
12773         * verify.c (do_ret): Do return type validation at return site instead of
12774         call site.
12775
12776 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
12777
12778         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
12779
12780         * verify.c: Some todos cleaned and improved a few error messages.
12781
12782 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
12783
12784         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
12785
12786 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12787
12788         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
12789         system types correctly.
12790
12791         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
12792         function.
12793
12794 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
12795
12796         * assembly.c (build_assembly_name): Fix a warning.
12797
12798 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
12799
12800         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
12801         the called function takes an object type argument. Fixes storing or
12802         valuetypes across remoting as well as reducing memory usage.
12803         * image.c, metadata-internals.h: remove now unused ldfld_remote and
12804         stfld_remote wrapper caches.
12805
12806 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
12807
12808         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
12809         is not found.
12810
12811         * reflection.c (mono_image_register_token): New helper function to save
12812         a token->object mapping.        
12813
12814         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
12815         managed code.
12816
12817         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
12818         one dimension arrays. Fixes #367670.
12819         (mono_reflection_get_type_internal): Ditto.
12820
12821 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
12822
12823         * marshal.c: mono_load_remote_field_new() always returns object.
12824         so use the proper signature (fixes bug #366445).
12825
12826 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
12827         
12828         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
12829         add an 'inline_failure' flag instead.
12830
12831 2008-03-04  Mark Probst  <mark.probst@gmail.com>
12832
12833         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
12834         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
12835         contains the location of "this", used for exception handling.
12836
12837 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
12838
12839         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
12840         their size on all platforms for perf reasons.
12841
12842 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
12843
12844         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
12845         object-internal.h
12846
12847         * object-internal.h: Same.
12848
12849 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
12850
12851         * reflection.h: Fix the build I just broke.
12852
12853 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
12854
12855         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
12856         Test if a token is valid, this remove explicit usage of 
12857         MonoDynamicImage::tokens from the verifier code.
12858
12859         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
12860
12861         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
12862         instead of direct access to MonoDynamicImage::tokens.
12863
12864 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
12865
12866         * verify.c (token_bounds_check): Fix the build I just broke.
12867
12868 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
12869
12870         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
12871
12872         * verify.c (verifier_load_method): Fixed the errors message.
12873
12874         * verify.c (mono_method_verify): Fixed a debug message.
12875
12876 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
12877
12878         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
12879         mono-perfcounters.h, class-internals.h: support for predefined
12880         writable counters, query of categories and counters, bugfixes.
12881
12882 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
12883
12884         * verify.c (do_refanytype): Verify the refanytype opcode.
12885
12886         * verify.c (mono_method_verify): Use do_refanytype.
12887
12888 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
12889
12890         * verify.c (do_mkrefany): Verify the mkrefany opcode.
12891
12892         * verify.c (mono_method_verify): Use do_mkrefany.
12893
12894 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
12895
12896         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
12897         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
12898         implementation.
12899
12900 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
12901
12902         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
12903         the type load exception.
12904
12905 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
12906
12907         * verify.c: Added a few FIXME for method signatures
12908
12909         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
12910         of mono_method_get_signature and get vararg call working. Removed unused
12911         checks for return value.
12912
12913         * verify.c (do_refanyval): Verify the refanyval opcode.
12914
12915         * verify.c (mono_method_verify): Implemented verification of arglist and
12916         use do_refanyval.
12917
12918 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
12919
12920         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
12921         vtypes to marshal.c.
12922
12923         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
12924         it works for AOT as well.
12925
12926 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
12927
12928         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
12929         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
12930         the system time is adjusted.
12931
12932 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
12933
12934         * icall.c, icall-def.h: use the new time functions (fixes the
12935         non-monotonic behaviour of TickCount).
12936
12937 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
12938
12939         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
12940         it breaks the build.
12941         
12942         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
12943         cattr is not finished yet.
12944
12945 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
12946
12947         * verify.c: Proper token validation for field, method and type.
12948
12949 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
12950
12951         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
12952
12953         * loader.c (method_from_memberref): Generate type load error instead of method missing
12954         if the type is not found.
12955
12956 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
12957
12958         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
12959         some of the conversions caused the generation of a marshal directive exception.
12960
12961 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
12962
12963         verify.c: Report which exception should be thrown by the JIT.
12964         Added a lot of FIXME notes.
12965
12966 2008-02-22  Mark Probst  <mark.probst@gmail.com>
12967
12968         * generic-sharing.c: Runtime generic context slots are not
12969         instantiated on init anymore.  Instead, provide function to do the
12970         instantiating on demand.
12971
12972         * class-internals.h: Added vtable to runtime generic context.
12973         Macros for encoding direct and indirect slot offsets in one
12974         guint32.
12975
12976 2008-02-21  Mark Probst  <mark.probst@gmail.com>
12977
12978         * object.c, generic-sharing.c: Moved some generic sharing code
12979         from object.c to generic-sharing.c.
12980
12981         * generic-sharing.c: Added support for extensible runtime generic
12982         context.
12983
12984         * metadata-internals.h: Two new hash tables in MonoImage for
12985         extensible runtime generic context support.
12986
12987         * domain.c: Unregister generic vtables upon domain unloading.
12988
12989         * image.c: Destroy new hash tables upon image unloading.
12990
12991         * metadata.c: Unregister generic subclasses upon image unloading.
12992
12993         * class-internals.h: New data structure for runtime generic
12994         context template.  New fields in the runtime generic context for
12995         extensible part.
12996
12997         * Makefile.am: Added generic-sharing.c.
12998
12999 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
13000
13001         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
13002         there is a pending loader exception, raise it.
13003
13004         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
13005         same.
13006
13007         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
13008         same.
13009
13010         Fixes #363450.
13011
13012 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13013
13014         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
13015
13016         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
13017         
13018         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
13019         ref-only requests for compatibility with MS.
13020
13021 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
13022
13023         * reflection.c (mono_custom_attrs_from_method): Don't silently
13024         return an empty list for generic method instances.
13025         (mono_custom_attrs_from_param): Likewise.
13026
13027 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
13028             Raja R Harinath  <harinath@hurrynot.org>
13029
13030         Fix #354757
13031         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
13032         * class.c (mono_class_inflate_generic_method_full): Initialize it
13033         when a fully-open method is instantiated.
13034         * metadata.c (inflated_method_equal, inflated_method_hash): Update
13035         to new field.
13036         * reflection.c (inflate_mono_method): Don't create a temporary context.
13037
13038 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
13039
13040         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
13041         Compute correct value, to prepare for imethod->reflection_info going away.
13042
13043 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13044
13045         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
13046
13047 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
13048
13049         * verify.c: Implement skip visibility flag.
13050
13051 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
13052
13053         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
13054         which contains an extra field to tell the kind of exception that should be thrown.
13055
13056         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
13057
13058 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
13059
13060         * loader.c (mono_method_get_param_names): Initialize 'klass' after
13061         'method' is updated.
13062
13063 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
13064
13065         * class.c (mono_class_layout_fields): Set class->min_align for classes using
13066         explicit layout as well. Fixes #360375.
13067
13068 2008-02-11  Geoff Norton  <gnorton@novell.com>
13069
13070         * loader.c: Guard and dereference against inflated generic methods
13071
13072 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
13073
13074         * class.c: Include Retargetable spec in assembly name.
13075         * assembly.c: Always include PublicKeyToken spec in assembly name
13076         (with value "null" if assembly is not signed), and include
13077         Retargetable spec.
13078         * icall-def.h: Added icall for Assembly.get_fullname.
13079         * icall.c: Added icall returning the fullname of an assembly.
13080
13081 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13082
13083         * class.c (mono_class_setup_vtable_general): Add a missing call to
13084         mono_class_setup_methods () which is needed in the AOT case.
13085
13086 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
13087
13088         * verify.c (mono_type_get_stack_name): Added. Return the name for the
13089         stack type of the given MonoType.
13090
13091         * verify.c (verify_type_compatibility_full): Handle the void type.
13092
13093         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
13094         way stack merging works.
13095
13096         * verify.c (store_local): Improved verification message.
13097
13098         * verify.c (do_branch_op): If the merging is invalid, the method
13099         is unverifiable and not invalid. Improved error message.
13100
13101         * verify.c (merge_stacks): Properly merge a boxed valuetype and
13102         a reference type diferent than System.Object. Improved error
13103         message.
13104
13105 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
13106
13107         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
13108
13109         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
13110         type of an enum even if the argument is byref.
13111
13112         * verify.c: Replace all explicit uses of enumtype and enum_basetype
13113         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
13114
13115         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
13116
13117         *verify.c (verify_type_compatibility_full): Make enum types
13118         compatible with their base types.
13119
13120         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
13121         types are compatible for the special case of a boxed valuetype and
13122         System.Object.
13123
13124         * verify.c (verify_stack_type_compatibility): The function
13125         is_compatible_boxed_valuetype was extracted from here.
13126
13127         * verify.c (push_arg): Only set ctx->has_this_store if the method
13128         is not static.
13129
13130         * verify.c (do_ldelem): Fixed a typo in an error message and added
13131         strict check for mixing int32 and native int as the array type
13132         and ldelem type.
13133
13134         * verify.c (merge_stacks): Consider boxed valuetypes in the
13135         compatibility checks.
13136
13137 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
13138         * profiler.h: (MonoGCEvent): Added start-stop the world events.
13139
13140 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
13141         *class.c: use_new_interface_vtable_code: renamed the env var to have
13142         a "MONO_" prefix, and fix the logic to enable it by default.
13143
13144 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
13145         *class.c:
13146         mono_class_setup_vtable_general: rewrote the way in which interface
13147         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
13148         makes the code more maintainable.
13149         For now the old code is still there, and can be activated setting
13150         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
13151
13152 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
13153
13154         * verify.c: guarded some debug functions around and #ifdef.
13155
13156         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
13157
13158 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13159
13160         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
13161         changes for now since they seem to break too many things.
13162
13163 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13164
13165         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
13166         mono_marshal_find_nonzero_bit_offset): Added macro and function
13167         for finding the byte- and bit-offset of a bitfield within a
13168         struct.
13169
13170 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13171
13172         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
13173         (mono_marshal_get_struct_to_ptr): Ditto.
13174
13175         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
13176         cctor_signature.
13177
13178 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13179
13180         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
13181         between methods for non-corlib types.
13182
13183 2008-02-02  Geoff Norton  <gnorton@novell.com>
13184
13185         * loader.c (mono_method_get_param_names): Populate the parameter name for 
13186         generic parameters as well. (Fixes #342536)
13187
13188 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
13189
13190         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
13191
13192         * verify.c (do_invoke_method): Fix for calling with byref structs.
13193
13194         * verify.c (do_cast): push a boxed value type based on the type token and not
13195         the type of stack.
13196
13197 2008-01-31  William Holmes  <billholmes54@gmail.com>
13198
13199         * process.c (process_module_string_read): Check the size returned form 
13200           VerQueryValue to avoid out of memory exception. 
13201
13202 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13203
13204         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
13205         Handle properly modules which are not in the moduleref table. Fixes
13206         #356938.
13207
13208 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13209
13210         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
13211         the dynamic case which is now in managed code.
13212         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
13213
13214         * marshal.c (mono_string_to_bstr): Fix a warning.
13215         (init_com_provider_ms): Ditto.
13216
13217         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
13218
13219         * exception.c (mono_get_exception_out_of_memory): New helper function.
13220
13221 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
13222
13223         * marshal.c: Add support for BSTR marshalling
13224         using other COM systems.
13225
13226         Code is contributed under MIT/X11 license.
13227
13228 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13229
13230         * object.c (mono_runtime_invoke_array): reverted previous
13231         commit as it breaks the build.
13232
13233 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13234
13235         * object.c (mono_runtime_invoke_array): Verify arguments for
13236         invalid types. Fixes #348522.
13237
13238 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13239
13240         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
13241         non-final virtual calls using call. 
13242
13243         * verify.c (do_invoke): fixed some TODOs.
13244
13245         * verify.c (push_arg): set has_this_store for "ldarga 0".
13246
13247 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13248
13249         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
13250         which belong to an inflated class. Fixes #356531.
13251
13252 2008-01-26  Robert Jordan  <robertj@gmx.net>
13253
13254         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
13255         which resort to FindFirstFile when a certain error condition
13256         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
13257         Code is contributed under MIT/X11 license.
13258
13259 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
13260
13261         * marshal.c (emit_marshal_string): Fix out string marshalling
13262         to use specified encoding. Fixes #323900.
13263
13264         Code is contributed under MIT/X11 license.
13265
13266 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
13267
13268         * class.c (mono_class_inflate_generic_method_full): Don't modify
13269         iresult->context after cache check.
13270
13271 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
13272
13273         * class.c (mono_class_inflate_generic_method_full): Change the
13274         struct assignments to memcpy for better visibility and add some comments.
13275
13276 2008-01-23  Dick Porter  <dick@ximian.com>
13277
13278         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
13279         procedure, and make it work on windows.
13280
13281 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
13282
13283         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
13284         a MonoReflectionTypeBuilder since it is always of that type.
13285
13286         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
13287
13288         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
13289
13290         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
13291         
13292         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
13293
13294         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
13295
13296         * reflection.c (mono_reflection_create_runtime_class): Remove already created
13297         instantiations from the type cache.
13298
13299 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13300
13301         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
13302
13303         * verify.c (do_unbox_value): push a controled mutability managed pointer.
13304
13305 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13306
13307         * verify.c (do_ldstr): added, verifies if the #US token is valid.
13308
13309         * verify.c (mono_method_verify): removed old TODO
13310
13311 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13312
13313         * verify.c (do_newobj): add visibility check.
13314
13315 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13316
13317         * verify.c (do_load_function_ptr): add visibility check.
13318
13319 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
13320         *class.c:
13321         mono_generic_class_get_class: hook profiler events.
13322         mono_field_get_offset: added to support heap-shot in the new profiler.
13323         *class.h: exported mono_field_get_offset.
13324         * reflection.c:
13325         mono_reflection_setup_internal_class: hook profiler events.
13326
13327 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13328
13329         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
13330         argument here too and use it to avoid checking for pending exceptions if 
13331         possible.
13332
13333 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
13334
13335         * assembly.c (build_assembly_name): add arg for passing the assembly
13336         flags. Do not consider a PublicKey with value "null" valid.
13337         (mono_assembly_name_parse_full): added boolean argument that will be
13338         set if the assembly name contains a PublicKeyToken spec. Added support
13339         for the Retargetable spec for which only Yes or No are allowed as valid
13340         value. Consider assembly name invalid if Retargetable spec is set, but
13341         either version, culture or public key (token) are not specified.
13342         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
13343         with implementation in assembly.c.
13344         * icall.c (fill_reflection_assembly_name): also copy assembly flags
13345         from MonoAssemblyName.
13346         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
13347         introduced argument for mono_assembly_name_parse_full to know if the
13348         assembly name has a PublicKeyToken spec, and if it has instruct
13349         fill_reflection_assembly_name to use default value for keyToken (if
13350         PublicKeyToken is null).
13351
13352 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
13353
13354         * verify.c (mono_method_verify): fixed ovf ops with
13355         float values. They are unverifiable now.
13356
13357 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
13358
13359         * class.c (set_failure_from_loader_error): add BadImageException to the
13360         list of exceptions that can cause a type to fail to load.
13361
13362         * class.c (mono_class_get_exception_for_failure): same.
13363
13364 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
13365
13366         * verify.c (in_any_exception_block): added, check if offset
13367         is part of any exception handling clause.
13368
13369         * verify.c (get_stack_type): added VAR and MVAR types.
13370
13371         * verify.c (do_stobj): better error messages.
13372
13373         * verify.c (do_cpobj): added, check cpobj.
13374
13375         * verify.c (do_initobj): added, check initobj.
13376
13377         * verify.c (do_sizeof): added, check sizeof.
13378
13379         * verify.c (do_localloc): added, check localloc.
13380
13381         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
13382
13383 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13384
13385         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
13386         save_lmf/restore_lmf opcodes.
13387
13388         * threads.c (mono_threads_install_notify_pending_exc): New function to
13389         install a callback notifying the JIT there is a pending exception on a thread.
13390         (mono_thread_request_interruption): Call the new callback.
13391         (mono_thread_get_and_clear_pending_exception): New function to return the
13392         exception pending on a thread.
13393
13394         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
13395         to turn off checking for pending exceptions.
13396         (mono_marshal_get_native_wrapper): Ditto.
13397
13398 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13399
13400         * threads-types.h: Get rid of the unnecessary extern declarations.
13401
13402 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
13403
13404         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
13405         return field from parent class if not private.
13406         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
13407         returns fields from parent class if they are not private.
13408         (method_nonpublic): added function to determine if a given method
13409         should be considered non-public. Returns false for private methods
13410         on parent class, and internal methods from parent on the 1.0 profile.
13411         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
13412         use method_nonpublic function to determine whether method should be
13413         returned.
13414         (property_accessor_public): use newly introduced method_nonpublic
13415         function to determine whether accessor is non-public. 
13416         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
13417         event from parent class if not private. Only return static event if
13418         Static flag is set, and only return static event from parent class if
13419         FlattenHierarchy flag is set.
13420         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
13421         include non-private events from parent class.
13422
13423 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13424
13425         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
13426         warning.
13427
13428 2008-01-16  Wade Berrier <wberrier@novell.com>
13429
13430         * security.c: Add assembly.h header to appease some warnings
13431
13432 2008-01-16  Dick Porter  <dick@ximian.com>
13433
13434         * process.c (process_module_string_read): Remove trailing null
13435         when saving string.
13436
13437 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13438
13439         * class-internals.h: A new data structure describing the layout of
13440         a runtime generic context (MonoRuntimeGenericContextTemplate).
13441
13442         * metadata-internals.h: Added a hash table to MonoDomain that maps
13443         from open generic classes to their runtime generic context
13444         templates.
13445
13446         * object.c: Building of the runtime generic context, including
13447         proper handling of generic type arguments of superclasses.
13448         Building of the runtime generic context according to the template.
13449
13450 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13451
13452         * class.c (mono_class_setup_fields): Set field.count for generic instances.
13453         Fixes #350856.
13454
13455         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
13456         mono_portability_find_file (). Fixes #325466.
13457         (mono_image_get_public_key): Fix a warning.
13458
13459 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13460
13461         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
13462         Fixes #353550.
13463         (mono_class_from_name_case): Ditto.
13464
13465 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
13466
13467         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
13468           common storage for the tables used in the System/NumberFormatter class.
13469
13470 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
13471
13472         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
13473
13474 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
13475
13476         * verify.c (get_boxable_mono_type): check if the token is valid.
13477
13478         * verify.c (set_stack_value): changed to add an error if an
13479         invalid type is set on stack. Changed all callers due to signature change.
13480
13481         * verify.c (do_stobj): implement stobj validation.
13482
13483 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13484
13485         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
13486         set container->is_method, it was set earlier.
13487
13488         * metadata.c (type_in_image): Handle MVARs which belong to not finished
13489         generic methods.
13490
13491         * reflection.c (mono_reflection_initialize_generic_parameter): Set
13492         is_method of the generic container to TRUE for methods.
13493
13494 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13495
13496         * metadata.c (type_in_image): Handle type parameters properly.
13497
13498         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
13499         memory ownership of this structure.
13500
13501 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
13502
13503         * verify.c (get_boxable_mono_type): make typedref types been just
13504         unverifiable. check for void type.
13505
13506         * verify.c (do_unbox_any): added, verify opcode unbox.any.
13507
13508         * verify.c (do_load_function_ptr): accept method spec tokens.
13509
13510 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13511
13512         * marshal.c (mono_class_native_size): Always set *align even if this is called
13513         recursively.
13514
13515 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
13516
13517         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
13518         out-of-date.
13519
13520 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
13521
13522         * verify.c: removed some old unused tables. A huge bunch of small fixes
13523         to things found while testing the verifier with mono basic.
13524
13525         * verify.c (dump_stack_value): dump null literal flag to.
13526
13527         * verify.c (verify_type_compatibility_full): fix comparison
13528         for types that have a generic super type.
13529
13530         * verify.c (verify_stack_type_compatibility): fix compatibility
13531         between null literals and reference types. fix compatibility between
13532         boxed valuetypes and object. fix corner case test for enums.
13533
13534         * verify.c (do_cmp_op): proper verification of cgt.un in case
13535         of reference types.
13536
13537         * verify.c (do_invoke_method): fix error message.
13538
13539         * verify.c (do_store_indirect
13540
13541         * verify.c (check_is_valid_type_for_field_ops): proper verification
13542         of managed pointers to valuetypes and boxed valuetypes. proper verification
13543         of null literals.
13544
13545         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
13546         allow token to be a reference type.
13547
13548         * verify.c (do_cast): proper handling of boxes valuetypes.
13549
13550         * verify.c (do_stelem): proper handling of storing a boxed valuetype
13551         in object[].
13552
13553         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
13554         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
13555         fixed the decoding of unbox_any
13556
13557 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13558
13559         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
13560
13561 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
13562
13563         * verify.c (do_newobj): do delegate verification.
13564
13565         * verify.c (verify_delegate_compatibility): perform delegate
13566         verification.
13567
13568         * verify.c (verify_ldftn_delegate): perform tests related to
13569         ldftn delegates.
13570
13571         * verify.c (mono_delegate_signature_equal): perform the
13572         slightly diferent signature comparison required by delegates.
13573
13574         * metadata.c (mono_metadata_type_equal_full): added and exported
13575         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
13576         allows signature only comparison.
13577
13578         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
13579         as MONO_INTERNAL.
13580
13581 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
13582
13583         * verify.c: added a bunch of stack_slot_* functions to
13584         make access to stack slot type easier. This is required to
13585         allow optional flags, like null literal, boxed value and
13586         this pointer.
13587         All access paths to IlStackDesc::stype have been changed 
13588         to use these new funcions.
13589         Removed a bunch of unused functions and cleared all warnings.
13590         This patch introduces the usage of the this pointer and 
13591         boxed value flags.
13592
13593 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
13594
13595         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
13596
13597 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13598
13599         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
13600         match managed version.
13601
13602         * appdomain.c: Bump corlib version.
13603         
13604         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
13605         argument.
13606
13607 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
13608
13609         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
13610         Set public key token to zero-length byte array if assembly is not
13611         strongnamed.
13612
13613 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13614
13615         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
13616         writing a vtype array elem.
13617
13618 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
13619
13620         * assembly.c (build_assembly_name): return FALSE if length of token is
13621         not 16 (if not "null").
13622         (mono_assembly_name_parse_full): return FALSE if value of version,
13623         culture, token or key is 0.
13624         * icall.c (fill_reflection_assembly_name): add boolean arguments to
13625         specify whether public key and public key token must be set to default
13626         value (zero-length byte array) if not available. Set versioncompat to
13627         SameMachine. If public key is available or the default is set, then
13628         set PublicKey flag.
13629         (ves_icall_System_Reflection_Assembly_FillName): if no public key
13630         is available, use empty byte array as default value. On the 2.0
13631         profile, use default value for public key token if not set.
13632         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
13633         profile, use default value for public key if not set. On the 2.0
13634         profile, use default value for public key token if not set.
13635         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
13636         default values for public key and public key token.
13637
13638 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13639
13640         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
13641         field to keep it in synch with the managed object.
13642
13643         * marshal.c (emit_marshal_object): Add support for byref marshalling of
13644         delegates. Fixes #351520.
13645
13646         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
13647         contains defined memory.
13648         
13649         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
13650
13651         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
13652         
13653         * sgen-gc.c (check_consistency): New helper function to do a consistency check
13654         of the GC data structures.
13655
13656         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
13657
13658         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
13659         
13660         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
13661         barrier.
13662         (mono_array_clone_in_domain): Ditto.
13663         (mono_array_clone_in_domain): Ditto.
13664
13665         * threads.c (start_wrapper): Register the thread start argument as a GC root.
13666         (cache_culture): Use a write barrier.
13667
13668         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
13669         (ves_icall_get_property_info): Ditto.
13670
13671         * object.h (MONO_STRUCT_SETREF): New macro.
13672
13673         * class-internals.h (MonoStats): Add some GC statistics.
13674
13675         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
13676
13677 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
13678
13679         * exception.c (mono_exception_from_name_two_strings):
13680         Break from loop after method is found.
13681
13682 2008-01-04  Dick Porter  <dick@ximian.com>
13683
13684         * process.c (process_module_string_read): Rename variable to
13685         reflect correct usage, after fixing bug 345972.
13686
13687 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
13688
13689         * verify.c (mono_type_create_fnptr_from_mono_method): 
13690         created a MonoType function pointer instance to be used during
13691         verification. The verifier releases this memory at end.
13692
13693         * verify.c (mono_method_is_constructor): extracted repeated
13694         checks for constructor into a single class.
13695
13696         * verify.c (do_push_field): use new extracted method
13697         for constructor check.
13698
13699         * verify.c (do_newobj): same.
13700
13701         * verify.c (do_ldftn): renamed to do_load_function_ptr
13702         and make it verify ldvirtftn too.
13703
13704         * verify.c (mono_method_verify: proper verification
13705         of ldvirtftn. release created MonoMethod instances.
13706
13707 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
13708
13709         * verify.c (token_bounds_check): added.
13710
13711         * verify.c (do_ldftn): added.
13712
13713         * verify.c (mono_method_verify): proper verificartion of ldftn.
13714
13715 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
13716
13717         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
13718         than the table row count. It's the resposibility of the caller to
13719         make the bounds check and raise the correct error.
13720
13721         * metadata.c (mono_metadata_decode_row_col): Same.
13722
13723         * loader.c (mono_get_method_from_token): perform bounds check
13724         on token for methoddef table.
13725
13726 2007-12-29  Miguel de Icaza  <miguel@novell.com>
13727
13728         * icall.c
13729         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
13730         assert into a negative result, the managed code already coped with
13731         that.
13732
13733         Some folks on Windows reported this error. 
13734
13735 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
13736
13737         * appdomain.c: Bump corlib version.
13738         * icall.c:
13739         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
13740         CultureInfo.CreateCulture to create CultureInfo for name.
13741         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
13742         create CultureInfo for name. Fixes bug #347174.
13743
13744 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
13745
13746         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
13747         flags.
13748
13749         * verify.c (is_valid_branch_instruction): allow branching to the
13750         first instruction of the protected block.
13751
13752         * verify.c (is_valid_cmp_branch_instruction): same.
13753
13754         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
13755         avoid double initialization.
13756
13757         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
13758         detect which cases the eval stack should just be copied.
13759
13760         * verify.c (mono_method_verify): check if the eval stack
13761         is empty when entering a protected block.
13762
13763 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
13764
13765         * verify.c: added is_clause_in_range, is_clause_inside_range,
13766         is_clause_nested and verify_clause_relationship. They perform
13767         the verifications stated in P1 12.4.2.7.
13768
13769         * verify.c (mono_method_verify): remove some unused variables,
13770         add the new exception clause checks, add instruction border
13771         checks for protected block start/end, improved some error 
13772         messages and fixed a bug in the way invalid instruction access
13773         is detected.
13774
13775 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
13776
13777         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
13778         from GC 7.0 if available.
13779
13780         * object.c: Remove an unused define.
13781         
13782         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
13783
13784         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
13785
13786         * null-gc.c (mono_gc_make_descr_for_array): Implement.
13787
13788         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
13789
13790         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
13791         to take the same arguments as the other make_descr functions.
13792
13793         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
13794
13795         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
13796         directly.
13797
13798         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
13799         mini.c.
13800
13801         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
13802         call to boehm-gc.c.
13803
13804         * boehm-gc.c (mono_gc_register_root): Fix a warning.
13805
13806         * null-gc.c (mono_gc_register_root): Fix a warning.
13807
13808         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
13809
13810         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
13811         (mono_gc_base_init): Call GC_init ().
13812
13813         * null-gc.c: Define mono_gc_register_root () as a no-op.
13814
13815         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
13816
13817 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
13818
13819         * verify.c: add prototype for merge_stacks at top
13820
13821         * verify.c (do_switch): added.
13822
13823         * verify.c (merge_stacks): on some cases the stack merging
13824         was not happening properly. Unequal stack sizes at merge
13825         points should be invalid.
13826
13827         * verify.c (mono_method_verify): added more debug info on stack state.
13828         verify switch properly.
13829
13830 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
13831
13832         * method-builder.h: New file, moved the mono_mb_ declarations here from 
13833         marshal.h.
13834
13835         * boehm-gc.c marshal.c: Include method-builder.h.
13836
13837         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
13838
13839         * marshal.c: Remove some code which is now in method-builder.c.
13840
13841 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
13842
13843         * method-builder.c: New file, extraction of the method builder functionality 
13844         from marshal.c.
13845
13846         * marshal.c: Move the mb functions into method-builder.c.
13847
13848         * marshal.h marshal.c: Export some mono_mb_... functions.
13849
13850         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
13851
13852         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
13853         the caller.
13854
13855         * class.c (mono_class_get_full): Check the token type in the dynamic case.
13856
13857         * loader.c (mono_field_from_token): Ditto.      
13858
13859         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
13860         type as well.
13861         
13862         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
13863         Fixes #342565.
13864
13865         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
13866         a helper function for setting it.
13867
13868         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
13869
13870         
13871         * assembly.c: Significally simplify code now that referenced assemblies are 
13872         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
13873
13874         * threads.h: Don't include  the internal threads-types.h header file. Fixes
13875         #349952.
13876
13877 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
13878
13879         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
13880         instructions that were target of branches or are at protected block boundaries.
13881
13882         * verify.c (in_same_block): handle filter clauses.
13883
13884         * verify.c (is_valid_branch_instruction): added. checks the target of
13885         instructions br or brtrue/false.
13886
13887         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
13888         binary branch instructions such as beq and bge.
13889
13890         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
13891         and made it pin the instruction as been part of the exception block.
13892
13893         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
13894         of in_same_block.
13895
13896         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
13897         of in_same_block.
13898
13899         * verify.c (do_ret): ret from a protected block is unverifiable and
13900         not invalid.
13901
13902         * verify.c (do_static_branch): verify br and br.s instructions.
13903
13904         * verify.c (merge_stacks): add extra param to support detection
13905         of branches in the middle of instructions.
13906         
13907         * verify.c (mono_method_verify): verify branches and exception blocks
13908         that target the middle of instructions. Proper verification of br and br.s.
13909
13910 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
13911
13912         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
13913         skip_visibility field.
13914         (reflection_methodbuilder_from_dynamic_method): Ditto.
13915
13916         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
13917         registrations. Fixes #348193.
13918
13919         * threads.h: Move the internal mono_thread_get_pending_exception () to
13920         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
13921
13922 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
13923
13924         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
13925         icall registration. Fixes #348193.
13926
13927         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
13928         for corlib classes into object. Fixes #349621.
13929
13930 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
13931
13932         * icall.c (property_accessor_nonpublic): new function to determine
13933         whether an accessor allows a property to be considered non-public.
13934         Returns false for private accessor(s) from parent class, and internal
13935         accessor(s) from parent on 2.0 profile (and higher).
13936         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
13937         to determine whether property should be included if NonPublic flag
13938         is set. Fixes bug #349078.
13939
13940 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
13941
13942         * verify.c (init_stack_with_value): added.
13943
13944         * verify.c (mono_method_verify): extracted common
13945         code for exception initialization into init_stack_with_value.
13946
13947         * verify.c (mono_method_verify): initialize the exception
13948         for handler clauses as well.
13949
13950         * verify.c (mono_method_verify): fix the exception clause
13951         ordering rules, it should use handler end offset and not
13952         start offset.
13953
13954 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
13955
13956         * rawbuffer.c: remove useless warning.
13957
13958 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
13959
13960         * threads.h, threads-types.h: move functions to the correct header
13961         (fixes bug#349952).
13962
13963 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
13964
13965         * verify.c (mono_method_verify): proper verification
13966         of exception handling clauses ranges and fallthru in
13967         and out of protected blocks.
13968
13969 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
13970
13971         * verify.c (mono_method_verify): fixed compilation issue.
13972
13973 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
13974
13975         * verify.c (mono_method_verify): a printf slipped in, changed
13976         to use verifier debug macro.
13977
13978 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
13979
13980         * verify.c (is_correct_leave): check for filter clauses.
13981
13982         * verify.c (do_filter): added.
13983
13984         * verify.c (mono_method_verify): property verification of leave.
13985
13986
13987 2007-12-18  Mark Probst  <mark.probst@gmail.com>
13988
13989         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
13990         Win32 build, until we figure out how to do the proper thing on
13991         Win32.
13992
13993 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
13994
13995         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
13996         by the previous patch.
13997         
13998         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
13999         the assembly resolve handler for refonly assemblies.
14000
14001 2007-12-17  Mark Probst  <mark.probst@gmail.com>
14002
14003         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
14004         Make sure only one thread is allowed to commence shutdown, and
14005         don't allow new threads to be started once shutdown is in
14006         progress.
14007
14008 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
14009
14010         * verify.c (is_correct_endfilter): added.
14011
14012         * verify.c (is_unverifiable_endfilter): added.
14013
14014         * verify.c (do_endfilter): added.
14015
14016         * verify.c (mono_method_verify): property verification of endfilter
14017         and fixed a corner case or endfinally.
14018
14019 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
14020
14021         * verify.h: new flags to support fail fast of unverifiable code and
14022         do non-strict verification. Non-strict verification is required to
14023         have MS runtime compatibility. There are a huge amount of unverifiable
14024         code that it accepts as verifiable. The strict mode verifies the code
14025         as the specs says.
14026         Non-strict mode will be required in cases where code needs to be
14027         accepted as verifiable but fails under strict mode.
14028
14029         * pedump.c: added support to fail fast and non-strict verification.
14030
14031         * verify.c: added support for both fail fast and non-strict verification.
14032
14033 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
14034
14035         * verify.c (is_correct_endfinally): added.
14036
14037         * verify.c (mono_method_verify): property verification of endfinally.
14038
14039 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14040
14041         * verify.c (in_any_block): check for filter clauses.
14042
14043         * verify.c (is_correct_rethrow): added.
14044
14045         * verify.c (mono_method_verify): property verification of rethrow.
14046
14047         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
14048
14049 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14050
14051         * verify.c (do_throw): added.
14052
14053         * verify.c (mono_method_verify): property verification of throw
14054
14055 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
14056
14057         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
14058         assemblies. Fixes #346425.
14059
14060 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
14061
14062         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
14063         FieldBuilders.
14064
14065         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
14066
14067         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
14068         prevent asserts when this is called with a token which might not be valid.
14069
14070         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
14071         lookup_dynamic_token_class with valid_token == FALSE.
14072
14073         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
14074
14075         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
14076
14077         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
14078         
14079 2007-12-10  Mark Probst  <mark.probst@gmail.com>
14080
14081         * gc.c: Don't delay threadpool thread finalization unless Mono is
14082         shutting down.
14083
14084 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14085
14086         * threads.c: turn an assert into a non-fatal warning.
14087
14088 2007-12-09  Robert Jordan  <robertj@gmx.net>
14089
14090         * icall.c (GetVirtualMethod): Add missing argument validation.
14091
14092 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14093
14094         * verify.c (do_cast): added.
14095
14096         * verify.c (mono_method_verify): property verification of castclass and isinst.
14097
14098
14099 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14100
14101         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
14102
14103         * verify.c (do_stelem): added.
14104
14105         * verify.c (mono_method_verify): property verification of stelem.X.
14106
14107 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14108
14109         * class.c, class-internals.h: Introduce an environment variable
14110         (MONO_GENERIC_SHARING) through which the extent of generic code
14111         sharing can be controlled (share all classes, share only corlib
14112         classes, or share nothing).
14113
14114         * object.c: Only create runtime generic context for classes for
14115         which sharing is enabled.
14116
14117 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14118
14119         * verify.c (do_ldelem): refactor it to work with ldelem.any.
14120
14121         * verify.c (mono_method_verify): property verification of ldelem.any.
14122
14123 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14124
14125         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
14126         added ldelem.X opcodes.
14127
14128         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
14129
14130         * verify.c: proper verification of ldelem.X 
14131
14132 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14133
14134         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
14135
14136 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
14137
14138         * verify.c (mono_method_verify): null literal requires special handling,
14139         the value pushed on stack need to be flagged as so.
14140
14141         * verify.c (do_ldelema): Verify ldelema properly.
14142
14143 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
14144
14145         * verify.c: Verify ldlen properly.
14146
14147 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
14148
14149         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
14150         to the target object's type. Fixes #346160.
14151
14152 2007-12-05  Dick Porter  <dick@ximian.com>
14153
14154         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
14155         Solaris needs the same workaround as BSD-derived systems.  Fixes
14156         bug 323524, patch by Burkhard Linke
14157         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
14158
14159 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
14160
14161         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
14162         handle to use when error dialog is shown; otherwise, update mask
14163         to show no error dialog when an error occurs.
14164
14165 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14166
14167         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
14168
14169         * class.c (mono_class_get_field_default_value): New helper function to initialize
14170         field->def_type and field->data.
14171
14172 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14173
14174         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
14175         the general one.
14176
14177         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
14178
14179         * marshal.c: Avoid depending on delegate->method_info being set.
14180
14181         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
14182         
14183         * object.c (mono_delegate_ctor): Set delegate->method.
14184
14185         * object-internals.h (struct _MonoDelegate): Add 'method' field.
14186
14187         * appdomain.c: Bump corlib version.
14188
14189 2007-11-27  Raja R Harinath  <harinath@gmail.com>
14190
14191         * metadata.c (mono_generic_inst_equal_full): Short-circuit
14192         equality check if we're comparing canonicalized MonoGenericInsts.
14193
14194 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14195
14196         * class.c (generic_array_methods): Call mono_class_setup_methods () before
14197         accessing class->methods.
14198
14199 2007-11-22  Dick Porter  <dick@ximian.com>
14200
14201         * threads.c: Ensure that the synch_cs is set before trying to use
14202         it.
14203
14204 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
14205
14206         * profiler.c: r89126 broke the statistial profiler, unbreak.
14207
14208 2007-11-22  Martin Baulig  <martin@ximian.com>
14209
14210         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
14211
14212         * mono-debug.c
14213         (mono_debug_debugger_version): Bump to 3.
14214         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
14215         -> mono_debugger_class_initialized().
14216
14217         * mono-debug-debugger.c
14218         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
14219
14220         * class.c
14221         (mono_debugger_start_class_init_func): Removed.
14222         (mono_debugger_class_loaded_methods_func): Added.
14223         (mono_class_setup_methods): Call it here.
14224
14225 2007-11-22  Martin Baulig  <martin@ximian.com>
14226
14227         * mono-debug.c
14228         (mono_debug_add_delegate_trampoline): New public method.
14229         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
14230
14231         * mono-debug.h
14232         (MonoSymbolTable): Added `global_data_table'.
14233         (MonoDebuggerTypeKind): Removed.
14234
14235 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
14236
14237         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
14238         these methods.
14239
14240         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
14241         
14242 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
14243
14244         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
14245
14246 2007-11-20  Martin Baulig  <martin@ximian.com>
14247
14248         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
14249
14250         * mono-debug-debugger.c
14251         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
14252         (mono_debugger_remove_breakpoint): Likewise.
14253         (mono_debugger_check_breakpoints): Likewise.
14254         (mono_debugger_register_class_init_callback): New public method.
14255         (mono_debugger_remove_class_init_callback): Likewise.
14256         (mono_debugger_add_type): Likewise.
14257
14258         * mono-debug-debugger.h
14259         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
14260
14261 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
14262
14263         * class.c: more interface implementations needed for the
14264         array enumerator (fixes bug #341112).
14265
14266 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
14267
14268         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
14269         fix ParamName of ArgumentNullExceptions.
14270
14271 2007-11-17  Miguel de Icaza  <miguel@novell.com>
14272
14273         * reflection.c (mono_reflection_encode_sighelper): Generate the
14274         modopts and modreqs.   I have a useless test that crashes monodis,
14275         but that shows the code working.
14276
14277 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14278
14279         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
14280         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
14281
14282 2007-11-15  Dick Porter  <dick@ximian.com>
14283
14284         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
14285         When joining a thread, it's the thread that's calling Join that
14286         gets WaitSleepJoin state not the target.  Fixes the standalone
14287         test case in bug 334740, and hopefully the whole bug too.
14288
14289 2007-11-15  Dick Porter  <dick@ximian.com>
14290
14291         * process.c: Read file version info from the files pointed at by
14292         process modules, not the current process.  Fixes bug 315969.
14293
14294         Use windows typedef names in some places to fix warnings on the
14295         windows build.
14296
14297 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14298
14299         * image.c, metadata-internals.h: Added a generic_class_cache hash
14300         to MonoImage for looking up generic classes when sharing generics.
14301
14302 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14303
14304         * sgen-gc.c: warning cleanups.
14305
14306 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
14307
14308         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
14309         inherited properties.
14310
14311 2007-11-14  Mark Probst  <mark.probst@gmail.com>
14312
14313         * object.c, class-internals.h: Added more information to the
14314         runtime generic context.
14315
14316 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14317
14318         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
14319         instead of just the target method. Generalize the abstract method handling to
14320         handle any non-static method.
14321
14322         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
14323         mono_marshal_get_delegate_invoke () signature change.
14324
14325 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14326
14327         * class.c, class-internals.h: Made
14328         mono_type_get_basic_type_from_generic () public.  Fixed member
14329         access check for shared generics.
14330
14331         * loader.c: Don't insert field into field cache if it's part of a
14332         non-inflated generic class.
14333
14334         * domain.c, domain-internals.h: The generic sharing context is now
14335         part of the jit info data structure.  Added two accessor
14336         functions.
14337
14338 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14339
14340         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
14341         the array Get/Set/Address methods, since the JIT inlines them.
14342
14343         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
14344
14345         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
14346         (mono_image_init): Initialize runtime_invoke_direct_cache.      
14347
14348         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
14349         mono_marshal_get_delegate_invoke signature change.
14350
14351         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
14352         an additional argument. Add support for invoking abstract methods.
14353
14354         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
14355
14356         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
14357
14358 2007-11-09  Mark Probst  <mark.probst@gmail.com>
14359
14360         * class.c: Do field layout for open generic classes as well.
14361
14362 2007-11-09  Mark Probst  <mark.probst@gmail.com>
14363
14364         * gc.c, gc-internal.h: Don't finalize threadpool threads with
14365         other objects, because the threadpool is still around.  Put them
14366         in a list instead and after finalizing all other objects in the
14367         root domain shut down the thread pool and then finalize the
14368         threads.  Fixes bug #337383.
14369
14370         * threads.c, thread-types.h: New mono_thread_create_internal()
14371         function for marking a thread with the threadpool flag before it
14372         started.  Set synch_cs to NULL after freeing it.
14373
14374         * threadpool.c: Mark threadpool threads before they start.
14375
14376 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14377
14378         * reflection.h, reflection.c: don't export random functions
14379         and lazy load dbnull and missing objects.
14380
14381 2007-11-07  Jonathan Chambers <joncham@gmail.com>
14382
14383         * class.c: Initialize COM types if COM interfaces
14384         are present (not just COM classes).
14385         
14386         Code is contributed under MIT/X11 license.
14387
14388 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14389         * reflection.c:
14390         create_dynamic_mono_image: hook module profiler events (dynamic case).
14391         mono_image_basic_init: hook assembly profiler events (dynamic case).
14392
14393 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14394         * profiler.c:
14395         simple_appdomain_unload: completely terminate the profiler
14396         instead of only processing the statistical samples.
14397         simple_shutdown: make sure this is really called exactly once,
14398         even in multithreaded applications, and always listen to
14399         appdomain events.
14400         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
14401         here, the "[un]load" functions will do it.
14402         Fixes bugs #333791 and #325261.
14403
14404 2007-11-07  Geoff Norton  <gnorton@novell.com>
14405
14406         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
14407         rather than depend on __APPLE__.
14408
14409 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14410
14411         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
14412
14413 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
14414
14415         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
14416         UTF16 MonoString. Fix the crash from bug #335488
14417
14418 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
14419
14420         * marshal.c: Correct (for non-Win32 OS) length != size in 
14421         mono_string_from_bstr. Fix #339530.
14422
14423 2007-11-06  Geoff Norton  <gnorton@novell.com>
14424
14425         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
14426         to succeed
14427
14428 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
14429
14430         * process.c: Added run-time GetProcessId API detection for Windows.
14431
14432 2007-11-04  Miguel de Icaza  <miguel@novell.com>
14433
14434         * reflection.c  (mono_param_get_objects): If a parameter has the
14435         attribute [System.Runtime.InteropServices.Optional] we should
14436         set the DefaultValue of the ParameterInfo to be
14437         System.Reflection.Missing instead of DBNull.
14438
14439         See bug #339013.
14440
14441         (mono_get_reflection_missing_object): New method,
14442         returns the System.Reflection.Missing.Value singleton instance.
14443
14444 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
14445
14446         * culture-info-table.h : regenerated.
14447
14448 2007-11-02  Jonathan Chambers <joncham@gmail.com>
14449
14450         * icall.c: Use GetEnvironmentStrings on windows
14451         so we are using the same environment block as 
14452         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
14453         #333740.
14454         
14455         Code is contributed under MIT/X11 license.
14456
14457 2007-10-31  Martin Baulig  <martin@ximian.com>
14458
14459         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
14460
14461         * mono-debug-debugger.h
14462         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
14463
14464 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
14465
14466         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
14467         classes.
14468
14469 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
14470
14471         * culture-info-table.h : regenerated.
14472
14473 2007-10-30  Robert Jordan  <robertj@gmx.net>
14474
14475         * icall-def.h, icall.c:
14476         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
14477
14478         Code is contributed under MIT/X11 license.
14479
14480 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
14481
14482         * class.c (mono_class_setup_vtable): Find the inflated methods in the
14483         inflated class instead of inflating them again.
14484         
14485         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
14486         dynamic case.
14487
14488         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
14489         Call setup_supertypes () after klass->parent is set.
14490         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
14491
14492         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
14493         for inflated instances of not yet created dynamic generic classes.
14494         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
14495         times from inflated_method.
14496         (methodbuilder_to_mono_method): Ditto.
14497
14498 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
14499
14500         * gc.c: code cleanup and removed old untested option of not creating the
14501         finalizer thread.
14502
14503 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
14504
14505         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
14506         creating a jump trampoline for dynamic methods.
14507
14508 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
14509
14510         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
14511         generic TypeBuilders when called from another method of the same type (bug #335131).
14512
14513
14514 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
14515
14516         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
14517         doesn't seem to work perfectly.
14518         
14519         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
14520         called multiple times.
14521         (methodbuilder_to_mono_method): Ditto.
14522         (resolve_object): Inflate FieldBuilder's.
14523
14524 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14525
14526         * string-icalls.c, string-icalls.h, appdomain.c: patch from
14527         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
14528         RemoveEmptyEntries in the string.Split implementation (bug #322375).
14529
14530 2007-10-26  Dick Porter  <dick@ximian.com>
14531
14532         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
14533         Thread initialisation changes
14534
14535 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
14536
14537         * verify.c: fix compatibility check between arrays and System.Array
14538
14539 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
14540
14541         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
14542         too. Fixes #336999.
14543
14544 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14545
14546         * object.c (mono_value_box): Use typed allocation here.
14547
14548 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14549
14550         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
14551         trampoline instead of compiling the method right away.
14552
14553         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
14554
14555 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
14556
14557         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
14558         related fields for dynamic classes. Fixes #334493.
14559
14560 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
14561
14562         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
14563         
14564         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
14565
14566         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
14567         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
14568
14569         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
14570
14571         * reflection.c (create_generic_typespec): Initialize klass->generic_container
14572         if needed.
14573         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
14574
14575 2007-10-18  Jonathan Chambers <joncham@gmail.com>
14576
14577         * marshal.c: Use correct key when removing item
14578         from ccw_hash.
14579         
14580         Code is contributed under MIT/X11 license.
14581
14582 2007-10-17  William Holmes  <billholmes54@gmail.com>
14583
14584         *marshal.c: Adding a case to marshal booleans to U1
14585
14586         Code is contributed under MIT/X11 license.
14587
14588 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
14589
14590         * class.c (mono_class_from_name): Search the modules compromising dynamic
14591         assemblies. Fixes #331601.
14592
14593 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
14594
14595         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
14596         exception if the type name contains an assembly component. Fixes #334203.
14597
14598         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
14599         modules inside dynamic assemblies. Fixes #334200.
14600         
14601         * reflection.c: Set image->public_key and image->public_key_length;
14602
14603         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
14604         fields.
14605
14606         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
14607         
14608 2007-10-16  Mark Probst  <mark.probst@gmail.com>
14609
14610         * metadata.c: Implemented correct comparing of generic classes.
14611         An inflated generic class can be equal to a non-inflated one if it
14612         is inflated with generic type variables as type arguments.  Fixes
14613         bug #333798.
14614
14615 2007-10-15  Dick Porter  <dick@ximian.com>
14616
14617         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
14618         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
14619         81646.
14620
14621         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
14622         instead of a monitor lock.  This means that monitor_try_enter and
14623         co can set the thread state safely.
14624         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
14625         thread_interrupt_requested, so interrupt actually works.
14626
14627         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
14628         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
14629         state accessor function
14630
14631 2007-10-15  Martin Baulig  <martin@ximian.com>
14632
14633         * mono-debug.h
14634         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
14635         the debugger with the current runtime.
14636
14637 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
14638
14639         * object.c, object-internals.h: added the ability to set a single
14640         trampoline for all the slots in a vtable.
14641
14642 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14643
14644         * marshal.c: deal with a possible race condition during multicast
14645         delegate invocation.
14646
14647 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14648
14649         * class.c: ensure value type methods don't have the synchronized
14650         flag set.
14651
14652 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14653
14654         * string-icalls.c, string-icalls.h: reverted unapproved patch that
14655         breaks the build.
14656
14657 2007-10-11  Joel Reed  <joelwreed@comcast.com>
14658
14659         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
14660         to take an options parameter so that empty entries can be removed during
14661         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
14662
14663 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14664
14665         * marshal.c: make sure we don't store the signature from a dynamic
14666         method into the runtime invoke cache (bug #327189).
14667
14668 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
14669
14670         * marshal.c: make sure the wrapper methods are properly initialized.
14671
14672 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14673
14674         * metadata.c, metadata-internals.h: Generalized
14675         mono_type_stack_size() to mono_type_stack_size_internal() which
14676         takes an additional argument specifying whether it allows open
14677         types.
14678
14679 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
14680
14681         * verify.c (do_invoke_method): handle typedbyref params
14682         correctly and check for unverifiable return values.
14683
14684         * verify.c (do_newobj): fix a warning.
14685
14686 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
14687
14688         * verify.c: don't tread typedbyref as allways unverifable,
14689         so uses, like (ld/st)loc.0 are valid. verify for the cases
14690         that it matters, like boxing related operations.
14691
14692 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
14693
14694         * verify.c: add verification of the newobj opcode. verification
14695         of delegate instantation still missing due ldftn and virldftn not
14696         pushing the function type on stack
14697
14698 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14699
14700         * class-internals.h: Runtime generic context data structure
14701         definition.
14702
14703         * object.c: Initialization of runtime generic context at runtime
14704         vtable creation time.
14705
14706 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
14707         * class.c (mono_class_create_from_typedef,
14708         mono_class_from_generic_parameter, mono_ptr_class_get,
14709         mono_fnptr_class_get, mono_bounded_array_class_get)
14710         * domain.c (mono_domain_create, mono_domain_free)
14711         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
14712         * image.c (do_mono_image_load, mono_image_close):
14713         Hooked up load-unload profiler events.
14714
14715 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14716
14717         * domain.c: track statistics about the actual amount of native code
14718         allocated.
14719
14720 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14721
14722         * class.c: the valuetype enumerators don't have the additional
14723         supertypes interfaces.
14724
14725 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
14726
14727         * class.c: need more interfaces setup for the IEnumerator<T>
14728         object created for arrays (tests/ienumerator-interfaces.2.cs).
14729
14730 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
14731
14732         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
14733
14734 2007-10-05  Alp Toker  <alp@atoker.com>
14735
14736         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
14737         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
14738         #315863.
14739
14740 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
14741
14742         * verify.c (verify_type_compatibility_full): verification of
14743         compatibility improved, validates correctly non-strict checks between
14744         native int and I4 types different than (unsigned)int32.
14745
14746         * verify.c (do_store_indirect): added, do all verification of
14747         ldind.X opcodes. 
14748
14749         * verify.c (get_load_indirect_mono_type): renamed to
14750         get_indirect_op_mono_type, as it now returns the MonoType for 
14751         ldind.X and stind.X opcodes.
14752
14753 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
14754
14755         * reflection.c: Fix the encoding of generic type definition for
14756         TypeBuilders.
14757
14758         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
14759         mono_image_typedef_or_ref but allows to specify if typespec lookups should
14760         be made. Typespec check is done prior to typeref cache lookup.
14761
14762         * reflection.c (mono_image_typedef_or_ref): now just delegate to
14763         mono_image_typedef_or_ref_full.
14764
14765         * reflection.c (encode_generic_class): encode the generic class
14766         directly instead of calling encode_type.
14767
14768         * reflection.c (encode_type): encode the generic type definition
14769         MonoClass as a generic instantiation.
14770
14771         * reflection.c (create_typespec): cache typespec tokens in
14772         the assembly->typespec cache. Don't create typespec for a generic
14773         instance MonoClass. Create typespec for the generic type defintion.
14774
14775         * reflection.c (create_generic_typespec): encode the generic
14776         class directly instead of calling encode_type.
14777
14778         * reflection.c (mono_image_create_token): encode the generic
14779         type definition not using a typespec for MonoType instances.
14780
14781
14782 2007-10-04  Raja R Harinath  <rharinath@novell.com>
14783
14784         Fix #328812
14785         * class.c (mono_image_init_name_cache): Don't return nested
14786         'protected internal' classes.
14787         (mono_class_from_name_case): Likewise.
14788
14789 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
14790
14791         * icall-def.h, icall.c : get_bundled_machine_config() is now the
14792           common function used by both DefaultConfig in System.dll and
14793           InternalConfigurationHost in System.Configuration.dll.
14794
14795 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14796
14797         * class.c: automatically add to vectors only a few essential explicit
14798         generic interfaces. The rest of the interfaces that arrays should
14799         provide are currently implicitly added (but still not lazily, see the
14800         design in the discussion of bug#325495 for the details of what is
14801         needed for that). Additionally, implicit interfaces are assigned the
14802         same vtable slot as the explicit interfaces (as they are compatible):
14803         this enables huge memory savings since we don't need to instantiate
14804         as many memthods and as large vtables anymore. Also, Since
14805         GetEnumerator<T> returns an instance of a type that is required to
14806         support a similarly large set of interfaces as arrays, we add
14807         implicit interfaces and interface offset sharing support to those
14808         types, too. This change adds all the required interfaces so that
14809         the anonarray.cs test case in the bug report works (we don't add
14810         all the interfaces to arrays of arrays 3-level deep and more because
14811         of the memory requirements explained in the bug and since they are much
14812         less common: the lazy-loading support will enabled them to work, too).
14813
14814 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
14815
14816         * verify.c (merge_stacks): major clean up, all type compatibility
14817         checks are done by verify_type_compatibility. This fix my earlier lack
14818         of understanding of the CLR type system and merge_stacks no longer looks
14819         scary.
14820
14821         * verify.c: fixed some bad spelling.
14822
14823 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
14824
14825         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
14826         a given stack slock.
14827         
14828         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
14829         verify_type_compatibility_full. This removed a near indentical function and fixed
14830         handling of Int32 and IntPtr across all opcodes.
14831
14832 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14833
14834         * class.c: only vectors have the additional generic interfaces.
14835
14836 2007-10-01  Jonathan Chambers <joncham@gmail.com>
14837
14838         * mono-config.c: Use g_strcasecmp instead of
14839         strcasecmp like everywhere else to fix
14840         compilation with MSVC.
14841         
14842         Code is contributed under MIT/X11 license.
14843
14844 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14845
14846         * object.c, object-internals.h: refactored the IMT code to enable
14847         building a single slot at a time and lazily creating the IMT trampolines
14848         and thunks.
14849
14850 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
14851
14852         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
14853
14854         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
14855         Fixes #328501.
14856         
14857 2007-09-29  Raja R Harinath  <harinath@gmail.com>
14858
14859         * loader.c (method_from_methodspec): Rearrange to avoid
14860         un-necessary exposition.  Don't assert out if the method's
14861         declaring type is a generic type definition.
14862
14863 2007-09-28  Martin Baulig  <martin@ximian.com>
14864
14865         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
14866
14867 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
14868
14869         * class-internals.h: optimize field layout of MonoClass to
14870         requires less cachelines at runtime and save a few bytes on 64 bit
14871         systems.
14872
14873 2007-09-28  Jb Evain  <jbevain@novell.com>
14874
14875         * reflection.c: when encoding type names in custom attributes,
14876         if the type is a closed generic type, its generic arguments
14877         have to be serialized as AssemblyQualifiedName, so that when
14878         they are deserialized, it's possible to re-create them properly.
14879         Fixes #329450.
14880
14881
14882 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14883
14884         * object.c, class-internals.h: added delegate-creation counter.
14885
14886 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14887
14888         * class.c: cleanup of the code that synthetizes interfaces for
14889         arrays in 2.0: saves quit a bit of corlib mempool memory.
14890         Code to fix bug #325495 ifdeffed out for now until the issues
14891         with memory usage and O(n^2) behaviour are fixed.
14892
14893 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14894
14895         * marshal.c: when possible, do not duplicate the name of the methods
14896         in the method builder and in the generated MonoMethod.
14897
14898 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
14899         * verify.c: added support for type checking ldind_* opcodes.
14900
14901 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
14902
14903         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
14904         which is used to distinguish the fully open instantiation of a TypeBuilder
14905         with the rest. This temporary hack is required to restore the property that
14906         the fully open instantiation is the same type of the generic type definition.
14907
14908         * class-internals.h (mono_generic_class_is_generic_type_definition):
14909         new function as part of the internal API.
14910
14911         * class.c (inflate_generic_type): return NULL when the generic inst is
14912         fully open. The fully open generic type is now the same as the generic type
14913         definition for non TypeBuilder types.
14914
14915         * class.c (mono_generic_class_get_class): removed assert since it is
14916         no longer valid, gklass->cached_class can point to the generic type definition.
14917
14918         * class.c (mono_generic_class_is_generic_type_definition): new.
14919
14920         * metadata.c (mono_generic_class_hash): added is_tb_open field
14921         to the hash calculation.
14922
14923         * metadata.c (free_generic_class): if the generic class is associated
14924         with the generic type definition, its field will come from the mempool and
14925         must not be freed.
14926
14927         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
14928         new, this function identifies the corner case of a TypeBuilder fully open
14929         instantiation.
14930
14931         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
14932         for lookup. Set gclass->cached_class to be the container class in case of
14933         the fully open instantiation of non TypeBuilder types.
14934
14935         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
14936         to compare generic classes.
14937
14938         * reflection.c (method_encode_methodspec): remove assert that
14939         no longer is valid.
14940
14941         * reflection.c (mono_reflection_generic_class_initialize): add
14942         an aditional assert to ensure the proper type is used.
14943
14944 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
14945
14946         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
14947         to enjoy it.
14948
14949 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
14950
14951         * verify.c (push_arg): Fixed support for ldarga
14952         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
14953         MonoType used as first arg in case of instance calls.
14954
14955 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
14956
14957         * verify.c: Support for verifying VAR and MVAR types, 
14958
14959 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
14960
14961         * icall.c (ves_icall_get_property_info): Set the reflected type of the
14962         accessors correctly.
14963
14964 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14965
14966         * threads.c: support OSX and other systems in
14967         mono_thread_get_stack_bounds (bug #328026).
14968
14969 2007-09-25  Martin Baulig  <martin@ximian.com>
14970
14971         * mono-debug.h
14972         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
14973
14974 2007-09-24  Martin Baulig  <martin@ximian.com>
14975
14976         * mono-debug.h
14977         (MonoDebugClassEntry): Moved the definition of this struct into
14978         mono-debug.c to make it private.
14979
14980         * mono-debug.c
14981         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
14982         type table per symbol file, we don't need to store the symfile id
14983         any longer.
14984
14985 2007-09-24  Martin Baulig  <martin@ximian.com>
14986
14987         Create one type table per symbol file, since a `MonoClass *' gets
14988         invalid when its image is unloaded.
14989
14990         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
14991         (MonoDebugHandle): Added `type_table'.
14992
14993 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
14994
14995         * mempool.c, mempool.h: added mono_mempool_new_size () API
14996         to be able to specify a smaller initial size for the pool.
14997         Adjusted the code to slowly increase pool size before using
14998         the previous default size.
14999         * image.c: use a small initial size for image mempools.
15000
15001 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
15002
15003         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
15004         Fixes ##320990.
15005
15006         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
15007         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
15008
15009 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
15010
15011         * metadata.c (mono_type_create_from_typespec): Remove an invalid
15012         free. Fixes #327438.
15013
15014 2007-09-21  Raja R Harinath  <harinath@gmail.com>
15015
15016         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
15017         generic instantiations, etc.
15018         <MONO_TYPE_ARRAY>: Likewise.
15019
15020 2007-09-21  Martin Baulig  <martin@ximian.com>
15021
15022         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
15023         these structs were never defined.
15024         (MonoDebugHandle): Removed the `_priv' field, it was never used.
15025
15026 2007-09-21  Martin Baulig  <martin@ximian.com>
15027
15028         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
15029
15030 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
15031
15032         * image.c: removed the guid hash tables: we can get the same info
15033         without the additional memory usage hit (partially fixes also bug #327052).
15034
15035 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15036
15037         * profiler.h, profiler-private.h, profiler.c: add a new profiler
15038         event to handle unloading methods. After the event is called, the
15039         corresponding MonoMethod* must be considered invalid.
15040         * loader.c (mono_free_method): call the new mono_profiler_method_free
15041         event.
15042
15043 2007-09-20  Mark Probst  <mark.probst@gmail.com>
15044
15045         * domain-internals.h: New flag in MonoJitInfo which marks shared
15046         generic methods.  New hash table (shared_generics_hash) in
15047         MonoDomain to keep track of shared generic methods.  Prototypes
15048         for functions to register and lookup shared generic methods.
15049
15050         * domain.c: Support for registering and looking up shared generic
15051         methods via a hash table (shared_generics_hash) in MonoDomain.
15052
15053         * class-internals.h: New exception to signal failure of shared
15054         compilation of a generic method.  New counters for generics
15055         sharing in MonoStats.
15056
15057 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15058
15059         * image.c, metadata-internals.h: don't keep a file descriptor open
15060         for loaded assemblies (bug#325988).
15061
15062 2007-09-19  Raja R Harinath  <rharinath@novell.com>
15063
15064         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
15065         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
15066         use the corresponding datatypes.
15067         (type_in_image): Update to changes.
15068         (CleanForImageUserData): Simplify.
15069         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
15070         Avoid quadratic behaviour in handling the "stolen" list by
15071         separating the filter predicate out, and by prepending the stolen
15072         items rather than appending them.
15073         (steal_ginst_in_image): Likewise.
15074         (mono_metadata_clean_for_image): Update to changes.
15075
15076 2007-09-19  Martin Baulig  <martin@ximian.com>
15077
15078         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
15079
15080 2007-09-19  Martin Baulig  <martin@ximian.com>
15081
15082         * mono-debug.c (mono_debug_cleanup): Don't call
15083         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
15084
15085 2007-09-19  Raja R Harinath  <harinath@gmail.com>
15086
15087         Fix crash on 'make run-test' in mcs/errors
15088         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
15089         Avoid more potential allocations in mono_class_from_mono_type.
15090         (ginst_in_image): Update to changes.
15091         (gclass_in_image): Rearrange slightly.
15092
15093 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15094
15095         * class.c (mono_class_init): Move the code that sets up class->methods to 
15096         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
15097
15098         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
15099         canonical instance of an inflated generic signature.
15100         (mono_type_create_from_typespec): Remove an invalid free.
15101
15102         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
15103
15104 2007-09-18  Marek Habersack  <mhabersack@novell.com>
15105
15106         * domain-internals.h: added a declaration of the
15107         mono_assembly_load_full_nosearch internal function.
15108
15109         * assembly.c (mono_assembly_load_with_partial_name): use
15110         mono_try_assembly_resolve return value properly.
15111         (mono_assembly_load_full_nosearch): copied the function body from
15112         mono_assembly_load_full, without the code to invoke assembly
15113         search hooks.
15114         (mono_assembly_load_full): calls the above new function and if the
15115         assembly is not resolved, invokes the search hooks.
15116
15117         * appdomain.c (mono_runtime_init): restore the global postload
15118         assembly search handlers.
15119
15120 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15121
15122         * class.c (mono_class_init): Make sure class->methods and class->properties
15123         are never NULL in the generics case.
15124
15125         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
15126
15127 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
15128
15129         * metadata.c (free_generic_class): Disable some code to fix the build.
15130
15131         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
15132
15133         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
15134         from the image mempool.
15135
15136         * metadata.c (free_generic_class): Free more data from the inflated class.
15137
15138         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
15139
15140         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
15141         mempool.
15142         (mono_type_create_from_typespec): Ditto.
15143
15144         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
15145         MonoImage to the caller.
15146         (mono_init_internal): Save the opened image in a global variable.
15147         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
15148
15149         * reflection.c (resolve_object): Fix a leak.
15150
15151         * metadata.c: Fix the freeing of data in the generics caches.
15152         
15153         * metadata.c (free_generic_inst): Comment this out to fix the build.
15154         (free_generic_class): Ditto.
15155
15156         * metadata.c: Free cached generic methods, instantinations and classes when
15157         they are removed from the caches.
15158         (mono_metadata_free_type): Free the type itself.
15159
15160         * class.c: Free the result of mono_class_inflate_generic_type () in a few
15161         places.
15162
15163 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
15164
15165         * boehm-gc.c: restrict managed allocs to __thread supporting
15166         architectures.
15167
15168 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
15169
15170         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
15171         (mono_generic_class_get_class): Fix a leak.
15172
15173         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
15174         mono_metadata_free_type ().
15175         (mono_metadata_inflate_generic_inst): Fix a leak.
15176
15177 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15178
15179         * mono-debug.c (free_header_data): Fix a leak missed earlier.
15180
15181         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
15182         mempool.
15183
15184         * mono-debug.c (mono_debug_close_image): Fix call to 
15185         g_hash_table_remove ().
15186
15187 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
15188
15189         * icall-def.h: redirect all the string ctor to the managed
15190         CreateString () methods.
15191         * string-icalls.c, string-icalls.h: removed dead code for string
15192         ctors and icalls.
15193
15194 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15195
15196         * mono-debug.c: Fix memory leaks.
15197
15198 2007-09-14  Jonathan Chambers <joncham@gmail.com>
15199
15200         * threads-types.h: Implement mono_hazard_pointer_set and 
15201         mono_hazard_pointer_clear macros using do/while(0) to fix
15202         compilation with MSVC.
15203         
15204         Code is contributed under MIT/X11 license.
15205
15206 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15207
15208         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
15209         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
15210
15211 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15212
15213         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
15214         icalls.
15215
15216 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15217
15218         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
15219         managed-code allocated as well.
15220
15221 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15222
15223         * class.c (mono_class_is_assignable_from): Add support for generic variance.
15224
15225 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
15226
15227         * boehm-gc.c: fixed the build after the AOT changes.
15228
15229 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15230
15231         * wrapper-types.h: Add an ALLOC wrapper type.
15232
15233         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
15234         reference managed allocator methods.
15235
15236 2007-09-12  Marek Safar  <marek.safar@gmail.com>
15237
15238         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
15239         of Type array and not MonoType, a fix suggested by Hari.
15240         
15241 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15242
15243         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
15244         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
15245         
15246         Code is contributed under MIT/X11 license.
15247
15248 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15249
15250         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
15251
15252 2007-09-12  Marek Habersack  <mhabersack@novell.com>
15253
15254         * image.c (do_mono_image_open): if assembly file fails to open and
15255         MONO_IOMAP is in effect, try to find the path in a
15256         case-insensitive way.
15257
15258         * appdomain.c (mono_runtime_init): do not install postload hooks -
15259         tests show that MS.NET doesn't use anything of that sort to
15260         trigger the AppDomain.AssemblyResolve event.
15261         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
15262         made non-static.
15263         (mono_runtime_init): init portability helpers here.
15264
15265         * assembly.c (mono_assembly_load_with_partial_name): if other   
15266         attempts fail, trigger the AppDomain.AssemblyResolve event handler
15267         to resolve the assembly.
15268
15269         * domain-internals.h: added mono_try_assembly_resolve and marked
15270         it as internal.
15271
15272 2007-09-11  Jb Evain  <jbevain@novell.com>
15273
15274         * object-internals.h (MonoReflectionDynamicMethod): add
15275         a `MonoReflectionType *owner` field. The owner is used
15276         * reflection.c:
15277         (mono_reflection_create_dynamic_method): use the owner of the dynamic
15278         method as the class declaring the dynamic method.
15279         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
15280         dynamic method to the declaring type of the methodbuilder.
15281
15282 2007-09-11  Mark Probst  <mark.probst@gmail.com>
15283
15284         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
15285         rules for calling methods via reflection.
15286
15287 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
15288
15289         * reflection.c (resolve_object): Add support for MonoGenericClass. 
15290         Inflate MonoType's.
15291
15292 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15293
15294         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
15295         provide a managed method that does fast allocations without needing
15296         a managed->unmanaged transition. Boehm GC implementation currently
15297         enabled for ptrfree objects on sane architectures.
15298
15299 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
15300
15301         * marshal.c, marshal.h: exported a couple of useful functions and
15302         added mono_mb_get_label () to easily handle backward branches.
15303
15304 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
15305
15306         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
15307
15308 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15309
15310         * loader.c (find_method): Fixed the regression introduced while
15311         fixing bug #81466.
15312
15313 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
15314
15315         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
15316         well.
15317         
15318         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
15319         icall.c reflection.c: Pass a MonoGenericContext argument to 
15320         mono_lookup_dynamic_token ().
15321
15322         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
15323         #82744.
15324         
15325 2007-09-09  Robert Jordan  <robertj@gmx.net>
15326
15327         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
15328         for generic methods.
15329
15330         * object.c (mono_object_get_virtual_method): Handle generic methods.
15331         Fixes bug #78882.
15332
15333         Code is contributed under MIT/X11 license.
15334
15335 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
15336
15337         * image.c: fix locking in mono_image_load_file_for_image ().
15338
15339 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
15340
15341         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
15342         used only as a cache: added an icall to fill it.
15343
15344 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
15345
15346         * reflection.h: exposed mono_reflection_free_type_info
15347         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
15348         since mono_reflection_bind_generic_parameters makes a copy of it.
15349         * reflection.c (free_type_info): subinfos should be freed.
15350         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
15351         made non static.
15352         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
15353         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
15354         this fixes #82695 and #81726.
15355    
15356
15357 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
15358
15359         * process.h, process.c:  added support for user profile/info in
15360           ProcessStartInfo. For now only Windows works.
15361
15362 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15363
15364         * metadata.c: consider the generic arguments when comparing
15365         signatures (bug #82614).
15366
15367 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15368
15369         * cil-coff.h, image.c: updated assembly loader to cope with the
15370         PE32+ 64 bit file format.
15371
15372 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15373
15374         * assembly.c, class.c, domain.c, loader.c: remove useless
15375         inclusion of cil-coff.h.
15376
15377 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
15378
15379         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
15380         if interface is marked with CoClassAttribute. 
15381    
15382         Code is contributed under MIT/X11 license.
15383
15384 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
15385
15386         * sgen-gc.c: ensure no object from the to space is copied again or finalized
15387         if it's seen twice in major collections.
15388
15389 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
15390
15391         * sgen-gc.c: big objects are not copied to the gray area, but they
15392         need to be considered for scanning, too, if they are brought alive
15393         by an object ready for finalizations or a survived one.
15394
15395 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15396
15397         * sgen-gc.c: properly account the number of disappearing links when
15398         they are nullified.
15399
15400 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
15401
15402         * sgen-gc.c: share the code to scan the registered roots between the
15403         different types of collections.
15404
15405 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15406
15407         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
15408
15409 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15410
15411         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
15412         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
15413
15414 2007-08-28  Mark Probst  <mark.probst@gmail.com>
15415
15416         * security-manager.c (mono_security_manager_get_methods):
15417         LinkDemandSecurityException now has 2 arguments instead of 3.
15418
15419 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
15420
15421         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
15422         platforms which need it.
15423
15424 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15425
15426         * sgen-gc.c: unregister thread data structures with a pthread_key_t
15427         dtor.
15428
15429 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
15430
15431         * threads.c: free the thread static data on thread exit.
15432
15433 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
15434
15435         * class.c: walk the hierarchy to find the generic definition for
15436         a class (fixes runtime part of bug #82498).
15437
15438 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
15439
15440         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
15441         ...
15442
15443         * image.c (mono_image_close): Here. Hopefully fixes #82510.
15444
15445 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15446
15447         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
15448
15449 2007-08-24  Robert Jordan  <robertj@gmx.net>
15450
15451         * appdomain.c: don't perform the ':'->';' substitution on Win32.
15452
15453 2007-08-24  Jb Evain  <jbevain@novell.com>
15454
15455         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
15456         for byref types.
15457
15458 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15459
15460         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
15461         #82286.
15462
15463 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
15464
15465         * assembly.c: Fix a warning.
15466         
15467 2007-08-23  Marek Habersack  <mhabersack@novell.com>
15468
15469         * appdomain.c: parse the <runtime> section looking for the probing
15470         element with the 'privatePath' attribute, which sets additional
15471         directories in which the runtime should look for assemblies.
15472
15473 2007-08-23  Robert Jordan  <robertj@gmx.net>
15474
15475         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
15476         Fixes #82499.
15477
15478 2007-08-23  Martin Baulig  <martin@ximian.com>
15479
15480         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
15481         _mono_debug_init_corlib() and remove it from the header file.
15482
15483 2007-08-23  Martin Baulig  <martin@ximian.com>
15484
15485         * mono-debug-debugger.c
15486         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
15487         don't notify the debugger about it.
15488
15489         * mono-debug-debugger.h
15490         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
15491
15492 2007-08-23  Robert Jordan  <robertj@gmx.net>
15493
15494         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
15495         Code is contributed under MIT/X11 license.
15496
15497 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15498
15499         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
15500
15501 2007-08-22  Martin Baulig  <martin@ximian.com>
15502
15503         * mono-debug.c: Store debugging info on a per-domain basis and
15504         free it on domain unload.  Add support for unloading symbol files.
15505
15506         * mono-debug.h
15507         (MonoDebugList): New typedef.
15508         (MonoSymbolTable):
15509         - add `data_tables and `type_table'.
15510         - replace 'symbol_files' and `num_symbol_files' with a
15511           `MonoDebugList *'.
15512         (mono_debug_data_table): Removed.
15513         (mono_debug_list_add): New public function.
15514         (mono_debug_list_remove): New public function.
15515         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
15516         (mono_debug_init_2_memory): Renamed into
15517         mono_debug_open_image_from_memory().
15518         (mono_debug_close_image): New public function.
15519         (mono_debug_domain_create): Likewise.
15520         (mono_debug_domain_unload): Likewise.
15521         (MONO_DEBUGGER_VERSION): Bump to 60.
15522
15523         * mono-debug-debugger.h
15524         (MonoDebuggerEvent):
15525         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
15526         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
15527         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
15528         - rename `THREAD_CREATED' and `THREAD_EXITED' into
15529           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
15530         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
15531           meaning.
15532         (mono_debugger_add_symbol_file): Removed.
15533         (mono_debugger_add_type): Removed.
15534         (mono_debugger_lookup_type): Removed.
15535         (mono_debugger_lookup_assembly): Removed.
15536
15537         * domain.c
15538         (mono_domain_create): Call mono_debug_domain_create().
15539         (mono_init_internal): Call mono_debug_init_corlib().
15540
15541         * assembly.c
15542         (mono_assembly_close): Call mono_debug_close_image().
15543
15544 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15545
15546         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
15547         mmap call.
15548
15549 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
15550
15551         * sgen-gc.c: ensure section->pin_queue_end is initialized
15552         correctly when non pinning objects in the section have been found.
15553
15554 2007-08-22  Marek Habersack  <mhabersack@novell.com>
15555
15556         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
15557         containing a list of directories separated by ':'. MSDN docs say
15558         the directories should be separated with ';'. Part of a bugfix for
15559         bug #81446
15560
15561 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
15562
15563         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
15564         it should MonoType and not MonoClass.
15565
15566 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
15567
15568         * culture-info-table.h : regenerated.
15569
15570 2007-08-20  William Holmes  <billholmes54@gmail.com>
15571
15572         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
15573          to call ReplaceFile Kernel32 on windows or in io-layer.
15574         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
15575         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
15576          as an internal call.
15577
15578         Code is contributed under MIT/X11 license.
15579
15580 2007-08-20  Jb Evain  <jbevain@novell.com>
15581
15582         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
15583         and MONO_EXCEPTION_FIELD_ACCESS.
15584
15585         * debug-helpers.[c|h]: new mono_field_full_name function.
15586
15587 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15588
15589         * class.c: Removed class_security_level() and moved it to
15590         security-core-clr.c.
15591
15592         * security-core-clr.c, security-core-clr.h: class_security_level()
15593         is now public and renamed to mono_security_core_clr_class_level().
15594         It also looks for security attributes in the classes a class is
15595         nested in.
15596
15597 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15598
15599         * security-core-clr.c, security-core-clr.h: CoreCLR security
15600         utility functions.
15601
15602         * Makefile.am: Added security-core-clr.[ch].
15603
15604         * security-manager.c, security-manager.h: Functions and enum for
15605         setting and getting the security mode.
15606
15607         * class.c: CoreCLR security checks.
15608
15609 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15610
15611         * icall-def.h, process.c, process.h: implemented icall to get
15612         user/system processor times.
15613
15614 2007-08-17  Mark Probst  <mark.probst@gmail.com>
15615
15616         * domain.c, threads.c, class-internals.h, domain-internals.h: New
15617         reader-lock-free jit_info_table.
15618
15619 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
15620
15621         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
15622
15623         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
15624
15625         * object-internals.h (MonoException): Add missing _data member.
15626
15627 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
15628
15629         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
15630         checking that only methods with matching qname or fqname are picked
15631         from implemented interfaces.
15632
15633 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
15634
15635         * verify.c (do_newarr):added, do type verification of
15636         newarr ops, push the right value on the eval stack.
15637         * verify.c (mono_method_verify): use do_newarr
15638
15639
15640 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
15641
15642         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
15643         factored the common code into get_boxable_mono_type, which
15644         is now using mono_type_get_full, this fixed byref related tests.
15645
15646 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
15647
15648         * class.c: added mono_type_get_full, this function has the same
15649         behavior of mono_class_get_full but the returned MonoType has
15650         all metadata of the associated token in case of a typespec token.
15651         * class.c: added mono_type_retrieve_from_typespec, used by 
15652         mono_type_get_full to retrieve the token type.
15653         * class.c (mono_class_create_from_typespec): changed to use
15654         mono_type_retrieve_from_typespec.
15655         * class.c (mono_ldtoken): changed to use mono_type_get_full
15656         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
15657         * class-internals.h: exported mono_type_get_full for internal use.
15658
15659 2007-08-16  Jb Evain  <jbevain@novell.com>
15660
15661         * domain.c (supported_runtimes): add entry for
15662         the 'moonlight' runtime version.
15663
15664 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15665
15666         * verify.c (mono_method_verify): small typo sliped in.  
15667
15668 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15669
15670         * verify.c (do_unbox_value): added, do type verification of
15671         unboxing ops
15672         * verify.c (mono_method_verify): use do_unbox_value
15673
15674
15675 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15676
15677         * verify.c (dump_stack_value): fixed typo, was printing string
15678         instead of object on stack.
15679         * verify.c (do_box_value): moved the byref check up as it leads
15680         to invalid code and should be done earlier.
15681         * verify.c: improved error messages for and ldobj
15682
15683 2007-08-15  William Holmes  <billholmes54@gmail.com>
15684
15685         * marshal.c (emit_marshal_custom): Omit the call to 
15686           marshal_native_to_managed when calling native to managed 
15687           and the argument is specified as an out argument.
15688
15689         Code is contributed under MIT/X11 license.
15690
15691 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15692
15693         * verify.c: fixed the type checks for generics, function pointers and vectors.
15694         Added type verification for ldobj and ldtoken. The verifier
15695         would segfault if header or signature of a method contained references
15696         to non-existant types.
15697
15698 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
15699
15700         * marshal.c (cominterop_get_ccw): Patch from
15701         Bill Holmes to no walk up interface hierarchy. 
15702         All parent methods should be present in the interface for COM.
15703    
15704         Code is contributed under MIT/X11 license.
15705
15706 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
15707
15708         * marshal.c (emit_marshal_com_interface): Patch from
15709         Bill Holmes to handle COM Interfaces as return values
15710         for native->managed calls.
15711    
15712         Code is contributed under MIT/X11 license.
15713
15714 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
15715
15716         * marshal.c (cominterop_get_idispatch_for_object): Implement
15717         for runtime callable wrappers.
15718    
15719         Code is contributed under MIT/X11 license.
15720
15721 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
15722
15723         * pedump.c (main): changed from mono_init to mono_init_from_assembly
15724         so 2.0 types are accessible
15725
15726
15727 2007-08-13  Miguel de Icaza  <miguel@novell.com>
15728
15729         * domain.c (mono_init_internal): Call mono_assembly_load_friends
15730         once we load mscorlib.   Due to the order in which we initialize,
15731         the mono_assembly_load_full routine that loads mscorlib did not
15732         load friends.   We now load it once we load the
15733         mono_defaults.internals_visible_class class. 
15734
15735         * assembly.c: Expose the mono_load_friend_assemblies method.
15736
15737 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
15738
15739         * verify.c: improved the handling of boxing, better
15740         type checking for unary ops and conversion. Fix bug
15741         regarding managed pointer compatibility checking
15742
15743 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
15744
15745         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
15746
15747         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
15748
15749 2007-08-09  Raja R Harinath  <rharinath@novell.com>
15750
15751         * reflection.c (dup_type): Remove.
15752         * class.c (dup_type): Remove.
15753         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
15754         instead of the dodgy 'dup_type'.
15755         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
15756         handle the case where 'dup_type' needed the second argument.
15757
15758 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
15759
15760         * domain.c: Fix a warning.
15761
15762 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
15763
15764         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
15765         checking that methods with the same fqname are not overridden
15766         with a method from an ancestor.
15767
15768 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
15769
15770         * threads.c (free_thread_static_data_helper): Avoid a crash if
15771         thread->static_data is not yet set.
15772
15773 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
15774
15775         * marshal.c: Use correct image when emitting
15776         native wrapper for COM calls.
15777    
15778         Code is contributed under MIT/X11 license.
15779
15780 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
15781
15782         * icall-def.h, security.c, security.h :
15783           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
15784
15785 2007-08-07  Martin Baulig  <martin@ximian.com>
15786
15787         * mono-debug-debugger.h
15788         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
15789
15790         * domain.c (mono_domain_free): Call
15791         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
15792
15793 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
15794
15795         * verify.c (check_underflow, check_overflow): error message now returns IL offset
15796         * verify.c (in_same_block): code should test if either offset is inside the clauses
15797         * verify.c (mono_method_verify): push the exception into the eval stack of exception
15798         and filter blocks
15799
15800 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
15801
15802         * image.c (mono_image_close): Fix a leak.
15803
15804         * object.c (mono_runtime_invoke_array): Avoid using alloca.
15805
15806         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
15807
15808 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15809
15810         * domain.c, threads.c, threads-types.h: fix memory retention issue
15811         with thread static variables not being cleared on domain unload.
15812         Reuse thread static slots after domain unload.
15813
15814 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
15815
15816         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
15817         nullable type.
15818
15819         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
15820         now done in mono_runtime_invoke_array.
15821
15822         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
15823         receiver is a nullable type.
15824
15825         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
15826         generic parameter.
15827
15828 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
15829
15830         * marshal.c: Implement COM Objects as return type for 
15831         managed->unmanaged calls. Added Release calls for COM Object
15832         out/return values in managed->unmanaged calls.
15833
15834         Code is contributed under MIT/X11 license.
15835
15836 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
15837
15838         * threads.h, threads-type.h: move the hazard pointer declarations
15839         to the private header.
15840
15841 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15842
15843         * file-io.c, appdomain.c: memory leak fixes.
15844
15845 2007-08-02  Dick Porter  <dick@ximian.com>
15846
15847         * socket-io.c
15848         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
15849         SO_REUSEADDR setting into io-layer/sockets.c.
15850
15851 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
15852
15853         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
15854         from Object when called on a generic parameter. Fixes #82211.
15855
15856 2007-08-01  Dick Porter  <dick@ximian.com>
15857
15858         * file-io.c (convert_share): Test FileShare values bit-by-bit.
15859         Fixes bug 79250 yet again.
15860
15861 2007-07-30  Martin Baulig  <martin@ximian.com>
15862
15863         Merged the `debugger-dublin' branch.
15864
15865         * mono-debug.h
15866         (MonoDebugDataTable): New typedef.
15867         (MonoDebugMethodAddressList): New typedef.
15868         (MonoDebugWrapperData): Removed.
15869         (MonoDebugSymbolTable): Removed `current_data_table',
15870         `current_data_table_size', `current_data_table_offset'.
15871         (MonoDebugDataItemType): Moved into mono-debug.c.
15872         (MonoDebugMethodJitInfo): Remove `address'.
15873         (mono_debug_data_table): New global variable.
15874         (mono_debug_lookup_method_addresses): New public function.
15875         (mono_debug_find_method): Take a `MonoMethod *', not a
15876         `MonoDebugMethodInfo *'.
15877
15878         * mono-debug.c: Drop support for the old symbol tables.
15879
15880 2007-06-28  Martin Baulig  <martin@ximian.com>
15881
15882         * mono-debug.c (mono_debug_debugger_version): New public variable.
15883
15884 2007-07-31  William Holmes  <billholmes54@gmail.com>
15885
15886         * metadata.c Changed mono_type_create_from_typespec to not insert
15887           the type into the hash map until after
15888           do_mono_metadata_parse_type has completed.
15889         Fixes Bug #82194
15890         Code is contributed under MIT/X11 license.
15891
15892 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
15893
15894         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
15895         generic parameter. Fixes #82211.
15896
15897 2007-07-27  Jb Evain  <jbevain@novell.com>
15898
15899         * pedump.c (dump_metadata, dump_metadata_header): dump
15900         versions contained in the metadata header.
15901
15902 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
15903
15904         * threads.c: register small_id_table with the GC.
15905
15906 2007-07-27  Mark Probst  <mark.probst@gmail.com>
15907
15908         * threads.c, threads.h, class-internals.h, object-internals.h:
15909         Hazard pointers, to be used by lock-free parallel algorithms.
15910
15911 2007-07-26  Dick Porter  <dick@ximian.com>
15912
15913         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
15914         routine on non-windows platforms, as I've not managed to think of
15915         a non-kludgy way of doing this.  Finishes off bug 78739.
15916
15917 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
15918
15919         * object.c: properly setup interface_bitmap in proxy vtables.
15920
15921 2007-07-25  Marek Habersack  <mhabersack@novell.com>
15922
15923         * appdomain.c (get_shadow_assembly_location): do not use TickCount
15924         to create unique shadow copy target directories, use the domain's
15925         serial number instead. Each domain gets a unique target directory
15926         that way.
15927
15928         * domain.c (mono_domain_create): added code to increment domain
15929         shadow copy serial number and cache the value in the current
15930         domain structure.
15931
15932         * domain-internals.h (struct _MonoDomain): added a new field -
15933         shadow_serial to hold the serial number used in generation of
15934         shadow-copy directories. This is to make sure that the directory
15935         name is unique for each and every domain created. We avoid a race
15936         condition with overriding assemblies already in use by other app
15937         domains.
15938
15939 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
15940
15941         * class.c (mono_bounded_array_class_get): fixed memory leak when 
15942         binding generic parameters.
15943
15944 2007-07-24  Raja R Harinath  <rharinath@novell.com>
15945
15946         * metadata.c (do_mono_metadata_parse_generic_class): Use
15947         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
15948         error.
15949
15950 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15951
15952         * loader.c, class-internals.h, reflection.c: removed the per-method
15953         generics hashtable: we use the global one through the call of
15954         mono_class_inflate_generic_method ().
15955
15956 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
15957
15958         * class.c, metadata.c, class-internals.h: introduce yet another
15959         generics global cache for inflated methods (fixes 98% of the perf
15960         issue in bug #81806).
15961
15962 2007-07-23  Raja R Harinath  <rharinath@novell.com>
15963
15964         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
15965         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
15966         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
15967         return a MonoGenericInst containing (a copy) of those types.
15968         (mono_metadata_inflate_generic_inst): Update to changes.
15969         (mono_metadata_parse_generic_inst): Likewise.
15970         (mono_get_shared_generic_inst): Likewise.
15971         * reflection.c (mono_class_bind_generic_parameters): Likewise.
15972         (mono_reflection_bind_generic_method_parameters): Likewise.
15973         * metadata-internals.h: Likewise.
15974         * icall.c (free_generic_context): Kill.
15975         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
15976
15977         * reflection.c (reflection_methodbuilder_to_mono_method): Use
15978         mono_metadata_type_dup.
15979         * marshal.c (mono_mb_create_method): Likewise.
15980
15981         * metadata.c (mono_metadata_type_dup): Rename from
15982         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
15983         MonoImage.  Handle a few more cases, esp. when no mempool is given.
15984         * marshal.c, metadata-internals.h: Update to changes.
15985
15986 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15987
15988         * class.c: fixed a small leak for array classes and removed warning.
15989
15990 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
15991
15992         * loader.c (mono_method_get_param_token): Make this work on generic methods.
15993         Return 0x8000000 for return parameters. Fixes #82161.
15994
15995 2007-07-21  Marek Habersack  <grendello@gmail.com>
15996
15997         * appdomain.c (get_shadow_assembly_location): append the current
15998         ticks value to the path. Avoids overwriting the same assemblies by
15999         several threads at the same time.
16000
16001 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
16002         and Raja R Harinath  <rharinath@novell.com>
16003
16004         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
16005         Simplify slightly.
16006         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
16007         property for testing if a method is a generic method definition.
16008
16009 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
16010
16011         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
16012
16013 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16014
16015         * verify.c: used function from private branch, reverted to the one in class.h 
16016
16017 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16018
16019         * verify.c: a typo slipped in and the code wont compile
16020
16021 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16022
16023         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
16024         disabled box instruction as it is doing the wrong thing
16025         improved stack dump messages, now it is easier to debug type related issues
16026
16027
16028 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
16029
16030         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
16031
16032 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16033
16034         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
16035         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
16036         grouped with class and valuetype. This change will simply 
16037         the code as it should be handled just like unmanaged pointers.
16038
16039 2007-07-19  Mark Probst  <mark.probst@gmail.com>
16040
16041         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
16042
16043 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16044
16045         * verify.c: several stack merge issues fixed, reference comparisons now
16046         check the type size. strict type check now works correctly.
16047         added more uses of IS_MANAGED_POINTER macro.
16048         fixed issues pointed by running the test suite against .net.
16049         
16050
16051 2007-07-19  Mark Probst  <mark.probst@gmail.com>
16052
16053         * class.c, loader.c, class-internals.h: Removed the
16054         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
16055         defines.
16056
16057         * icall.c: Better error checking in some internal reflection
16058         methods.
16059
16060 2007-07-18  William Holmes  <billholmes54@gmail.com>
16061
16062         * filewatcher.c : removed unused variable 'filename' in 
16063           ves_icall_System_IO_FSW_SupportsFSW
16064
16065 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
16066
16067         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
16068         obsolete, removed.
16069
16070 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
16071
16072         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
16073         
16074         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
16075
16076 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
16077
16078         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
16079         Implement generics support.
16080         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
16081
16082         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
16083         type_args and method_args arguments.
16084         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
16085         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
16086         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
16087
16088 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
16089
16090         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
16091           It adds a rootimage parameter to mono_reflection_get_type_internal,
16092           adds new function mono_reflection_get_type_with_rootimage and use
16093           the rootimage to resolve the types instead of the current image
16094
16095 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
16096
16097         * culture-info-table.h: Forgot to update after r78304.
16098
16099 2007-07-13  Raja R Harinath  <rharinath@novell.com>
16100
16101         * class.c (mono_class_is_open_constructed_type)
16102         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
16103
16104 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
16105
16106         * class.c (mono_bounded_array_class_get):  method fails if used with
16107         an incomplete TypeBuilder enum (no basetype field), fixed it by 
16108         avoiding calculating the size for such array as it cannot be instantiated.
16109         Fix bug #82015
16110
16111 2007-07-12  Raja R Harinath  <rharinath@novell.com>
16112
16113         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
16114         field.
16115         * metadata.c, reflection.c: Update to changes.
16116
16117 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
16118
16119         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
16120         mono_class_is_valid_enum, they are used to valide a enum when loading.
16121         * reflection.c: used new functions to throw TypeLoadException when and
16122         invalid enum is build with TypeBuilder. Fixes #82018
16123   
16124 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
16125
16126         * object.c: forgot commit of mono_class_setup_methods () to access
16127         iface->methods.
16128         * object-internals.h: added a few more handy fields to
16129         MonoIMTCheckItem.
16130
16131 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
16132
16133         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
16134         iface->methods.
16135
16136 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
16137
16138         * class-internals.h, object-internals.h, object.c: IMT-based
16139         interface invocation core from Massimiliano Mantione
16140         (massi@ximian.com) with a reworked arch-specific interface,
16141         bsearch implementation and a few bugfixes and memory savings by me.
16142
16143 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
16144
16145         * class.c (mono_class_create_from_typedef): mono would segfault if 
16146         an enum did not have a __value field. It now throws a TypeLoadException
16147         for such cases. Fix bug #82022
16148
16149 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
16150
16151         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
16152
16153 2007-07-09  Mark Probst  <mark.probst@gmail.com>
16154
16155         * class.c (mono_class_init): If a class is already inited but has
16156         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
16157
16158 2007-07-09  Mark Probst  <mark.probst@gmail.com>
16159
16160         * class.c: Properly handle the case of an unimplemented interface
16161         method.  Fixes: 81673.
16162
16163 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
16164
16165         * class-internals.h, object.c: cleanup patch from massi: use
16166         MonoVTable->interface_bitmap since the vtable interfaces offset array
16167         is going away.
16168
16169 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
16170
16171         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
16172         GetMDStreamVersion icall instead.
16173
16174 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
16175
16176         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
16177         not use mono_dl_build_path() with a full library name: makes
16178         fallbacks to libgaim and libfam work.
16179
16180 2007-07-06  William Holmes  <billholmes54@gmail.com>
16181
16182         * assembly.c: Added a continue statement in probe_for_partial_name when
16183          parse_assembly_directory_name fails.  Fixes : 82002
16184
16185 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
16186
16187         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
16188         and added a verification  for TYPEDBYREF.
16189         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
16190         make native int interchangeable with int32 and some small cleanup and formating.
16191         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
16192         handle byref of byref.
16193         * verify.c (push_local): handle byref of byref.
16194         * verify.c (do_binop): invalid mix of values is unverifiable
16195         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
16196         added visibility checks
16197         * verify.c (field related method): added visibility checks
16198         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
16199
16200 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
16201
16202         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
16203         string.
16204
16205 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
16206
16207         * profiler.c (mono_profiler_load): Fix an off-by-one error.
16208
16209         * marshal.c (emit_marshal_string): When returning a string from managed code,
16210         allways make a copy even for unicode strings. Fixes #81990.
16211
16212 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
16213
16214         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
16215         of byref generic inst types (bug #81997).
16216
16217 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
16218
16219         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
16220         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
16221
16222 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
16223
16224         * marshal.c (emit_marshal_string): Add support for unicode strings in
16225         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
16226
16227 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
16228
16229         * verify.c: field load/store are now verified, missing only access checks now
16230
16231 2007-06-28  Martin Baulig  <martin@ximian.com>
16232
16233         * mono-debug.c (mono_debug_debugger_version): New public variable.
16234
16235 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
16236
16237         * locales.c: When constructing DateTimeFormat or NumberFormat for
16238         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
16239         MonoCultureInfo contructed from the current locale is always
16240         read-only and has UseUserOverride set to true. All MonoCultureInfo
16241         instances returned for GetCultures have both IsReadOnly and
16242         UseUserOverride set to true. Fixes part of bug #81930.
16243
16244 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
16245
16246        * icall-def.h: Update System.__ComObject icalls
16247        * marshal.c: Avoid managed transition (and object creation)
16248        when looking up COM interface in RCW.
16249        * marshal.h: Ditto.
16250        
16251        Code is contributed under MIT/X11 license.
16252
16253 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
16254
16255         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
16256         to avoid crashes during assembly unloading.
16257
16258 2007-06-22  Raja R Harinath  <rharinath@novell.com>
16259
16260         Fix MethodInfo.IsGenericMethodDefinition
16261         * reflection.c (mono_reflection_bind_generic_method_parameters):
16262         Rearrange code to ensure we always uses a generic method definition.
16263         * class.c (mono_class_inflate_generic_method_full): Set
16264         'generic_container' field only for generic method definitions.
16265         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
16266         Use presense of 'generic_container' field as indication of being a
16267         generic method definition.
16268
16269 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
16270
16271         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16272
16273         * object-internals.h: Reflect changes in the layout of the managed Delegate
16274         class.
16275         
16276         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
16277         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
16278         runtime memory used by the dynamic method. Fixes #77146.
16279
16280 2007-06-21  Dick Porter  <dick@ximian.com>
16281
16282         * file-io.h: 
16283         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
16284         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
16285         81767.
16286
16287 2007-06-21  Raja R Harinath  <rharinath@novell.com>
16288
16289         * reflection.c (method_encode_methodspec): Add a tripwire.
16290         * class.c (inflate_generic_type): The fully open generic type is
16291         not the same as the generic type definition.
16292
16293 2007-06-21  Martin Baulig  <martin@ximian.com>
16294
16295         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
16296
16297         * mono-debug-debugger.h
16298         (MonoDebuggerBreakpointInfo): Removed.
16299         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
16300         (mono_debugger_remove_breakpoint): Likewise.
16301         (mono_debugger_breakpoint_callback): Likewise.
16302         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
16303
16304 2007-06-21  Raja R Harinath  <rharinath@novell.com>
16305
16306         * metadata.c (mono_metadata_lookup_generic_class): The fully open
16307         generic type is not the same as the generic type definition.
16308         * class.c (mono_generic_class_get_class): Likewise.
16309
16310 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
16311
16312         * icall.c: The second argument to 
16313         System.Reflection.MethodBase.GetMethodFromHandleInternalType
16314         is a MonoType not a MonoClass.
16315
16316 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
16317
16318         * verify.c: support for function pointers in the verifier
16319
16320 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
16321
16322         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
16323
16324 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
16325
16326         * assembly.c: removed Mono.Data.SqliteClient from the list of
16327         forward-compatible assemblies as it breaks the ABI (bug #81899).
16328
16329 2007-06-19  Raja R Harinath  <rharinath@novell.com>
16330
16331         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
16332         lookup/update with the loader lock.
16333         * reflection.c (mono_class_bind_generic_parameters): No need to
16334         protect mono_metadata_lookup_* with the loader lock.
16335         * class.c (inflate_generic_type): Likewise.
16336         
16337         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
16338         on a generic instantiated type.
16339
16340 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
16341
16342         *verify.c: produce meanfull error messages on verification error
16343         *verify.c: fixed some cases of verification errors reported as validation errors
16344         *pedump.c: fixed the error name array, now it shows validation errors properly
16345         *verify.h: fixed the contant that should be used for verification errors
16346
16347 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
16348
16349         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
16350         for bug #77596, 81858 and 80743 (generics data structures on domain
16351         unload).
16352
16353 2007-06-15  Raja R Harinath  <rharinath@novell.com>
16354
16355         Avoid allocating 'MonoGenericContext' on the heap.
16356         * class-internals (_MonoMethodInflated::context): Make field
16357         inline, not a pointer.
16358         * loader.c (method_from_methodspec): Allocate 'new_context' on the
16359         stack.  Use the context embedded within the inflated method as the
16360         hash key, rather than 'new_context'.
16361         * class.c (inflate_generic_context): Simplify.  Return a struct
16362         rather than allocating on the heap.
16363         (mono_class_inflate_generic_method_full): Update to changes.  Now,
16364         doesn't salt away a copy of the context -- simplifying the
16365         lifetime rules of a 'MonoGenericContext *'.
16366         (mono_method_get_context): Return pointer to embedded context.
16367         (setup_generic_array_ifaces): Allocate temporary context on stack.
16368         * reflection.c (inflate_mono_method): Likewise.
16369         (mono_reflection_bind_generic_method_parameters): Likewise.
16370         Use the context embedded within the inflated method as the hash key.
16371
16372         Avoid a source of allocation of 'MonoGenericContext'.
16373         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
16374         and 'cached_context' fields into embedded 'MonoGenericContext' field.
16375         * class.c: Update to changes.
16376         (mono_generic_class_get_context): Simplify drastically.  Now just
16377         returns a pointer to the field.
16378         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
16379         argument as a const pointer.
16380         (mono_metadata_generic_context_equal): Likewise.
16381         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
16382         Update to changes.
16383
16384 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
16385
16386         * verify.c improved the handling of brtrue/brfalse, factored out common code
16387
16388 2007-06-14  Raja R Harinath  <rharinath@novell.com>
16389
16390         Kill MonoGenericMethod.
16391         * class-internals.h (MonoGenericContext::method_inst): Rename from
16392         'gmethod' and convert to a MonoGenericInst.
16393         (MonoGenericMethod): Remove.
16394         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
16395         * loader.c (method_from_methodspec): Update to changes.  Use a
16396         MonoGenericContext as the key to the hashtable.
16397         * metadata.c (mono_metadata_generic_context_equal): Rename from 
16398         'mono_metadata_generic_method_equal' and take MonoGenericContext.
16399         (mono_metadata_generic_context_hash): Likewise from
16400         'mono_metadata_generic_method_hash'.  Change hash function.
16401         (mono_metadata_load_generic_params): Update to changes.
16402         (mono_get_shared_generic_method): Remove.
16403         * metadata-internals.h (mono_get_shared_generic_method): Remove.
16404         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
16405         (inflate_generic_context): Likewise.
16406         (mono_class_inflate_generic_method_full): Likewise.
16407         (setup_generic_array_ifaces): Likewise.
16408         (mono_class_create_from_typespec): Likewise.
16409         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
16410         (method_encode_methodspec): Update callsite.
16411         (reflection_methodbuilder_to_mono_method): Update to changes.
16412         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
16413         MonoGenericContext as the key to the hashtable.
16414         (inflate_mono_method): Update to changes.
16415
16416         * class-internals.h (MonoGenericMethod::container): Remove.
16417         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
16418
16419 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
16420
16421         * profiler-private.h, profiler.c, profiler.h: added API to profile
16422         exception events.
16423
16424 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
16425
16426         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
16427
16428 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
16429
16430         * verify.c: method invocation is now validated, now we verify parameter types on stack.
16431         Fixed overflow and underflow not aborting the verification process.
16432
16433 2007-06-13  Mark Probst  <mark.probst@gmail.com>
16434
16435         * class-internals.h (MonoStats): Added stats entries for dynamic
16436         code allocations.
16437
16438 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
16439
16440         * loader.c (mono_free_method): Free header->locals and header->clauses.
16441
16442         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
16443         dynamic case.
16444
16445         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
16446
16447         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
16448
16449 2007-06-12  Raja R Harinath  <rharinath@novell.com>
16450
16451         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
16452         the tables.
16453
16454 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16455
16456         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
16457
16458 2007-06-11  Raja R Harinath  <harinath@gmail.com>
16459
16460         MonoGenericMethod on a diet
16461         * class-internals.h (_MonoMethodInflated::reflection_info): Move
16462         here ...
16463         (_MonoGenericMethod::reflection_info): ... from here.
16464         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
16465         Update to changes.
16466         * reflection.c (inflate_mono_method): Likewise.
16467         (mono_reflection_bind_generic_method_parameters): Likewise.
16468
16469 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16470
16471         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
16472         *verify.c: factored long ldarg forms to share code with short forms
16473
16474 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16475
16476         *verify.c: fixed code formating factored some duplicate code
16477         into a new function
16478
16479         *verify.h: fixed binary incompatibility introduced earlier
16480
16481         *pedump.c: fixed formating
16482
16483 2007-06-11  Raja R Harinath  <harinath@gmail.com>
16484
16485         Fix assertion when disassembling Mono.C5.dll
16486         * loader.c (method_from_methodspec): Avoid inflating a method
16487         twice with the same context.  If the methodref is inflated, use
16488         the declaring method instead.
16489
16490         * class.c (mono_class_from_generic_parameter): Fix case similar to
16491         bug #81830 handled below, but for method containers.
16492
16493 2007-06-10  Raja R Harinath  <harinath@gmail.com>
16494
16495         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
16496         get_shared_generic_class.  Directly inflate the instance.
16497         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
16498         (inflate_generic_class): Delete.
16499         (get_shared_generic_class): Delete.  Move setting of
16500         'cached_class' and 'cached_context' ...
16501         * metadata.c (mono_metadata_lookup_generic_class): ... here.
16502
16503         * metadata.c (mono_metadata_lookup_generic_class): Change
16504         signature to take the components of a MonoGenericClass rather than
16505         an allocated MonoGenericClass.  Change semantics to be intern-like.
16506         * reflection.c (mono_class_bind_generic_parameters): Update to
16507         changes.  Make locking region tighter.
16508         * class.c (inflate_generic_class): Update to changes.
16509         (get_shared_generic_class): Likewise.
16510         * metadata-internals.h: Likewise.
16511
16512         * reflection.c (mono_class_bind_generic_parameters): Take and
16513         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
16514         (mono_reflection_bind_generic_parameters): Use
16515         'mono_class_bind_generic_parameters' rather than duplicate the code.
16516         * class.c (mono_bounded_array_class_get): Update to changes.
16517         * object-internals.h: Likewise.
16518
16519         * reflection.c (mono_class_bind_generic_parameters): Only support
16520         parameterizing generic type definitions.  Remove support for other
16521         open types.
16522
16523 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
16524
16525         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
16526
16527         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
16528         in the dynamic case.
16529
16530 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
16531
16532         * threads.c: When cleaning up thread, reset the Background bit.
16533         Fixes bug #81720.
16534
16535 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
16536
16537        * metadata.c: Move variable declarations to top of scope.
16538        * verify.c: Move variable declarations to top of scope.
16539
16540        Code is contributed under MIT/X11 license.
16541
16542 2007-06-08  Raja R Harinath  <rharinath@novell.com>
16543
16544         * reflection.c (mono_class_bind_generic_parameters): Replace
16545         open-coded loop with mono_metadata_inflate_generic_inst.
16546
16547         * class.c (get_shared_generic_class): Don't call
16548         mono_get_shared_generic_inst.  Use the container's own
16549         'class_inst'.
16550
16551         * metadata.c (mono_metadata_load_generic_params): Move
16552         initialization of 'context' field here from ...
16553         * class.c (mono_class_create_from_typedef): ... here, and ...
16554         * loader.c (mono_get_method_from_token): ... here.
16555
16556         * class.c (get_shared_generic_class): Rename from
16557         mono_get_shared_generic_class and make static.
16558         (mono_get_shared_generic_inst): Move to metadata.c.
16559         * loader.c (mono_get_shared_generic_method): Likewise.
16560         * class-internals.h, metadata-internals.h: Update to changes.
16561
16562         Fix #81830
16563         * class.c (mono_class_from_generic_parameter): Don't assume a
16564         generic container owner exists.  Generic containers from monodis
16565         don't have any.
16566
16567 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
16568
16569         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
16570         * verify.h: new typedefs to returns the non-verifiable status
16571         * verify.c: initial implementation of generics, stack merging and object compatibility check
16572
16573 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16574
16575         * class.c, image.c, class-internals.h (MonoImage): class_cache is
16576         a MonoInternalHashTable again (fixed bug in internal hash table
16577         code).
16578
16579 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16580
16581         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
16582         MonoInternalHashTable again (fixed bug in internal hash table
16583         code).
16584
16585 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16586
16587         * class.c, image.c, class-internals.h, domain.c,
16588         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
16589         changes.  Have to figure out what makes them break the SWF
16590         regression.
16591
16592 2007-06-04  Mark Probst  <mark.probst@gmail.com>
16593
16594         * class.c, image.c, class-internals.h (MonoImage): class_cache is
16595         a MonoInternalHashTable now.
16596
16597 2007-06-04  Mark Probst  <mark.probst@gmail.com>
16598
16599         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
16600         MonoInternalHashTable now.
16601
16602 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
16603
16604         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
16605         invoke_impl code.
16606
16607         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
16608
16609         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
16610         dependent trampoline.
16611
16612         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16613
16614         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
16615
16616 2007-05-29  Robert Jordan  <robertj@gmx.net>
16617
16618         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
16619
16620 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
16621
16622         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
16623
16624 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
16625
16626        * marshal.c: Fix interface lookup loops for
16627        cominterop_get_com_slot_for_method and 
16628        cominterop_get_method_interface. Only need to lookup
16629        if type is a class, else use interface type method is on.
16630
16631        Code is contributed under MIT/X11 license.
16632
16633 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
16634
16635         * reflection.c: HasSecurity can be present even if no specially 
16636         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
16637         SecurityAttribute). Fix CAS regression tests on buildbot.
16638
16639 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
16640
16641        * appdomain.c: Add configure checks for header files.
16642        * image.c: Add configure checks for header files.
16643        * file-io.c: Add configure checks for header files.
16644        * debug-mono-symfile.c: Add configure checks for header files.
16645        * threadpool.c: Add configure checks for header files.
16646        * console-io.c: Add configure checks for header files.
16647        * profiler.c: Add configure checks for header files.
16648        * rawbuffer.c: Add configure checks for header files.
16649        * icall.c: Add configure checks for header files.
16650        * rand.c: Add configure checks for header files.
16651        * socket-io.c: Add configure checks for header files.
16652
16653        Code is contributed under MIT/X11 license.
16654
16655 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
16656
16657         * reflection.c (mono_custom_attrs_from_builders): Remove the 
16658         assertion as it breaks the build.
16659         
16660         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
16661
16662         * reflection.c (lookup_custom_attr): Make a copy here too.
16663
16664         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
16665         dynamic images.
16666
16667         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
16668         images.
16669
16670         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
16671         info.
16672
16673 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
16674
16675         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
16676         (load_cattr_value): Ditto.
16677
16678 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
16679
16680         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
16681
16682 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
16683
16684         * threads.c: In "start_wrapper", set apartment_state to MTA if
16685         apartment_state is Unknown and we're running on 2.0 profile or
16686         higher.
16687         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
16688         to main method, then set apartment_state to Unknown on 1.0 profile,
16689         and MTA on 2.0 profile.
16690
16691 2007-05-16  Jb Evain  <jb@nurv.fr>
16692
16693         * class-internals.h (MonoDefaults): Add an attribute_class and
16694           customattribute_data_class.
16695         * domain.c (mono_init_internal): Populate them.
16696         * reflection.c: Use them to remove duplicates. Make a vew
16697         MonoClass variables `static'.
16698
16699 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
16700
16701         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
16702         step in implementing IMT, so that all isinst checks now can go
16703         through the bitmap.
16704         This was needed because vtables for TransparentProxy need to look
16705         like the vtable of the "target" class, so they need to point to
16706         its interface bitmap directly.
16707
16708         * object.c: inside "mono_class_create_runtime_vtable" and
16709         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
16710
16711 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
16712
16713         * object-internals.h
16714           culture-info.h : added territory field in MonoCulture and
16715           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
16716         * locales.c : fill territory field above too.
16717         * culture-info-table.h : regenerated.
16718
16719 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
16720
16721         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
16722         Fixes #81599.
16723
16724 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
16725
16726         * object.c: Always initialize apartment, even if 
16727         there is no custom attributes on entry point.
16728         
16729         Code is contributed under MIT/X11 license.
16730
16731 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
16732
16733         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
16734         * metadata.c: If no encoding is set, check for unicode
16735         on class.
16736         
16737         Code is contributed under MIT/X11 license.
16738
16739 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
16740
16741         * threads.c: Handle if mono_thread_current returns NULL 
16742         
16743         Code is contributed under MIT/X11 license.
16744
16745 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
16746
16747         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
16748         in start_wrapper. Added mono_thread_init_apartment_state and
16749         mono_thread_cleanup_apartment_state.
16750         * object.c: Initialize thread apartment state on main thread
16751         by checking for STAThreadAttribute on entry point.
16752         * object-internals.h: Add apartment_state field to MonoThread.
16753         * threads-types.h: Add unmanaged definition of 
16754         System.Threading.ApartmentState, MonoThreadApartmentState.
16755         
16756         Code is contributed under MIT/X11 license.
16757         
16758 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
16759
16760         * class.c: Fix windows build.
16761         * class-internals.h: Fix windows build.
16762         
16763         Code is contributed under MIT/X11 license.
16764
16765 2007-05-08  Robert Jordan  <robertj@gmx.net>
16766
16767         * process.c (CreateProcess_internal):
16768         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
16769         .CreateNoWindow was specified. Fixes #81496.
16770
16771 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
16772
16773         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
16774         step in implementing IMT, replaced it with two compact arrays
16775         (interfaces_packed and interface_offsets_packed) and a bitmap that
16776         is used for isinst checks (interface_bitmap).
16777
16778         * class.c: (compare_interface_ids): compare function to pass to
16779         bsearch when looking for an interface with a given id.
16780         (mono_class_interface_offset): reimplemented using bsearch on
16781         interfaces_packed, getting the offset from interface_offsets_packed.
16782         (print_implemented_interfaces): utility debugging function.
16783         (setup_interface_offsets): reworked to initialize interfaces_packed,
16784         interface_offsets_packed and interface_bitmap.
16785
16786         * object.c: replaced all accesses to "MonoClass.interface_offsets"
16787         with uses of interfaces_packed and interface_offsets_packed.
16788
16789 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
16790
16791         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
16792         mono_class_interface_offset prototype to wrap all accesses to
16793         "MonoClass.interface_offsets".
16794
16795         * class.c: Implemented mono_class_interface_offset, and wrapped all
16796         accesses to "MonoClass.interface_offsets".
16797
16798         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
16799         "MonoClass.interface_offsets".
16800
16801 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
16802
16803         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
16804         GetMethodFromHandle overloads (bug #78637).
16805
16806 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
16807
16808         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
16809         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
16810
16811 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
16812
16813         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
16814         #81498.
16815
16816         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
16817         gracefully.
16818         (mono_custom_attrs_from_index): Ditto.
16819
16820         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
16821         Fixes #81501.
16822
16823 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
16824
16825         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
16826         is now allocated from a mempool.
16827
16828 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
16829
16830         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
16831         caller holds threads_lock, leading to deadlocks. Fixes #81476.
16832
16833 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
16834
16835         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
16836         mono_loader_clear_error () too late. Fixes #81463.
16837
16838 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
16839
16840         * culture-info-table.h : regenerated.
16841
16842 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
16843
16844         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
16845         is missing.
16846
16847 2007-04-25  Dick Porter  <dick@ximian.com>
16848
16849         * Makefile.am: Put the mingw enforced-optimisation back into the
16850         PLATFORM_WIN32 section.
16851
16852 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
16853
16854         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
16855         patch.
16856
16857         * image.c (mono_image_load_module): New API function to load a module reference.
16858
16859         * image.c (load_modules): Load modules lazily. Fixes #80812.
16860
16861         * class.c (mono_class_from_typeref): Use mono_image_load_module.
16862         
16863         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
16864
16865         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
16866         to mono_image_load_module_dynamic.
16867
16868 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
16869
16870         * marshal.c: Fix calling convention for CCW on non-windows
16871         platforms. STDCALL on windows, CDECL everywhere else to work 
16872         with XPCOM and MainWin COM.
16873         
16874         Code is contributed under MIT/X11 license.
16875
16876 2007-04-23  Martin Baulig  <martin@ximian.com>
16877
16878         Fix #80969.
16879
16880         * loader.c
16881         (method_from_memberref): Added `gboolean *used_context' argument.
16882         (mono_get_method_from_token): Likewise.
16883         (mono_get_method_full): Don't insert the method in the cache when
16884         `used_context' is true.
16885
16886 2007-04-23  Raja R Harinath  <rharinath@novell.com>
16887
16888         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
16889
16890         * reflection.c (mono_reflection_bind_generic_parameters): Don't
16891         create new MonoTypes for returned types.
16892         * class.c (mono_generic_class_get_class): Export mono-internal.
16893         * class-internals.h: Update to changes.
16894
16895 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
16896
16897         * threadpool.c, threadpool.h, icall-def.h: patch from
16898         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
16899
16900 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
16901
16902         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
16903         
16904         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
16905
16906         * threads.c (mono_thread_get_stack_bounds): New helper function.
16907
16908         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
16909         Correctly compute stack bounds when attaching. Fixes #81394.
16910
16911 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
16912
16913         * reflection.c: fix handling of doubles in custom attributes
16914         for the arm-fpa format (bug #81368).
16915
16916 2007-04-18  Raja R Harinath  <rharinath@novell.com>
16917
16918         * reflection.c (assembly_add_win32_resources): Mildly relax an
16919         bounds check to let the end pointer point just past the end of the
16920         allocated buffer.  (may fix #81384)
16921
16922 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
16923
16924         * culture-info-table.h : regenerated.
16925
16926 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
16927
16928         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
16929         the thread is aborted early.
16930
16931 2007-04-05  Dick Porter  <dick@ximian.com>
16932
16933         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
16934         FindFirstFile()/FindNextFile() to find entries.  This lets the
16935         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
16936         81038.
16937
16938         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
16939         the parameters of
16940         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
16941
16942 2007-04-04  Martin Baulig  <martin@ximian.com>
16943
16944         * debug-helpers.c
16945         (mono_method_desc_full_match): Add support for nested classes.
16946
16947 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
16948
16949         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
16950
16951 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
16952
16953         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
16954         waiting for too many threads.
16955
16956 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
16957
16958         * environment.c: Fix return value check on uname so we can get the 
16959         executing version on Solaris operating systems.
16960
16961 2007-03-28  Jb Evain  <jbevain@gmail.com>
16962
16963         * class.c (mono_type_get_name_recurse): Complete the
16964         fix for the creation of assembly qualified names for
16965         pointer types. Fixes #81208.
16966
16967 2007-03-27  Dick Porter  <dick@ximian.com>
16968
16969         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
16970         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
16971         changed.
16972
16973         * threads.c
16974         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
16975         the value of ReleaseMutex().
16976
16977 2007-03-27  Dick Porter  <dick@ximian.com>
16978
16979         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
16980         in little-endian order, not network endian, so must be converted
16981         to host endian here.  Fixes bug 80593.
16982
16983 2007-03-22  Jb Evain  <jbevain@gmail.com>
16984
16985         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
16986         qualified names for pointer types. Fixes #81208.
16987
16988 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
16989
16990         * marshal.c: Add support for PreserveSigAttribute. 
16991         
16992         Code is contributed under MIT/X11 license.
16993
16994 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
16995
16996         * process.c: Fix endianness issues. Fixes #81126.
16997
16998         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
16999         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
17000
17001         * image.c (mono_image_lookup_resource): Make this work on big-endian
17002         machines.Change API contract so the caller needs to free the return value.
17003         
17004         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
17005         API change.
17006         
17007 2007-03-14  Martin Baulig  <martin@ximian.com>
17008
17009         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
17010         mono_type_get_desc() as well.
17011
17012 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
17013
17014         * icall.c:  Fix environ access in VS.  
17015         
17016 2007-03-13  Alp Toker  <alp@atoker.com>
17017
17018         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
17019         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
17020         #63841.
17021
17022 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
17023
17024         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
17025         circular references among dynamic methods. Fixes #81091.
17026
17027         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
17028
17029 2007-03-09  Martin Baulig  <martin@ximian.com>
17030
17031         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
17032
17033 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
17034
17035         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
17036         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
17037         
17038         Code is contributed under MIT/X11 license.
17039         
17040 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
17041
17042         * loader.c: Reapply patch for bug #79424.
17043
17044 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
17045
17046         * metadata.c (mono_type_to_unmanaged): Only convert object to
17047         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
17048
17049 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
17050
17051         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
17052         (and incorrectly set) is_reference field from MonoGenericInst.
17053
17054 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
17055
17056         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
17057         a little earlier.
17058
17059         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
17060
17061         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
17062
17063 2007-03-05  Miguel de Icaza  <miguel@novell.com>
17064
17065         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
17066         FileOptions.1 value to mean "temporary", map that to
17067         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
17068
17069         Fixes 80688
17070
17071 2007-03-03  Marek Habersack  <mhabersack@novell.com>
17072
17073         * appdomain.c: implement MS .Net style shadow copying. Copies of
17074         the assemblies are made in a subdirectory of the dynamic base
17075         directory, the assembly names are preserved.
17076         Copy .mdb and .config files along with the assemblies being shadowed.
17077
17078 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
17079
17080         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
17081         (emit_marshal_handleref): Ditto.
17082
17083         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
17084         on Visual C++. Fixes #80671.
17085
17086 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
17087
17088         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
17089         for clone operations.
17090
17091 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
17092
17093         * marshal.c: Fix warnings.
17094
17095 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
17096
17097         * loader.c: allow case-insensitive matching of the dll name
17098         in dllmap handling when prefixed with "i:".
17099
17100 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
17101
17102         * threads.c: Fix #ifdef for dummy_apc function for VS.
17103
17104 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
17105
17106         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
17107
17108 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
17109         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
17110         giving precedence to the methods with a fully qualified name
17111         (InterfaceName.MethodName) when building the interface sections
17112         of the vtable.
17113
17114 2007-02-16  Dick Porter  <dick@ximian.com>
17115
17116         * threadpool.c (append_job): Fix fast-path array handling, so it's
17117         less likely the array will grow exponentially when the load is
17118         heavy.
17119
17120 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
17121
17122         * metadata-internals.h, loader.c: fix dllmap lookup order
17123         for non-function maps, too, and prepare for fallback code.
17124
17125 2007-02-12  Robert Jordan  <robertj@gmx.net>
17126
17127         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
17128         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
17129         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
17130         GlobalFree. Fixes a part of bug #77075.
17131
17132 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
17133
17134         * loader.c: implemented typedef parent in field memberref.
17135
17136 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
17137
17138         * marshal.c: Fix warnings and remember to call Release on
17139         IUnknown of RCW.
17140         
17141         Code is contributed under MIT/X11 license.
17142
17143 2007-02-10  Miguel de Icaza  <miguel@novell.com>
17144
17145         * class-internals.h: Add MonoHandleRef definition, and
17146         handleref_class to mono_defaults. 
17147
17148         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
17149         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
17150
17151         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
17152         (do nothing on this stage)
17153         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
17154         (emit_marshal_handleref): New method, used for argument handling
17155         of HandleRefs. 
17156
17157 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
17158
17159         * class.c (mono_class_setup_parent): Lazily init com types.
17160         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
17161         init com types.
17162         * object.c (mono_remote_class_vtable): Lazily init com types.
17163         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
17164         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
17165         * domain-internals.h: Expose mono_init_com_types.
17166         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
17167         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
17168         Add support for COM Callable Wrapper marshalling.
17169         * marshal.h: Add icall definitions.
17170         * gc.c: Handle freeing of CCWs in finalizer code.
17171         
17172         Code is contributed under MIT/X11 license.
17173
17174 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
17175
17176         * reflection.c: changed all the signature encoding code to use
17177         a variable-sized buffer.
17178
17179 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
17180
17181         * marshal.c: locking fixes: never take the loader lock
17182         or other runtime locks when holding the marshal lock
17183         (fixes bug#80664).
17184
17185 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
17186
17187         * marshal.c: make the delegate function pointer mapping
17188         work for the moving GC.
17189
17190 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
17191
17192         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
17193         for bug #80618.
17194
17195 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
17196
17197         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
17198         gmodule.
17199
17200 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
17201
17202         * threadpool.c: made the code moving-GC safe.
17203
17204 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
17205
17206         * assembly.c, boehm-gc.c, class-internals.h, class.c,
17207         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
17208         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
17209         warning cleanup.
17210         * reflection.c: warning cleanup, some threading and moving GC fixes.
17211
17212 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
17213
17214         * class.c, loader.c: create the needed Set/Get/Address array methods
17215         as well as the .ctors in mono_class_init (), fixes bug #80567.
17216
17217 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
17218
17219         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
17220         we doesn't decrease its alignment. Should fix the sparc build.
17221
17222 2007-01-24  Dick Porter  <dick@ximian.com>
17223
17224         * socket-io.c
17225         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
17226         Create the returned object if we need to ignore an unsupported
17227         socket option.  Fixes a segfault reported by Atsushi.
17228
17229 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
17230
17231         * class.c, object.c: restrict GC-tracked fields to
17232         UIntPtr fields used inside corlib, so we provide better
17233         type info to the GC and also allow broken packing as in
17234         bug #80580.
17235
17236 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
17237
17238         * sgen-gc.c: removed duplicated function.
17239
17240 2007-01-19  Miguel de Icaza  <miguel@novell.com>
17241
17242         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
17243         value that means that the value is not supported, but that we
17244         should not return a failure, but instead report this as a
17245         successful operation.
17246
17247 2007-01-19  Raja R Harinath  <rharinath@novell.com>
17248
17249         Fix tests/bug79956.2.il
17250         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
17251         (mono_generic_class_get_class): If the generic definition in an
17252         enum, copy over other fields related to it.
17253
17254 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
17255
17256         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
17257         genericinst enums (bug #79215).
17258
17259 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
17260         * class.c: Fix bug 80307.
17261
17262 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
17263
17264         * image.c: if the file table is not present, try to load
17265         all the modules, since we don't have info about them
17266         having or not metadata (bug #80517).
17267         * assembly.c: allow mono_assembly_load_references () to
17268         work for netmodules.
17269
17270 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
17271
17272         * image.c, metadata-internals.h, object.c: execute module
17273         cctors when running on the 2 runtime if present (bug #80487).
17274
17275 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
17276
17277         * icall.c: optimized InitializeArray() on bigendian.
17278
17279 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
17280
17281         * icall.c: fix for the broken ARM FPA double format.
17282
17283 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
17284
17285         * icall.c: handle endian issues for r4 and r8 types, too, in
17286         the InitializeArray() icall.
17287
17288 2007-01-15  Miguel de Icaza  <miguel@novell.com>
17289
17290         * loader.c (mono_loader_error_prepare_exception): Clear the error
17291         once we have extracted the information from it, do this before we
17292         call into the JIT's class loading mechanisms.
17293
17294         * object.c (mono_class_create_runtime_vtable): Do not clear the
17295         loader error before calling mono_class_get_exception_for_failure
17296         as the loader error is needed inside
17297         mono_class_get_exception_for_failure to throw the error (thinko).
17298
17299         Fixes #80521
17300         
17301 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
17302
17303         * reflection.c: align fields rva data so it's faster to load at
17304         runtime.
17305
17306 2007-01-12  Raja R Harinath  <rharinath@novell.com>
17307
17308         Prepare to simplify GenericMethod handling.
17309         * class-internals.h (mono_method_get_context): New accessor function.
17310         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
17311         rather than directly accessing '->context' field.
17312
17313         * class-internals.h (_MonoGenericParam.method): Move ...
17314         (_MonoGenericContainer): ... here.  Add into union with klass field.
17315         * class.c, icall.c, loader.c, metadata.c, reflection.c:
17316         Update to changes.
17317
17318 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
17319
17320         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
17321         the wrapper type enum and reduce relocations.
17322
17323 2007-01-12  Raja R Harinath  <rharinath@novell.com>
17324
17325         * reflection.c (inflate_mono_method): Reuse method instantiation
17326         from the generic method, if available.
17327
17328 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17329
17330         * marshal.c (emit_marshal_variant): Fix conv_arg
17331         type in last commit, based on whether parameter is byref.
17332         
17333 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17334
17335         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
17336         marshalling.
17337         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
17338         MONO_TYPE_OBJECT back for VARIANT support.
17339
17340 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17341
17342         * marshal.c, marshal.h, icall-def.h: Implement 
17343         Marshal.ReAllocCoTaskMem.
17344
17345 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
17346
17347         * marshal.c: memory retention fixes: use the proper
17348         image cache for runtime_invoke method lookups.
17349
17350 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
17351
17352         * mempool.c: added code to help debug mempool allocations.
17353
17354 2007-01-11  Dick Porter  <dick@ximian.com>
17355
17356         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
17357         support (experimenting with faking it with IP_MTU_DISCOVER for
17358         systems that don't have IP_DONTFRAGMENT.)
17359         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
17360         icall.
17361
17362         * icall-def.h: new System.Net.Sockets.Disconnect icall.
17363
17364         * socket-io.h: Add new fields to MonoSocketAsyncResult
17365         corresponding to the new ones in Socket.cs.
17366
17367 2007-01-11  Raja R Harinath  <rharinath@novell.com>
17368
17369         Fix IronPython regression mentioned in #80249
17370         * metadata.c (do_mono_metadata_parse_generic_class): Clear
17371         'cached_context' field, since it may have been initialized as a
17372         side-effect of metadata parsing.
17373
17374         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
17375         (_MonoGenericClass.cached_class): Move here and rename from lone
17376         remaining field of ...
17377         (_MonoInflatedGenericClass): ... this.  Remove.
17378         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
17379         to changes.
17380
17381         Fix mcs/tests/test-128.cs regression.
17382         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
17383         2007-01-10 change below.
17384         [MONO_TYPE_OBJECT]: Recurse into array case.
17385
17386 2007-01-11  Raja R Harinath  <harinath@gmail.com>
17387
17388         * class-internals.h (mono_get_inflated_generic_class): Remove.
17389         * class.c (mono_get_inflated_generic_class): Remove.
17390         (mono_generic_class_get_class): Rename from
17391         mono_class_create_generic.
17392         (mono_class_from_mono_type) [GENERICINST]: Use it.
17393         * reflection.c, metadata.c: Update to changes.  Use
17394         'mono_class_from_mono_type'.
17395
17396 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
17397
17398         * reflection.c: use passed type when encoding an array element
17399         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
17400
17401 2007-01-09  Robert Jordan  <robertj@gmx.net>
17402
17403         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
17404         result arguments (someDelegate.EndInvoke (unrelatedAres)).
17405         Fixes bug #80392.
17406
17407 2007-01-09  Raja R Harinath  <rharinath@novell.com>
17408
17409         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
17410
17411         * object.c (set_value): Avoid aliasing between type->data.klass
17412         and type->data.generic_class.
17413
17414         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
17415
17416 2007-01-08  Raja R Harinath  <rharinath@novell.com>
17417
17418         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
17419         between type->data.klass and type->data.generic_class.
17420
17421 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
17422
17423         * marshal.c: In MS.NET, StringBuilder objects are not copied by
17424         value in out parameters.
17425
17426 2007-01-08  Raja R Harinath  <rharinath@novell.com>
17427
17428         Simplify invariant for MonoGenericClass::klass field.
17429         * class.c (mono_class_create_generic): Verify 'klass' is null.
17430         * metadata.c (do_mono_metadata_parse_generic_class): Don't
17431         initialize 'klass' field.
17432
17433 2007-01-05  Raja R Harinath  <rharinath@novell.com>
17434
17435         Ongoing work to avoid redundant data and simplify invariants.
17436         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
17437         'generic_class', and change type to a GenericInst.
17438         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
17439         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
17440
17441 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
17442
17443         * class.c : skip io-layer under PLATFORM_WIN32.
17444
17445 2007-01-03  Tor Lillqvist  <tml@novell.com>
17446
17447         Fix #80305: In a bundled executable, look in the bundled exe
17448         assembly to determine the runtime version. Add the possibility to
17449         bundle also the machine.config file.
17450         
17451         * assembly.c (mono_assembly_open_from_bundle): Make
17452         non-static. Allow being called even if we have no bundled
17453         assemblies, and return NULL right away in that case.
17454
17455         * domain-internals.h: Declare mono_assembly_open_from_bundle()
17456         here.
17457
17458         * domain.c (app_config_parse): Take an assembly exe file name as
17459         parameter instead of a config file name. Check for a bundled
17460         config file for that assembly by calling
17461         mono_config_string_for_assembly_file() (see below) before looking
17462         for one in the file system.
17463         (get_runtimes_from_exe): Corrsponding change to call of
17464         app_config_parse().
17465         (get_runtimes_from_exe): Check for bundled assembly exe file first
17466         by calling mono_assembly_open_from_bundle(). If no bundled
17467         assembly exe file is found, call mono_image_open() as before to
17468         look it up in the file system.
17469
17470         * mono-config.c: Add variable bundled_machinec_onfig.
17471         (mono_config_string_for_assembly_file): New function.
17472         (mono_config_for_assembly): Move code snippet that looks for a
17473         bundled assembly .config file into the above new function. Call
17474         it.
17475         (mono_register_machine_config, mono_get_machine_config): New
17476         functions to set and retrieve
17477
17478         * assembly.h: Declare mono_register_machine_config().
17479
17480         * mono-config.h: Declare mono_get_machine_config() and
17481         mono_config_string_for_assembly_file().
17482
17483         * icall.c: No declaration of environ necessary on Win32. It is
17484         declared (as a macro expanding to a function call) in stdlib.h.
17485         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
17486         New internal mono function. Returns the value of
17487         mono_get_machine_config() as a Mono string.
17488
17489         * icall-def.h: Add get_bundled_machine_config().
17490
17491 2007-01-04  Raja R Harinath  <rharinath@novell.com>
17492
17493         Remove redundant field
17494         * class-internals.h (_MonoGenericContext.container): Remove field.
17495         * loader.c (mono_method_get_signature_full): Don't parse a
17496         "container" for a signature parse when the signature is inflated
17497         immediately.
17498         (method_from_methodspec): Likewise, for a generic_inst.
17499         * class.c, metadata.c, reflection.c: Update to changes.
17500
17501 2006-01-04  Raja R Harinath  <rharinath@novell.com>
17502
17503         * class-internals.h (_MonoGenericClass): Rename 'context' field to
17504         'cached_context', and change semantics -- it starts off NULL, and
17505         is initialized on demand.
17506         * class.c (mono_generic_class_get_context): New accessor to
17507         replace 'context' field accesses.
17508         (mono_class_get_context): New helper.
17509         (*): Update to changes.
17510         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
17511
17512 2007-01-03  Miguel de Icaza  <miguel@novell.com>
17513
17514         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
17515         before the memcpy.   Fixes Marshal2 regression.
17516
17517 2007-01-02  Jb Evain  <jbevain@gmail.com>
17518
17519         * blob.h: add a MONO_TYPE_ENUM definition
17520         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
17521         fix the encoding of arrays of enums in custom attributes.
17522
17523         Fixes #79666.
17524
17525 2007-01-01  Miguel de Icaza  <miguel@novell.com>
17526
17527         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
17528         string is null terminated, but only cut the string short if it
17529         overflows the buffer.   
17530         
17531         (mono_string_to_byvalstr): Also fix this routine.   The code here
17532         was not properly terminating a string (it was only terminated
17533         because of the previous catch-all memset). 
17534
17535         I left the memset, because I do not know if applications expect
17536         the runtime to clear this region. 
17537
17538         Fixes #79944.
17539
17540         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
17541         Clear the error before returning to unmanaged code to prevent the
17542         runtime from being confused later on (fixes  80420).
17543         (ves_icall_type_from_name): Always call mono_loader_clear_error
17544         after parsing a type that could have failed.
17545         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
17546
17547         * loader.c (mono_loader_clear_error): Fix indentation.
17548
17549 2006-12-28  Martin Baulig  <martin@ximian.com>
17550
17551         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
17552
17553 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17554
17555         * reflection.c: patch from Rolf Bjarne Kvinge to fix
17556         getting a token for an EnumBuilder.
17557
17558 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
17559
17560         * reflection.c: be more careful in case resource generation
17561         fails to create the data array.
17562
17563 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
17564
17565         * sgen-gc.c: write barrier for clone and fix unregister handles.
17566
17567 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17568
17569         * reflection.c: some fixes needed in the generics code for the moving GC.
17570
17571 2006-12-22  Robert Jordan  <robertj@gmx.net>
17572
17573         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
17574         account. Fixes bug #80299.
17575
17576 2006-12-21  Raja R Harinath  <rharinath@novell.com>
17577
17578         Fix WaitHandle usage in delegates.
17579         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
17580         * object.c (mono_wait_handle_new): Use the property set method to
17581         initialize the handle.
17582         (mono_wait_handle_get_handle): New.
17583         * threadpool.c (mono_async_invoke): Use it.
17584         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
17585         Likewise.
17586         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
17587
17588 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
17589
17590         * marshal.c (emit_marshal): Call emit_marshal_variant and
17591         emit_marshal_com_interface when applicable.
17592         (emit_marshal_variant, emit_marshal_com_interface): Add
17593         methods for this case and remove if's from emit_marshal_object.
17594         
17595 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
17596
17597         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
17598
17599 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
17600
17601         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
17602         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
17603         and GlobalFree on Windows. Remove FIXME.
17604
17605 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17606
17607         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
17608         implementation for managed objects.
17609
17610 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
17611
17612         * object.c: implemented code to be used for checking
17613         that no reference field overlaps with non-references.
17614
17615 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
17616
17617         * threadpool.c: fix queue code to be compatible with the
17618         moving GC.
17619
17620 2006-12-18  Miguel de Icaza  <miguel@novell.com>
17621
17622         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
17623         in structures by throwing ArgumentNullException.
17624
17625         (emit_marshal_safehandle): Also when they are null parameters.
17626
17627         (emit_marshal_safehandle): Add support for ref
17628         SafeHandles parameters
17629
17630 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
17631
17632         * profiler.c: updated to use the mono-dl API instead of
17633         gmodule.
17634
17635 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
17636
17637         * profiler.c: updated to use the mono-dl dynamic loading
17638         API instead of gmodule.
17639
17640 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17641
17642         * profiler.c: use readlink, older versions of glib don't have
17643         g_file_read_link ().
17644
17645 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
17646
17647         * profiler.c: try to detect the path to mono if libc fails to provide
17648         a useful name (bug #80286).
17649
17650 2006-12-16  Raja R Harinath  <rharinath@novell.com>
17651
17652         Fix #80242
17653         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
17654         instance, use the generic type definition instead.
17655         (ves_icall_Type_GetNestedTypes): Likewise.
17656         * class.c (mono_class_create_generic): Always set the
17657         nested_classes of a generic instance to NULL, even if the generic
17658         type definition has nested types.
17659
17660 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
17661
17662         * marshal.c (mono_string_from_bstr): Revert previous Windows change
17663         and fix on Linux.
17664         
17665 2006-12-15  Miguel de Icaza  <miguel@novell.com>
17666
17667         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
17668         my arguments were in the wrong order.   I also fixed the Windows
17669         version which seems to have had the same issue.
17670
17671         (mono_free_bstr): On Unix, this is g_free.
17672         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
17673         conversions (for the tests in corlib to pass).
17674
17675 2006-12-14  Miguel de Icaza  <miguel@novell.com>
17676
17677         * marshal.c (emit_ptr_to_object_conv): For now, ignore
17678         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
17679         exception if a ref SafeHandle in a struct has changed).
17680         
17681         (emit_struct_conv): Do not perform layout checks for classes
17682         derived from SafeHandle, as those are specially handled. 
17683
17684         (emit_object_to_ptr_conv): Add support for
17685         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
17686
17687         (emit_marshal_safehandle): Implement conversion of return values
17688         of safehandles (MARSHAL_ACTION_CONV_RESULT).
17689         
17690         * threads.c: WaitHandle now is compiled with two different handles
17691         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
17692         for 2.0.
17693         
17694         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
17695         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
17696         these routines to cope with both kinds of fields.
17697
17698 2006-12-12  Miguel de Icaza  <miguel@novell.com>
17699
17700         * metadata.c (mono_type_to_unmanaged): Handle the case where
17701         type->data.klass is a SafeHandle, and in that case, return the
17702         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
17703         MONO_MARSHAL_CONV_SAFEHANDLE. 
17704
17705 2006-12-11  Miguel de Icaza  <miguel@novell.com>
17706
17707         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
17708         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
17709         calling emit_marshal_object.
17710
17711         (emit_marshal_safehandle): Implement marshalling of
17712         SafeHandle parameters (no ref support yet).
17713
17714         (MarshalAction): Document the defines as I implement
17715         them for SafeHandle.
17716
17717         (emit_marshal_object): indentation police.
17718
17719         * class-internals.h: Define MonoSafeHandle.
17720         Add safehandle_class to MonoDefaults type.
17721
17722         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
17723         list of classes to check for fields. 
17724
17725         * domain.c (mono_init_internal): Add SafeHandle to the list of
17726         mono_defaults loaded.
17727
17728 2006-12-15  Raja R Harinath  <rharinath@novell.com>
17729
17730         Fix #80253
17731         * reflection.c (mono_reflection_bind_generic_parameters): If the
17732         generic type definition is a type builder, ensure that it is fully
17733         initialized before instantiating it.  Kill some dead code.
17734
17735 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17736
17737         * object.c: clear the loader_error () before loading
17738         more metadata stuff (bug #80258).
17739
17740 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
17741
17742         * icall.c, icall-defs.h: type modifiers icalls for
17743         parameters and properties.
17744
17745 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
17746
17747         * object.c, icall.c: fixed warnings.
17748
17749 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
17750
17751         * marshal.c: fixed a couple of leaks and coding style in a few places.
17752
17753 2006-12-08  Dick Porter  <dick@ximian.com>
17754
17755         * process.c: Cope with NULL ProcessStartInfo arguments on windows
17756         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
17757         80173.
17758
17759 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
17760
17761         * process.c: ProcessStartInfo may have only filename set and
17762         arguments can be NULL.
17763
17764 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
17765
17766         * icall.c: fix leak found by Robert Jordan.
17767
17768 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
17769
17770         * marshal.c, marshal.h: generate managed method to access an element
17771         of a multi-dimensional array.
17772
17773 2006-11-30  Paolo Molaro (lupus@ximian.com)
17774
17775         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
17776
17777 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
17778
17779         * icall.c: back out GetFields () fix until the serialization code is
17780         fixed to not depend on the incorrect behaviour.
17781
17782 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
17783
17784         * profiler.c: provide defaults if none are set.
17785
17786 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
17787
17788         * Makefile.am, attrdefs.h: new public header file with
17789         constants for attributes for use by embedders.
17790
17791 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17792
17793         * icall.c: GetFields () fix for bug #80064.
17794
17795 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
17796
17797         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
17798         removed long unused icalls.
17799
17800 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
17801   
17802         * marshal.c: 
17803                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
17804                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
17805                 can be generated without a delegate class.
17806                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
17807         
17808         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
17809
17810 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17811
17812         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
17813         #80069.
17814
17815 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
17816
17817         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
17818         icall-def.h: added icalls needed by System.GC.
17819
17820 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
17821
17822         * loader.c: ensure the class in catch clauses is handled
17823         correctly for generics methods (fixes bug#79980).
17824
17825 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
17826
17827         * monitor.h, monitor.c: added mono_locks_dump () function
17828         to help debug deadlocks involving managed locks.
17829
17830 2006-11-13  Dick Porter  <dick@ximian.com>
17831
17832         * file-io.c (get_file_attributes): If the file is a symlink try
17833         and get the stat data for the target, but also add the
17834         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
17835         the specs for the windows symlink support, but will probably have
17836         to be reworked when I have test data from a vista machine.  Fixes
17837         bug 79887.
17838
17839 2006-11-13  Dick Porter  <dick@ximian.com>
17840
17841         * gc.c (mono_domain_finalize): 
17842         * marshal.c (mono_delegate_begin_invoke): 
17843         * threadpool.c (socket_io_init, mono_thread_pool_init)
17844         (mono_thread_pool_finish): 
17845         * monitor.c (mono_monitor_try_enter_internal): 
17846         * threads.c (mono_thread_resume, mono_thread_init)
17847         (mono_thread_suspend_all_other_threads)
17848         (mono_thread_execute_interruption): 
17849         * appdomain.c (mono_domain_unload): Check for NULL error returns
17850         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
17851         75733.
17852
17853 2006-11-11  Miguel de Icaza  <miguel@novell.com>
17854
17855         * process.c
17856         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
17857         Only close the handle if the value of the handle is not
17858         INVALID_HANDLE_VALUE.  This just makes the process a bit more
17859         robust.
17860
17861         Improvement for #75733, so that we do not run into this problem. 
17862
17863         
17864         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
17865         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
17866         internal variables.  Fixes #79462 
17867         
17868
17869 2006-11-09  Dick Porter  <dick@ximian.com>
17870
17871         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
17872         Use poll() not select().  Fixes bug 79397.
17873
17874 2006-11-09  Raja R Harinath  <rharinath@novell.com>
17875
17876         Fix #79872
17877         * assembly.c (mono_assembly_load_from_full): Check that the given
17878         image has an assembly manifest.
17879
17880 2006-11-09  Ankit Jain  <jankit@novell.com>
17881
17882         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
17883         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
17884         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
17885
17886 2006-11-07  Dick Porter  <dick@ximian.com>
17887
17888         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
17889         Put the old resolver behaviour back for pre-2.0 profiles.
17890
17891 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
17892
17893         * threadpool.c: precise GC and locking fixes.
17894
17895 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
17896
17897         * class.c: don't load types that have an explicit unaligned
17898         managed reference. Provide better info in the TypeLoad exception.
17899         Part of the fix for bug #79744.
17900         * object.c: use the correct check for class type load issues.
17901
17902 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
17903
17904         * class.c: enforce alignment of fields with managed references
17905         even when Pack=1 is forced by the user (bug #77788).
17906
17907 2006-11-03  Dick Porter  <dick@ximian.com>
17908
17909         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
17910         If the address reverse lookup fails, return it as the hostname
17911         anyway.  Fixes bug 79721.
17912
17913 2006-11-03  Dick Porter  <dick@ximian.com>
17914
17915         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
17916         Fix build on Windows.
17917
17918 2006-11-02  Dick Porter  <dick@ximian.com>
17919
17920         * icall-def.h: 
17921         * object-internals.h: 
17922         * exception.c (mono_get_exception_thread_interrupted): 
17923         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
17924         Fixes bug 74525.
17925
17926         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
17927         Check for pending Thread.Interrupt.
17928
17929 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
17930         * loader.c: Fixed bug 79684.
17931
17932 2006-10-27  Dick Porter  <dick@ximian.com>
17933
17934         * file-io.c (get_file_attributes): Force symlinks to directories
17935         to be returned as a regular file.  Fixes bug 79733.
17936 2006-10-26  Dick Porter  <dick@ximian.com>
17937
17938         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
17939         CreateFile to open a directory then we need to set the
17940         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
17941
17942 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
17943
17944         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
17945         friends.
17946
17947 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
17948
17949         * sgengc.c: small cleanup of timer code.
17950
17951 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
17952
17953         * sgen-gc.c: fix some warnings and start adding support for
17954         complete object removal on domain unload.
17955
17956 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
17957
17958         * assembly.c: build_assembly_name should not consider a version
17959         number without build or revision number invalid. Fixes bug #79715.
17960
17961 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
17962
17963         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
17964         call kernel32 function OutputDebugString directly.
17965         
17966         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
17967         
17968 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
17969
17970         * reflection.c: small cleanup, using a function to insert a MonoString
17971         in the string heap.
17972
17973 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
17974
17975         * reflection.c: moving GC fixes.
17976
17977 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
17978
17979         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
17980         all the objects with finalizers belonging to an unloading appdomain.
17981
17982 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
17983
17984         * sgen-gc.c: added ability to allocate even when the nursery is fully
17985         pinned and fixed a couple of bugs.
17986
17987 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
17988
17989         * threads.h: Revert the last change for now.
17990
17991         * threads.h (mono_thread_get_pending_exception): Rename this to
17992         mono_thread_get_undeniable_exception ().
17993
17994 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
17995
17996         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
17997         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
17998         when fname does not refer to valid assembly. This result in a more
17999         meaningful error message.
18000         * exception.c: added mono_get_exception_bad_image_format2 which 
18001         constructs a BadImageFormatException using the ctor taking a custom
18002         message and the file name. Passing in a NULL msg results in a default
18003         message.
18004         * exception.h: define mono_get_exception_bad_image_format2 function.
18005         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
18006         when file name pointed to an invalid IL image. Use 
18007         mono_get_exception_file_not_found2 to construct FileNotFoundException,
18008         as this results in a more meaningful error message.
18009
18010 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
18011
18012         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
18013         #79465.
18014
18015 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
18016
18017         * metadata.c (mono_type_size): Change the align parameter to guint32 for
18018         consistency with the other _size functions.
18019         (mono_type_stack_size): Ditto.
18020
18021         * class.c object.c icall.c: Fix warnings caused by the above change.
18022
18023         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
18024
18025         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
18026
18027         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
18028
18029 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
18030
18031         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
18032         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
18033         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
18034         threadpool.h, threads-types.h: mark more internal functions.
18035
18036 2006-10-11  Dick Porter  <dick@ximian.com>
18037
18038         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
18039         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
18040         reproduce the bug even before applying the fix.)
18041
18042 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
18043
18044         * reflection.c: allow retrieving attributes for arguments in generic
18045         methods (bug #79241).
18046
18047 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
18048
18049         * debug-mono-symfile.c: properly check fopen () result (found by
18050         coverity).
18051
18052 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
18053
18054         * reflection.c: make error message clearer and fixed two
18055         issuelets found by Coverity.
18056
18057 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
18058
18059         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
18060
18061 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
18062
18063         * object-internals.h, gc-internal.h, profiler-private.h:
18064         mark internal functions.
18065
18066 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
18067
18068         * reflection.c: put data in the text section.
18069         * icall.c: recognize more types in type_from_typename ().
18070         * process.c, marshal.c: added some GC FIXMEs.
18071
18072 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
18073
18074         * loader.c: check for NULL before initializing.
18075
18076 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
18077
18078         * gc.c (finalizer_thread): Use a non-alertable wait here.
18079
18080         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
18081         until the correct solution is found.
18082
18083 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
18084
18085         * reflection.c (mono_module_get_object): Avoid an assert when operating on
18086         modules with no metadata. Fixes #79596.
18087
18088         * image.c (load_metadata_ptrs): Put back the error message when
18089         the #- heap is encountered since the support is not complete yet.
18090
18091 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
18092
18093         * gc.c: do not allow the user to SuppressFinalize () a
18094         delegate because it would leak the trampoline if present.
18095
18096 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
18097
18098         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
18099         PropertyPtr table.
18100
18101 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
18102
18103         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
18104
18105         * metadata.c (mono_metadata_get_param_attrs): Ditto.
18106
18107         * row-indexes.h: Add definitions for *Ptr tables.
18108
18109         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
18110
18111         * metadata.c (mono_metadata_translate_token_index): New helper function to
18112         translate table indexes used in uncompressed metadata.
18113         (mono_metadata_decode_table_row): Ditto.
18114         (mono_metadata_decode_table_row_col): Ditto.
18115
18116         * metadata.c: Add table schema for *Ptr tables.
18117
18118         * class.c loader.c: Use the new helper function to access the affected metadata
18119         tables.
18120         
18121         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
18122         #38532.
18123         
18124 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
18125
18126         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
18127         sequences which can be unbounded in size. Fixes #79583.
18128
18129 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
18130
18131         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
18132         static initialization.
18133
18134         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
18135
18136         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
18137
18138         * domain.c (mono_domain_free): Free up type_init_exception_hash.
18139
18140         * object.c (mono_runtime_class_init): Implement correct semantics when a static
18141         ctor fails, i.e. throw the same exception on subsequent accesses.
18142         
18143 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
18144
18145         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
18146         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
18147         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
18148         Handle marshalling of interfaces and VARIANTs contained in structs.
18149         
18150         Code is contributed under MIT/X11 license.
18151         
18152 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
18153
18154         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
18155         
18156         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
18157         mempool.
18158
18159 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18160
18161         * console-io.c: ignore previous SIGINT handler.
18162
18163 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
18164
18165         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
18166         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
18167         #79460, #79461, #79485.
18168
18169         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
18170
18171         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
18172         #79217.
18173
18174 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
18175
18176         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
18177         could be generated from it.
18178
18179 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
18180
18181         * rand.c: fix read loop to correctly handle EINTR.
18182
18183 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18184
18185         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
18186         internal calls are defined to keep methods closer to the declaring
18187         type and allow a significant reduction in runtime relocations and
18188         memory usage.
18189
18190 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
18191
18192         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
18193         exception message to have FileNotFoundException use the default
18194         assembly load error message. Fixes bug #79426.
18195         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
18196
18197 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18198
18199         * threadpool.c: (start_thread_or_queue) use the root domain when
18200         creating the thread instead of the async object one.
18201
18202 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
18203
18204         * class.c, object.c, class-internals.h, reflection.c:
18205         for arrays, store element_size inside MonoClass (speedup
18206         for array object creation).
18207
18208 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
18209
18210         * icall.c: fixed CodeBase to use the file name and not the module
18211         name (bug #79365).
18212
18213 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
18214
18215         * mono-debug.c, mono-debug.h: export find_method as
18216         mono_debug_find_method ().
18217
18218 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18219
18220         * debug-helpers.c, class-internals.h: added a few functions useful
18221         when debugging under gdb.
18222
18223 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18224
18225         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
18226         characters that need special handling.
18227
18228 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
18229
18230         * mono-config.c: make the os/cpu specification more flexible,
18231         allowing lists and negation.
18232
18233 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
18234
18235         * marshal.c: COM Interop fixes. Handle case where method->klass.
18236         is interface. Handle BSTR/MonoString when null. Use CDECL as 
18237         calling convention on non-windows platforms. This is for
18238         compatibility with XPCOM and MainWin COM.
18239         
18240         Code is contributed under MIT/X11 license.
18241         
18242
18243 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
18244
18245         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
18246         correctly. Fixes #79217.
18247
18248         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
18249
18250 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
18251
18252         * mono-config.c: allow both an os and cpu attribute for dllmap
18253         and dllentry elemnets to enable a single config file to be used
18254         for multiple architectures.
18255
18256 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
18257
18258         * loader.c: MonoLoaderError was cleared too soon on load failure.
18259         Fixes bug #79424.
18260
18261 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
18262
18263         * icall.c: use the defining class vtable when accessing a
18264         static field, not a pobblibly derived class.
18265
18266 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
18267
18268         * icall.c string-icalls.c: Remove references to unicode.h.
18269
18270         * unicode.h unicode.c Makefile.am: Remove these unused source files.
18271
18272         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
18273
18274         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
18275         indicating the image where custom marshaller types should be looked up.
18276         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
18277         custom marshallers, instead of corlib. Fixes #79425.
18278
18279 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
18280
18281         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
18282
18283 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
18284
18285         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
18286         Implement Environment.ProcessorCount.
18287         
18288         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
18289         Implement Environment.ProcessorCount.
18290         
18291         * icall.c: 
18292         Add Environment.ProcessorCount icall.
18293         
18294         Patch by Jason McFall.
18295
18296 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18297
18298         * assembly.c: don't append .exe/.dll when the filename already contains
18299         one of those extensions.
18300
18301 2006-09-12  Martin Baulig  <martin@ximian.com>
18302
18303         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
18304         to array interfaces.
18305
18306 2006-09-11  Martin Baulig  <martin@ximian.com>
18307
18308         * reflection.c (mono_image_build_metadata): Create the
18309         MethodImpl's after emitting all types and methods, so we don't
18310         need another fixup pass for them.
18311
18312 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
18313
18314         * class.c (mono_class_from_name_case): Fix regression introduced by the last
18315         change.
18316
18317 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
18318
18319         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
18320         unload.
18321
18322 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
18323
18324         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
18325         args is not set. Fixes #78926.
18326
18327 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
18328
18329         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
18330
18331         * image.c (load_class_names): Move this to class.c, and rename it to 
18332         'mono_image_init_name_cache'.
18333         (load_modules): Fix a warning.
18334
18335         * class.c icall.c image.c: Initialize image->name_cache lazily.
18336
18337         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
18338         on its name using information in the AOT file.
18339
18340         * class.c (mono_class_from_name): Use the new hook function.
18341
18342 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
18343
18344         * reflection.c (mono_param_get_objects): Handle enum default parameter values
18345         correctly.
18346
18347         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
18348         Fixes #79289.
18349         
18350 2006-09-06  Martin Baulig  <martin@ximian.com>
18351
18352         * icall.c (mono_lookup_internal_call): Small fix.
18353
18354 2006-09-05  Raja R Harinath  <rharinath@novell.com>
18355
18356         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
18357         double g_free.
18358
18359 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
18360
18361         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
18362         when --debug is specified.
18363
18364 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
18365
18366         * class.c (setup_generic_array_ifaces): Fix a warning.
18367
18368 2006-09-04  Miguel de Icaza  <miguel@novell.com>
18369
18370         * Temporarily remove the patch to assemly.c that checks the
18371         assembly versions as it breaks our gacutil.
18372
18373 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
18374
18375         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
18376
18377         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
18378         a net 1.0 runtime.
18379
18380         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
18381         created using the default ctor. Fixes #79152.
18382         (mono_string_builder_to_utf16): Ditto.
18383
18384 2006-09-01  Martin Baulig  <martin@ximian.com>
18385
18386         Fix handling of the generic array interfaces.
18387
18388         * class-internals.h
18389         (MonoDefaults): Removed `generic_array_class' and added
18390         `generic_ilist' class.
18391
18392         * class.c
18393         (mono_bounded_array_class_get): Add the new generic array interfaces.
18394         (setup_generic_array_ifaces): New static method; create vtable
18395         entries for each method in the generic array interfaces.
18396
18397         * metadata.c
18398         (select_container): Allow "parent-less" generic methods.
18399
18400         * marshal.c
18401         (mono_marshal_get_generic_array_helper): New public method.
18402
18403         * icall.c
18404         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
18405         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
18406         moved the interncall into System.Array.
18407
18408 2006-09-01  Raja R Harinath  <rharinath@novell.com>
18409
18410         A few more cases of avoiding work on types with ->byref set.
18411         Has the real fix for #79238
18412         * icall.c (is_generic_parameter): New helper.
18413         (ves_icall_Type_GetGenericParameterPosition): Use it.
18414         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
18415         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
18416         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
18417         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
18418         reference types.
18419         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
18420         reference types.
18421         (ves_icall_Type_get_IsGenericInstance): Likewise.
18422         (ves_icall_Type_get_IsGenericType): Likewise.
18423
18424 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
18425
18426         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
18427         class if possible.
18428
18429         * mempool.h (mono_mempool_get_allocated): New helper function.
18430
18431         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
18432         change.
18433
18434         * mempool.c: Fix warnings and the calculation of stats.
18435
18436         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
18437
18438         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
18439
18440         * loader.c (mono_get_method_from_token): Update method_count stat.
18441
18442         * class-internals.h (MonoStats): Add some stats.
18443
18444 2006-08-31 Robert Jordan  <robertj@gmx.net>
18445
18446         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
18447         with managed variants.
18448         All code is contributed under the MIT/X11 license.
18449         
18450 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
18451
18452         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
18453         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
18454
18455         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
18456
18457         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
18458         with cycles in classes.
18459
18460         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
18461
18462         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
18463         missing a [MarshalAs] directive. Fixes #79203.
18464
18465         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
18466         klass->marshal_info. Fixes #79217.
18467
18468 2006-08-30  Martin Baulig  <martin@ximian.com>
18469
18470         Committing a patch from Joachim Ante <joe@otee.dk>:
18471         Add support for binary data symbol stores.
18472
18473         * debug-mono-symfile.c
18474         (mono_debug_open_mono_symbol_file): Renamed into
18475         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
18476         arguments.
18477
18478         * mono-debug.c
18479         (mono_debug_open_image): Added `raw_contents' and `size' args.
18480         (mono_debug_init_2_memory): New public function.
18481
18482 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
18483
18484         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
18485
18486 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18487
18488         * appdomain.c: implement support for ShadowCopyFiles.
18489
18490 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
18491
18492         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
18493         when value is NULL (and should remove CID #51).
18494
18495 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18496
18497         * image.c: moved 2 functions to ../utils.
18498
18499 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
18500
18501         * gc.c: cope with the target object of a GC handle being NULL
18502         (bug #78877).
18503
18504 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
18505
18506         * class.c: recursively check parent's explicit implementations
18507         of interface methods (fixes bug #79125).
18508
18509 2006-08-19  Miguel de Icaza  <miguel@novell.com>
18510
18511         * filewatcher.c: Avoid warnings when building, do not redefine
18512         constants that are defined.
18513
18514         Remove warnings.
18515
18516 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18517
18518         * image.c: don't fail when the link points to an absolute path.
18519
18520 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
18521
18522         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
18523         Fix CID #3.
18524
18525 2006-08-17  Miguel de Icaza  <miguel@novell.com>
18526
18527         * image.c (full_path): A new method used to obtain the actual path
18528         of an assembly even in the presence of symbolic links.  
18529
18530         This is necessary for the case where we are running a binary that
18531         has been GACed, but we are using the "published" path name
18532         ($prefix/mono/1.0/blah.exe) which happens to point to the real
18533         file in the GAC.
18534
18535         This was the source of the failure for the `xsp' command with the
18536         recent AppDomain changes, as far as the runtime was concerned,
18537         there were two different assemblies: $prefix/mono/1.0/blah.exe and
18538         $prefix/mono/gac/blah/version/blah.exe.
18539
18540         (do_mono_image_open): use full path
18541
18542 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18543
18544         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
18545
18546 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
18547
18548         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
18549         domain_id is supplied. Fix CID #241 and corlib's unit tests.
18550
18551 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18552
18553         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
18554         small structures. Fixes #78990.
18555
18556 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18557
18558         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
18559
18560         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
18561
18562 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18563
18564         * appdomain.c:
18565         * marshal.c: don't load all the assemblies from a domain into newly
18566         created ones. The new domains might have different rules and load
18567         assemblies from different locations. Fixes bug #76757.
18568
18569         Patch by Lluis. Conflicts resolved by Brian Crowell.
18570
18571 2006-08-16  Alp Toker  <alp@atoker.com>
18572
18573         * socket-io.c: First half of the fix for #79084.
18574         Set sa_size to the length of the content, not that of the struct.
18575         Don't add NULL suffix to the content, this should be done in
18576         managed code if needed.
18577
18578 2006-08-14  Raja R Harinath  <rharinath@novell.com>
18579
18580         Fix part of #79012
18581         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
18582         mono_metadata_parse_type returns NULL.
18583
18584 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
18585
18586         * normalization-tables.h : new file for string normalization data.
18587         * locales.c, locales.h, icall.c :
18588           added load_normalization_resource() for string normalization,
18589           and icall as well.
18590         * Makefile.am : added normalization-tables.h to the sources.
18591
18592 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
18593
18594         * marshal.c: Add more helper functions to reduce code duplication and use them
18595         everywhere.
18596
18597 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
18598
18599         * marshal.c: Fix non-x86 stdcall warnings.
18600         
18601         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
18602         them everywhere.
18603
18604 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
18605
18606         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
18607         type check on multi-dimensional arrays. Fixes #79000.
18608
18609 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
18610
18611         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
18612         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
18613         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
18614         * class-internals.h: add is_com_object to class structure.
18615         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
18616         null checks to COM object marshalling. Fix .ctor call on RCW.
18617         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
18618         
18619         All code is contributed under the MIT/X11 license.
18620
18621 2006-08-09  Dick Porter  <dick@ximian.com>
18622
18623         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
18624         racing mono_monitor_allocator_lock() somewhere, so don't delete
18625         the critical section for now.  Found by running and exiting
18626         monodevelop.
18627
18628 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
18629
18630         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
18631         (ves_icall_System_ComObject_FindInterface): Ditto.
18632         (ves_icall_System_ComObject_CacheInterface): Ditto.
18633
18634         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
18635         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
18636
18637 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18638
18639         * threadpool.c: treat pipes from process asynchronous reads as sockets
18640         when reading from them, so we get select/poll or epoll to wait for
18641         data.
18642
18643 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
18644
18645         * loader.c: Fix a typo (CID #233) in the null check.
18646
18647 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
18648
18649         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
18650         Hopefully fixes #78949.
18651         
18652         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
18653         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
18654         bytes. Fixes #78972.
18655
18656 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18657
18658         * filewatcher.c: we need to set errno here.
18659
18660 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18661
18662         * filewatcher.c: let Win32Exception get the error value.
18663
18664 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18665
18666         * filewatcher.c: translate errno into win32 errors for Win32Exception
18667         to know what happened.
18668
18669 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
18670
18671         * threadpool.c: Fix more warnings.
18672
18673         * assembly.c (search_loaded): Fix warnings.
18674
18675         * threadpool.c (mono_thread_pool_finish): Fix warnings.
18676         (mono_async_invoke): Ditto.
18677
18678 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
18679
18680         * object.c (mono_remote_class_vtable): Need to create proxy vtable
18681         entries for __ComObject type in addition to ComImport types.
18682         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
18683         about hash table.
18684         
18685         All code is contributed under the MIT/X11 license.
18686
18687 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
18688
18689         * image.c: avoid tentative loading of modulerefs that contain
18690         no metadata (P/Invoke library names).
18691
18692 2006-07-28  Dick Porter  <dick@ximian.com>
18693
18694         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
18695         mono_loader_lock() somewhere, so don't delete the critical section
18696         for now.  Found by running and exiting monodevelop.
18697
18698 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18699
18700         * filewatcher.c: define the inotify syscalls when we're building on
18701         linux and have sys/syscall.h. The build system might not have support
18702         for inotify but the target system might have it.
18703
18704 2006-07-26  Miguel de Icaza  <miguel@novell.com>
18705
18706         * domain.c: Documentation updates.
18707
18708         * loader.c (mono_free_method): Do not release the method
18709         information if we are being profiled, as profilers will use this
18710         information at shut down to present some data to the user.
18711
18712         This is needed so that the profiler does not crash, as the
18713         profiler tends to keep MonoMethods around, and they might become
18714         invalid if we free these.
18715
18716         (mono_get_method_constrained): Return the original CIL stream
18717         method as well, so verification can be performed against it.
18718
18719 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18720
18721         * filewatcher.[ch]: support for inotify file system watcher.
18722         * icall.c: add new internal calls for the inotify file system watcher.
18723
18724 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18725
18726         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
18727         #78888.
18728
18729 2006-07-20  Dick Porter  <dick@ximian.com>
18730
18731         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
18732         warning.
18733
18734 2006-07-20  Dick Porter  <dick@ximian.com>
18735
18736         * threads.c (start_wrapper): Do the thread cleanup while we still
18737         hold a reference to its object.  Fixes bug 78123.
18738
18739 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
18740
18741         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
18742         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
18743           "managed-to-managed".
18744         * icall.c: Redirect string constructors that take sbyte* to
18745           ves_icall_System_String_ctor_RedirectToCreateString.
18746         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
18747           to CreateString () methods with matching signature.
18748         * reflection.c: Use original security informations for
18749           MONO_WRAPPER_MANAGED_TO_MANAGED.
18750         * security-manager.c: Use original security informations for
18751           MONO_WRAPPER_MANAGED_TO_MANAGED.
18752         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
18753           that is a placeholder and only its address should be used.
18754         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
18755           that is a placeholder and only its address should be used.
18756
18757 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
18758
18759         Begin implementing COM Interop.
18760         * appdomain.c: Increment corlib version.
18761         * class.c: Set ComImport classes' parent to __ComObject.
18762         * loader.c: Mark cominterop methods as such.
18763         * domain.c: Add __ComObject class to MonoDefaults structure.
18764         * image.c: Add 2 hashtables to the image for COM Interop related methods
18765         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
18766         using the mempool allocator
18767         
18768         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
18769         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
18770         declaration for mono_metadata_type_dup_mp.
18771         
18772         * debug-helpers.c: Added strings for two additional wrapper types
18773         * object.c: Create proxy objects for ComImport classes
18774         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
18775         and added __ComObject class to MonoDefaults structure.
18776         
18777         * object-internals.h: Finish MonoRealProxy definition, and add definition of
18778         MonoComInteropProxy and MonoComObject.
18779         
18780         * marshal.c: Added support for COM Interop
18781         (signature_cominterop): Converts managed signature to corresponding
18782         unmanaged COM signature.
18783         (cominterop_get_function_pointer): gets unmanaged function pointer via
18784         COM object vtable
18785         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
18786         (cominterop_get_method_interface): returns interface type that method is defined on
18787         (mono_mb_emit_cominterop_call): emits native call to function pointer
18788         gotten from vtable
18789         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
18790         that matches signature of unmanaged function.
18791         (cominterop_get_native_wrapper): wrapper around adjusted method call.
18792         (cominterop_get_invoke): forwards call from proxy to __ComObject
18793         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
18794         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
18795         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
18796         
18797         * marshal.h: Added Marshal icall declarations.
18798         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
18799         so we can access them in finalizer
18800         
18801 2006-07-14  Dick Porter  <dick@ximian.com>
18802
18803         * object.c (mono_type_initialization_cleanup): Fix a race
18804         condition by temporarily commenting out the critical section
18805         deletion.
18806
18807 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
18808
18809         * reflection.c (create_custom_attr): Fix some warnings.
18810         (create_custom_attr_data): Ditto.
18811         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
18812         types. Fixes #78855.
18813
18814 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
18815
18816         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
18817
18818         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
18819
18820 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
18821
18822         * reflection.c (resolve_object): Add support for DynamicMethod.
18823
18824         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
18825         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
18826
18827 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
18828
18829         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
18830         don't leak GPtrArray's pdata has we have no use (nor free) for it.
18831
18832 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
18833
18834         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
18835         Fixes #77888.
18836
18837 2006-06-30  Raja R Harinath  <rharinath@novell.com>
18838
18839         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
18840         slightly: remove a shadow local variable.
18841
18842 2006-06-29  Raja R Harinath  <rharinath@novell.com>
18843
18844         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
18845         definition that introduces the virtual function slot.
18846         Also fix Coverity #105.
18847
18848 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
18849
18850         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
18851         for dynamic assemblies. Fixes #78724.
18852
18853 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
18854
18855         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
18856         Fixes #78722.
18857
18858 2006-06-21  Martin Baulig  <martin@ximian.com>
18859
18860         * reflection.c
18861         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
18862         fixes #76484.
18863
18864 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
18865
18866         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
18867
18868 2006-06-20  Raja R Harinath  <rharinath@novell.com>
18869
18870         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
18871         nor TYPEREFs.
18872         * class.c (mono_class_create_from_typespec): Add 'context' argument.
18873         Inflate result if necessary.
18874         (mono_class_get_full): Remove old version.  Rename from
18875         'mono_class_get' and add 'context' argument.  Pass it to
18876         ..._create_from_typespec.
18877         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
18878         (mono_ldtoken): Revert change below.
18879
18880 2006-06-20  Martin Baulig  <martin@ximian.com>
18881
18882         * class.c (mono_ldtoken): Don't pass the generic context to
18883         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
18884
18885 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
18886
18887         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
18888         and later freeing it. Fixes #78638.
18889
18890 2006-06-15  Miguel de Icaza  <miguel@novell.com>
18891
18892         * icall.c (mono_class_get_throw): Revert over-zealous error
18893         throwing, the caller for mono_class_get_throw will cope with
18894         errors when classes are not properly initialized already.
18895
18896         The code still copes with loader exceptions though.
18897
18898         Fixes the regression in reftype1 and reftype3 from the CAS tests.
18899         
18900 2006-06-14  Miguel de Icaza  <miguel@novell.com>
18901
18902         Fixes the `make run1' version of RuntimeAbort (to be commited,
18903         source is in Bugzilla).
18904         
18905         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
18906         FALSE on class loading failure instead of returning true.
18907
18908         * class.c (mono_class_create_from_typedef): It is possible for
18909         mono_metadata_interfaces_from_typedef_full to fail if a class is
18910         not found, cope with this.
18911         
18912
18913 2006-06-14  Dick Porter  <dick@ximian.com>
18914
18915         * socket-io.c: 
18916         * process.c: Fix a bunch of signed/unsigned warnings from gcc
18917         4.1.1
18918
18919 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
18920
18921         * culture-info-table.h : oops, forgot to make it nsync with r61548.
18922
18923 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
18924
18925         * icall.c: Another fix for building mono in Visual Studio.
18926
18927 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
18928
18929         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
18930         
18931 2006-06-09  Martin Baulig  <martin@ximian.com>
18932
18933         * debug-mono-symfile.c: Put this back and really fix it this
18934         time. Sorry for all the trouble.
18935
18936 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
18937
18938         * icall.c (mono_class_get_throw): Fix a warning.
18939         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
18940         ReflectionTypeLoadException if needed. Fixes #78606.
18941
18942         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
18943         (mono_class_init): Ditto.
18944
18945         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
18946         ref_only exceptions.
18947         (mono_loader_clear_error): Make this work even if there is no error.
18948
18949 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
18950
18951         * object-internals.h marshal.c marshal.h icall.c: Implement method 
18952         Marshal.GetComSlotForMethodInfo using internal call.
18953
18954 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
18955
18956         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
18957         a function for signalling it.
18958
18959         * class.c (mono_class_from_typeref): Use the new kind of loader error when
18960         a referenced assembly is not found.
18961
18962         * loader.c (mono_loader_error_prepare_exception): Add support for 
18963         LOADER_ERROR_ASSEMBLY. Fix formatting.
18964
18965 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
18966
18967         * domain.c appdomain.c class-internals.h marshal.c: Add support 
18968         for VARIANT marshalling on windows and increment corlib version
18969         since Variant struct was added.
18970
18971 2006-06-03  Miguel de Icaza  <miguel@novell.com>
18972
18973         * debug-mono-symfile.c: Revert Martin's previous patch which broke
18974         stack trace line information:
18975
18976         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
18977         (Martin) when looking up B which is between A and C, return A not C.
18978
18979         Bug is #78573.
18980
18981         Thanks to Alexander Olk for tracking this down.
18982
18983 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
18984
18985         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
18986         
18987         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
18988         avoid clobbering its value.
18989         (mono_string_to_lpstr): Fix a warning on windows.
18990
18991 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
18992
18993         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
18994
18995         * reflection.c loader.c: Removed references to 'dummy' flag.
18996
18997         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
18998
18999         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
19000         it gets GC tracking.
19001
19002         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
19003         GC tracking.
19004         
19005         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
19006
19007         * marshal.c threadpool.c: Update callers of mono_async_result_new.
19008
19009         * appdomain.c: Bump corlib version.
19010
19011 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
19012
19013         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
19014         CEE_STIND_REF when working with object references.
19015
19016 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
19017
19018         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
19019         Fixes #78539.
19020
19021 2006-05-30  Miguel de Icaza  <miguel@novell.com>
19022
19023         * loader.c (method_from_memberref): Fix argument value for
19024         mono_loader_set_error_method_load (I was passing the MonoClass
19025         instead of the class name char *).
19026
19027 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
19028
19029         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
19030         CEE_STIND_REF when working with object references.
19031
19032 2006-05-30  Martin Baulig  <martin@ximian.com>
19033
19034         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
19035         mono_method_full_name() change and replace the ':' with a '.'
19036         here.
19037
19038 2006-05-30  Martin Baulig  <martin@ximian.com>
19039
19040         * debug-mono-symfile.c
19041         (mono_debug_symfile_lookup_location): Fix the algorithm:
19042         when looking up B which is between A and C, return A not C.
19043
19044 2006-05-29  Martin Baulig  <martin@ximian.com>
19045
19046         * mono-debug.h
19047         (MonoDebugMethodInfo): Make the typedef public.
19048         (MonoDebugSourceLocation): New public struct.
19049
19050         * mono-debug.c
19051         (mono_debug_source_location_from_address): Removed.
19052         (mono_debug_source_location_from_il_offset): Removed.
19053         (mono_debug_il_offset_from_address): Removed.
19054         (mono_debug_address_from_il_offset): Removed.
19055         (mono_debug_lookup_method): New public function.
19056         (mono_debug_lookup_source_location): New public function; replaces
19057         the old mono_debug_source_location_from_*() functions; see the
19058         inline documentation.
19059         (mono_debug_free_source_location): New public function.
19060         (mono_debug_print_stack_frame): New public function; see the
19061         inline documentation.
19062
19063         * debug-mono-symfile.c
19064         (mono_debug_find_source_location): Renamed into
19065         mono_debug_symfile_lookup_location(); only take a
19066         `MonoDebugMethodInfo *' and an `offset' argument; added inline
19067         documentation.
19068         (mono_debug_find_method): Renamed into
19069         mono_debug_symfile_lookup_method().
19070
19071 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
19072
19073         * assembly.c (mono_assembly_open_full): Dont overwrite the status
19074         returned by mono_image_open_full ().
19075
19076         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
19077         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
19078         #78517.
19079
19080         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
19081         #78518.
19082
19083 2006-05-27  Miguel de Icaza  <miguel@novell.com>
19084
19085         * class.c (mono_class_from_typeref): handle missing images
19086         earlier, deals with bug #78418.   Refactor code; 
19087
19088         Fix a warning introduced in my previous commit (some stale code
19089         from before I revisited my patch).
19090
19091         * class.c (mono_class_create_from_typedef): On failure, remove the
19092         class from the MonoImage->class_cache as the class is not
19093         initialized;   Fixes the leak pointed out by Paolo.
19094
19095 2006-05-25  Dick Porter  <dick@ximian.com>
19096
19097         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
19098         DeleteCriticalSections until I figure out which one may still be
19099         sometimes locked when mono_thread_cleanup is called.
19100
19101 2006-05-24  Dick Porter  <dick@ximian.com>
19102
19103         * threads.c (mono_thread_cleanup): Move the threading cleanup out
19104         of mono_thread_manage and back into its own function, so it can be
19105         called after the finalizer thread has finished.
19106
19107         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
19108
19109 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
19110
19111         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
19112         Fixes #78495.
19113
19114         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
19115         with non-blittable elements.
19116         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
19117
19118 2006-05-24  Martin Baulig  <martin@ximian.com>
19119
19120         * mono-debug-debugger.h (MonoDebuggerEvent): Added
19121         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
19122
19123         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
19124         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
19125         `mono_debugger_event_handler' to NULL.
19126
19127 2006-05-24  Martin Baulig  <martin@ximian.com>
19128
19129         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
19130
19131 2006-05-24  Martin Baulig  <martin@ximian.com>
19132
19133         * mono-debug-debugger.h
19134         (mono_debugger_create_notification_function): Added
19135         `MonoCodeManager *' argument.
19136
19137 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
19138
19139         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
19140
19141 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
19142
19143         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
19144         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
19145         implementation.
19146
19147 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
19148
19149         * icall.c: precise GC support: objects can't be stored in unmanaged
19150         memory anymore, even if they are kept alive by other references: since
19151         they can move the GC needs to be able to always find them.
19152
19153 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
19154
19155         * object.c: precise GC support for static fields. Support
19156         for moving GCs: write barriers and pinned allocation for interned
19157         strings.
19158
19159 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
19160
19161         * domain.c, domain-internals.h: precise GC support for the MonoDomain
19162         structure.
19163
19164 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
19165
19166         * class.c, gc.c: sgen and precise GC updates.
19167
19168 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
19169
19170         * marshal.h, marshal.c: added write barrier wrapper and precise type
19171         fixes.
19172
19173 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
19174
19175         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
19176         support.
19177
19178 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
19179
19180         * reflection.c: precise and sgen GC updates.
19181
19182 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
19183
19184         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
19185
19186 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
19187
19188         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
19189
19190 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
19191
19192         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
19193         MONO_TYPE_OBJECT. Fixes #78462.
19194
19195 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
19196
19197         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
19198         and blittable types.
19199
19200 2006-05-17  Miguel de Icaza  <miguel@novell.com>
19201
19202         * class.c (mono_class_get_exception_for_failure): Implement parts
19203         of a TODO: if the loader error is set (instead of the class
19204         error), we return a Loader exception that can be properly thrown
19205         elsewhere.
19206
19207         This was exposed by some Winforms 2.0 code that I tried to run
19208         (Atsushi pointed me to it).
19209
19210 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
19211
19212         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
19213         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
19214         
19215         * marshal.c (emit_marshal_vtype): Add limited support for 
19216         UnmanagedType.LPStruct. Fixes #78427.
19217
19218         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
19219         Applied a patch from kangaroo to fix #77523.
19220
19221 2006-05-17  Martin Baulig  <martin@ximian.com>
19222
19223         * threads.c
19224         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
19225         (debugger_thread_created): Removed.
19226         (debugger_thread_exited): Removed.
19227
19228 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
19229
19230         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
19231
19232         * object-internals.h (MonoReflectionResource): Sync with managed version.
19233
19234 2006-05-12  Wade Berrier <wberrier@novell.com>
19235
19236         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
19237
19238 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
19239
19240         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
19241         functions try to allocate from the image mempool.
19242
19243 2006-05-12  Dick Porter  <dick@ximian.com>
19244
19245         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
19246
19247 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
19248
19249         * object.c: The FieldGetter and FieldSetter methods require the full
19250         name of the class, not only the name. Fixes bug #78277.
19251
19252 2006-05-11  Miguel de Icaza  <miguel@novell.com>
19253
19254         * loader.c (method_from_memberref): Do not pass the NULL klass to
19255         mono_loader_set_error_() methods.  Pass the non-NULL value
19256         (class). 
19257
19258 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
19259
19260         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
19261         (mono_assembly_close): Null out assembly->image->references after freeing it.
19262
19263         * image.c (mono_image_close): Free image->references.
19264         
19265         * reflection.c (mono_image_basic_init): Fix a small memory leak.
19266
19267 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
19268
19269         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
19270         before checking if it's NULL (g_assert).
19271
19272 2006-05-10  Martin Baulig  <martin@ximian.com>
19273
19274         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
19275         I thought I already killed that two months ago, but now it somehow reappeared.
19276
19277 2006-05-10  Martin Baulig  <martin@ximian.com>
19278
19279         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
19280
19281 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
19282
19283         * reflection.c: Allocate memory for dynamically created methods in the image
19284         mempools.
19285
19286 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
19287
19288         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
19289         don't use the ad pointer before checking if it's NULL (g_assert).
19290
19291 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
19292
19293         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
19294         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
19295
19296         * marshal.c: Allocate all signatures from mempools.
19297
19298         * marshal.c: Allocate some more signatures from mempools.
19299
19300 2006-05-09  Miguel de Icaza  <miguel@novell.com>
19301
19302         * object.c (mono_load_remote_field): The code used to provide a
19303         temporary variable for returning results if the user did not
19304         provide a result pointer.  But our temporary variable was allocted
19305         on the satck.
19306
19307         Fix calling code to always pass a result area.   Coverity ID 103.
19308
19309 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
19310
19311         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
19312         value, not the old. Fixes #78312.
19313         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
19314
19315         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
19316         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
19317         per-image cache.
19318
19319         * assembly.c (mono_assembly_close): Free image->references.
19320
19321         * assembly.c (mono_assembly_names_equal): Fix a warning.
19322         (mono_assemblies_cleanup): Cleanup more global data.
19323
19324         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
19325
19326         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
19327         ptr_cache and image->modules.
19328
19329         * image.c (mono_image_init): Allocate array_cache lazily.
19330         
19331 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19332
19333         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
19334         behavior was changed recently and has bad side effects.
19335
19336 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
19337
19338         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
19339         
19340         * assembly.c (mono_assembly_close): Remove a debug printf.
19341
19342         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
19343
19344         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
19345         to also allow for temporary references between mono_image_open ()/close ().
19346
19347         * domain.c (get_runtimes_from_exe): Add a FIXME.        
19348
19349 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
19350
19351         * marshal.c: Fix support for dynamic methods.
19352
19353         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
19354
19355         * marshal.c (mono_marshal_cleanup): New cleanup function.
19356
19357         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
19358         image mempools.
19359
19360         * class.c (mono_class_init): Fix leaking class->nested_classes.
19361
19362         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
19363
19364         * image.c (mono_image_init): Initialize the new cashes.
19365
19366         * image.c (mono_image_close): Destroy the new cashes.
19367
19368         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
19369
19370         * mempool.c (mono_mempool_strdup): New helper function.
19371
19372         * class-internals.h: Add prototype for mono_loader_unlock ().
19373
19374         * domain.c (mono_jit_info_table_find): Fix a warning.
19375         (mono_debugger_check_runtime_version): Ditto.
19376
19377         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
19378         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
19379         functions to these modules.
19380
19381         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
19382         metadata modules.
19383         
19384         * marshal.c (mono_free_bstr): Fix a warning.
19385
19386         * assembly.c (mono_assembly_open_full): Fix another small leak.
19387
19388         * object.c: Fix some unload leaks in the remoting code.
19389
19390         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
19391         function.
19392
19393         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
19394
19395         * reflection.c: Fix some unload leaks in dynamic assemblies.
19396
19397 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
19398
19399         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
19400         * marshal.h: Add BSTR support on Win32
19401         * icall.c: Add BSTR icalls
19402         * metadata.h: Add BSTR enums
19403
19404 2006-04-28  Miguel de Icaza  <miguel@novell.com>
19405
19406         Work to catch the crash from #76795 and turn it into an
19407         exception.   As I stubbed out pieces of the VisualBasic support,
19408         I found a number of places where the code was failing and I added
19409         checks to those places. 
19410         
19411         * metadata.c (do_mono_metadata_parse_generic_class): Make this
19412         function return a status code.  If we fail to parse the signature
19413         from mono_metadata_parse_generic_inst, return FALSE.
19414
19415         * loader.c (mono_get_method_from_token): If we fail to load the
19416         method (mono_class_get) return NULL.   
19417
19418         * (method_from_memberref): Return NULL if we are unable to parse
19419         the method signature
19420
19421         (mono_loader_error_prepare_exception): Since we now use the
19422         loader_error flag internally to stop processing, and obtaining
19423         exceptions that might be thrown will walk this code path the
19424         proper way of going from a MonoLoaderError into a
19425         MonoException was convoluted.   This new routine encapsulates the
19426         process of turning the error into an exception and *clearing* the
19427         error afterwards.
19428         
19429 2006-04-27  Miguel de Icaza  <miguel@novell.com>
19430
19431         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
19432         with missing assemblies), and to cope with:
19433
19434                 * Missing fieldref from a non-existing assembly.
19435                 * Missing methodref from a non-existing assembly.
19436
19437         The first batch of work to address *some* of the issues from 76661.
19438         
19439         * object.c (mono_class_create_runtime_vtable): If we fail to
19440         initialize the class raise the exception here. 
19441
19442         * metadata.c (mono_class_get_overrides_full): If any methods fail
19443         to load return the failure to the caller.
19444
19445         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
19446         flagging assemblies that failed to load.   
19447
19448         Do not crash if we are unable to load the assembly.
19449
19450         (mono_assembly_close): Do nothing with REFERENCE_MISSING
19451         assemblies. 
19452
19453         * loader.c (mono_loader_set_error_type_load): Change the
19454         convention to always pass unallocated strings, so we make our own
19455         copies (I know our own code had duplicated strings before, but
19456         this keeps the normal conventions).
19457         (method_from_memberref): Call mono_loader_set_error_method_load
19458         for all possible failures of loading the class. 
19459         Remove assert, turn into a loader error.
19460
19461         (mono_loader_error_to_exception): Move this routine from mini
19462         (mini_loader_error_to_exception) there was no need to have that in
19463         mini. 
19464
19465         * class.c (mono_class_from_typeref): If we were not able to load
19466         the assembly with mono_assembly_load_reference, call the
19467         mono_loader_set_error_type_load to register the problem.
19468
19469         (mono_class_setup_fields): If we fail to load the type from
19470         mono_metadata_parse_type_full, call mono_class_set_failure and
19471         break from the loop.
19472
19473         If class->exception_type is set, we do not layout the fields as
19474         that might crash the runtime, and instead return (from breaking
19475         from the previous loop).
19476
19477         (mono_class_setup_vtable): This now returns a boolean indicating
19478         whether the table was properly setup.   The decision is driven by
19479         mono_class_get_overrides_full which might run into non-existing
19480         methods. 
19481         
19482         (mono_class_init): Returns TRUE on success or FALSE if there was a
19483         problem in loading the type (incorrect assemblies, missing
19484         assemblies, methods, etc).
19485
19486         When we call mono_class_setup_fields we also check for a potential
19487         error inside this call (either a class exception or a general
19488         loader exception).
19489
19490         (mono_class_create_from_typedef): If the parent fails to load
19491         (calling mono_class_get_full) return NULL.
19492         
19493         ** Important **
19494
19495         calls to mono_metadata_parse_type_full should be checked
19496         everywhere and set the mono_class_set_failure
19497         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
19498
19499         The current patch checks the places where my manually constructed
19500         tests show the errors are showing up, but we should do it
19501         everywhere. 
19502
19503         ** Important2 **
19504
19505         mono_class_init return values should be tested everywhere, like
19506         the previous case this is something that we should audit
19507         everywhere and not only on the cases exposed by the tests I
19508         created. 
19509
19510 2006-04-26  Miguel de Icaza  <miguel@novell.com>
19511
19512         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
19513         boolean parameter and instead pass the information on `options'
19514         parameter (FileOptions).
19515
19516         * icall.c: Register the new signature for MonoIO.Open.
19517
19518         * debug-helpers.c (dis_one): Trying to understand how coverity
19519         works.  Fix Run 5, item 78.
19520
19521 2006-04-26  Dick Porter  <dick@ximian.com>
19522
19523         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
19524         dereference.
19525
19526 2006-04-25  Martin Baulig  <martin@ximian.com>
19527
19528         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
19529
19530         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
19531         debugger_thread_created().
19532         (debugger_gc_push_all_stacks): Don't handle the main thread in any
19533         special way.
19534         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
19535         (mono_debugger_finalize_threads): New function; undo the effects
19536         of mono_debugger_init_threads().
19537         (mono_debugger_create_all_threads): Removed.
19538
19539 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
19540
19541         * image.c (mono_image_close): Tidy up trace messages.
19542
19543         * assembly.c (mono_assembly_close): Ditto.
19544
19545         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
19546         no longer references an already freed assembly. Fixes #78168.
19547
19548 2006-04-21  Dick Porter  <dick@ximian.com>
19549
19550         * threads.c (mono_thread_detach): Fix reference counting when
19551         detaching threads.
19552
19553 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
19554
19555         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
19556         #78155.
19557
19558 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
19559
19560         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
19561         (mono_type_to_stind): Ditto.
19562
19563         * marshal.c: Use the new helper functions to simplify code.
19564
19565         * image.c (mono_image_close): Add some code for help debug assembly unloading
19566         problems.
19567
19568         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
19569         image mempool.
19570
19571         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
19572         assembly was already loaded in another appdomain. Fixes #78083.
19573
19574 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
19575
19576         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
19577         referenced assemblies.
19578         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
19579
19580         * domain.c (mono_domain_free): Add a trace message.
19581
19582         * appdomain.c (add_assemblies_to_domain): Ditto.        
19583
19584         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
19585         field.  
19586
19587 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
19588
19589         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
19590
19591 2006-04-12  Martin Baulig  <martin@ximian.com>
19592
19593         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
19594         `USE_INCLUDED_LIBGC'.   
19595
19596 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
19597
19598         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
19599         the patch contains ../ and a small directory name later. Hopefully fixes
19600         #78035.
19601
19602 2006-04-10  Martin Baulig  <martin@ximian.com>
19603
19604         Clean up the debugger's thread-handling code.
19605
19606         The debugger's thread-handling code has been moved from
19607         ../mini/debug-debugger.c to threads.c.  We now iterate directly
19608         over the `threads' hash, keep track of exiting threads and also
19609         use proper locking.
19610
19611         We can now debug XSP and XSP based applications with the debugger.
19612
19613         * object-internals.h (MonoThread): Added `gpointer end_stack'.
19614
19615         * threads.h
19616         (MonoThreadCallbacks): Removed; this was only used by the debugger.
19617         (mono_install_thread_callbacks): Likewise.      
19618
19619         * threads.c (mono_thread_callbacks): Removed.
19620         (debugger_thread_created, debugger_thread_exited): New static functions.
19621         (start_wrapper): Call debugger_thread_created().
19622         (thread_cleanup): Call debugger_thread_exited().
19623         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
19624         (mono_debugger_init_threads): New public function.
19625         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
19626         iterate directly over the `threads' hash and also use proper locking.
19627
19628         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
19629
19630         * mono-debug-debugger.h
19631         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
19632
19633 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
19634
19635         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
19636         argument type=array. Fixes #78057.
19637
19638 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
19639
19640         * culture-info-table.h : regenerated. Fixed bug #69652.
19641
19642 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
19643
19644         * loader.c metadata.c: Reapply a variant r59116.
19645         
19646         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
19647
19648         * class.c (mono_class_setup_interface_offsets): New internal function.
19649
19650         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
19651         interfaces too. Fixes #77398.
19652
19653         * reflection.c (encode_cattr_value): Add support for 
19654         parameter type=object, argument type=array.
19655         (load_cattr_value): Ditto. Fixes #77916.
19656
19657         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
19658         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
19659
19660         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
19661         a byval char array and CharSet is Ansi.
19662
19663         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
19664
19665 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
19666
19667         * metadata.c: Add some locking comments.
19668         
19669         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
19670         mempool.
19671         (mono_metadata_free_method_signature): Don't free the signature itself.
19672
19673         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
19674
19675         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
19676         reference the same MonoImage.
19677         (mono_assembly_load_from_full): Add an assert.
19678
19679 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
19680
19681         * image.c (mono_image_close): Don't put the image we are about to free into the
19682         loaded_images_guid_hash.
19683
19684         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
19685         to reduce code duplication.
19686
19687         * marshal.c: Register the native functions called by this module as icalls, to
19688         somewhat centralize the creation of MonoMethodSignature's.
19689
19690         * loader.c (mono_method_signature): Add a cache for method signatures.
19691
19692         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
19693         the parameter attributes of a method.
19694         (mono_metadata_parse_method_signature_full): Refactored the computation of
19695         parameter attributes into a separate function. Also avoid one allocation in
19696         most cases.
19697
19698         * assembly.c (mono_assembly_close): Ditto.
19699
19700         * image.c (mono_image_close): Log trace messages with INFO level.
19701
19702         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
19703
19704         * image.c reflection.c: Correct reference counting of image modules.
19705         
19706         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
19707         of this function from the image mempool.
19708         
19709         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
19710         to allow more cached types to be used.
19711
19712         * mono-debug.c (mono_debug_add_method): Appled patch from
19713         David S. Miller  <davem@sunset.davemloft.net>: Access 
19714         minfo->lexical_blocks[] entry elements using read32().
19715
19716 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
19717
19718         * loader.c (mono_free_method): No longer free the method header for non-dynamic
19719         methods as it is allocated from the mempool.
19720
19721         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
19722         image mempool.
19723
19724         * metadata-internals.h: Add comments describing the reference counting scheme
19725         used for MonoImage and MonoAssembly.
19726
19727         * image.c assembly.c reflection.c: Rework reference counting of images and 
19728         assemblies so they are freed when the runtime is shut down. Free some 
19729         additional memory structures when an image is unloaded.
19730         
19731 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
19732
19733         * class.c loader.c reflection.c: Allocate more data structures in
19734         the image mempool.
19735
19736 2006-03-31  Miguel de Icaza  <miguel@novell.com>
19737
19738         * icall.c
19739         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
19740         build on pre glib 2.4 systems.
19741
19742 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
19743
19744         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
19745
19746         * icall.c: Fix some warnings.
19747
19748 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
19749
19750         * culture-info-table.h : regenerated.
19751
19752 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
19753
19754         * threads.c, object-internals.h, verify.c: changed the culture caching
19755         code to use a normal MonoArray for storage so the GC can keep track of
19756         them easily. Fixed bits of the cache logic, too and simplified the
19757         code.
19758
19759 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
19760
19761         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
19762         thread for non-Boehm GCs.
19763
19764 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
19765
19766         * domain.c, object.c, domain-internals.h: reduce the amount of memory
19767         needed to keep track of the data for static fields.
19768
19769 2006-03-29  Raja R Harinath  <rharinath@novell.com>
19770
19771         Fix #75172
19772         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
19773         for interface classes.  Use 'num_methods' instead.
19774         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
19775         before using '->vtable_size' field.
19776
19777 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
19778
19779         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
19780         doesn't contain managed pointers, so use a normal hashtable.
19781
19782 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
19783
19784         * reflection.c, class-internals.h, domain.c: fixed handling of types
19785         used as values for objects in custom attributes (bug #77915):
19786
19787 2006-03-24  Martin Baulig  <martin@ximian.com>
19788
19789         * class.c (mono_class_setup_fields): Added support for generic
19790         instances; fixes #77580.
19791
19792 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19793
19794         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
19795
19796 2006-03-24  Dick Porter  <dick@ximian.com>
19797
19798         * file-io.c (get_file_attributes): More stat macro breakage.
19799         Fixes bug 77759.
19800
19801 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
19802
19803         * profiler.c: added the file=filename option in the default profiler
19804         to output the profile data to filename.
19805
19806 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19807
19808         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
19809         bug #77877.
19810
19811 2006-03-22  Martin Baulig  <martin@ximian.com>
19812
19813         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
19814         allocated `MonoClassField *' in `fb->handle'.
19815
19816 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
19817
19818         * class.c, image.c, metadata-internals.h: implemented new mechanism to
19819         allocate interface ID to save memory and allow better ID reuse on
19820         appdomain unload. setup_generic_vtable () removal from Martin.
19821
19822 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
19823
19824         * object.h, appdomain.c, domain.c, exception.c, icall.c,
19825         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
19826         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
19827         write barriers for reference stores with managed objects accessed with
19828         C structures in the runtime and in embedding programs.
19829
19830 2006-03-20  Raja R Harinath  <rharinath@novell.com>
19831
19832         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
19833         'interface_id' and 'max_interface_id' fields of MonoClasses
19834         representing open generic types.
19835
19836 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
19837
19838         * object.h, object.c, icall.c: added functions to deal with
19839         storing valuetypes that contain references in managed objects.
19840         * reflection.c, string-icalls.c, threads.c, marshal.c: small
19841         fixes and comments around uses of mono_array_addr ().
19842
19843 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
19844
19845         * object.h, icall.c, monitor.c: object.GetHashCode ()
19846         implementation that supports the moving garbage collector.
19847
19848 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
19849
19850         * icall.c, threads-types.h, threads.c: implemented finalizer for
19851         LocalDataStoreSlot.
19852
19853 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
19854
19855         * metadata.c (mono_type_size): Add a fixme.
19856         (mono_type_stack_size): Ditto.
19857
19858         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
19859         'type_forwarders' field.
19860
19861         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
19862         attribute from net 2.0.
19863
19864         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
19865         from class.c.
19866
19867         * class.c (mono_class_setup_fields): Fix a warning.
19868         
19869         * class.c (mono_class_from_name): Add support for assemblyref entries
19870         in the EXPORTEDTYPE table.
19871
19872         * reflection.c: Add support for handling type forwarders under net 2.0.
19873
19874         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
19875         
19876 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
19877
19878         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
19879         overwriting entries in ModuleBuild->types, also clean up the code
19880         a little. Fixes #77774.
19881
19882 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
19883
19884         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
19885         load friend assembly info when present.
19886
19887 2006-03-14  Raja R Harinath  <rharinath@novell.com>
19888
19889         Fix crasher on gtest-158.cs.
19890         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
19891         the return value if the MonoClass we want is yet in an
19892         inconsistent state.
19893         * class.c (mono_class_create_from_typedef): Add an comment
19894         explaining an order dependency between mono_class_setup_parent and
19895         mono_class_setup_mono_type.
19896
19897 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
19898
19899         * class.c: documentation updates and events bug fix.
19900
19901 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
19902
19903         * class.c: some cleanup, locking fixes.
19904
19905 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
19906
19907         * class.c: fix the generics code to setup nested
19908         type info to the instantiated type (bug #77770).
19909
19910 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
19911
19912         * marshal.c: fixed a few type correctness issues.
19913
19914 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
19915
19916         * loader.c: the Set/Get/Addrtess array methods should be public.
19917
19918 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
19919
19920         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
19921         
19922         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
19923         info->wrapper.
19924
19925 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
19926
19927         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
19928
19929         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
19930
19931         * mempool.c (mono_mempool_alloc): Speed this up a bit.
19932         (mono_mempool_alloc0): Ditto.
19933
19934 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19935
19936         * socket-io.c:
19937         (create_object_from_sockaddr): it was allocating 4 extra bytes
19938         for the AF_UNIX data. Fixes bug #77747.
19939
19940 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
19941
19942         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
19943
19944 2006-03-09  Dick Porter  <dick@ximian.com>
19945
19946         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
19947         Fixes bug 76966 again.
19948
19949 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
19950
19951         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
19952         names from r57532
19953         * appdomain.c: Bumped corlib version to 48 (due to r57532)
19954
19955 2006-03-07  Martin Baulig  <martin@ximian.com>
19956
19957         * object.c
19958         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
19959
19960 2006-03-07  Martin Baulig  <martin@ximian.com>
19961
19962         * class.c
19963         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
19964         regression introduced in r56970; see gtest-252.cs.
19965
19966         * loader.c (mono_get_method_constrained): Correctly handle generic
19967         methods; see gtest-253.cs.
19968
19969 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
19970
19971         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
19972
19973 2006-03-04  Martin Baulig  <martin@ximian.com>
19974
19975         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
19976         compute the parent type at runtime, just like we're already doing
19977         it for interfaces.
19978
19979         * reflection.c
19980         (mono_reflection_bind_generic_parameters): Don't compute the
19981         parent type anymore.
19982
19983         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
19984
19985 2006-03-04  Martin Baulig  <martin@ximian.com>
19986
19987         * mono-debug-debugger.h
19988         (mono_debugger_create_notification_function): Allocate memory at
19989         runtime and return a pointer to it.
19990
19991 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
19992
19993         * assembly.c: Fix windows build.
19994         
19995         * assembly.c: Fix build.
19996
19997         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
19998
19999         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
20000         
20001 2006-03-03  Dick Porter  <dick@ximian.com>
20002
20003         * process.c
20004         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
20005         Check parameters before dereferencing them.  Fixes Aaron's part of
20006         bug 77393.
20007
20008 2006-03-03  Raja R Harinath  <rharinath@novell.com>
20009
20010         Fix performance regression.
20011         * loader.c (find_method_in_class): Add 'from_class' argument.
20012         Rename 'klass' argument to 'in_class'.  The signature is compared
20013         against the method in 'in_class', and the corresponding method is
20014         returned from 'from_class'.
20015         (find_method): Walk both 'in_class' and 'from_class' in parallel.
20016         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
20017         type definition and generic instantiation in parallel.
20018         (mono_get_method_constrained): Update to changes.
20019
20020 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
20021
20022         * threads.c: make sure the domain is correct, too when doing
20023         mono_thread_attach ().
20024
20025 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
20026
20027         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
20028         windows. Fixes #77683.
20029
20030 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
20031
20032         * object.h, *: introduced specific way to set elements of an array
20033         of references to be used as write barrier. Still need to audit the
20034         uses of mono_array_addr.
20035
20036 2006-03-01  Miguel de Icaza  <miguel@novell.com>
20037
20038         * object-internals.h: New field to cache the assmebly name, patch
20039         from Tambet Ingo (tambet@ximian.com)
20040
20041 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
20042
20043         * decimal.h, class-internals.h, metadata-internals.h,
20044         file-io.h: mark a few function declarations as internal, to
20045         reduce the number of PLT entries.
20046
20047 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20048
20049         * file-io.c: fix typo in warning message.
20050
20051 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
20052
20053         * loader.c: on unix, lookup the "*A" version of a function
20054         if charset is auto as a second option before failing.
20055
20056 2006-02-28  Raja R Harinath  <rharinath@novell.com>
20057
20058         * class.h (mono_class_inflate_generic_method): Revert to two
20059         argument version.
20060         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
20061         (mono_class_inflate_generic_method_full): Add.
20062         * class.c (mono_class_inflate_generic_method_full): Rename from
20063         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
20064         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
20065         * loader.c, reflection.c: Update to changes.
20066
20067 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
20068
20069         * icall.c: const fixes and small improvements.
20070
20071 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20072
20073         * threadpool.c: for asynchronous connect(), enable the same workaround
20074         for BSD 6 as for the Mac. Fixes bug #77637.
20075
20076 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
20077
20078         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
20079         formatted classes. Fixes #77524.
20080
20081 2006-02-24  Raja R Harinath  <rharinath@novell.com>
20082
20083         * class.c (inflate_generic_type): Add a couple more
20084         micro-optimizations.
20085         (inflate_generic_context): Don't use the 'gmethod' from
20086         'inflate_with'.
20087         (mono_class_inflate_generic_method): If the method has generic
20088         parameters, but the passed-in context doesn't have a 'gmethod',
20089         create one.  Use the possibly simplified generic instantiation
20090         from the declaring class instead of the one passed in.
20091
20092 2006-02-24  Raja R Harinath  <harinath@gmail.com>
20093
20094         Make generic method signature and method header handling lazy.
20095         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
20096         (inflate_generic_header): Likewise.
20097         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
20098         parameter to avoid inflating types.
20099         (mono_get_inflated_method): Empty out.
20100         * class.h (mono_class_inflate_generic_method): Update to changes.
20101         * loader.c (mono_get_method_from_token): Don't parse signature for
20102         generic methods, nor methods of generic classes.
20103         (mono_method_signature): Rename from 'mono_method_signature'.
20104         Inflate signature on demand.
20105         (mono_method_get_header): Inflate method header on demand.
20106         * reflection.c: Update to changes.
20107
20108 2006-02-23  Raja R Harinath  <rharinath@novell.com>
20109
20110         * metadata.c (mono_metadata_inflate_generic_inst): If the
20111         instantiation is closed, don't bother expanding it in the new
20112         context.
20113         * class.c (inflate_generic_class): If the generic instantiation
20114         doesn't change after inflation, return the argument itself.
20115         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
20116         Add bounds checks.
20117         (inflate_generic_context): If neither the generic class nor the
20118         generic method instantiations change, return the original context.
20119         * reflection.c (mono_method_get_object): Do
20120         'mono_get_inflated_method' before accessing the ->klass field.
20121         (inflate_mono_method): Don't create a MonoGenericMethod unless
20122         necessary.
20123         (inflate_method): Don't pass a constructed type as the declaring
20124         type of a methodbuilder.
20125
20126 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
20127
20128         * object.c: fix memory overwrite.
20129
20130 2006-02-22  Dick Porter  <dick@ximian.com>
20131
20132         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
20133         it doesn't work any more.
20134         (mono_threads_request_thread_dump): Fix unused variable warnings.
20135
20136 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
20137
20138         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
20139         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
20140         the public header file.
20141
20142 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
20143
20144         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
20145
20146 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
20147
20148         * class-internals.h, object.c: reduce the size of MonoVTable
20149         and store the interface_offsets array at negative offsets.
20150
20151 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
20152
20153         * metadata.c: tweak table descriptors data structures to reduce
20154         size and runtime relocations.
20155
20156 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
20157
20158         * marshal.c: fix some types and opcodes to be type-safe
20159         in marshaling wrappers.
20160
20161 2006-02-21  Ankit Jain  <jankit@novell.com>
20162
20163         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
20164
20165 2006-02-21  Raja R Harinath  <rharinath@novell.com>
20166
20167         * metadata.c (get_constraints): Relax debugging checks for monodis.
20168
20169 2006-02-21  Ankit Jain  <jankit@novell.com>
20170
20171         * metadata.c (mono_metadata_load_generic_params): Move the code
20172         checking for ambiguous generic params from here to mono/dis/get.c
20173         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
20174
20175 2006-02-21  Raja R Harinath  <harinath@gmail.com>
20176
20177         Fix assertion triggered when compiling nemerle.
20178         * class.c (mono_get_shared_generic_inst): Rename from
20179         get_shared_inst and make non-static.
20180         * loader.c (mono_get_shared_generic_method): New.  Used to create
20181         the MonoGenericContext-equivalent of a MonoGenericContainer.
20182         (mono_get_method_from_token): Initialize the 'context' field of
20183         the created MonoGenericContainer.
20184         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
20185         * metadata.c (get_constraints): Add sanity check.
20186         * class-internals.h: Add new internal methods.
20187
20188         * reflection.c (verify_safe_for_managed_space): New sanity check.
20189         Currently checks that owner-less generic parameters aren't allowed
20190         in managed space.
20191         (mono_type_get_object): Use it.
20192         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
20193         that are now in mono_type_get_object.
20194         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
20195
20196 2006-02-19  Raja R Harinath  <harinath@gmail.com>
20197
20198         * metadata.c (mono_type_create_from_typespec): Rename from
20199         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
20200         argument and caching of types in the generic container.
20201         (unwrap_arrays, find_generic_param): Remove.
20202         * metadata-internals.h: Update.
20203         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
20204
20205 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
20206
20207         * class.c (mono_class_get_exception_for_failure): Fix a warning.
20208
20209         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
20210         return values. Fixes #77581.
20211
20212         * class.c (mono_fnptr_class_get): Switch name and name_space.
20213
20214         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
20215         classes and add support for [In, Out] attributes.
20216         (mono_marshal_free_asany): Ditto. Fixes #77524.
20217
20218 2006-02-18  Raja R Harinath  <harinath@gmail.com>
20219
20220         * class.c (mono_class_from_generic_parameter): Make more robust to
20221         incomplete MonoGenericContainers from monodis.
20222
20223 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
20224
20225         * class-internals.h: added some more exception types.
20226         * class.c, metadata.c: added a few checks to handle missing
20227         types.
20228
20229 2006-02-17  Raja R Harinath  <rharinath@novell.com>
20230
20231         Use owner-less generic-params some more.
20232         * class.c (my_mono_class_from_generic_parameter): Remove.
20233         (mono_class_from_generic_parameter): Handle null image,
20234         param->name and param->owner.
20235         (mono_class_from_mono_type): Update.
20236         (mono_class_create_from_typespec): Remove 'container' parameter.
20237         If that parameter is non-null, the result is always inflated by
20238         'mono_class_get_full' anyway.
20239         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
20240         parameter.
20241         (mono_class_get_full): Update.
20242
20243         * class.c (inflate_generic_type) [GENERICINST]: If the generic
20244         instance is not open, don't bother inflating.
20245         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
20246         parse metadata for inflated classes.
20247         (_mono_class_get): Change GenericContext* parameter to
20248         GenericContainer*.
20249         (mono_class_create_from_typespec): Likewise.  Simplify, and
20250         implement trivially.  All the cases are handled in
20251         mono_class_from_mono_type.  Don't inflate returned class.
20252         (mono_class_get_full): Delegate GENERICINST optimization to
20253         inflate_generic_type.
20254         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
20255
20256 2006-02-16  Dick Porter  <dick@ximian.com>
20257
20258         * socket-io.c (create_object_from_sockaddr): Fix typo.
20259         (create_sockaddr_from_object): Check array lengths before
20260         potentially accessing items off the end.
20261         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
20262         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
20263         (ves_icall_System_Net_Sockets_Socket_Send_internal)
20264         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
20265         length checks to avoid wraparound overflows.
20266         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
20267         contents of the array of sockets
20268         (hostent_to_IPHostEntry2)
20269         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
20270         Check return value of inet_ntop ().
20271         (addrinfo_to_IPHostEntry): Fix typo
20272
20273 2006-02-16  Raja R Harinath  <rharinath@novell.com>
20274
20275         Type metadata parsing doesn't use generic-instantiation information.
20276         * metadata.c (mono_metadata_parse_array_full): Change
20277         MonoGenericContext* parameter to MonoGenericContainer*.
20278         (mono_metadata_parse_type_full): Likewise.
20279         (mono_type_create_from_typespec_full): Likewise.
20280         (mono_metadata_parse_mh_full): Likewise.
20281         (mono_metadata_parse_generic_inst): Likewise.
20282         (do_mono_metadata_parse_generic_class): Likewise.
20283         (do_mono_metadata_parse_type): Likewise.
20284         * metadata-internals.h: Update to changes.
20285         * class.c (mono_class_find_enum_basetype): Likewise.
20286         (mono_class_setup_fields): Likewise.
20287         (mono_class_create_from_typespec): Likewise.
20288         * loader.c (method_from_methodspec): Likewise.
20289         (mono_get_method_from_token): Likewise.
20290         (mono_method_get_header): Likewise.
20291
20292 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
20293
20294         * marshal.c: handle additional GENERICINST case (patch from
20295         Thong Nguyen <tum@veridicus.com>).
20296         Fix a few cases where LDIND_I/STIND_I was used for references.
20297
20298 2006-02-16  Raja R Harinath  <rharinath@novell.com>
20299
20300         * reflection.c (mono_reflection_get_token): Remove unused variable.
20301
20302 2006-02-16  Martin Baulig  <martin@ximian.com>
20303
20304         * reflection.c (mono_reflection_get_token): Add support for fields
20305         in instantiated generic types.
20306
20307         * icall.c
20308         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
20309
20310 2006-02-15  Martin Baulig  <martin@ximian.com>
20311
20312         * icall.c
20313         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
20314         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
20315         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
20316         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
20317
20318 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
20319
20320         * class.c, metadata.c, metadata.h, object.c, icall.c,
20321         marshal.c: changed mono_type_get_underlying_type () to do
20322         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
20323         Fixed handling of instantiated generic valuetypes (bug #75479).
20324
20325 2006-02-15  Raja R Harinath  <rharinath@novell.com>
20326
20327         * metadata.c (mono_metadata_decode_signed_value): Simplify.
20328         Delegate to mono_metadata_decode_value, and work on the returned value.
20329
20330         * icall.c (ves_icall_MonoType_GetGenericArguments):
20331         Add consistency check here too.
20332         
20333 2006-02-15  Ankit Jain  <jankit@novell.com>
20334
20335         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
20336         char/short etc.
20337
20338 2006-02-15  Ankit Jain  <jankit@novell.com>
20339
20340         * metadata.c (mono_metadata_decode_signed_value): New function to decode
20341         signed values, used only for representing lower bounds of arrays.
20342         (mono_metadata_parse_array_full): Use new
20343         mono_metadata_decode_signed_value to decode lower bounds.
20344
20345 2006-02-14  Martin Baulig  <martin@ximian.com>
20346
20347         * reflection.c
20348         (mono_reflection_get_token): Support "MonoGenericMethod" and
20349         "MonoGenericCMethod" and allow generic instances / methods.
20350
20351 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
20352
20353         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
20354         to obtain the terminal size using an ioctl.
20355
20356         * object.c (mono_nullable_init): Revert this as nullable reference
20357         types are not valid.
20358         (mono_nullable_box): Ditto.
20359
20360 2006-02-09  Dick Porter  <dick@ximian.com>
20361
20362         * threads.c (mono_thread_detach): Drop a reference to the thread
20363         we're detaching.
20364
20365 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
20366
20367         * object.c (mono_nullable_init): Handle nullable reference types.
20368         (mono_nullable_box): Ditto. Fixes #77446.
20369
20370 2006-02-07  Martin Baulig  <martin@ximian.com>
20371
20372         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
20373
20374 2006-02-07  Ankit Jain  <jankit@novell.com>
20375
20376         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
20377         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
20378         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
20379         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
20380         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
20381         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
20382
20383 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
20384
20385         * class.c (mono_class_create_generic): Set type_token as well.
20386
20387         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
20388         compatible with MS.
20389
20390 2006-02-02  Martin Baulig  <martin@ximian.com>
20391
20392         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
20393         has never been used so far.
20394
20395 2006-02-02  Martin Baulig  <martin@ximian.com>
20396
20397         * mono-debug-debugger.h: Changed comment at the top of this file;
20398         the header is not installed, but it's safe to #include it from
20399         within the JIT.
20400
20401         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
20402         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
20403
20404 2006-02-02  Martin Baulig  <martin@ximian.com>
20405
20406         * mono-debug.h
20407         (MonoSymbolTable): Removed the `metadata_info' field.
20408
20409         * mono-debug.c
20410         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
20411
20412         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
20413         (mono_debugger_add_builtin_types): Removed.
20414         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
20415         (mono_debugger_create_notification_function): We now operate on a
20416         pre-allocated area; take a `gpointer' and return `void'.
20417
20418         * mono-debug-debugger.c
20419         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
20420         (mono_debugger_add_builtin_types): Removed.
20421
20422 2006-02-02  Martin Baulig  <martin@ximian.com>
20423
20424         * threads.c (mono_debugger_create_all_threads): New public method.
20425
20426 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
20427
20428         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
20429         breaks on several platforms.
20430
20431 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
20432
20433         * assembly.c: the VS.NET build doesn't supply default values for
20434         MONO_ASSEMBLIES and MONO_CFG_DIR.
20435
20436 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
20437
20438         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
20439         helper function.
20440
20441         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
20442
20443         * loader.c (method_from_memberref): Fix a warning.
20444
20445         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
20446
20447         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
20448         with explicit layout. Fixes #77433.
20449
20450 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
20451
20452         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
20453         max_interface_id is initialized before using it. Fixes #77398.
20454         (ves_icall_Type_GetInterfaces): Ditto.
20455
20456 2006-01-30  Raja R Harinath  <rharinath@novell.com>
20457
20458         * metadata.c (mono_metadata_parse_method_signature_full): Don't
20459         allocate memory for parameter attributes when parsing memberref
20460         signatures.
20461         * loader.c (mono_loader_set_error_method_load): Don't warn.
20462         (method_from_memberref): Ensure MissingMethodException gets thrown
20463         if method is not found.  Make warning more informative.
20464
20465 2006-01-29  Raja R Harinath  <harinath@gmail.com>
20466
20467         Fix #77397
20468         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
20469         return true if is byref.
20470         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
20471         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
20472         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
20473
20474 2006-01-27  Raja R Harinath  <rharinath@novell.com>
20475
20476         Fix tests/find-method.2.il
20477         * loader.c (find_method, find_method_in_class): Remove is_inflated
20478         argument.  Revert 2006-01-18 change.
20479         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
20480         is generic, search for method in its generic definition.
20481         * class.c (mono_class_setup_vtable_general): Print generic
20482         arguments of generic types in debugging printf.
20483
20484 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
20485
20486         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
20487
20488         * threads.c (mono_threads_request_thread_dump): New helper function.
20489
20490 2006-01-25  Raja R Harinath  <rharinath@novell.com>
20491
20492         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
20493
20494 2006-01-25  Ankit Jain  <jankit@novell.com>
20495
20496         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
20497         move definition to ..
20498         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
20499         
20500 2006-01-25  Ankit Jain  <jankit@novell.com>
20501             Raja R Harinath  <rharinath@novell.com>
20502
20503         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
20504         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
20505         as necessary.
20506
20507 2006-01-25  Martin Baulig  <martin@ximian.com>
20508
20509         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
20510         `MonoDebuggerThread' into debug-debugger.c.
20511
20512 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
20513
20514         * profiler.c: fix printing of data.
20515
20516 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
20517
20518         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
20519           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
20520
20521 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
20522
20523         * object.c: fix deadlock related to string interning.
20524
20525 2006-01-23  Martin Baulig  <martin@ximian.com>
20526
20527         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
20528
20529         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
20530
20531 2006-01-23  Martin Baulig  <martin@ximian.com>
20532
20533         * mono-debug.h: Moved the prototypes of some functions which are
20534         used by the JIT here from mono-debug-debugger.h.
20535
20536 2006-01-21  Martin Baulig  <martin@ximian.com>
20537
20538         * Makefile.am: Don't install mono-debug-debugger.h.
20539
20540 2006-01-21  Martin Baulig  <martin@ximian.com>
20541
20542         * mono-debug-debugger.h: Enforce the private status of this header
20543         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
20544         Moved some stuff from mono-debugger-jit-wrapper.h here.
20545
20546 2006-01-20  Raja R Harinath  <rharinath@novell.com>
20547
20548         * class.c (mono_class_from_typeref): Add a sanity test to help
20549         catch lack of assembly load/search hooks.
20550
20551 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
20552
20553         * marshal.c (emit_struct_conv): Relax the fields with same offset
20554         check even more. Fixes #77230.
20555
20556 2006-01-18  Martin Baulig  <martin@ximian.com>
20557
20558         * loader.c (find_method_in_class): Added `gboolean is_inflated'
20559         argument; if false, we compare the uninstantiated signatures.
20560         (method_from_memberref): Compare the uninstantiated signatures;
20561         fixes #76417.
20562
20563 2006-01-18  Robert Jordan  <robertj@gmx.net>
20564
20565         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
20566         Clear the weak link. Fixes bug #77170.
20567
20568         * gc.c (mono_gchandle_free):
20569         Reflect *-gc.c changes (tiny optimization).
20570
20571 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
20572
20573         * metadata.c (mono_metadata_signature_dup): Applied patch from
20574         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
20575         Fixes #77288.
20576
20577 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
20578
20579         * marshal.c (emit_struct_conv): Allow fields with the same offset when
20580         marshalling from native to managed code. Fixes #77230.
20581
20582 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20583
20584         * threadpool.c: fix problem (Mac only) when more than one asynchronous
20585         connect. Fixes bug #77020.
20586
20587 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
20588
20589         * class.c: fixed id assignement for nested interfaces (bug #77275).
20590         Added also better info for --print-vtable debugging.
20591
20592 2006-01-12  Martin Baulig  <martin@ximian.com>
20593
20594         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
20595         interfaces on-the-fly; fixes #76625.
20596
20597         * class-internals.h
20598         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
20599         don't need that anymore.
20600
20601 2006-01-12  Miguel de Icaza  <miguel@novell.com>
20602
20603         * socket-io.c
20604         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
20605         To avoid initing the nested_classes when not needed I turned the
20606         PeerCredData as a toplevel internal class, as it has to be shared
20607         anyways. 
20608
20609         Fixes the CASA issue.
20610
20611 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
20612
20613         * domain.c: Accessors for MonoJitInfo
20614
20615         * profiler-private.h: Add jitinfo to the end jit hook
20616
20617         * profiler.[ch]: Define new hooks, called after jitting which give
20618         the MonoJitInfo that was compiled
20619
20620 2006-01-10  Martin Baulig  <martin@ximian.com>
20621
20622         * class.c (mono_class_setup_events): Add support for generic
20623         classes; fixes #76440.
20624
20625 2006-01-06  Raja R Harinath  <rharinath@novell.com>
20626
20627         Fix #77160.
20628         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
20629         on passed-in method.
20630
20631 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
20632
20633         * object.c (mono_runtime_invoke_array): Add Nullable support.
20634
20635         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
20636
20637 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
20638
20639         * file-io.c: Don't consider sockets as directory and avoid an endless
20640         loop. Fix bug #76966.
20641
20642 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
20643
20644         * object.c (mono_nullable_init): New helper function.
20645         (mono_nullable_box): Ditto.
20646
20647         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
20648
20649         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
20650
20651         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
20652         
20653 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
20654
20655         * class.c (mono_class_is_assignable_from): Make T assignable to 
20656         Nullable<T>.
20657
20658 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
20659
20660         * appdomain.c: Bump corlib version to 46.
20661         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
20662         serialization purpose) and changed ves_icall_System_Reflection_
20663         Assembly_get_code_base signature to accept a boolean (to escape, or 
20664         not, the assembly code base).
20665
20666 2005-12-23  Dick Porter  <dick@ximian.com>
20667
20668         * icall.c: 
20669         * threads-types.h: 
20670         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
20671         CreateEvent icall now returns "created" boolean parameter.
20672
20673 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
20674
20675         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
20676         #76967.
20677
20678         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
20679         when attr_klass is an interface. Fixes #77045.
20680
20681 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
20682
20683         * marshal.c (emit_struct_conv): Fix previous patch.
20684         
20685         * marshal.c (emit_struct_conv): Add a check for fields with the same
20686         offset.
20687
20688 2005-12-20  Raja R Harinath  <rharinath@novell.com>
20689
20690         Fix regression in Mono.C5.
20691         * class.c (mono_class_create_generic): If 'klass' is an interface
20692         set up the interface offsets.
20693         (mono_class_is_assignable_from): Don't throw away generic arguments.
20694
20695 2005-12-19  Raja R Harinath  <rharinath@novell.com>
20696
20697         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
20698         type parameters.
20699
20700 2005-12-15  Raja R Harinath  <rharinath@novell.com>
20701
20702         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
20703         dead store.
20704         (do_mono_metadata_parse_generic_class): Don't pass the current
20705         generic context when parsing the type being instantiated: it
20706         cannot use it, anyway.
20707
20708         * loader.c (method_from_memberref): Don't inflate a signature if
20709         it doesn't contain any type parameters.
20710
20711 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
20712
20713         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
20714
20715 2005-12-14  Martin Baulig  <martin@ximian.com>
20716
20717         * class.c
20718         (mono_type_get_name_recurse): Don't return null for type
20719         parameters and open generic classes.
20720         (mono_class_setup_methods): Don't exclude generic instances.
20721         (mono_get_unique_iid): Use different IDs for different
20722         instantiations of the same generic type.
20723         (mono_class_setup_vtable): Only use setup_generic_vtable() for
20724         open generic instances; create a normal vtable for closed generic
20725         instances.
20726         (mono_class_setup_vtable_general): We're now also called for
20727         closed generic instances.
20728
20729         * reflection.c
20730         (mono_reflection_bind_generic_parameters): Correctly use
20731         mono_metadata_lookup_generic_inst() everywhere.
20732
20733 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
20734
20735         * object.c (mono_class_create_runtime_vtable): Call 
20736         mono_class_setup_vtable ().
20737
20738         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
20739         function.
20740         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
20741         #76959.
20742
20743         * loader.c (mono_loader_set_error_type_load): Print the type load
20744         warnings to the console so they are more visible to the user.
20745         (mono_loader_set_error_method_load): Ditto.
20746
20747         * reflection.c (ensure_runtime_vtable): Revert the last change as it
20748         is still broken.
20749         
20750         * reflection.c (ensure_runtime_vtable): Fix build.
20751
20752         * reflection.c (ensure_runtime_vtable): Disable an optimization which
20753         doesn't work in all cases.
20754
20755 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
20756
20757         * object.c (mono_array_new_full): Treat a single dimensional array
20758         with 0 lower bounds as an szarray. Fixes #76973.
20759
20760         * reflection.c (custom_attr_visible): Really fix this.
20761
20762 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
20763
20764         * reflection.c (custom_attr_visible): Allow nested public attributes
20765         as well.
20766
20767         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
20768         interface check.
20769
20770 2005-12-12  Raja R Harinath  <harinath@gmail.com>
20771
20772         * class.c (set_generic_param_owner): Delete.
20773         (mono_class_create_from_typedef): Don't set ->owner field of
20774         generic parameters to "param containers" of enclosing classes.
20775         * reflection.c (mono_reflection_initialize_generic_parameter):
20776         Likewise.
20777
20778 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
20779
20780         * reflection.c (custom_attr_visible): Fix build.
20781
20782 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
20783
20784         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
20785         private attributes.
20786         
20787         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
20788         handling of null parameter defaults.
20789
20790 2005-12-09  Raja R Harinath  <rharinath@novell.com>
20791
20792         * class.c (mono_class_from_generic_parameter): Don't set
20793         klass->generic_container.
20794         (my_mono_class_from_generic_parameter): Likewise.
20795
20796 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
20797
20798         * reflection.c (load_public_key): Fix a warning.
20799         (method_encode_code): Fix unaligned accesses.
20800
20801 2005-12-07  Martin Baulig  <martin@ximian.com>
20802
20803         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
20804
20805         * reflection.c
20806         (write_generic_param_entry): Encode our custom attrs.
20807
20808         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
20809
20810 2005-12-07  Martin Baulig  <martin@ximian.com>
20811
20812         * reflection.c (encode_new_constraint): Removed; we don't use the
20813         `NewConstraintAttribute' anymore.
20814
20815 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
20816
20817         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
20818         not fire a TypeResolve event when Assembly.GetType () is called.
20819
20820 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
20821
20822         Beginning of support for nullable types in the runtime. Parts of
20823         this patch are from Martin.
20824
20825         * appdomain.c (MONO_CORLIB_VERSION): Bump
20826
20827         * domain.c (mono_init_internal): get the nullable type
20828
20829         * class.c (mono_class_is_nullable): New method
20830         (mono_class_get_nullable_param): New mehod
20831         (mono_class_create_generic): In types T? set cast_class to T
20832
20833         * class-internals.h (MonoDefaults): new nullable default class
20834         (mono_class_get_nullable_param, mono_class_get_nullable_param):
20835         new methods.
20836
20837 2005-12-05  Raja R Harinath  <rharinath@novell.com>
20838
20839         * metadata.c (select_container): New.  Refactor code to select the
20840         appropriate GenericContainer given the type of generic parameter
20841         we are looking for.
20842         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
20843         not a MonoGenericContext.  Use select_container.  Update parameters.
20844         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
20845         and MONO_TYPE_MVAR.
20846         (unwrap_arrays): Remove duplicate tests.
20847         (find_generic_param): Rename from 'has_same_context'.  Now walks a
20848         generic instantiated class to find any arguments that are generic
20849         parameters.
20850         (mono_type_create_from_typespec_full): Use find_generic_param to
20851         avoid evicting some generic instantiations from the typespec
20852         cache.
20853
20854 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
20855
20856         * reflection.c: fixed writing of doubles on ARM FPA.
20857
20858 2005-12-02  Robert Jordan  <robertj@gmx.net>
20859
20860         * icall.c: Fixed EventInfo.ReflectedType (#76829).
20861
20862 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20863
20864         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
20865         least on SUSE 10 they are not the same (on debian, they are just the
20866         same thing).
20867
20868 2005-12-01  Raja R Harinath  <rharinath@novell.com>
20869
20870         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
20871         DeclaringType for VARs and MVARs.
20872         * class.c (set_generic_param_owner): Fix initialization of owner
20873         fields.
20874
20875 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
20876
20877         * icall.c: fixed Enum.ToObject() to correctly convert the values.
20878
20879 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20880
20881         * threadpool.c: workaround for a bug that shows up on the Mac:
20882         select()+connect() on a blocking socket is not like it should
20883         be, so we proceed to connect() in that case, wasting the I/O
20884         threadpool thread until connect succeedes. Fixes bug #75436.
20885
20886 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20887
20888         * threadpool.c: fix typo when setting file descriptor states.
20889
20890 2005-11-28  Raja R Harinath  <rharinath@novell.com>
20891
20892         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
20893         * metadata.c (mono_metadata_parse_method_signature_full): Don't
20894         create a temporary signature container.
20895         (mono_metadata_parse_generic_param): Update to changes.
20896         (mono_type_create_from_typespec_full): Update to changes.
20897         * loader.c (method_from_memberref): Don't use a
20898         MonoGenericContainer while parsing a memberref signature.
20899         (method_from_methodspec): Remove dead-store of the 'container'
20900         variable.  It's overwritten before use.
20901
20902         * metadata.c (mono_type_create_from_typespec_full): Make debugging
20903         checks tighter.
20904         (mono_metadata_parse_generic_param): Likewise.
20905         * loader.c (find_method_in_class): Does not need a
20906         MonoGenericContainer.  Use 'mono_method_signature' rather than
20907         'mono_method_signature_full'.
20908         (find_method, mono_get_method_constrained, method_from_memberref):
20909         Update to changes.
20910
20911         * metadata.c (mono_type_create_from_typespec_full): Ensure that
20912         owner-less generic-parameters are never evicted from the typespec
20913         cache.
20914
20915         * loader.c (method_from_memberref): Don't use the current context
20916         when parsing signatures.
20917         (method_from_methodspec, mono_get_method_from_token): Update to changes.
20918
20919         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
20920         side-effects in g_assert.
20921         * loader.c (mono_get_method_from_token): Resolve klass earlier so
20922         that we don't potentially lose information.
20923
20924 2005-11-26  Dick Porter  <dick@ximian.com>
20925
20926         * icall.c:
20927         * threads.c: icalls to implement basic (ie, not named)
20928         System.Threading.Semaphore.
20929
20930 2005-11-24  Dick Porter  <dick@ximian.com>
20931
20932         * process.c
20933         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
20934         Use GetProcessId() if it's available.
20935
20936 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
20937
20938         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
20939
20940 2005-11-23  Raja R Harinath  <rharinath@novell.com>
20941             Ankit Jain  <jankit@novell.com>
20942
20943         * loader.c (mono_get_method_from_token): Initialize 'method' field
20944         of all generic parameters before parsing the signature.  Remove
20945         code that "fixed"-up MVAR references.
20946
20947 2005-11-23  Ankit Jain  <jankit@novell.com>
20948
20949         * metadata.c (mono_metadata_has_generic_params):
20950         (mono_metadata_load_generic_param_constraints):
20951         (mono_metadata_load_generic_params): Move duplicate code ...
20952         (mono_metadata_get_generic_param_row): ... here. Returns the
20953         first row-id in GenericParam table for a given owner (token).
20954         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
20955         prototype.
20956
20957 2005-11-23  Raja R Harinath  <rharinath@novell.com>
20958             Ankit Jain  <jankit@novell.com>
20959
20960         * metadata.c (mono_metadata_class_equal): Pass signature_only when
20961         comparing VARs too.
20962         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
20963         type->data.generic_param only if the type is an MVAR.
20964         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
20965         leak owner-less VARs and MVARs into managed space.
20966
20967 2005-11-21  Martin Baulig  <martin@ximian.com>
20968
20969         * class-internals.h
20970         (MonoMethod): Moved the `generic_container' here from
20971         `MonoMethodNormal' since we now also need it for
20972         `MonoMethodPInvoke';
20973         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
20974         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
20975         an union containing both `MonoMethodNormal' and
20976         `MonoMethodPInvoke'.
20977
20978         * loader.c
20979         (mono_get_method_from_token): Allow implementing generic methods
20980         as interncalls.
20981
20982         * threads.c
20983         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
20984         icall.
20985
20986 2005-11-17  Dick Porter  <dick@ximian.com>
20987
20988         * icall.c: 
20989         * process.h: 
20990         * process.c: Split the Process Start_internal icall into
20991         ShellExecuteEx_internal and CreateProcess_internal, which are
20992         called depending on whether UseShellExecute is true.  Fixes bug
20993         76670.
20994
20995         * appdomain.c (MONO_CORLIB_VERSION): Incremented
20996
20997 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
20998
20999         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
21000         'msize' parameters, use the information in 'mspec' instead.
21001         (emit_object_to_ptr_conv): Ditto.
21002
21003         * marshal.c (emit_struct_conv): Handle explicit layout structs with
21004         fields out of order. Fixes #76733.
21005
21006 2005-11-17  Ankit Jain  <jankit@novell.com>
21007
21008         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
21009
21010 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
21011
21012         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
21013           bug #76575.
21014
21015 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
21016
21017         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
21018         for types with non-auto layout. Fixes #76717.
21019
21020 2005-11-16  Ankit Jain  <jankit@novell.com>
21021
21022         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
21023         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
21024         if generic_context is null.
21025           (mono_metadata_generic_param_equal): param->owner can be null.
21026           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
21027         null.
21028
21029 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
21030
21031         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
21032         the correct value.
21033
21034 2005-11-15  Martin Baulig  <martin@ximian.com>
21035
21036         * object.c (set_value): Use mono_class_from_mono_type() instead of
21037         the hack for generic instances; fixes #76136.
21038
21039 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
21040
21041         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
21042         fields.
21043
21044         * image.c (load_metadata_ptrs): Initialize the new fields.
21045
21046         * reflection.c (create_dynamic_mono_image): Ditto.
21047
21048         * reflection.c (build_compressed_metadata): Use the new fields.
21049
21050         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
21051         icall.
21052
21053         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
21054         icall.
21055         
21056 2005-11-15  Ankit Jain  <jankit@novell.com>
21057             Raja R Harinath  <harinath@gmail.com>
21058
21059         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
21060         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
21061         new per-generic_container cache if the cached MonoType's context matches
21062         the current context.
21063           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
21064         to the expected context.
21065           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
21066
21067 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21068
21069         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
21070         we changed the signature of an icall.
21071         * icall.c: Modify to mono_double_ParseImpl return true/false 
21072         depending on the success, instead of throwing the exception. This will
21073         help us in Double.TryParse methods.
21074         
21075 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
21076
21077         * marshal.c (emit_marshal_object): Throw an exception when
21078         marshalling 'object' instead of crashing. Fixes #76696.
21079
21080 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
21081
21082         * class-internals.h: Add prototype for mono_type_get_full_name ().
21083
21084 2005-11-11  Dick Porter  <dick@ximian.com>
21085
21086         * threads.c (mono_thread_manage): Make sure the main thread has
21087         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
21088
21089 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
21090
21091         * loader.c (mono_loader_set_error_type_load): Log a warning to the
21092         console about the missing type.
21093         (mono_loader_set_error_method_load): Ditto.
21094
21095 2005-11-09  Miguel de Icaza  <miguel@novell.com>
21096
21097         * mono-config.c (mono_get_config_dir): Set the system defaults if
21098         none is specified.
21099
21100         * assembly.c (mono_set_dirs): New API entry point to set the
21101         assembly and the config directory in one call
21102
21103 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
21104
21105         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
21106         the ftnptr was created from a delegate in a domain other than the
21107         current domain. Fixes #75377.
21108
21109         * exception.h exception.c: Add mono_get_exception_not_supported ().
21110
21111 2005-11-08  Martin Baulig  <martin@ximian.com>
21112
21113         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
21114
21115 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
21116
21117         * security-manager.h: Added definitions to deal with strongname key 
21118         pairs bigger (and smaller) than 1024 bits.
21119         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
21120         adjust wrt the public key length being used.
21121
21122 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
21123
21124         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
21125           Windows build (r51396-51397).
21126
21127 2005-11-03  Martin Baulig  <martin@ximian.com>
21128
21129         * class.c (mono_class_setup_vtable_general): Also add generic
21130         methods to the vtable; fixes #76581.
21131
21132 2005-11-01  Miguel de Icaza  <miguel@novell.com>
21133
21134         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
21135         sure that we lookup GetString method from the System.Text.Encoding
21136         class, not the derived class or we get an empty method.
21137
21138         Fixed class #76612.
21139
21140 2005-10-25  Miguel de Icaza  <miguel@novell.com>
21141
21142         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
21143         if it has been previously set (embedders). 
21144
21145         Make mono_set_rootdir available also on Unix.
21146
21147 005-10-24  Robert Jordan  <robertj@gmx.net>
21148
21149         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
21150
21151 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
21152
21153         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
21154         only calls which are made to native code use this flag.
21155
21156         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
21157
21158 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
21159
21160         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
21161         Add support for FieldBuilders.
21162
21163 2005-10-29  Martin Baulig  <martin@ximian.com>
21164
21165         * mono-debug.c
21166         (mono_debug_using_mono_debugger): New public method; returns
21167         whether we're running inside the debugger.
21168
21169 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
21170
21171         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
21172         for Method/Constructor/FieldBuilders.
21173
21174 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
21175
21176         * reflection.c (module_add_cattrs): Save custom attributes for global methods
21177         and fields as well.
21178
21179 2005-10-26  Martin Baulig  <martin@ximian.com>
21180
21181         * mono-debug-debugger.c
21182         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
21183
21184 2005-10-24  Raja R Harinath  <harinath@gmail.com>
21185
21186         * icall.c (base64_to_byte_array): Don't pass an out-of-range
21187         integer to isspace.
21188
21189 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
21190
21191         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
21192         when passing valuetypes byref. Fixes #76502.
21193
21194 2005-10-19  Jackson Harper  <jackson@ximian.com>
21195
21196         * profiler.c: Don't put a . in front of types that are not in a
21197         namespace.
21198
21199 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
21200
21201         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
21202
21203 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
21204
21205         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
21206         #76436.
21207         (mono_marshal_get_ldflda_wrapper): Fix a warning.
21208
21209 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21210
21211         * assembly.c metadata-internals.h icall.c: Define an additional
21212         parameter for mono_assembly_name_parse_full, so we can avoid creating
21213         S.R.AssemblyName.Version when no version info wasn't passed.
21214         
21215 2005-10-09  Miguel de Icaza  <miguel@novell.com>
21216
21217         * class.c (mono_type_get_full_name): Reimplement method that was
21218         removed. 
21219
21220         * image.c: Some docs
21221
21222 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
21223
21224         * profiler.c (output_newobj_profile): Fix printing of Total memory
21225         on x86.
21226
21227 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
21228
21229         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
21230
21231 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
21232
21233         * threads.c: remove debug output.
21234
21235 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
21236
21237         * threads.c (mono_thread_manage): Fix crashes if more than 64
21238         threads need to be aborted. Hopefully fixes #75899.
21239
21240         * assembly.c (mono_stringify_assembly_name): New helper function.
21241
21242         * class.c: Use mono_stringify_assembly_name instead of the similar
21243         static function.
21244
21245         * assembly.h assembly.c: Add support for calling a postload search 
21246         hook if an assembly cannot be loaded.
21247
21248         * appdomain.c: Register new search hooks which call the AssemblyResolve
21249         events in AppDomain. Fixes #75231
21250
21251 2005-10-07  Martin Baulig  <martin@ximian.com>
21252
21253         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
21254         methods without debug info.
21255
21256 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
21257
21258         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
21259         wrappers.
21260
21261 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21262
21263         * file-io.c: now that we return symlinks, use lstat and, when the file
21264         is a symbolic link, stat, to get the file attributes. Also avoid the
21265         conversion to/from utf16/external.
21266
21267 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
21268
21269         * class.c (mono_class_layout_fields): Compute klass->has_references
21270         correctly if an embedded valuetype is not yet initialized. Fixes
21271         #76331.
21272
21273 2005-10-04  Martin Baulig  <martin@ximian.com>
21274
21275         * metadata.c
21276         (mono_metadata_load_generic_param_constraints): New public
21277         function; splitted the constraints loading out from
21278         mono_metadata_load_generic_params().
21279
21280         * class.c (mono_class_create_from_typedef): Call
21281         mono_metadata_load_generic_param_constraints() after setting up
21282         the type and creating our parent; fixes #75329.
21283
21284 2005-10-04  Martin Baulig  <martin@ximian.com>
21285
21286         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
21287         non-dynamic parent classes.
21288
21289 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
21290
21291         * file-io.c : win32 build fix (ETXTBSY seems not found).
21292
21293 2005-10-04  Martin Baulig  <martin@ximian.com>
21294
21295         * reflection.c
21296         (mono_image_get_methodspec_token): Make the cache actually work;
21297         fixes #75974.
21298
21299 2005-10-04  Martin Baulig  <martin@ximian.com>
21300
21301         * class.c (mono_class_name_from_token): Removed the unneccessary
21302         `MonoGenericContext *' argument.
21303
21304 2005-10-04  Martin Baulig  <martin@ximian.com>
21305
21306         * loader.c
21307         (method_from_methodspec): Make the caching work again; fixes the
21308         performance regression from #76262.
21309
21310 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21311
21312         * file-io.c:
21313         * file-io.h:
21314         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
21315         GetFileSystemEntries that performs the same work but without going
21316         into io-layer, locking, etc.
21317
21318 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
21319
21320         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
21321         ThreadState_Stopped as well. Fixes #76047.
21322
21323 2005-09-29  Martin Baulig  <martin@ximian.com>
21324
21325         * class.c
21326         (inflate_generic_context): If the new context has a `gmethod', set
21327         its `container' that that gmethod's `container'.
21328
21329         * metadata.c
21330         (mono_metadata_parse_generic_param): Simplify things;
21331         `generic_container = generic_context->container;' is just fine.
21332
21333         * loader.c (method_from_methodspec): Code cleanups.
21334
21335 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
21336
21337         * decimal.c: fix warning (and let gcc generate correct
21338         code on ARM with optimizations).
21339
21340 2005-09-28  Martin Baulig  <martin@ximian.com>
21341
21342         * loader.c
21343         (method_from_memberref): Added `MonoGenericContext *class_context'
21344         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
21345         (method_from_methodspec): If we're a memberref, use the enclosing
21346         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
21347
21348 2005-09-28  Martin Baulig  <martin@ximian.com>
21349
21350         * object.c (mono_runtime_invoke_array): Added support for
21351         MONO_TYPE_GENERICINST; fixes #75917.
21352
21353 2005-09-27  Martin Baulig  <martin@ximian.com>
21354
21355         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
21356         `k->byval_arg.type' to determine the actual type.
21357
21358         * loader.c (method_from_methodspec): Removed some hacks.
21359
21360 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
21361
21362         * class-internals.h (mono_field_is_deleted): Do the test for
21363         rtspecialname before we check the actual name of the field. This
21364         prevents us from dereferencing a pointer into the string table,
21365         saving us from accessing a few pages
21366
21367         * *.c: Replace the use of {Enter,Leave}CriticalSection with
21368         macros. This will allow a deadlock debugger to easily be plugged
21369         in.
21370
21371 2005-09-27  Martin Baulig  <martin@ximian.com>
21372
21373         * loader.c (method_from_methodspec): Create a "signature"
21374         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
21375
21376 2005-09-27  Martin Baulig  <martin@ximian.com>
21377
21378         * class.c
21379         (inflate_generic_class): Correctly set the new context's
21380         container.
21381
21382         * loader.c
21383         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
21384         instead of a `MonoGenericContext *'.
21385         (mono_method_signature_full): Take a `MonoGenericContainer *'
21386         instead of a `MonoGenericContext *'.
21387
21388         * metadata.c
21389         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
21390         instead of a `MonoGenericContext *'.
21391         (mono_metadata_parse_method_signature_full): Likewise.
21392
21393 2005-09-26  Martin Baulig  <martin@ximian.com>
21394
21395         * class.c
21396         (mono_class_from_generic_parameter): Set `klass->generic_container'
21397         (mono_class_from_generic_parameter): Likewise.
21398         (mono_bounded_array_class_get): We inherit the generic container
21399         from the element class.
21400
21401         * loader.c
21402         (find_method, find_method_in_class): Take a `MonoGenericContext *'
21403         argument rather than computing it here.
21404         (method_from_memberref): Correctly set the generic context before
21405         parsing the signature.  Fixes #75681.
21406
21407 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
21408
21409         * object.c (mono_class_has_special_static_fields): Fix warnings.
21410
21411 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21412
21413         * assembly.c: Add parse_public_key function, to
21414         par the public keys. Also added mono_assembly_name_parse_full,
21415         to define it the parsed key should be freed or not.
21416         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
21417         to parse a long format assembly name.
21418         * metadata-internals.h: Keep mono_assembly_name_parse_full as
21419         private, since calling it to preserve the key requires
21420         freeing it manually.
21421         
21422 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
21423
21424         * locales.c : removed HAVE_ICU part.
21425
21426 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
21427
21428         * object.c (mono_class_create_runtime_vtable): Avoid calling 
21429         field_is_special_static if the klass has no special static fields.
21430
21431         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
21432         (MonoCachedClassInfo): Likewise.
21433
21434         * object.c (mono_class_has_special_static_fields): New helper function.
21435
21436 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21437
21438         * class.c (mono_class_create_from_typedef): Don't call 
21439         interfaces_from_typedef_full for enums.
21440         (mono_class_create_from_typedef): Compute the base types of enums directly
21441         without calling mono_class_setup_fields ().
21442         (mono_class_find_enum_basetype): New helper function.
21443
21444         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
21445         one place inside the string heap.
21446         
21447 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
21448
21449         * class.c: locking fixes, code cleanups, some docs added.
21450         Allocate some data structures in the image mempool.
21451
21452 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21453
21454         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
21455         the example code.
21456         
21457 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
21458
21459         * class-internals.h, class.c, reflection.c: reduce memory taken by
21460         MonoClass.
21461
21462 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
21463
21464         * metadata.c, metadata.h, loader.h: documentation updates, code and
21465         API cleanups.
21466
21467 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21468
21469         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
21470         the example code.
21471
21472         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
21473         page faults caused by the runtime while reading metadata.
21474
21475 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21476
21477         * socket-io.c: the field names were changed 3 months ago and no one
21478         realized until bug #76077 got filed!
21479
21480 2005-09-20  Martin Baulig  <martin@ximian.com>
21481
21482         * icall.c (assembly_icalls): Removed some unused debugger icalls.
21483
21484 2005-09-20  Martin Baulig  <martin@ximian.com>
21485
21486         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
21487         write the rank into the class entry.
21488
21489 2005-09-20  Martin Baulig  <martin@ximian.com>
21490
21491         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
21492
21493 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
21494
21495         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21496
21497         * icall.c (custom_attrs_defined_internal): New icall.
21498
21499         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
21500         function.
21501         (mono_custom_attrs_construct_by_type): New helper function.
21502
21503 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
21504
21505         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
21506         terminate the resulting string. Fixes #76123.
21507
21508 2005-09-16  Martin Baulig  <martin@ximian.com>
21509
21510         * mono-debug.c
21511         (mono_debug_add_method): Ignore inflated methods for the moment.
21512
21513 2005-09-14  Martin Baulig  <martin@ximian.com>
21514
21515         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
21516
21517 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
21518
21519         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
21520         return a success/failure indication.
21521         (mono_metadata_interfaces_from_typedef_full): Ditto.
21522         (get_constraints): Ditto.
21523
21524 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
21525
21526         * marshal.c (emit_marshal_array): Fix handling of null arrays.
21527         
21528         * marshal.c (emit_marshal_array): Add support for returning string
21529         arrays from delegates. Fixes #76063.
21530
21531         * marshal.c: Use the emit_ldloc/stloc macros where possible.
21532
21533 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
21534
21535         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
21536         icall.
21537
21538 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
21539
21540         * reflection.c icall.c: Fix after mono_get_exception_type_load
21541         signature change.
21542
21543         * assembly.c (mono_assembly_get_assemblyref): New helper function.
21544         (mono_assembly_load_reference): Use the new helper.
21545
21546         * class-internals.h (MonoLoaderError): New structure containing 
21547         information about type loading errors.
21548
21549         * class-internals.h loader.c: Add APIs to store per-thread loader
21550         error information.
21551
21552         * loader.c class.c: Set the loader error if needed.
21553
21554         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
21555
21556 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
21557
21558         * decimal.c: fixed to handle the broken ARM fp format.
21559
21560 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
21561
21562         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
21563         broken.
21564
21565 2005-09-06  Martin Baulig  <martin@ximian.com>
21566
21567         * domain.c (supported_runtimes): Added v2.0.50727.
21568
21569 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
21570
21571         * culture-info.h: reduce the size of some structures.
21572
21573 2005-09-05  Martin Baulig  <martin@ximian.com>
21574
21575         Reflect latest API changes in the August CTP.
21576
21577         * icall.c
21578         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
21579         ("MonoType.HasGenericArguments"): Removed.
21580         ("MonoMethod.BindGenericParameters"): Renamed to
21581         "MakeGenericMethod".
21582         ("MethodBuilder.BindGenericParameters"): Renamed to
21583         "MakeGenericMethod".    
21584
21585 2005-09-05  Martin Baulig  <martin@ximian.com>
21586
21587         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
21588
21589 2005-09-05  Martin Baulig  <martin@ximian.com>
21590
21591         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21592
21593         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
21594         generic_container is non-NULL.
21595
21596 2005-09-05  Martin Baulig  <martin@ximian.com>
21597
21598         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21599
21600         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
21601
21602 2005-08-29  Michal Moskal  <malekith@nemerle.org>
21603
21604         * reflection.c (encode_locals,
21605         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
21606         for large generic types.
21607
21608 2005-09-05  Martin Baulig  <martin@ximian.com>
21609
21610         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21611
21612         * class.c (mono_dup_array_type): New public method.
21613         (mono_metadata_signature_deep_dup): New public method.
21614         (dup_type): Correctly duplicate array and function types.
21615
21616 2005-09-05  Martin Baulig  <martin@ximian.com>
21617
21618         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21619
21620         * reflection.c (get_default_param_value_blobs): Handle generic types
21621         and generic methods.
21622
21623 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
21624
21625         * class.c: Fixed error reporting (method/class were inversed) for 
21626         inheritance demands.
21627         * security-manager.c|h: Added the AppDomain when calling the managed
21628         System.Security.SecurityManager.InheritanceDemand method.
21629
21630 2005-09-01  Raja R Harinath  <rharinath@novell.com>
21631
21632         * reflection.c (encode_marshal_blob): 'marshaltype' and
21633         'marshaltyperef' are alternate sources for the custom marshaler
21634         name.
21635
21636 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
21637
21638         * class.c: fix creation of array classes with rank == 1
21639         (patch by Ankit Jain <jankit@novell.com>).
21640
21641 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
21642
21643         * object.c: fix check for creating the bound data for arrays vs
21644         szarrays.
21645
21646 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21647
21648         * object.c: configuration file name is now based on the executable name,
21649         not the image name. Fixes bug #75931.
21650
21651 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
21652
21653         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
21654         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
21655
21656 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
21657
21658         * rand.c: Use wincrypt.h instead of WinCrypt.h.
21659
21660 2005-08-24  Ankit Jain  <jankit@novell.com>
21661             Raja R Harinath  <rharinath@novell.com>
21662
21663         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
21664           called by it recursively.
21665           (mono_class_init): Remove special case in pending_init handling, since it's
21666           superseded by the fix to mono_class_from_typeref.
21667
21668 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
21669
21670         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
21671         BROKEN_THREAD_START stuff.
21672
21673 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
21674
21675         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
21676         trampoline.
21677
21678         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
21679         
21680         * object.c (mono_delegate_ctor): Replace the original function address with
21681         a delegate trampoline.
21682
21683 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
21684
21685         * icall.c: add boolean argument to base64_to_byte_array and 
21686         InternalFromBase64String to control whether a whitespace-only string
21687         is allowed (or should casue a FormatException to be thrown). We need
21688         this as the behavior has changed between MS.NET 1.x and 2.0, and we
21689         to match the MS behaviour in both profiles.
21690         * appdomain.c: Bump corlib version.
21691
21692 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21693
21694         This patch implements a big portion of publisher policy
21695         support, used to bind assembly versions and redirect
21696         one assembly from version A to version B.
21697
21698         * assembly.c:
21699         New GSList loaded_assembly_bindings, for storing the cached
21700         assembly bindings.
21701         (assembly_binding_maps_name): New static function for checking if a 
21702         assembly binding information maps an assembly name.
21703         (mono_assembly_binding_info_free): New function for freeing
21704         assembly binding information resources.
21705         (get_publisher_policy_info): New static function for retrieving 
21706         assembly binding information from a MonoImage.
21707         (compare_versions): New static function for comparing an assembly
21708         binding information data and the version of an assembly name.
21709         (check_policy_versions): New static function for checking if an
21710         assembly binding info mapping an assembly name is valid for it.
21711         (mono_assembly_load_publisher_policy): New static function for
21712         loading the 'policy.major.minor.MyAssembly' image for an assembly
21713         with an assembly name 'aname'.
21714         (mono_assembly_bind_version): New static function for updating
21715         assembly redirection.
21716         (mono_assembly_apply_binding): New static function for applying
21717         assembly binding.
21718         (search_binding_loaded): New static function for searching 
21719         loaded assembly binding infos in the cache domain.
21720         (mono_assembly_load_full): Don't apply assembly binding for
21721         reflection only assemblies.
21722
21723         * metadata-internals.h: Add MonoAssemblyBindingInfo,
21724         which contains information about assembly binding. Also
21725         declare signature for mono_config_parse_publisher_policy ()
21726         function, used to retrieve pub policy info.
21727         
21728         * mono-config.c:
21729         (publisher_policy_start): New static function used to parse publisher 
21730         policy config files.
21731         (publisher_policy_parser): New static MonoParseHandler containing 
21732         the functions used when parsing config files.
21733         (mono_config_parse_publisher_policy): New function for parsing
21734         publisher policy files.
21735         
21736 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
21737
21738         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
21739
21740         * marshal.c (mono_delegate_free_ftnptr): Ditto.
21741
21742         * object.c (mono_get_addr_from_ftnptr): New helper function.
21743
21744         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
21745
21746         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21747
21748 2005-08-19  Dick Porter  <dick@ximian.com>
21749
21750         * threads.c, threads.h, appdomain.c, appdomain.h,
21751         profiler-private.h, monitor.c, object.c, object-internals.h,
21752         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
21753         store the thread ID, so it can hold a 64 bit value if needed.
21754
21755 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
21756
21757         * reflection.c (mono_reflection_create_dynamic_method): Store the
21758         handle class into the method references as well so ldtoken works in
21759         dynamic methods.
21760
21761         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
21762         types.
21763
21764 2005-08-19  Ankit Jain <jankit@novell.com>
21765
21766         Fix #75847.
21767         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
21768           here rather than using the method signature of a arbitrary function
21769           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
21770           two arguments.
21771           Hack done with Harinath.
21772
21773 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21774
21775         * threadpool.c: disable printing stack traces when we get a exception
21776         in a threadpool thread. I need to do more testing to figure out which
21777         cases actually print this. Fixes bug #75828.
21778
21779 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21780
21781         * icall.c: there might be ignored whitespace after the last '='. This
21782         fixes length computation and bug #75840.
21783
21784 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
21785
21786         * assembly.c (mono_assembly_load_full): Consider .exe extension as
21787         well. Fixes #75809.
21788
21789         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
21790         #75784.
21791         
21792         * reflection.c (create_custom_attr_data): Ditto.
21793
21794 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
21795
21796         * locales.c, culture-info.h : removed RegionLCIDMap.
21797         * culture-info-tables.h : regenerated.
21798
21799 2005-08-16  Martin Baulig  <martin@ximian.com>
21800
21801         * class.c (mono_type_get_name_recurse): Small fix.
21802
21803 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
21804
21805         * locales.c : indentation fixie.
21806
21807 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
21808
21809         * object-internals.h,
21810           locales.h,
21811           locales.c,
21812           culture-info.h,
21813           icall.c : added RegionInfo table support.
21814         * culture-info-table.h : regenerated for region support.
21815
21816 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
21817
21818         * reflection.c (resolve_object): handle all kinds of MonoMethod
21819         including generic ones
21820
21821 2005-08-12  Ankit Jain <jankit@novell.com>
21822
21823         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
21824           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
21825
21826 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
21827
21828         * process.c: Don't close a thread handle when it's NULL. This is a
21829         workaround for bug #75733.
21830
21831 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
21832
21833         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
21834
21835 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
21836
21837         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
21838
21839 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21840
21841         * threadpool.c: if a work item in the thread pool has a callback that
21842         catches a exception, don't propagate it after invoking the callback.
21843         Fixes bug #75336.
21844
21845 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
21846
21847         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
21848
21849         * class-internals.h (MonoCachedClassInfo): Add some new fields.
21850
21851         * class.c (mono_class_init): Load field info lazily in the AOT case.    
21852
21853         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
21854
21855 2005-08-03  Ankit Jain  <jankit@novell.com>
21856
21857         Fix #75683.
21858         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
21859           PInvoke calling convention is 0.
21860
21861 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
21862
21863         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
21864         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
21865
21866 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
21867
21868         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
21869         to handle threads not started by the GC (patch by Michael Meeks
21870         <michael.meeks@novell.com>).
21871
21872 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
21873
21874         * reflection.c: Make buffer used in emitting types larger for some
21875         big generic types (patch by Michal Moskal).
21876
21877 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
21878
21879         * mono-debug.c: Fix some (not all) alignment problems.
21880
21881 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21882
21883         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
21884         Invoke mono_image_load_from_data_full passing the refonly
21885         parameter.
21886
21887         * assembly.c
21888         (mono_assembly_open_from_bundle): Add the refonly argument, 
21889         in order to pass it to other methods it calls to.
21890         (do_mono_assembly_open): Add the refonly argument, in order 
21891         to pass it to other methods it calls to.
21892         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
21893         the refonly parameter to it.
21894
21895         * image.c: Add loaded_images_refonly_hash and
21896         loaded_images_refonly_guid_hash to cache the reflection
21897         only loaded images.
21898         (mono_images_init): Initialize the hash tables used for
21899         caching the reflection only images.
21900         (load_modules): Invoke mono_image_open_full passing the refonly
21901         parameter to load the modules the correct way.
21902         (build_guid_table): Add the refonly argument, to re-build the 
21903         correct hash table.
21904         (do_mono_image_open): Added the refonly argument, in order to
21905         define it for the loaded image.
21906         (mono_image_loaded_full): New function, which receives an
21907         additional parameter to look for the image in the refonly or
21908         non-refonly section.
21909         (mono_image_loaded): Updated, using mono_image_loaded_full.
21910         (mono_image_loaded_by_guid_full): The same case that happens
21911         with mono_image_loaded_full.
21912         (mono_image_loaded_by_guid): Likewise.
21913         (register_image): Use the ref_only variable inside MonoImage
21914         to decide in which hash table store the current image.
21915         (mono_image_open_from_data_full): Rename
21916         mono_image_open_from_data to mono_image_open_from_data_full,
21917         adding the refonly argument, to define the ref_only variable 
21918         inside MonoImage.
21919         (mono_image_open_from_data): Return 
21920         mono_image_open_from_data_full.
21921         (mono_image_open_full): Rename mono_image_open to
21922         mono_image_open_full, receiving the new refonly argument,
21923         to pass it to inner methods.
21924         (mono_pe_file_open): Update this function, to open
21925         a MonoImage as a non-refonly image.
21926         (mono_image_close): Use the refonly variable inside
21927         MonoImage to remove the image from the correct caches.
21928
21929         * image.h: Add the signatures of mono_image_open_full,
21930         mono_image_open_from_data_full, mono_image_loaded_full,
21931         mono_image_loaded_by_guid_full.
21932
21933         * metadata-internals.h: Add the ref_only field to 
21934         MonoImage.
21935         
21936 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21937
21938         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
21939         Fix the last behavior, which used to load the assemblies and
21940         extract MonoReflectionAssemblyName information, instead of
21941         extract it from the metadata tables. Needed for Reflection
21942         Only assemblies.
21943         
21944 2005-07-29  Martin Baulig  <martin@ximian.com>
21945
21946         * mono-debug-debugger.c
21947         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
21948         not initialized.
21949
21950         * mono-debug.c
21951         (mono_debug_address_from_il_offset): Check whether we have
21952         debugging support before attempting to take the lock.
21953         (mono_debug_source_location_from_address): Likewise.
21954         (mono_debug_source_location_from_il_offset): Likewise.
21955         (mono_debug_il_offset_from_address): Likewise.
21956         (mono_debug_address_from_il_offset): Likewise.
21957
21958 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
21959
21960         * class.c (mono_class_from_name_case): Add support for dynamic images.
21961         Fixes #75650.
21962
21963         * object.c (mono_class_compute_gc_descriptor): Add a workaround
21964         for #75479.
21965
21966 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
21967         
21968         * reflection.c (mono_method_get_object): Fix warning.
21969
21970 2005-07-28  Martin Baulig  <martin@ximian.com>
21971
21972         * mono-debug.c
21973         (mono_debug_add_wrapper): Also write the wrapper type.
21974
21975 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
21976
21977         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
21978         
21979         * class.c (mono_class_init): Avoid reading nested classes if the AOT
21980         data indicates the class has none.
21981
21982 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
21983
21984         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
21985         loader lock with the debugger lock. Prevents deadlocks for beagle.
21986
21987         Beagle can now run on an smp box for a weekend without any
21988         issues. Woohoo!
21989
21990 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
21991
21992         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
21993         in a module. Fixes #75629.
21994
21995 2005-07-26  Martin Baulig  <martin@ximian.com>
21996
21997         * mono-debug.c (mono_debug_add_wrapper): New static method.
21998         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
21999         interncall or a wrapper.
22000
22001         * mono-debug.h (MonoDebugWrapperData): New public typedef.
22002         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
22003         (MONO_DEBUGGER_VERSION): Bump to 51.
22004
22005         * mono-debug-debugger.c
22006         (mono_debugger_add_type): Removed this empty function.
22007         (mono_debugger_add_method): Likewise.
22008
22009 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
22010
22011         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
22012         before accessing method->slot.
22013
22014 2005-07-21  Jb Evain  <jbevain@gmail.com>
22015
22016         * reflection.c (method_encode_clauses/class): Handle filters clauses.
22017         Fixes #75010.
22018
22019 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
22020
22021         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
22022         #75587.
22023
22024 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
22025
22026         * image.h image.c: Add mono_image_get_guid () API function.
22027
22028 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
22029
22030         There were issues when multiple threads tried to load
22031         assemblies. A deadlock was created between assemblies_mutex and
22032         mono_domain_assemblies_lock. This fixes the issue by making the
22033         assembly ref counting be lock free. See bug 75586.
22034         
22035         * image.c (mono_image_close): The add ref function here was using
22036         Interlocked operations while the unref was using a mutex and a
22037         --. I don't think this was ever a bug that would be exposed in a
22038         non-pendantic way (ie, by an embedder doing a ref on one thread
22039         and an unref on another), but for the sake of correctness, this is
22040         now Interlocked.
22041
22042         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
22043         (mono_assembly_load_reference): Call mono_assembly_addref rather
22044         than touching the refcount ourselves.
22045         (mono_assembly_close): Use InterlockedDecrement to unref the
22046         assembly. Don't acquire the lock unless it is actually needed.
22047
22048 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
22049
22050         * class.c (mono_class_layout_fields): Fix calculation of has_references
22051         for generic types.
22052
22053 2005-07-12  Martin Baulig  <martin@ximian.com>
22054
22055         Applying a patch from Michal Moskal <malekith@nemerle.org>.
22056
22057         * metadata.c
22058         (mono_type_hash): Provide better hashing for generic instances.
22059         (mono_generic_inst_hash): Improve hashing.
22060         (mono_generic_class_hash): Likewise.
22061
22062         * reflection.c (mymono_metadata_type_hash): Improve hashing for
22063         generic instances.
22064
22065 2005-07-12  Martin Baulig  <martin@ximian.com>
22066
22067         * reflection.c (mono_reflection_create_runtime_class): Remove the
22068         hack for generic type definitions and non-`Run' assemblies.
22069         (mono_reflection_bind_generic_parameters): Also use
22070         `klass->wastypebuilder' to check for TypeBuilders.
22071
22072 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
22073
22074         * class.c (mono_class_layout_fields): Fix calculation of has_references
22075         for generic types.
22076
22077         * class.c (inflate_generic_class): Fix a leak.
22078         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
22079         for generic types.
22080
22081 2005-07-11  Martin Baulig  <martin@ximian.com>
22082
22083         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
22084         on error.
22085
22086 2005-07-11  Martin Baulig  <martin@ximian.com>
22087
22088         * loader.c (find_method): Also lookup in
22089         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
22090
22091 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22092
22093         * appdomain.c (mono_domain_unload): Don't free the error message
22094         before passing it to mono_get_exception_...
22095
22096         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
22097         
22098 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
22099
22100         * threads.c: try to better guess an available RT signal (bug #75387).
22101
22102 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22103
22104         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
22105         and CACHE_OBJECT.
22106
22107 2005-07-07  Martin Baulig  <martin@ximian.com>
22108
22109         * class.c (mono_type_get_name_full): Return NULL for
22110         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
22111         fixes #75408.
22112
22113 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22114
22115         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
22116         exit the appdomain as well being aborted.
22117
22118         * threadpool.c: Create all threadpool threads inside the root appdomain, and
22119         change back to the root domain after calling managed code. This enables
22120         appdomains using threadpools to be unloaded.
22121
22122 2005-07-07  Martin Baulig  <martin@ximian.com>
22123
22124         * class-internals.h
22125         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
22126         into `MonoDynamicGenericClass' since we only need it for dynamic
22127         types.
22128
22129         * reflection.c (mono_class_bind_generic_parameters): We don't need
22130         to compute the `parent' here.
22131
22132 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
22133
22134         * culture-info-table.h : regenerated.
22135
22136 2005-07-06  Martin Baulig  <martin@ximian.com>
22137
22138         * icall.c
22139         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
22140
22141         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
22142
22143 2005-07-06  Martin Baulig  <martin@ximian.com>
22144
22145         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
22146         we're doing a signature-only comparision; fixes #74945.
22147
22148 2005-07-06  Martin Baulig  <martin@ximian.com>
22149
22150         * class-internals.h (MonoGenericClass): Moved some things out into
22151         a new `MonoInflatedGenericClass' type.  
22152         (MonoInflatedGenericClass): New type; the `klass' of a
22153         `MonoGenericClass' is now computed lazyly in
22154         mono_get_inflated_generic_class().      
22155
22156         * class.c (mono_get_inflated_generic_class): New public function.
22157         (mono_class_inflate_generic_method): Removed the unused
22158         `MonoClass *' argument.
22159         (setup_generic_vtable): Don't call mono_get_inflated_method() on
22160         all the methods.
22161         (mono_class_create_generic): Make this static and merge it with
22162         mono_class_create_generic_2(); we're now called automatically from
22163         mono_get_inflated_generic_class().
22164
22165         * loader.c (mono_method_signature): Call
22166         mono_get_inflated_method() here.
22167
22168 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
22169
22170         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
22171         type of fields with RVA.
22172
22173         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
22174         for this pseudo class.
22175         (my_mono_class_from_generic_parameter): Likewise.
22176         (mono_class_init): Allow interfaces to have cctors.
22177
22178 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
22179
22180         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
22181         lazily for AOT methods.
22182
22183 2005-07-05  Martin Baulig  <martin@ximian.com>
22184
22185         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
22186         returns FALSE for a successful match, not TRUE.
22187
22188 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
22189
22190         * loader.c (mono_method_get_index): Optimize this a bit.
22191
22192 2005-07-04  Martin Baulig  <martin@ximian.com>
22193
22194         * class.c
22195         (class_compute_field_layout): Move the check for generic type
22196         definitions into mono_class_layout_fields().  Fixes #74684.
22197         (mono_class_from_generic_parameter): Correctly compute
22198         `klass->parent'; fixes #75457.
22199
22200         * reflection.c (register_assembly, register_module): Make sure
22201         `domain->rejobject_hash' is already created.
22202
22203 2005-07-02  Martin Baulig  <martin@ximian.com>
22204
22205         * class-internals.h
22206         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
22207         `MonoDynamicGenericClass'.      
22208
22209 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
22210
22211         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
22212         returned by a field getter is null, since null is a valid value.
22213
22214 2005-07-01  Martin Baulig  <martin@ximian.com>
22215
22216         * reflection.c (mono_reflection_generic_class_initialize): Update
22217         the `dgclass->fields [i].parent' to the correct class.
22218         (mono_image_get_fieldref_token): Use the declaring type, not the
22219         reflected type.
22220
22221 2005-07-01  Martin Baulig  <martin@ximian.com>
22222
22223         * loader.c (find_method): Also look in the interfaces; fixes #75429.
22224
22225 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
22226
22227         * threads.c (thread_cleanup): assert that thread != NULL
22228         (wait_for_tids_or_state_change): We were using the wrong variable
22229         when accessing wait->threads. `i' was always out of the bounds of
22230         the array.
22231
22232 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22233
22234         * loader.c: map user32 and kernel32 to libMonoSupportW
22235
22236 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
22237
22238         * appdomain.c (unload_thread_main): Mark this as WINAPI.
22239
22240 2005-06-28  Martin Baulig  <martin@ximian.com>
22241
22242         * loader.c (method_from_methodspec): Fix #75334.
22243
22244 2005-06-28  Martin Baulig  <martin@ximian.com>
22245
22246         Fix #74953 - Arrays now implement the generic IList<T> interface
22247         on the 2.0 platform.
22248
22249         * class-internals.h (MonoDefaults): Added `generic_array_class'.
22250
22251         * reflection.c (mono_class_bind_generic_parameters): New public
22252         function; similar to mono_reflection_bind_generic_parameters(),
22253         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
22254
22255         * domain.c (mono_init_internal): Try to initialize.
22256         `mono_defaults.generic_array_class' here; this'll only succeed if
22257         we're using the 2.0 corlib.
22258
22259         * icall.c
22260         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
22261         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
22262         (mono_lookup_internal_call): Added support for nested classes.
22263
22264         * loader.c
22265         (mono_get_method_from_token): Set `result->signature->pinvoke' if
22266         we're an interncall and have generic arguments.
22267
22268         * class.c
22269         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
22270         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
22271         instance of System.Array.InternalArray<T> for arrays, so they
22272         implement the generic IList<T> interface.
22273
22274 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
22275
22276         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
22277         (chastamar@yahoo.com). Fixes #75374.    
22278
22279 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
22280
22281         * culture-info-table.h: regenerated.
22282
22283 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22284
22285         * icall.c: handle spaces correctly for base64 strings.
22286
22287 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
22288
22289         * *.c: Kill some warnings.
22290
22291 2005-06-23  Duncan Mak  <duncan@novell.com>
22292
22293         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
22294         that this builds on Solaris 10 (x86).
22295
22296 2005-06-23  Martin Baulig  <martin@ximian.com>
22297
22298         * class.c
22299         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
22300         generic type definitions.
22301
22302 2005-06-23  Martin Baulig  <martin@ximian.com>
22303
22304         Fix #75331.
22305
22306         * metadata.c (mono_class_get_overrides): Renamed to
22307         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
22308         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
22309         pass it to mono_get_method_full().
22310
22311 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
22312
22313         * reflection.c (mono_reflection_create_runtime_class): take the
22314         mono_domain_lock in this method. Prevents deadlocks
22315
22316 2005-06-22  Martin Baulig  <martin@ximian.com>
22317
22318         * loader.c (method_from_methodspec): Fix #75330.
22319
22320 2005-06-22  Martin Baulig  <martin@ximian.com>
22321
22322         * reflection.c (type_get_qualified_name): Use
22323         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
22324         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
22325         argument; use it if we don't have an assembly name.
22326
22327 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
22328
22329         * object.c: In mono_message_init, set "copy out" flag for in
22330         parameters with the [Out] flag.
22331
22332 2005-06-21  Martin Baulig  <martin@ximian.com>
22333
22334         * class.c
22335         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
22336         and MONO_TYPE_PTR.
22337
22338 2005-06-21  Martin Baulig  <martin@ximian.com>
22339
22340         * class.c (mono_class_init): Don't initialize `class->fields' for
22341         generic instances since they're initialized again in
22342         compute_field_layout(). 
22343         (compute_field_layout): Set the field's `generic_info' here; fix
22344         #75320. 
22345
22346 2005-06-21  Martin Baulig  <martin@ximian.com>
22347
22348         * class-internals.h
22349         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
22350
22351         * metadata.c (mono_metadata_generic_method_equal): Also
22352         distinguish the `generic_class'; fixes #75334.
22353
22354 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22355
22356         * domain.c:
22357         * appdomain.c:
22358         * domain-internals.h:
22359         * reflection.c: 'domain_assemblies' field is now protected by its own
22360         lock. Don't call into managed code to run the AssemblyLoad event if we
22361         now there are no registered delegates for it.
22362
22363 2005-06-20  Martin Baulig  <martin@ximian.com>
22364
22365         * class.c (mono_class_is_assignable_from): Use a custom version of
22366         mono_class_has_parent() to make things work for generic instances;
22367         fix #75300.
22368
22369 2005-06-20  Martin Baulig  <martin@ximian.com>
22370
22371         * loader.c (method_from_methodspec): Apply a patch from
22372         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
22373
22374 2005-06-20  Martin Baulig  <martin@ximian.com>
22375
22376         * class.c (mono_class_init): Reverted Zoltan's last change; it
22377         breaks generics.
22378
22379 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
22380
22381         * threads.c (wait_for_tids_or_state_change): Add missing locking.
22382
22383 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22384
22385         * socket-io.c: fix the index in the socket array for writable/error
22386         sockets. Fixes bug #75306.
22387
22388 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
22389
22390         * class.c (mono_class_init): Allow interfaces to have static ctors.
22391
22392 2005-06-17  Martin Baulig  <martin@ximian.com>
22393
22394         * loader.c (method_from_methodspec): Use `context->container' when
22395         parsing the `gmethod->inst'.
22396
22397 2005-06-17  Martin Baulig  <martin@ximian.com>
22398
22399         * class.c (mono_type_get_name_recurse): Don't add the assembly
22400         name for type arguments.
22401
22402 2005-06-15  Martin Baulig  <martin@ximian.com>
22403
22404         * reflection.c (mono_image_get_inflated_method_token): Encode
22405         correct klass; fixes #75260.
22406
22407 2005-06-13 Michal Moskal <malekith@nemerle.org>
22408
22409         * icall.c: Make GetCorrespondingMethod/Constructor take
22410         MonoReflectionMethod method not MonoMethod. Removed
22411         MonoType.GetCorrespondingField, and make
22412         MonoGenericType.GetCorrespondingField take name not
22413         MonoClassField.
22414
22415 2005-06-13  Michal Moskal <malekith@nemerle.org>
22416
22417         * reflection.c (field_encode_signature, encode_locals):
22418          Make sizes of buffers for types larger (for big generic types).
22419          (create_generic_typespec,
22420          mono_reflection_sighelper_get_signature_local,
22421          mono_reflection_sighelper_get_signature_field):
22422          Add asserts for too small buffers.
22423
22424 2005-06-15  Martin Baulig  <martin@ximian.com>
22425
22426         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
22427         if our parent is not a dynamic type.
22428
22429 2005-06-15  Martin Baulig  <martin@ximian.com>
22430
22431         * class-internals.h (MonoTypeNameFormat): New enum.
22432
22433         * class.c
22434         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
22435         (mono_type_get_full_name): Removed.
22436         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
22437         argument instead of the boolean's.
22438
22439         * icall.c (ves_icall_System_MonoType_getFullName):
22440         Added `gboolean assembly_qualified'.    
22441
22442         * reflection.h
22443         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
22444
22445         * reflection.c (mono_reflection_parse_type): Parse the new type
22446         name format.
22447
22448 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22449
22450         * icall.c: no need to convert from utf16 to utf8 and then back again
22451         after the call to GetLogicalDrives.
22452
22453 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22454
22455         * icall.c: frombase64. Fix problems exposed by new tests.
22456
22457 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22458
22459         * icall.c: added internal calls for converting char [] and strings in
22460         base64 into byte [].
22461
22462 2005-06-10  Martin Baulig  <martin@ximian.com>
22463
22464         * class.c (mono_class_create_generic_2): Read the nested classes
22465         from the metadata rather than from `gklass->nested_classes' since
22466         `gklass' might not be initialized yet.
22467
22468 2005-06-09  Duncan Mak  <duncan@novell.com>
22469
22470         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
22471         all public headers. Fixes #74919.
22472
22473 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
22474
22475         * domain.c: The key for proxy_vtable_hash is now a pointer
22476         array. Added new GHashFunc and GCompareFunc functions for this.
22477
22478         * class.h: The list of interfaces in MonoRemoteClass is known in
22479         advance and can't grow (we create a new MonoRemoteClass if needed),
22480         so now the interface array can be allocated together with
22481         MonoRemoteClass.
22482         
22483         * object.c: Added a new method create_remote_class_key.
22484         Fixed mono_remote_class so it does not depend on
22485         mono_upgrade_remote_class.
22486         Removed extend_interface_array.
22487         Added new method clone_remote_class(), which makes a copy of a remote
22488         class and adds a new interface or class to it.
22489         mono_upgrade_remote_class() now creates a new remote class (or gets
22490         it from the cache) if an vtable upgrade is needed. In this way
22491         we make sure that other objects sharing the same remote class
22492         don't get the new vtable with unwanted interfaces.
22493         
22494         * object-internals.h:
22495         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
22496         
22497         * marshal.c: Track changes in mono_upgrade_remote_class().
22498
22499 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
22500         * icall.c: Add runtime methods for obtaining members of inflated
22501         class, which were created from supplied non-inflated members. It
22502         is used in internal Get{Method,Constructor,Field} methods in
22503         System.Type
22504
22505 2005-06-09  Martin Baulig  <martin@ximian.com>
22506
22507         * reflection.c
22508         (mono_reflection_bind_generic_method_parameters): Fix #75169.
22509
22510 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22511         * reflection.c (mono_image_basic_init): Define
22512         Version in MonoDynamicAssembly. 
22513         
22514 2005-06-08  Martin Baulig  <martin@ximian.com>
22515
22516         Fix #75136.
22517
22518         * loader.c
22519         (mono_method_signature_full): New public method; takes a
22520         `MonoGenericContext *'.
22521         (find_method): Use mono_method_signature_full() and pass the
22522         klass'es context to it.
22523
22524         * class.c (mono_class_is_inflated_method): Use
22525         mono_method_signature_full() and pass the context to it.
22526
22527 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
22528
22529         * object.c: add proper locking in mono_remote_class_vtable(),
22530         fixes possible memory corruption.
22531
22532 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
22533
22534         * marshal.c (mono_remoting_marshal_init): set
22535         initialized after initialization.
22536
22537 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
22538
22539         * locales.c : hush.
22540
22541 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
22542
22543         * object.c (extend_interface_array): fix really silly
22544         memory corrupting / comparison bug.
22545
22546 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22547
22548         * reflection.c: Functions added to support the creation
22549         of CustomAttributeData, which includes Attribute data
22550         used by ReflectionOnly methods.
22551
22552         * reflection.h:  mono_reflection_get_custom_attrs_data and
22553          mono_custom_attrs_data_construct added (functions exposed).
22554
22555          * icall.c: Added mono_reflection_get_custom_attrs_data
22556          as icall.
22557         
22558 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
22559
22560         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
22561         lupus's request.
22562
22563 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
22564
22565         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
22566
22567         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
22568         dynamic DllImportAttribute.
22569
22570         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
22571         dynamic DllImportAttribute.
22572
22573         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
22574         Fixes #75162.
22575
22576 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22577
22578         * threads.c: avoid segfault when an unstarted thread is aborted.
22579
22580 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
22581
22582         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
22583         Returns the name and version of the runtime for reporting.
22584
22585 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22586
22587         * appdomain.c: bump corlib version.
22588         * object-internals.h: new field in MonoReflectionAssembly.
22589
22590 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22591
22592         * object-internals.h: Carlos forgot to add this field.
22593
22594 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22595
22596         * icall.c: Added create_version to create instances
22597         of Version of MonoReflectionAssemblyName. This change helps
22598         the AssemblyName tests to keep running fine.
22599         
22600 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
22601   
22602         * object.c (mono_method_return_message_restore): A somehow less
22603         intrusive fix for #75138.
22604
22605 2005-06-03  Raja R Harinath  <rharinath@novell.com>
22606
22607         * object.c (mono_method_return_message_restore): Fix computation
22608         of expected number of out args.
22609
22610 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
22611
22612         * reflection.c (mono_image_get_method_info): Fix the case when the
22613         charset is empty.
22614
22615 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
22616
22617         * object.c: Added missing null check in
22618           mono_method_return_message_restore.
22619
22620 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
22621
22622         * reflection.c (mono_image_get_method_info): Handle the case when
22623         dllentry is empty.
22624
22625 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
22626
22627         * object.c: When creating the vtable for a proxy, take into account
22628         all inherited interfaces, not only the ones registered in
22629         iclass->interfaces. This fixs bug #74996.
22630         Also, in mono_method_return_message_restore, verify that the array
22631         of out args has the expected lengh.
22632
22633 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22634
22635         * socket-io.c: update the timeout in Poll when the call is interrupte.
22636
22637 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22638
22639         * socket-io.c: support abort/suspend in Select_internal after last
22640         change.
22641
22642 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22643
22644         * threadpool.c: remove warning.
22645
22646 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22647
22648         * icall.c:
22649         * socket-io.[ch]: Select_internal uses poll() now when available, thus
22650         removing the 1024 limit from select(). Runtime part of the fix for
22651         bug #71203.
22652
22653 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22654
22655         * socket-io.c: when resolving the addresses for the same
22656         host returned by gethostname(), get the local IPs from the interface
22657         list. Loopback addresses are discarded if the are interfaces up with
22658         non-loopback ones. Fixes bug #63265.
22659
22660 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
22661
22662         * appdomain.c, verify.c, object-internals.h, reflection.c:
22663         bumped corlib number to 36, and added new extra_flags field
22664         to ReflectionMethodBuilder and friends.  Fixes #75060.
22665
22666 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
22667
22668         * gc.c: register a new weak link only if the object is non-null
22669         (fixes bug#75047).
22670
22671 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
22672
22673         * culture-info.h : short time pattern too.
22674
22675 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
22676
22677         * culture-info.h : expand long time pattern string length.
22678
22679 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
22680
22681         * culture-info-table.h : update (more French date format; #72788).
22682
22683 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
22684
22685         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
22686         the method is static. Fixes #75029.
22687
22688 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
22689
22690         * reflection.c: Update the table_idx field of method builders after
22691         saving the module, since it can change. This is a workaround for
22692         bug #74914. 
22693
22694 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
22695
22696         * culture-info-table.h : update (additional French date format).
22697
22698 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
22699
22700         * icall.c (ves_icall_type_Equals): Revert last change.
22701         
22702         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
22703
22704         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
22705
22706 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
22707
22708         * class-internals.h: Added executioncontext_class field to 
22709         MonoDefaults structure.
22710         * domain.c: Cache System.Threading.ExecutionContext class in 
22711         mono_defaults.
22712         * object.c: Capture the ExecutionContext for asynchroneous calls in
22713          mono_async_result_new.
22714         * object-internals.h: Added execution_context and original_context 
22715         fields to MonoAsyncResult. Added execution_context to MonoThread.
22716         * security-manager.c|.h: Added mono_get_context_capture_method to 
22717         return the capture method (if required by the security manager or by
22718         the framework version used).
22719         * threadpool.c: Apply capture (if present) ExecutionContext in 
22720         mono_async_invoke and revert to original context after it completes.
22721
22722 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
22723
22724         * culture-info-table.h : updated (real hacky solution for zh-CHT).
22725
22726 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
22727
22728         * culture-info-table.h : zh-CHT related workaround.
22729
22730 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
22731
22732         * marshal.c (emit_marshal_custom): Add some error checking and call the
22733         methods in the ICustomMarshaler interface. Fixes #74875.
22734         
22735         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
22736         native->managed wrappers.
22737
22738 2005-05-12  Martin Baulig  <martin@ximian.com>
22739
22740         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
22741         here and use the loader lock.
22742
22743         * mono-debug.c: Properly lock when the debugger is not attached.
22744         (mono_debug_init): Release the initial lock if we're not running
22745         in the debugger.
22746
22747 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
22748
22749         * marshal.c (emit_marshal_custom): Pass through NULL values without
22750         calling the custom marshalling routines.
22751
22752         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
22753         conversion in structures. Fixes #74882.
22754
22755 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
22756
22757         * culture-info-table.h : zh-* cultures were missing.
22758
22759 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
22760
22761         * threads.c: Added a new event background_change_event which is signaled
22762         when a thread changes its background mode.
22763         Moved here several checks previously done in managed code. The checks
22764         require the thread lock, and using the thread lock in managed code
22765         can result in deadlocks.
22766         Merged Start_internal and Thread_internal into a single method. Now 
22767         Thread_internal does all work of creating and starting a thread.
22768         Added icalls for setting and getting the state of the object. Moved from
22769         managed code to avoid locking there.
22770         Added wait_for_tids_or_state_change() which is called instad of
22771         wait_for_tids when waiting for non-backround threads to end. This method
22772         will return if one of the threads ends or the background_change_event
22773         is signaled.
22774         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
22775         the background mode. This method signals the background_change_event
22776         event.
22777         * icall.c:
22778         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
22779         removed Start_internal.
22780         
22781 2005-05-11  Martin Baulig  <martin@ximian.com>
22782
22783         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
22784         to order of some fields to get proper alignment on 64-bit machines.
22785
22786 2005-05-11  Martin Baulig  <martin@ximian.com>
22787
22788         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
22789         changes as they're broken and completely fuck up the debugger.
22790
22791         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
22792
22793 2005-05-10  Martin Baulig  <martin@ximian.com>
22794
22795         * reflection.c (mono_reflection_generic_class_initialize): Don't
22796         call mono_class_setup_parent() here.
22797
22798 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22799
22800         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
22801         send/receive timeout use an integer in milliseconds. We were using a
22802         struct timeval.
22803
22804 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22805
22806         * locales.c:
22807         (internal_get_cultures): reserve the first slot of the array for the
22808         InvariantCulture, which will be filled in managed code.
22809
22810 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
22811
22812         * reflection.c (mono_image_fill_module_table): Initialize the
22813         GENERATION field as well.
22814
22815 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22816
22817         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
22818         Monitor.Enter on the object.
22819
22820 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
22821
22822         * threads.c: Enable the wait for running threads when exiting.
22823         * icall.c: Suspend all threads before exiting.
22824
22825 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
22826
22827         * assembly.c (mono_assembly_load_reference): Fix warning.
22828
22829 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22830
22831         * threadpool.c: changed the default number of threads per cpu. From now
22832         on, the default will be 20 + (5 * number of cpus) instead of 50.
22833
22834 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
22835
22836         * loader.c (mono_method_get_signature_full): Add locking here.
22837
22838 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
22839
22840         * appdomain.c: Moved methods for parsing and freeing assembly
22841         names to assembly.c.
22842         * assembly.c, domain-internals.h: Created public methods for parsing
22843         assembly names. Fixed mono_assembly_load_with_partial_name:
22844         it now finds the best match, taking into account the version,
22845         token and culture specified in the partial name. Also return
22846         the latest version if no version information is specified.
22847
22848 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
22849
22850         * threadpool.c: replace check for SocketAsyncCall class.
22851
22852 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22853
22854         * threadpool-internals.h:
22855         * Makefile.am: added threadpool-internals.h
22856
22857         * threadpool.c: call mono_unhandled_exception on exceptions not handled
22858         that happen in threadpool threads (tested on MS).
22859         (mono_thread_pool_remove_socket): new function that dispatch any pending
22860         AIO call on a socket that is closing. By now only epoll really needs it,
22861         as select/poll wake up when the socket closes.
22862
22863
22864         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
22865
22866 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
22867
22868         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
22869
22870 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
22871
22872         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
22873
22874 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
22875
22876         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
22877         has an abort request, convert it into a suspend request.
22878
22879 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
22880
22881         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
22882         warning for the usage of `UnmanagedFunctionPointerAttribute' which
22883         is not supported yet.
22884
22885 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22886
22887         * image.c: register assemblies loaded from data (bundles) in the loaded
22888         assemblies hash. Fixes bug #74772.
22889
22890 2005-04-29  Martin Baulig  <martin@ximian.com>
22891
22892         * class.c (mono_type_get_name_recurse): Update to the new naming
22893         schema from the latest .NET 2.x beta2.
22894         (mono_class_setup_vtable_general): If we're a generic instance,
22895         copy the vtable from our generic type definition and inflate all
22896         the methods in it.
22897
22898         * loader.c (find_method): Update to the new naming schema from the
22899         latest .NET 2.x beta2.
22900
22901 2005-04-29  Raja R Harinath  <harinath@gmail.com>
22902
22903         * class.c (mono_class_init): Add a mono_loader_unlock to the
22904         #74734 fix.
22905
22906 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
22907
22908         * icall.c (ves_icall_System_Environment_Exit): Remove the 
22909         suspend_all_other_threads () call for the time being, since it can hang.
22910
22911         * threads.c (mono_thread_manage): Similarly, disable the waiting for
22912         the background threads to exit, since it can also hang.
22913
22914         * class.c (mono_class_init): Applied patch from Ankit Jain 
22915         (radical@gmail.com). Avoid pending init errors when a field refers
22916         to a nested class using a typeref. Fixes #74734.
22917
22918         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
22919         this for dynamic modules.
22920
22921 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22922
22923         * threads.c: don't wait for threads that are in the process of aborting
22924         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
22925         and waiting for background threads to finish. This makes xsp and
22926         mod-mono-server exit without random length delays and/or hangs.
22927
22928 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22929
22930         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
22931
22932 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
22933
22934         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
22935         dynamic types to prevent infinite loops. Fixes #74727.
22936
22937         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
22938         ..._is_assignable_to.
22939
22940 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
22941
22942         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
22943
22944 2005-04-25  Martin Baulig  <martin@ximian.com>
22945
22946         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
22947
22948         * domain.c
22949         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
22950
22951         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
22952
22953         * reflection.c (build_compressed_metadata): Set metadata header
22954         version to 2.0.
22955
22956 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
22957
22958         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
22959         number into an integral and a decimal part. Fixes #70473.
22960
22961         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
22962
22963 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
22964
22965         * culture-info-table.h : reflected the latest locale-builder output.
22966
22967 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22968
22969         * threadpool.c: check for SuspendRequested too when deciding if
22970         mono_thread_interruption_checkpoint should be called.
22971
22972 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22973
22974         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
22975         * threads.c: remove interruption_mutex and use Interlocked instead. When
22976         suspending all the threads, wait for all the suspended events at once.
22977         If we're shutting down and get an APC that is going to be queued,
22978         call mono_thread_execute_interruption immediately, as the thread might
22979         be sleeping on a pthread condition or mutex.
22980
22981         * icall.c: call mono_runtime_set_shutting_down before suspending the
22982         threads.
22983
22984         Fixes bug #74693. And now xsp is happier when exiting.
22985
22986 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
22987
22988         * loader.c (mono_stack_walk): Fix #74690.
22989
22990 2005-04-22  Martin Baulig  <martin@ximian.com>
22991
22992         * mono-debug.h (MonoDebugMethodJitInfo): Added
22993         `MonoDebugMethodJitInfo *jit'.
22994
22995         * mono-debug.c (mono_debug_read_method): Cache the
22996         MonoDebugMethodJitInfo in `address->jit'.
22997         (mono_debug_free_method_jit_info): New public method.
22998
22999 2005-04-22  Martin Baulig  <martin@ximian.com>
23000
23001         * class.c (mono_class_is_assignable_from): Disallow
23002         type parameter -> interface.
23003
23004 2005-04-21  Dick Porter  <dick@ximian.com>
23005
23006         * threads.c (mono_thread_create): Turn an assertion into an error.
23007
23008 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
23009
23010         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
23011         
23012         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
23013         Fix some gcc 4.0 warnings.
23014
23015 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
23016
23017         * file-io.c: fix alt dir separator char on unix systems
23018         and cleanup (fixes bug #71214).
23019
23020 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
23021
23022         * marshal.c: Use CALLVIRT instead of CALL when dispatching
23023         a call to a remote domain, since the method may be an
23024         interface method in the client domain. This fixes bug #74192.
23025
23026 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23027
23028         * threadpool.c: recv/send are now performed before going back to managed
23029         code to save one transition.
23030
23031 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23032
23033         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
23034
23035         * metadata/threadpool.c: removed hack to workaround the bug above.
23036
23037         Fixes bug #74618.
23038
23039 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
23040
23041         * reflection.c reflection.h: Fix handling of parameter defaults in
23042         dynamic methods. Also fixes handling of parameter attributes.
23043         Fixes #74609.
23044
23045         * mono-debug.c (mono_debug_close_image): Fix warning.
23046
23047 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23048
23049         * socket-io.h: replaced old unused field with new 'blocking'.
23050         * threadpool.c: restore socket blocking state on windows(tm).
23051
23052 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
23053
23054         * icall.c: don't return the codebase in the AssemblyName[] returned by
23055         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
23056         * object-internals.h: Removed FIXME (fields were presents) and fixed
23057         versioncompat declaration.
23058
23059 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23060
23061         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
23062         not closed, so don't cleanup when it happens.
23063
23064 2005-04-13  Chris Toshok  <toshok@ximian.com>
23065
23066         * mono-debug-debugger.h: change prototype for
23067         mono_debugger_lookup_type.
23068
23069         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
23070         this function, although it should probably be named
23071         mono_debugger_init_type.
23072
23073 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23074
23075         * threadpool.c: fix non-AIO case.
23076
23077 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
23078
23079         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
23080         the built-in profiler to measure just JIT compilation times.
23081
23082 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23083
23084         * threadpool.c: the epollfd might be closed by another thread at
23085         any time, so ignore EBADF at treat it as a "we're closing" sign.
23086
23087 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23088
23089         * threadpool.c: release the semaphores with a count equals to the number
23090         of working threads in both IO and regular pools. Fixed typo that messed
23091         up the count of IO pool threads. Don't initialize the pipe handles if
23092         we're using epoll.
23093
23094 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23095
23096         * threadpool.c: some systems don't like a NULL when deleting the socket
23097         from epoll.
23098
23099 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23100
23101         * threadpool.c: fix semaphore allocation.
23102
23103 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23104
23105         * threadpool.c: added epoll() based implementation for asynchronous IO
23106         that is used instead of the default poll() when available.
23107         It can be disabled by setting MONO_DISABLE_AIO.
23108
23109 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23110
23111         * threadpool.c: windows needs 'closesocket' and instead of returning
23112         0 when the stream is closed while in select, it returns -1. Fixes bug
23113         #74573.
23114
23115 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
23116
23117         * class.c (class_compute_field_layout): Fix the regression caused by
23118         the previous try.
23119
23120 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23121
23122         * threadpool.c: separate pool for socket async. IO.
23123         * threadpool.h: mono_max_worker_threads is not a global any more.
23124
23125 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
23126
23127         * class.c (class_compute_field_layout): Fix #74549.
23128
23129 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23130
23131         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
23132         use 2 connected sockets instead.
23133
23134 2005-04-08  Miguel de Icaza  <miguel@novell.com>
23135
23136         * mono-config.c: Add new entry point for mkbundle
23137         mono_config_parse_memory. 
23138
23139 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23140
23141         * threadpool.c: removed another unused function.
23142
23143 2005-04-08  Ankit Jain  <radical@corewars.org>
23144
23145         * reflection.c (get_default_param_value_blobs): Add 'types'
23146         parameter to get the types encoded in the constant table.
23147         (mono_param_get_objects): Use the type from the constant table,
23148         not the type of the parameter, when creating default values.
23149         Handle null default values correctly.
23150
23151 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23152
23153         * file-io.c:
23154         * file-io.h:
23155         * threadpool.c:
23156         * threadpool.h:
23157         * icall.c:
23158         * socket-io.c: removed dead code for async IO.
23159
23160 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23161
23162         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
23163
23164         * threadpool.c: intercept socket async. calls and pass them to a thread
23165         that is polling and dispatching the job items to the threadpool as
23166         socket become ready. Fixes bugs #71217, #71933.
23167
23168         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
23169         between char and short/ushort arrays.
23170
23171         * socket-io.c: remove dead code.
23172
23173 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
23174
23175         * locales.c,
23176           icall.c : removed InternalToUpper_Comp() and
23177           InternalToLower_Comp().
23178
23179 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
23180
23181         * char-conversions.h : The tables were incorrectly generated. Should
23182           be generated against invariant culture.
23183
23184 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
23185
23186         * object.c (mono_runtime_invoke_array): Fix return value when 
23187         passing pre-created valuetype objects to ctors.
23188
23189         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
23190         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
23191         Fixes #74338.
23192
23193 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
23194
23195         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
23196         only used with --security and hides the wrong corlib version error.
23197
23198 2005-03-30  Joshua Tauberer  <tauberer@for.net>
23199
23200         * class.c: Changed mono_class_name_from_token so that types
23201         outside of a namespace don't have an initial period.  Improved
23202         the g_warning message used in _mono_class_get when loading
23203         fails.
23204         * assembly.c: In mono_assembly_load_reference, when an assembly
23205         can't be found, "No such file or directory" is misleading and
23206         unhelpful because a few paths were checked for the presence of
23207         the assembly.  When that happens (ENOENT), display a nicer
23208         message indicating the directories that were searched.  In all
23209         cases, the warning is made easier to read for non-hackers.
23210
23211 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
23212
23213         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
23214         project/solution.
23215         * appdomain.h|domain.c: Removed inline from functions.
23216         * appdomain.c: Reduced warnings when compiling on windows.
23217         * icall.c: Fixed output_debug declaration to gunichar2*.
23218         * mono-config.c: Reduced warnings when compiling on windows.
23219         * rand.c: Added missing "windows.h". Added missing return value.
23220         * rawbuffer.c: Added missing winsock2.h for windows.
23221         * sysmath.h: Added mono-compiler.h header to allow/ease 
23222         compilation with non-GCC compilers.
23223         * threads.c: Fixed declarations to compile with VS.NET C compiler.
23224         Removed cast warnings.
23225
23226         Adapted from the work of J Lothian (for VC6).
23227
23228 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
23229
23230         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
23231         from default_path.
23232
23233 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
23234
23235         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
23236         the 2.0 profile.
23237
23238 2005-03-27  Raja R Harinath  <harinath@gmail.com>
23239
23240         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
23241         has to be in $(exec_prefix).  $(prefix) is for arch-independent
23242         stuff, and it would probably use $(prefix)/share rather than
23243         $(prefix)/lib.
23244
23245 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23246
23247         * console-io.c: added 2 includes that might be missing.
23248
23249 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
23250
23251         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
23252         profile.
23253
23254         * reflection.c (create_custom_attr): Allocate the params array using
23255         alloca so it gets GC tracking.
23256
23257 2005-03-23  Chris Toshok  <toshok@ximian.com>
23258
23259         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
23260         out some spew.
23261
23262 2005-03-24  Raja R Harinath  <rharinath@novell.com>
23263
23264         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
23265         changes to pick up any changes in prefix, etc.
23266
23267 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
23268
23269         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
23270         
23271         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
23272         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
23273
23274 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
23275
23276         * class-internals.h object-internals.h class.c reflection.c: Extend the
23277         mono_lookup_dynamic_token () function to return the class of the
23278         token as well. 
23279
23280         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
23281         well. Fixes #73848.
23282
23283 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
23284
23285         * security-manager.c: Skip inheritance checks for intra-corlib
23286         class inheritance and method overrides. This skips a lot of checks
23287         and (anyway) permissions cannot work until corlib is loaded.
23288
23289 2005-03-23  Martin Baulig  <martin@ximian.com>
23290
23291         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
23292         MONO_TYPE_GENERICINST.  
23293
23294 2005-03-23  Martin Baulig  <martin@ximian.com>
23295
23296         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
23297
23298 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
23299
23300         * class.c: added locking comments to some functions.
23301         Cache the interface offsets arrays (saves about 20 KB
23302         of runtime memory in a typical app).
23303         Reduce the time overhead in mono_class_setup_supertypes ().
23304
23305 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
23306
23307         * icall.c: speedup and fix leaks in GetMethodsByName and
23308         GetPropertiesByName.
23309
23310 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
23311
23312         * reflection.c: some locking fixes.
23313
23314 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
23315
23316         * metadata.c: added missing break in case statement.
23317
23318 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
23319
23320         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
23321         typedbyref return values. Fixes #73941.
23322
23323 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
23324
23325         * security-manager.c|h: Added demandunmanaged method and 
23326         suppressunmanagedcodesecurity class to MonoSecurityManager.
23327         Renamed aptc class to allowpartiallytrustedcallers.
23328
23329 2005-03-17  Martin Baulig  <martin@ximian.com>
23330
23331         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
23332
23333 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23334
23335         * file-io.c: disabled file async. IO using aio_*. It uses the
23336         threadpool now. Workaround for bug #73718.
23337
23338 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
23339
23340         * assembly.h, mono-config.c: added code to deal with bundled configs
23341         for bundled assemblies.
23342
23343 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
23344
23345         * *.c, private.h: cleanup, removing old private.h header file.
23346
23347 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
23348
23349         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
23350         and throw_on_unmappable_char attributes.
23351
23352 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
23353
23354         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
23355         _ProcessName_internal.
23356
23357 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
23358
23359         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
23360         #73631.
23361
23362         * icall.c threads.c threads-types.h: Remove slothash icalls as they
23363         are no longer used.
23364
23365 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
23366
23367         * object.c (compute_class_bitmap): Add support for generics. Fixes
23368         #73527.
23369
23370 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
23371
23372         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
23373
23374 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23375
23376         * filewatcher.c: commented out the code for windows watcher, as we don't
23377         use it (we use the managed implementation instead).
23378
23379 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
23380
23381         * object-internals.h (MonoThread): Remove 'unused1' field.
23382
23383         * appdomain.c: Bump corlib version.
23384
23385         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
23386
23387         * reflection.c (mono_reflection_create_runtime_class): Remove the
23388         AssemblyBuilder.Save optimization since it causes too many problems.
23389
23390 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
23391
23392         * exception.c|h: Added mono_get_exception_reflection_type_load to
23393         create a ReflectionTypeLoadException object.
23394         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
23395         to return NULL is a InheritanceDemand fails during reflection. Updated
23396         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
23397         ReflectionTypeLoadException if an InheritanceDemand fails during 
23398         reflection. Added icall mapping for GetLinkDemandSecurity.
23399         * security-manager.c|h: Added ves_icall_System_Security_
23400         SecurityManager_GetLinkDemandSecurity internal call to return the
23401         class and methods permissions set for a LinkDemand. Removed unused
23402         fields in MonoSecurityManager.
23403
23404 2005-03-10  Martin Baulig  <martin@ximian.com>
23405
23406         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
23407         it's a generic instance.
23408
23409 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
23410
23411         * reflection.c (mono_get_object_from_blob): Applied patch from
23412         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
23413
23414         * class.c (mono_class_is_assignable_from): Another try at fixing 
23415         #73469 without breaking anything.
23416
23417 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
23418
23419         * class.c: (mono_class_is_assignable_from): Revert the last changes
23420         since they don't work with generics.
23421         
23422         * class.c (mono_class_is_assignable_from): Fix build bustage.
23423
23424         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
23425         the managed IsAssignableFrom method. Fixes #73469.
23426
23427         * reflection.c (mono_reflection_call_is_assignable_from): New helper
23428         function.
23429
23430 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
23431
23432         * object.c (mono_load_remote_field_new): Fix returning uninitialized
23433         memory when the remoting callback does not sets the out arguments.
23434         Fixes #73007.
23435
23436         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
23437         by mistake.
23438
23439         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
23440
23441         * object-internals.h (MonoStackFrame): Sync with managed object layout.
23442
23443         * appdomain.c: Bump corlib version.
23444
23445 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
23446
23447         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
23448         function.
23449
23450         * threads.c (mono_thread_attach): Detect threads which are not started
23451         by the GC pthread wrappers.
23452
23453 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
23454
23455         * icall.c: Added new icall for RNG.
23456         * rand.c|h: Added new icall to open the RNG. This allows to share a 
23457         single handle on Linux to access /dev/urandom and fix #73183.
23458
23459 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
23460
23461         * object.c: setting the new vtable in a transparent proxy object must
23462         not change the GC descriptor.
23463
23464 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
23465
23466         * object.c: fixed compilation without GCJ support.
23467         * reflection.c: for runtime-created types ensure klass->has_references
23468         is correct (bug #73215).
23469
23470 2005-03-02  Martin Baulig  <martin@ximian.com>
23471
23472         * class.c (mono_class_is_assignable_from): Make this work if
23473         `oklass' is a generic instance; fixes #72831.
23474
23475 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
23476
23477         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
23478         with hasthis set.
23479         
23480         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
23481
23482         * marshal.c: Reorganize native->managed marshalling code to also use
23483         the emit_marshal_... functions.
23484
23485 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
23486
23487         * object.c: typed allocs have issues with bitmap sizes > 30,
23488         so check for max_set >= 30.
23489
23490 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
23491
23492         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
23493         managed code. Fixes #73012.
23494
23495         * metadata.h (MonoMarshalSpec): Add elem_mult field.
23496
23497         * metadata.c reflection.c: Load/Emit elem_mult as well.
23498         
23499         * metadata.h (MonoMarshalSpec): Add comment.
23500
23501         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
23502
23503         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
23504         num_elem to -1 if not given.
23505
23506         * object-internals.h (MonoReflectionMarshal): Add has_size field.
23507
23508         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
23509         given values.
23510
23511 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
23512
23513         * null-gc.c (mono_gc_free_fixed): Was not compilable.
23514
23515 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
23516
23517         * reflection.c (encode_marshal_blob): Encode param_num field as well.
23518
23519         * object-internals.h (MonoReflectionMarshal): Add param_num field.
23520
23521 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
23522
23523         * object.c: generalized the reference bitmap creation
23524         and added hooks for the new GC.
23525         * class-internals.c: removed the gc_bitmap field from MonoClass.
23526
23527 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
23528
23529         * domain.c: help the compiler to produce better code
23530         in mono_jit_info_table_find ().
23531
23532 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
23533
23534         * object.c: make all allocations look typed.
23535
23536 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
23537
23538         * socket-io.c: load Mono.Posix if it's not loaded already
23539         (fixes bug#73033).
23540
23541 2005-02-24  Martin Baulig  <martin@ximian.com>
23542
23543         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
23544         * reflection.c (dup_type): Likewise.
23545
23546 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
23547
23548         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
23549         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
23550
23551 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
23552
23553         * domain.c, threads.c, object-internals.h: make the critical thread
23554         local vars use the fast access mode (even when we're compiled in
23555         a lib). Provide accessors to be used by the jit during codegen.
23556
23557 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
23558
23559         * appdomain.c: Changed hook functios behavior to include
23560         support for the reflection only assemblies. Some icalls were changed
23561         to support the mentioned assemblies too. Signatures of static methods
23562         try_assembly_resolve and real_load now have an additional parameter:
23563         refonly.
23564
23565         * assembly.c: General changes to mono_assembly_ methods to support
23566         reflection only api. Functions mono_assembly_open, mono_assembly_load,
23567         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
23568         suffix, to support an additional gbool parameter to specify whether
23569         the assembli is reflection only or not. Created some new hook functions 
23570         to add support for reflection only assemblies. Signatures of static 
23571         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
23572         have now an additional parameter: refonly.
23573
23574         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
23575         indicating whether the assembly is reflection only or not.
23576
23577         * exception.c: Add mono_get_exception_invalid_operation.
23578
23579         * icall.c: Throw an InvalidOperationException when trying to invoke
23580         a property/method/event, or trying to set/get the value of a field.
23581         Also add an icall to retrieve the ref_only flag to the
23582         MonoReflectionAssembly.
23583
23584 2005-02-23  Chris Toshok  <toshok@ximian.com>
23585
23586         Part of fix for #72827.
23587         * mono-debug.c (mono_debug_add_method): add lexical block data to
23588         the info we write.  Kind of a hack at the moment - we copy the
23589         lexical block info from the MonoDebugMethodInfo to the
23590         MonoDebugMethodJitInfo here, before writing it.
23591         (mono_debug_read_method): read the lexical block info.
23592
23593         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
23594
23595         * debug-mono-symfile.h: add lexical block support.
23596
23597         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
23598         support.
23599
23600 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
23601
23602         * loader.c (mono_lookup_pinvoke_call): Fix warning.
23603
23604         * object.c (mono_runtime_free_method): Call mono_free_method () and
23605         put the TODOs there.
23606
23607         * loader.c (mono_free_method): Free up most memory allocated for 
23608         dynamic methods.
23609
23610 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
23611
23612         * reflection.c: properly flag a Type argument to a
23613         named custom attr value (bug #72248).
23614
23615 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
23616
23617         * reflection.c: reduce code duplication in named custom
23618         attribute encoding.
23619
23620 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
23621
23622         * reflection.c: properly encode custom attrs of type object
23623         (bug #72649).
23624
23625 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
23626
23627         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
23628
23629 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
23630
23631         * socket-io.c: load System.dll if it's not loaded already
23632         (bug #72850 and #70477).
23633
23634 2005-02-21  Martin Baulig  <martin@ximian.com>
23635
23636         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
23637         generic instances.
23638
23639 2005-02-21  Martin Baulig  <martin@ximian.com>
23640
23641         * reflection.c (mono_image_build_metadata): We also need to
23642         "fixup" the MethodImpl table after we computed the final method
23643         indices.  Call fixup_methodimpl() to do that.
23644         (fixup_methodimpl): New private method.
23645
23646 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
23647
23648         * assembly.c: special case mscorlib.dll (bug#72536),
23649         patch from Carlos Alberto Cortez.
23650
23651 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
23652
23653         * threads-types.h threads.c: Fix build bustage.
23654
23655         * threads.c: Use a union for long<->double conversions.
23656
23657         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
23658         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
23659
23660         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
23661         containing the checkpoint call with NOT_TAKEN.
23662         
23663         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
23664         checkpoint before pushing the arguments, so they won't have to be
23665         spilled to stack.
23666
23667 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
23668
23669         * domain.c, assembly.c, domain-internals.h: make some data
23670         const and relocation-free.
23671
23672 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
23673
23674         * object.c, appdomain.c, class-internals.h: introduce the
23675         MonoClassRuntimeInfo structure to hold the info needed to
23676         use a class at runtime. Made mono_class_vtable() lock-free
23677         for all the appdomains.
23678
23679 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
23680
23681         * metadata-internals.h, image.c: introduce a per-image mempool to
23682         be used for memory that has the same lifetime as the image.
23683
23684 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
23685
23686         * domain.c: In mono_init_internal(), instead of selecting the first
23687         runtime version supported by an executable, get a list of all
23688         supported versions and select the one for which an mscorlib exists
23689         (since even if the runtime supports a given version, it doesn't mean
23690         that the framework for that version is installed).
23691         Modified get_runtimes_from_exe to support this behavior.
23692         In supported_runtimes, added information about additional system
23693         assembly versions.
23694         
23695         * assembly.c: Added support for more than one system assembly version
23696         per runtime version. Updated the assembly list.
23697         In mono_assembly_remap_version, removed the initial version check,
23698         since we don't know to which version we need to compare until we
23699         get the version set on which the assembly is based.
23700         Moved the code for loading corlib into the new method
23701         mono_assembly_load_corlib(), so it can be used by the initialization
23702         code.
23703         
23704         * domain-internals.h: Updated data structures and added declaration
23705         for mono_assembly_load_corlib.
23706
23707 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
23708
23709         * reflection.c (resolve_object): Fix the creation of the signature in 
23710         the SignatureHelper case.
23711
23712         * assembly.c (mono_assembly_remap_version): Fix binary search.
23713         
23714 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
23715  
23716         * class.c: Added inheritance check when a method is overloaded (from a
23717         virtual method or when implementing an interface) and when a class is
23718         inherited. Added functions to set a failure for a class and to 
23719         retreive the exception from a failure.
23720         * class-internals.h: Added fields to MonoClass to keep the exception
23721         information status for inheritance (or other exceptions) to be thrown
23722         later (i.e. not at load time).
23723         * object.c: Throw the inheritance SecurityException when a type is to 
23724         be created with either class or method inheritance violations.
23725         * reflection.c|h: Fix when getting declsec from a class. Removed 
23726         unrequired code for class. Improved sanity in parameter naming.
23727         * security-manager.c|h: Added functions to check for class and method
23728         inheritance.
23729
23730 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
23731
23732         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
23733         and has_finalize in dynamic types as well.
23734
23735 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
23736
23737         * culture-info-table.h : fixed currency format for en-GB (and so on).
23738
23739 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
23740
23741         * gc.c: ensure the GC handles never have 0 as a value.
23742
23743 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
23744
23745         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
23746         a pointer to a struct to unmanaged code. Fixes #72625.
23747
23748 2005-02-16  Martin Baulig  <martin@ximian.com>
23749
23750         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
23751
23752 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
23753
23754         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
23755
23756 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
23757
23758         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
23759
23760         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
23761         UnmanagedFunctionPointerAttribute, use it for determining calling convention
23762         etc. Fixes #71471.
23763
23764         * reflection.c (mono_custom_attrs_get_attr): New helper function.
23765
23766         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
23767
23768 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
23769
23770         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
23771         changes to make the current context a field in MonoThread.
23772
23773 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
23774
23775         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
23776         the last change.
23777         
23778         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
23779         extracted from mono_marshal_get_native_wrapper.
23780
23781         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
23782         to create wrappers around native functions.
23783
23784         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
23785         delegates for arbitrary function pointers. Fixes #71472.
23786
23787 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
23788
23789         * threads.c: cleaned up the code a little.
23790
23791 2005-02-15  Martin Baulig  <martin@ximian.com>
23792
23793         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
23794         the data table.
23795
23796         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
23797         allocate larger chunks if needed.
23798
23799 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
23800
23801         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
23802         in by mistake.
23803
23804 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
23805
23806         * domain.c: keep the domains in an array and ensure the domain ids
23807         are kept small, so they can be used as indexes to domain-specific data
23808         with a small memory overhead.
23809
23810 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
23811
23812         * icall.c: Handle byref types in Type icalls. Fixes #72544.
23813
23814 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
23815
23816         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
23817
23818 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
23819
23820         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
23821
23822         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
23823         values.
23824
23825         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
23826         
23827 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
23828
23829         * domain-internals.h: add the hashtable here.
23830
23831         * class-internals.h: Remove `info' from MonoMethod
23832
23833         * domain.c: Add a new hashtable, jit_trampoline_hash
23834
23835 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
23836
23837         * object.c: don't set the value of static fields
23838         (fixes bug#72494).
23839
23840 2005-02-11  Martin Baulig  <martin@ximian.com>
23841
23842         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
23843         (mono_debug_add_method): Silently ignore the method if it's too big.
23844         (mono_debug_add_type): Likewise.
23845
23846 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
23847
23848         * threads.c, appdomain.c: remove #ifdefs from the code.
23849
23850 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
23851
23852         * metadata-internals.h: Added flags to MonoAssembly to cache the most
23853         common security informations. This allows us to stay in unmanaged code
23854         when doing LinkDemand and it's special cases (except for the first 
23855         time for initialization). The flags a very much used with --security.
23856         * reflection.c|h: Added code to get declarative security attributes 
23857         for LinkDemand and InheritanceDemand. This required to refactor the
23858         existing code for Demand.
23859         * security-manager.c|h: Added new method fields for the special cases
23860         of LinkDemand.
23861
23862 2005-02-10  Martin Baulig  <martin@ximian.com>
23863
23864         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
23865         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
23866
23867 2005-02-10  Martin Baulig  <martin@ximian.com>
23868
23869         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
23870         debugging code; this is almost a complete rewrite.
23871
23872         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
23873
23874 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
23875
23876         * domain.c, object.h: expose mono_string_equal () and 
23877         mono_string_hash ().
23878         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
23879         it's implemented in managed code.
23880
23881 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
23882
23883         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
23884         lo leak objects between appdomains.
23885
23886 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
23887
23888         * assembly.c: old compilers compilation fix from 
23889         robertj@gmx.net (Robert Jordan).
23890
23891 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
23892
23893         * class-internals.h: Little reminder for the future.
23894
23895         * debug-helpers.c: Fix up wrapper_type_names
23896
23897 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
23898
23899         * image.c, metadata-internals.h: when loading an image from a file,
23900         mmap all of it and use the same codepaths as when using a
23901         in-memory image: the code is simpler and we use less memory
23902         (both writable and readonly).
23903
23904 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
23905
23906         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
23907         API to alloc runtime data structures that need to be tracked by the
23908         GC and contain pointers.
23909         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
23910         make the code more readable and eventually use a different GC.
23911
23912 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
23913
23914         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
23915         for out arguments.
23916         
23917 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
23918
23919         * object.c: In release_type_locks(), don't release the cctor lock
23920         if it has already been released. This fixes a crash in the
23921         thread5 test.
23922
23923 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
23924
23925         * gc.c, marshal.c, icall.c: register a delegate for finalization
23926         only when the native function pointer has been allocated for it.
23927
23928 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
23929
23930         * object.c: cleaned up some code, allocate objects that are
23931         pointer free with the atomic malloc variant. Allocate memory
23932         for static data from the mempool if it's pointer-free.
23933         Allocate the bounds array at the end of the array data, when needed.
23934         * object-internals.h, object.h: move a private function in a private
23935         header.
23936         * class.c: handle missing case in tracking references in fields.
23937
23938 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
23939
23940         * class.c, class-internals.h: keep track if a type has
23941         reference fields in either the instance or static fields.
23942
23943 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
23944
23945         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
23946         and renamed to MonoRuntimeInfo. Added fields to store the expected
23947         framework assembly version. Changed mono_get_framework_version and
23948         mono_get_runtime_version for a single mono_get_runtime_info method.
23949         
23950         * assembly.c: Added method to remap system assembly versions to the
23951         current executing runtime version. Removed old mapping code.
23952         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
23953         
23954         * icall.c, reflection.c: Track api changes.
23955
23956 2005-02-06  Miguel de Icaza  <miguel@novell.com>
23957
23958         * loader.c (method_from_memberref): Improve error reporting,
23959         produce the class name instead of the typeref/typedef index. 
23960
23961 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
23962
23963         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
23964
23965 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
23966
23967         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
23968         stdcall and charset name mangling.  Reorganize the code and add
23969         some tracing stuff.
23970
23971 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
23972
23973         * monodiet.c: More iters!
23974
23975         * marshal.c: Iter usage.
23976
23977         * icall.c: Iter usage.
23978
23979         * object.c: Use iters.
23980
23981         * debug-helpers.c: More iters
23982
23983 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
23984
23985         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
23986         under win32.
23987
23988 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
23989
23990         * mono-debug-debugger.c: use iters
23991
23992         * class.c, class-internals.h: mono_class_setup_events is static
23993         now
23994
23995         * All callers: use iters
23996
23997 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
23998
23999         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
24000         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
24001
24002 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
24003
24004         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
24005
24006         * marshal.h: Add prototypes for ldfld/stfld_remote.
24007
24008         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
24009         this is called during startup.
24010         
24011 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
24012
24013         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
24014         MonoThreadsSync struct private in monitor.c. Changed the way
24015         MonoThreadsSync is allocated so it's faster and there is no
24016         need to keep track of it with a finalizer and it uses less memory.
24017         This also finally allows us to allocate mono objects as ptrfree when
24018         there are no reference fields.
24019
24020 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
24021
24022         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
24023         disappearing link to the GC interface and use them to simplify
24024         the gchandles code.
24025
24026 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
24027
24028         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
24029         stfld_remote which call mono_load/store_field_new. This allows methods
24030         calling ldfld/stfld wrappers to be AOTed.
24031
24032         * console-io.c: Include sys/filio.h under solaris.
24033         
24034         * console-io.c: Include curses.h if needed correctly.
24035
24036 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
24037         
24038         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
24039         method->klass as well.
24040
24041         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
24042
24043         * class.c (mono_class_init): Switch on lazy initialization of 
24044         methods.
24045
24046         * class.c (mono_class_get_finalizer): Handle the case when the 
24047         finalizer is inherited.
24048
24049 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24050
24051         * console-io.c: <curses.h> is needed by term.h on solaris.
24052
24053 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
24054
24055         * icall.c, class-internals.h, monodiet.c, class.c: Remove
24056         mono_class_setup_properties where possible. Remove this ftn from
24057         the header file, and make it static.
24058
24059 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
24060
24061         * loader.c: Add missing setup_... call.
24062
24063         * class.c: Add missing setup_... calls.
24064
24065         * class.c (mono_class_init): Switch on lazy initialization of 
24066         the generic vtable.
24067         
24068         * class.c (mono_class_init): Fix generics broken by the recent changes.
24069
24070         * monodiet.c (handle_type): Add missing setup_... calls.
24071
24072         * class.c: Back out garbage in previous patch.
24073         
24074         * class.c: Add missing setup_... calls.
24075
24076         * class.c (mono_class_get_method_from_name_flags): Avoid calling
24077         mono_class_setup_methods () if possible.
24078
24079         * class-internals.h (MonoClass): Add 'has_cctor' flag.
24080
24081         * class-internals.h (MonoCachedClassInfo): New structure.
24082
24083         * class.c: Initialize properties and events fields of MonoClass lazily.
24084
24085         * class.c: Add infrastructure for lazily initializing the methods and
24086         vtable fields of MonoClass. Not yet used.
24087
24088         * class.c (mono_class_get_finalizer): New helper function.
24089
24090         * class.c: Add infrastructure for loading some class related data from
24091         an AOT file.
24092
24093         * object.c: Add infrastructure for initializing the vtable from data
24094         in the AOT file.
24095
24096         * gc.c (run_finalize): Use mono_class_get_finalizer ().
24097
24098         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
24099         appropriate initialization function before accessing parts of the
24100         MonoClass structure.
24101
24102         * marshal.c: Fix warnings.
24103         
24104         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
24105
24106         * mono-debug-debugger.c (get_exception_message): Use 
24107         mono_class_get_method_from_name_flags ().
24108
24109 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
24110
24111         * reflection.c, appdomain.c: Replace a few manual searches that
24112         Zoltan missed. (Paolo approved this part of my initial patch).
24113
24114 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
24115
24116         * profiler.c: disable recording statistical events at report time.
24117
24118 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24119
24120         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
24121         to byteswap arrays of enum values, too (bug #72080).
24122
24123 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
24124
24125         * appdomain.c (set_domain_search_path): Allow this to be called if
24126         domain->setup is not yet set.
24127
24128         * loader.c (mono_method_get_index): New helper function.
24129
24130         * loader.c reflection.c: Use mono_method_get_index ().
24131
24132         * class.c (mono_class_get_method_from_name_flags): New helper method.
24133
24134         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
24135         this.
24136
24137         * class.c (mono_class_get_cctor): New helper method.
24138
24139         * string-icalls.c object.c class.c marshal.c reflection.c: Use
24140         mono_class_get_method () to look up methods.
24141
24142 2005-02-01  Miguel de Icaza  <miguel@novell.com>
24143
24144         * console-io.c: Fix the build, this should work on Windows.
24145
24146 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
24147
24148         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
24149         be set to null to keep things valid
24150
24151 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24152
24153         * icall.c: added Console 2.0 icalls.
24154         * Makefile.am: added console-io.[ch]
24155         * console-io.[ch]: internal calls for Console 2.0 API.
24156
24157 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24158
24159         * class.c: make sure we consider all the interfaces
24160         when calculating max_interface_id (bug found by
24161         Jeroen Frijters running ikvm).
24162
24163 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
24164
24165         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
24166         valuetype fields to null.
24167
24168         * object.c (set_value): Ditto. Fixes #71669.    
24169
24170 2005-01-31  Martin Baulig  <martin@ximian.com>
24171
24172         * metadata.c (mono_metadata_has_generic_params): New public
24173         function; checks whether something is a generic method.
24174
24175 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
24176
24177         * appdomain.c: fix infinite recursion when adding assemblies.
24178
24179 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
24180
24181         * object.c: Fix small typo to return all items for Environment.
24182         GetCommandLineArgs.
24183
24184 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
24185
24186         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
24187         reflection.c: more domain and assembly-unload related fixes
24188         and memory leaks plugs.
24189
24190 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
24191
24192         * 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.
24193
24194 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
24195
24196         * loader.c (mono_method_signature): Make this method lazy
24197         (mono_get_method_from_token): Don't computate the signature here.
24198
24199         Doing this saves quite a bit of memory. I got 90 kb on starting up
24200         monodoc. It should also save some disk reads on startup.
24201
24202         * *: MonoMethod->signature might be NULL now. You *MUST* use
24203         mono_method_signature.
24204
24205 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
24206
24207         * object.c (mono_runtime_get_main_args): Return an array from the
24208         current domain here. Fixes #71938.
24209
24210 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
24211
24212         * monitor.c: formatting changes to comply with the
24213         mono coding style and remove #ifdefs from the code.
24214
24215 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
24216
24217         * metadata.c, private.h: remove some unneeded data
24218         and use a more compact representation for table schemas.
24219
24220 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
24221
24222         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
24223         to get a better distribution in hash tables.
24224         * *.c: use mono_aligned_addr_hash() where appropriate.
24225         * assembly.c: make var static.
24226
24227 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
24228
24229         * domain-internals.h: Put MonoJitInfo on a diet.
24230
24231         * domain.c: Fix a warning.
24232
24233 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24234
24235         * gc.c: rework the gc handles code to reuse handles
24236         when freed.
24237
24238 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
24239
24240         * domain.c: fixed long standing bug in mono_string_equal() which
24241         was brought to light with the ldstr changes.
24242
24243 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
24244
24245         * reflection.c: Remove warning by adding missing include for marshal.h
24246
24247 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24248
24249         * domain.c, object.c: change the ldstr_table to hold
24250         MonoString* as keys: makes the runtime isinterned lookup
24251         faster and simplifies memory management.
24252
24253 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
24254  
24255         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
24256         possible to add imperative security checks before calling the icall.
24257         * reflection.c: Return security attributes on the original MonoMethod
24258         (and not the wrapped one). This fix permissions on icalls.
24259
24260 2005-01-25  Dick Porter  <dick@ximian.com>
24261
24262         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
24263         the check for mktime() support actually test the mktime() return
24264         value.  "Fixes" bug 71682, though the output is still different to
24265         MS.
24266
24267 2005-01-25  Martin Baulig  <martin@ximian.com>
24268
24269         * class.c (mono_class_is_assignable_from): Make this work for
24270         generic instances.
24271
24272 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
24273
24274         * marshal.c (mono_string_utf8_to_builder)
24275         (mono_string_builder_to_utf16): We might not have ownership of the
24276         string. In thise case, we need to create a new buffer.
24277
24278         * object-internals.h (mono_stringbuilder_capacity): sb->str might
24279         be null, in which case, use the default capacity.
24280
24281 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24282
24283         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
24284         GC events to the profiler.
24285
24286 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
24287
24288         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
24289         if you don't want the GC to run.
24290
24291 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
24292
24293         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
24294         start providing a GC API and keeping different implementations in
24295         their own file.
24296         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
24297
24298 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
24299
24300         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
24301         mmap rather than allocating a huge buffer.
24302         (mono_debug_close_mono_symbol_file): Free the buffer allocated
24303         above.
24304
24305 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
24306
24307         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
24308         and CheckExecutionRights.
24309         * reflection.c|h: Keep the index of the declarative security to be 
24310         used, instead of the pointer, when AOT compiler is used. Also add 
24311         class initialization when requesting demands.
24312         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
24313         CheckExecutionRights. Both properties are now FALSE by default, and
24314         unmodifiable, unless the --security option is used.
24315
24316 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24317
24318         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
24319         reflection.c: properly refcount images and assemblies, many leaks fixed.
24320
24321 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24322
24323         * threadpool.c: increase the timeout for threads in the thread pool to
24324         10s.  Fixes bug #67159.
24325
24326 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
24327
24328         * class-internals.h: Sun's compiler insists on explicit
24329         signed on bit fields to handle then correctly.
24330
24331 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
24332
24333         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
24334         Make the size of the array fit only the number of invalid path
24335         chars that we have.
24336
24337         * class.c (_mono_class_get): Improve the error reporting when a
24338         class referenced is not found, to assist debugging. 
24339
24340 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
24341
24342         * threads.c: fix off-by-one error.
24343         * domain.c: free data allocated in the domain.
24344
24345 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
24346
24347         * reflection.c (mono_method_body_get_object): Fill out exception info
24348         as well.
24349
24350         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
24351         structure.
24352         
24353 2005-01-19  Martin Baulig  <martin@ximian.com>
24354
24355         * loader.c (mono_get_method_constrained): Make this work again.
24356
24357 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
24358
24359         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
24360         guint16 to match the managed side.
24361
24362         * reflection.c (mono_reflection_body_get_object): Fill out local
24363         variables array.
24364
24365         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
24366         as well.
24367
24368         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
24369         'local_var_sig_token'.
24370
24371 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
24372
24373         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
24374         System.Drawing.
24375
24376         * reflection.c (mono_method_body_get_object): Handle abstract and
24377         runtime methods.
24378
24379 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
24380
24381         * marshal.c, loader.c, class-internals.h, reflection.c:
24382         store the emthod data for a wrapper in an array instead of a list.
24383
24384 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
24385
24386         * marshal.c: change the code to allocate memory more
24387         conservatively for method wrappers.
24388
24389 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
24390
24391         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
24392         fields from MonoClass to the marshal info structure where they belong.
24393
24394 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24395
24396         * class.c, object.c, class-internals.h, marshal.c: rearrange
24397         some fields and tweak some types to lower memory usage.
24398
24399 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
24400
24401         * threads.c (signal_thread_state_change): Handle the case when the
24402         target thread is the current thread.
24403
24404         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
24405
24406         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
24407         emit_ptr_to_object_conv. 
24408
24409         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
24410         marshalling. Fixes #71352.
24411
24412 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
24413
24414         * metadata.h, blob.h: move table enum to blob.h so it can be included
24415         in any header.
24416         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
24417         cut the size of MonoImage/MonoDynamicImage.
24418
24419 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
24420
24421         * profiler.c (mono_profiler_install_simple): Fix default arguments.
24422
24423 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
24424
24425         * reflection.c, reflection.h, icall.c: add a function to check
24426         if an attribute type is defined for a metadata object.
24427
24428 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
24429
24430         * object-internals.h: Added some needed fields from StringBuilder class.
24431         * marshal.c: Set the maxCapacity when creating a StringBuilder.
24432
24433 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
24434
24435         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
24436         threads before shutting down the runtime.
24437
24438         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
24439
24440 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
24441
24442         * object-internal.h, threads.c: implement stacksize and 
24443         parameterized thread start functionality (requires
24444         matching corlib). Marked broken code for later removal.
24445
24446 2005-01-12  Martin Baulig  <martin@ximian.com>
24447
24448         * class-internals.h (MonoGenericClass): Moved the `initialized'
24449         flag to MonoDynamicGenericClass, removed `init_pending'.
24450         (MonoGenericInst): Added `is_reference' flag.
24451
24452 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
24453
24454         * reflection.c (mono_image_create_pefile): Only set the pe_offset
24455         inside the MSDOS header. Fixes #71201.
24456
24457         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
24458         gc thread.
24459         (mono_domain_finalize): Ditto.
24460
24461 2005-01-12  Martin Baulig  <martin@ximian.com>
24462
24463         * class.c (mono_get_shared_generic_class): Use the cache for
24464         non-dynamic generic classes.
24465
24466         * class-internals.h (mono_class_create_generic_2): Removed
24467         function prototype, this function is now static inside class.c.
24468
24469         * class.c (mono_class_create_generic_2): Made this static, only
24470         call it from mono_class_init() and mono_class_setup_parent().
24471         (collect_implemented_interfaces_aux): Call mono_class_init() on
24472         the interfaces we collect.
24473         (mono_class_setup_vtable): Call mono_class_init (class->parent).
24474
24475 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
24476
24477         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
24478         it a real thread handle.
24479
24480         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
24481         MonoJitExceptionInfo, since each catch clause needs its own variable.
24482         
24483 2005-01-11  Dick Porter  <dick@ximian.com>
24484
24485         * image.c (mono_pe_file_open): New variant on mono_image_open()
24486         that does not set up the CLI metadata; used for FileVersionInfo so
24487         it can get the data for windows binaries too.
24488         
24489         * process.c (process_read_string_block): Don't read off the end of
24490         the StringTable block.
24491
24492         These both fix bug 70766.
24493
24494 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
24495
24496         * gc.c: set some fields to NULL at GC cleanup time.
24497         * threads.c: if we quit the main thread, call exit ().
24498
24499 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
24500
24501         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
24502
24503 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
24504
24505         * threads.h, threads.c, object.c: added accessor and settor for
24506         main_thread. Handle it specially when exiting from it: wait
24507         for other foreground threads to exit.
24508
24509 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
24510
24511         * process.c, verify.c: remove some bloat.
24512
24513 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
24514
24515         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
24516         the calling convention to cdecl under win32.
24517
24518 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
24519
24520         * object.c (mono_object_get_size): New function to get the size of
24521         an object instance.
24522
24523         * profiler.c (simple_allocation): Use above.
24524
24525 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
24526
24527         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
24528         ves_icall_System_AppDomain_getRootDomain (as it's not required to
24529         get an appdomain by it's id and we can't assume the root's id is 0).
24530         * domain-internals.h: Change the function prototype to match.
24531         * icall.c: Change the icall table for AppDomain.
24532
24533 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
24534
24535         * locales.c (string_invariant_compare_char): Only compute
24536         GUnicodeTypes in the case where we need them.  Test for ordinality
24537         first and return if so.
24538
24539         From the commit:
24540
24541                 /*
24542                  * FIXME: here we must use the information from c1type and c2type
24543                  * to find out the proper collation, even on the InvariantCulture, the
24544                  * sorting is not done by computing the unicode values, but their
24545                  * actual sort order.
24546                  */
24547
24548 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
24549
24550         * loader.c: for P/Invoke methods, allow the "Internal" shared
24551         library name to refer to the calling process symbol namespace.
24552
24553 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
24554
24555         * Makefile.am: Add the security manager to the build.
24556         * security-manager.c|h: New. Initialization of the security manager.
24557
24558 2005-01-07  Dick Porter  <dick@ximian.com>
24559
24560         * threads.c: 
24561         * monitor.c: Update thread state during Monitor and WaitHandle
24562         waits.  Fixes bug 71031.
24563
24564 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
24565
24566         * reflection.c (property_encode_signature): Correctly handle when the
24567         property has no methods.
24568
24569 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
24570
24571         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
24572         
24573         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
24574         fields from mb, not rmb. Fixes #71017.
24575
24576         * marshal.c (emit_ptr_to_str_conv): Add support for 
24577         ByValTStr -> string conversion. Fixes #71015.
24578
24579         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
24580
24581         * mempool.c (mono_mempool_contains_addr): New helper function.
24582
24583 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
24584
24585         * metadata.c (mono_metadata_compute_size): Fix size calculation of
24586         HasSematics encoded fields.
24587         
24588         * metadata.c (mono_type_to_unmanaged): Improve error message for 
24589         invalid string marshalling.
24590
24591         * metadata.c: Fix warnings.
24592         
24593 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24594
24595         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
24596         profiler support.
24597
24598 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
24599
24600         * domain.c object.c domain-internals.h: Revert part of r38077 since the
24601         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
24602         tests.
24603
24604 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
24605
24606         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
24607         so methods containing these can be AOTed.
24608
24609 2005-01-03  Martin Baulig  <martin@ximian.com>
24610
24611         * loader.c (find_method): Removed the hack for generic instances.
24612         (method_from_memberref): If our parent is a generic instance, pass
24613         its generic type definition to find_method() and then inflate the
24614         method.
24615         (mono_get_method_constrained): Pass the generic type definition to
24616         find_method() and inflate the method later.
24617
24618         * class-internals.h (MonoStats): Added `generic_class_count'.
24619
24620         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
24621         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
24622
24623         * reflection.c (mono_custom_attrs_from_params): Don't ignore
24624         generic type definitions.
24625
24626 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
24627
24628         * loader.c icall.c: Fix warnings.
24629
24630 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
24631
24632         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
24633         blittable types. Fixes #70864.
24634
24635 2004-12-29  Martin Baulig  <martin@ximian.com>
24636
24637         * icall.c
24638         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
24639
24640         * reflection.c (mono_method_get_object): Create a
24641         "System.Reflection.MonoGenericMethod" for inflated methods; don't
24642         call mono_get_inflated_method().
24643
24644         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
24645
24646 2004-12-27  Martin Baulig  <martin@ximian.com>
24647
24648         * class-internals.h (MonoMethod): Added `is_inflated' flag.
24649         (MonoMethodInflated): Added `inflated' field.
24650
24651         * class.c (mono_class_inflate_generic_method): Don't really
24652         inflate the method here; just set the `is_inflated' flag in the
24653         MonoMethod.
24654         (mono_class_get_inflated_method): Actually inflate the method here
24655         if it's not already inflated; we use the MonoMethodInflated's new
24656         `inflated' field as a cache.
24657
24658 2004-12-26  Martin Baulig  <martin@ximian.com>
24659
24660         * class.c
24661         (inflate_generic_class): Moved some code out of inflate_generic_type().
24662         (mono_class_inflate_generic_method): If we're already inflated,
24663         inflate the context and use the declaring method; ie. make sure
24664         the declaring method of an inflated method is always the generic
24665         method definition.
24666         (mono_class_create_from_typedef): Create
24667         `class->generic_container->context->gclass'.
24668
24669 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
24670
24671         * metadata-internals.h, marshal.c, reflection.c: More
24672         MonoGHashTable->GHashTable.
24673
24674         * domain-internals.h, class.c: Change MonoGHashTable's into
24675         GHashTables for some cases where no gc stuff is used
24676
24677         All users: update apis
24678
24679 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
24680
24681         * metadata.c (builtin_types): Make this `const'. Makes this get
24682         put into the shareable section.
24683         (mono_metadata_init): Casts to make gcc happy.
24684
24685 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
24686
24687         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
24688
24689 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
24690
24691         * icall.c: Added an internal call to retrieve the position and length
24692         of assembly-level declarative security attributes (RequestMinimum, 
24693         RequestOptional and RequestRefuse). This is used by the Assembly class
24694         to re-create the corresponding permission sets.
24695
24696 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
24697
24698         * marshal.c: fix the stelemref wrapper to be type correct
24699         (and faster).
24700
24701 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
24702
24703         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
24704         to do key & 0x7fffffff. Hashtable already does this. It just
24705         results in longer code.
24706
24707 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
24708
24709         * appdomain.c: Bump corlib version.
24710         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
24711         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
24712         * reflection.c|h: Add functions to get declarative security infos
24713         (blob position and length) for assemblies, classes and methods.
24714
24715 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
24716
24717         * reflection.c: sort the constant table (bug #70693).
24718
24719 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
24720
24721         * object-internals.h, threads.c, domain.c: add accessors for
24722         the MonoThread and MonoDomain tls keys.
24723
24724 2004-12-18  Martin Baulig  <martin@ximian.com>
24725
24726         * class.c (inflate_generic_type): If we're inflating a generic
24727         instance, set `ngclass->context->container = context->container';
24728         ie. the container we inflated into.
24729
24730         * metadata.c (mono_metadata_parse_generic_param): Reflect above
24731         inflate_generic_type() changes.
24732
24733 2004-12-17  Martin Baulig  <martin@ximian.com>
24734
24735         * class-internals.h
24736         (MonoGenericClass): Replaced `MonoType *generic_type' with
24737         `MonoClass *generic_class'.  Removed `dynamic_info'; if
24738         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
24739         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
24740
24741 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
24742
24743         * exception.c (mono_exception_from_token): New helper function.
24744
24745 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
24746
24747         * assembly.c (mono_assembly_load_with_partial_name): Call 
24748         mono_assembly_loaded before invoking the preload hooks. Fixes
24749         #70564.
24750
24751         * object-internals.h (MonoThread): Change culture_info and 
24752         ui_culture_info into an array.
24753
24754         * threads.c: Cache culture info objects from more than one appdomain.
24755
24756         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
24757         current UI culture.
24758
24759 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
24760
24761         * threads.h threads.c appdomain.c: Clear the culture_info field of
24762         all threads during unloading if they point to an object in the dying
24763         appdomain.
24764
24765 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
24766
24767         * culture-info.h (TextInfoEntry): New struct
24768         * object-internals.h: sync with managed
24769         * locales.c: fill the `text_info_data' field
24770         * culture-info-tables.h: update
24771
24772 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
24773
24774         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
24775         collector.
24776
24777 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
24778
24779         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
24780         (ves_icall_ModuleBuilder_getMethodToken): Ditto
24781
24782 2004-12-12  Martin Baulig  <martin@ximian.com>
24783
24784         * mono-debug-debugger.c (write_type): If we're an enum and the
24785         builtin types have already been initialized, call mono_class_init().
24786
24787 2004-12-11  Martin Baulig  <martin@ximian.com>
24788
24789         * metadata.c (mono_metadata_load_generic_params): Added
24790         `MonoGenericContainer *parent_container' argument; automatically
24791         compute `container->is_method'; pass the correct owner to
24792         get_constraints().      
24793
24794         * reflection.c (compare_genericparam): Sort the GenericParam table
24795         according to increasing owners. 
24796
24797 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
24798
24799         * profiler.c: allow disabling the default profiler.
24800
24801 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
24802
24803         * decimal.c, icall.c: allow disabling System.Decimal support.
24804
24805 2004-12-09  Marek Safar <marek.safar@seznam.cz>
24806
24807         * reflection.c: Add support for null attribute arguments.
24808
24809 2004-12-09  Martin Baulig  <martin@ximian.com>
24810
24811         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
24812         names to get rid of compiler warnings.
24813
24814 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
24815
24816         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
24817         mono_marshal_load_type_info (). Fixes #69625.
24818         (mono_marshal_get_ptr_to_struct): Likewise.
24819
24820 2004-12-08  Martin Baulig  <martin@ximian.com>
24821
24822         * mono-debug.h: Bumped version number to 47.
24823
24824         * mono-debug-debugger.c
24825         (mono_debugger_event_handler, mono_debugger_event): Take two
24826         guint64 arguments insteed of a gpointer and a guint32.  
24827
24828 2004-12-08  Martin Baulig  <martin@ximian.com>
24829
24830         * debug-mono-symfile.h
24831         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
24832         `address' to `native_offset'.
24833
24834 2004-12-08  Martin Baulig  <martin@ximian.com>
24835
24836         * class.c (mono_class_create_from_typespec): Only inflate if we
24837         either have `context->gclass' or `context->gmethod'.
24838
24839 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
24840
24841         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
24842
24843         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
24844
24845         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
24846
24847         * reflection.c (mono_assembly_get_object): Remove the workaround put
24848         in for the release.
24849         
24850         * appdomain.c: Use the corlib_internal field from MonoAssembly.
24851
24852         * appdomain.c: Bump corlib version.
24853
24854         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
24855         be visible in other appdomains.
24856
24857 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
24858
24859         * threads.c: Interlocked inc and dec for longs were messed up,
24860         use a KISS based impl for this. Fixes 70234
24861
24862 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
24863
24864         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
24865
24866 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
24867
24868         * icall.c: fix to follow policy not to allow struct
24869         arguments in icalls.
24870
24871 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24872
24873         * process.c: make the patch that handles spaces in file paths work
24874         on mono/windows too.
24875
24876 2004-12-06  Martin Baulig  <martin@ximian.com>
24877
24878         * class.c (mono_class_create_generic): Call
24879         mono_class_setup_supertypes() if we're dynamic.
24880         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
24881
24882 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
24883
24884         * object-internals.h: Add new fields to MonoThread.
24885
24886         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
24887
24888         * icall.c threads-types.h threads.c: Add new icalls.
24889
24890         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
24891
24892         * object-internals.h (MonoReflectionAssembly): Sync object layout with
24893         managed side.
24894
24895         * appdomain.c: Bump corlib version.
24896
24897         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
24898         internal assemblies. Fixes #69181.
24899
24900 2004-12-05  Martin Baulig  <martin@ximian.com>
24901
24902         * class.c (mono_class_inflate_generic_signature): Make this a
24903         no-op if `context' is NULL or we don't have any type parameters;
24904         also copy `sentinelpos'.        
24905
24906 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
24907
24908         * image.c: Add unbox_wrapper_cache.
24909
24910         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
24911
24912         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
24913         function generator.
24914         
24915         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
24916         Fixes #70173.
24917
24918         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
24919         
24920 2004-12-04  Martin Baulig  <martin@ximian.com>
24921
24922         * loader.c (mono_method_get_signature_full): New public function;
24923         like mono_method_get_signature(), but with an additional
24924         `MonoGenericContext *' argument.
24925
24926         * class.c (mono_class_inflate_generic_signature): Formerly known
24927         as inflate_generic_signature(); make this public.
24928
24929 2004-12-04  Martin Baulig  <martin@ximian.com>
24930
24931         * metadata.c
24932         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
24933         instead of a `MonoGenericContainer *'.  
24934         (mono_metadata_parse_array_full): Likewise.
24935         (mono_metadata_parse_signature_full): Likewise.
24936         (mono_metadata_parse_method_signature_full): Likewise.
24937         (mono_metadata_parse_generic_inst): Likewise.
24938         (mono_metadata_parse_generic_param): Likewise.
24939         (mono_metadata_parse_mh_full): Likewise.
24940         (mono_type_create_from_typespec_full): Likewise.
24941
24942 2004-12-03  Martin Baulig  <martin@ximian.com>
24943
24944         * class-internals.h (MonoGenericContainer): Replaced the
24945         `MonoGenericContext * pointer with a `MonoGenericContext'
24946         structure and made it the first element.
24947
24948 2004-12-03  Martin Baulig  <martin@ximian.com>
24949
24950         * class.c
24951         (inflate_generic_type): Set the `context->container' when creating
24952         a new MonoGenericContext.
24953         (mono_class_inflate_generic_method): Likewise.
24954         (mono_class_create_from_typespec): Just use `context->container'
24955         to get the container.
24956
24957         * loader.c (method_from_methodspec): Set `context->parent' from
24958         `context->container' - and if that's a method container, use its
24959         parent.  Also set the `context->container' when creating a new
24960         MonoGenericContext.
24961         (mono_get_method_from_token): Use just `context->container' to get
24962         the container.
24963
24964         * metadata.c (do_mono_metadata_parse_generic_class): Also set
24965         `gclass->context->container'.
24966
24967         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
24968         the `context->container' when creating a new MonoGenericContext.
24969
24970 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
24971
24972         * reflection.c (compare_genericparam): Sort params with identical
24973         owner by their number. Fixes gen-111 on sparc.
24974
24975 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
24976
24977         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
24978         around the domain changes.
24979
24980         * appdomain.c (mono_domain_unload): Handle the case when the thread
24981         calling Unload is itself being aborted during unloading. Fixes #70022.
24982
24983         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
24984
24985         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
24986         checkpoint_func as an icall so it gets a wrapper.
24987         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
24988         in the cross-appdomain wrappers too.
24989
24990         * threads.c (mono_thread_has_appdomain_ref): Make this public.
24991
24992         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
24993
24994         * reflection.c: Fix some memory leaks.
24995         
24996 2004-12-02  Martin Baulig  <martin@ximian.com>
24997
24998         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
24999
25000         * metadata.c (generic_class_cache): New static hashtable.
25001         (mono_metadata_lookup_generic_class): New public method.
25002
25003 2004-12-02  Martin Baulig  <martin@ximian.com>
25004
25005         * class.c (mono_class_create_from_typedef): Call
25006         mono_class_setup_parent() and mono_class_create_mono_type() before
25007         parsing the interfaces.
25008
25009 2004-12-02  Martin Baulig  <martin@ximian.com>
25010
25011         * metadata.c (generic_inst_cache): New static hashtable.
25012         (mono_metadata_lookup_generic_inst): New public function.
25013         (mono_metadata_inflate_generic_inst): New public function.
25014         (mono_metadata_parse_generic_inst): New public function.
25015         (do_mono_metadata_parse_generic_class): Use the new
25016         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
25017         since this'll also use the cache.
25018
25019         * reflection.c (mono_reflection_bind_generic_method_parameters):
25020         Use mono_metadata_lookup_generic_inst() to use the new cache.
25021
25022         * class.c (inflate_mono_type): Use
25023         mono_metadata_inflate_generic_inst() to inflate a generic
25024         instance; this'll also use the new cache.
25025
25026         * loader.c (method_from_methodspec): Use
25027         mono_metadata_parse_generic_inst() and
25028         mono_metadata_inflate_generic_inst() rather than parsing it
25029         manually, so we can use the new cache.
25030
25031 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
25032
25033         * threads.c (wait_for_tids): Do not incorrectly free threads when 
25034         the wait times out.
25035
25036 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
25037
25038         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
25039         iter->args based on whether parameters are passed in registers (i.e.
25040         MONO_ARCH_REGPARMS is defined)
25041
25042 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
25043
25044         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
25045         the exception message. Fixes #70070.
25046         (method_from_methodspec): Fix warnings.
25047
25048 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25049
25050         * process.c: (complete_path) return the path quoted
25051
25052 2004-12-01  Martin Baulig  <martin@ximian.com>
25053
25054         * class-internals.h (MonoGenericInst): New structure.
25055         (MonoGenericClass): Replaced `type_argc', `type_argv' and
25056         `is_open' with `MonoGenericInst *inst'.
25057         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
25058         `is_open' with `MonoGenericInst *inst'.
25059
25060 2004-11-30  Martin Baulig  <martin@ximian.com>
25061
25062         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
25063
25064         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
25065         to `generic_class_cache'.
25066
25067         * metadata.c
25068         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
25069         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
25070         (mono_generic_inst_is_valuetype): Renamed to
25071         mono_generic_class_is_valuetype().
25072
25073         * class-internals.h
25074         (MonoGenericInst): Renamed to MonoGenericClass.
25075         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
25076         (MonoClass): Renamed `generic_inst' to `generic_class'.
25077         (MonoGenericContext): Renamed `ginst' to `gclass'.
25078
25079         * object-internals.h
25080         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
25081
25082         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
25083         mono_reflection_generic_class_initialize().
25084
25085         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
25086         now known as "System.Reflection.MonoGenericClass".
25087         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
25088
25089 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
25090
25091         * class-internals.h: Added a flag field to MonoClass to cache the
25092         declarative security attributes actions associated with the class.
25093         * domain-internals.h: Added booleans to MonoJitInfo to cache the
25094         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
25095         applicable to the JITted method.
25096         * reflection.c|h: Added functions to extract (as flags) which security
25097         actions are available (declaratively) for a method, class or assembly.
25098         * metadata.c|h: Added functions to search the declarative security
25099         table in the metadata.
25100         
25101 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
25102
25103         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
25104         EXPORTEDTYPES are already in the class name cache, so there is no
25105         need to add extra code here to look at them. Just removes a bit of
25106         cruft.
25107
25108         (ves_icall_System_Environment_get_TickCount): No need for #if
25109         WINDOWS. We already have the code in io-layer.
25110
25111 2004-11-28  Martin Baulig  <martin@ximian.com>
25112
25113         * loader.c
25114         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
25115         Fixes gen-112.cs.
25116
25117 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
25118
25119         * assembly.c (do_mono_assembly_open): Instead of having a
25120         conditional WITH_BUNDLE, incorporate support for bundles here, by
25121         having a global `bundles' variable holding a pointer to the actual
25122         bundles. 
25123
25124         (mono_register_bundled_assemblies): New API call used by the
25125         bundle code. 
25126
25127         See mkbundle.1 for details.
25128         
25129 2004-11-27  Martin Baulig  <martin@ximian.com>
25130
25131         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
25132         the vtable for generic methods.
25133
25134 2004-11-26  Martin Baulig  <martin@ximian.com>
25135
25136         * metadata.c
25137         (mono_metadata_generic_method_hash): New public function.
25138         (mono_metadata_generic_method_equal): Likewise.
25139
25140         * class-internals.h
25141         (MonoGenericContainer): Added `GHashTable *method_hash'.
25142
25143         * reflection.c (ReflectionMethodBuilder): Added
25144         `MonoGenericContainer *generic_container'.
25145         (reflection_methodbuilder_to_mono_method): Don't create a new
25146         MonoGenericContainer each time we're called.
25147         (mono_reflection_bind_generic_method_parameters): Use
25148         `container->method_hash' to cache the results so we don't create a
25149         different method if we're called several times with the same
25150         arguments.
25151
25152         * loader.c (method_from_methodspec): Use the new
25153         `container->method_hash' here, too.
25154
25155 2004-11-26  Martin Baulig  <martin@ximian.com>
25156
25157         * class.c (inflate_generic_signature): Correctly compute
25158         `res->has_type_parameters'.
25159         (mono_class_vtable): Use the `has_type_parameters' flag to
25160         determine whether we're a generic method.
25161
25162         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
25163
25164 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
25165
25166         * object.c (mono_runtime_run_main): Fix a small memory leak.
25167
25168 2004-11-25  Martin Baulig  <martin@ximian.com>
25169
25170         * class.c (set_generic_param_owner): Fixed the loop.
25171
25172 2004-11-25  Martin Baulig  <martin@ximian.com>
25173
25174         * object.c (mono_class_vtable): Don't create any JIT wrappers for
25175         generic methods.
25176
25177 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
25178
25179         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
25180         names. Fixes #69787.
25181
25182 2004-11-24  Martin Baulig  <martin@ximian.com>
25183
25184         * class.c (mono_class_create_generic_2): If we don't have a
25185         `ginst->parent', inflate `gklass->parent' to get our parent.
25186
25187 2004-11-24  Martin Baulig  <martin@ximian.com>
25188
25189         * reflection.c (compare_genericparam): Correctly sort the
25190         GenericParam table; fixes #69779.
25191
25192 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
25193
25194         * reflection.c: When writing a PE file, don't create a huge
25195         buffer in memory. Just write the arrays we have to the file.
25196         This reduces memory usage.
25197
25198         * metadata-internals.h: MonoDynamicStream pefile is no longer used
25199         globally.
25200
25201 2004-11-17  Martin Baulig  <martin@ximian.com>
25202
25203         * class.c (mono_class_init): Don't setup `class->parent' for
25204         dynamic instances; moved this to mono_class_generic_2().
25205         (mono_class_create_generic): Also set `klass->inited' for dynamic
25206         generic instances.
25207         (mono_class_create_generic_2): Don't do anything for dynamic
25208         generic instances.  Set `klass->parent' here and also call
25209         mono_class_setup_parent() here. 
25210
25211         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
25212         `MonoType *parent' argument; set `ginst->parent' before calling
25213         mono_class_create_generic_2(), so we set the correct parent.
25214
25215 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
25216
25217         * reflection.c: allow getting attributes from ModuleBuilder
25218         (used by ikvm).
25219
25220 2004-11-17  Martin Baulig  <martin@ximian.com>
25221
25222         * class.c (mono_class_create_from_typedef): If a type parameter is
25223         inherited from an outer class, set its owner to that class.
25224
25225 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
25226
25227         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
25228           for (int*) written size. This fixes bug #69592.
25229
25230 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
25231
25232         * icall.c: Added IsAuthenticodePresnet internal call.
25233         * image.c|h: New function that check a MonoImage for an Authenticode
25234         signature in the certificate PE data directory.
25235         * security.c|h: New internal call to ask the runtime if an 
25236         Authenticode signature seems referenced in the PE header.
25237
25238 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
25239
25240         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
25241
25242         * reflection.c (mono_image_create_pefile): Free the assembly streams
25243         after writing out the assembly file.
25244
25245         * object.c (mono_runtime_run_main): Fix small memory leak.
25246
25247         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
25248         property access modifiers. Fixes #69389.
25249
25250 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
25251
25252         * domain.c, object.c, object-internals.h, domain-internals.h,
25253         object.h, marshal.c: keep dynamic code info per domain.
25254
25255 2004-11-15  Martin Baulig  <martin@ximian.com>
25256
25257         * class.c (mono_type_get_name_recurse): Put type arguments in
25258         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
25259         see bug #68387.
25260
25261 2004-11-15  Martin Baulig  <martin@ximian.com>
25262
25263         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
25264         (mono_class_setup_vtable): When computing `the_cname' for a
25265         generic instance, don't include the namespace since we'd otherwise
25266         add it twice.
25267
25268 2004-11-15  Martin Baulig  <martin@ximian.com>
25269
25270         * class.c (mono_class_create_generic): Changed return type to void.
25271         (mono_class_create_generic_2): New public function; setup
25272         `class->method', `class->field' and `class->interfaces' here
25273         instead of in mono_class_init().
25274
25275         * class.h (mono_class_create_generic): Moved to class-internals.h.
25276
25277 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
25278
25279         * reflection.c (mono_image_create_pefile): take a file HANDLE.
25280         rather than writing to memory, write to this file. Right now,
25281         we are just writting into a buffer, and copying that. However
25282         we can avoid the buffer later.
25283
25284         (mono_dynamic_stream_reset): new function
25285
25286         * icall.c, object-internals.h: update for the above.
25287
25288 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
25289
25290         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
25291         have been using gc'd memory. First it is slower, unlikely
25292         the comment in the source code said, secondly, it increases
25293         our footprint to do it in the gc.
25294
25295         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
25296         the method so that it does not have to copy to managed code.
25297
25298 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
25299
25300         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
25301
25302 2004-11-12  Martin Baulig  <martin@localhost>
25303
25304         * reflection.c (mono_image_create_token): Allow generic method
25305         definitions here, since they may appear in an `.override'; see
25306         gen-98/gen-99 for an example.
25307
25308 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
25309
25310         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
25311         #69365.
25312
25313         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
25314         descriptive.
25315
25316 2004-11-11  Martin Baulig  <martin@ximian.com>
25317
25318         * class.c (mono_class_setup_vtable): In an explicit interface
25319         implementation, the method name now includes the arity.
25320
25321 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
25322
25323         * object.c (mono_array_full_copy): Fix warning.
25324
25325 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
25326
25327         * appdomain.c: Removed look_for_method_by_name(). Use the new method
25328         mono_class_get_method_from_name() instead.
25329         
25330         * class-internals.h: Added two new types of wrappers. 
25331         Added MonoRemotingTarget enum. Added new trampoline function type, which
25332         takes an additional MonoRemotingTarget value as parameter, so it is
25333         possible to request a trampoline for a specific target.
25334         
25335         * class.c: Added new mono_class_get_method_from_name() method.
25336         
25337         * class.h: In MonoRemoteClass, we can have now to vtables, one for
25338         general remoting sinks and one specific for cross domain calls.
25339         
25340         * debug-helpers.c: Added new wrapper names.
25341         
25342         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
25343         of a remote class.
25344         
25345         * image.c: Porperly delete value objects form the remoting invoke hashtable.
25346         
25347         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
25348         with several other methods (mono_marshal_get_xappdomain_dispatch,
25349         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
25350         and others) can generate a fast remoting wrapper for cross domain calls.
25351         More information can be found in docs/remoting.
25352         Other changes: Removed mono_find_method_by_name, and used
25353         mono_class_get_method_from_name instead.
25354         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
25355         is stored in the remoting invoke hashtable.
25356         
25357         * marshal.h: published the new method for getting the xdomain wrapper,
25358         and also added a method for getting the adequate wrapper for a given
25359         method and target.
25360         
25361         * object-internals.h, object.c: Added a couple of methods for capying and
25362         cloning arrays.
25363         Modified mono_install_remoting_trampoline, which takes the new remoting
25364         trampoline that has a remoting target as parameter.
25365         mono_class_proxy_vtable now also takes a remoting target as parameter, and
25366         will return the most suitable vtable for the target.
25367         Added mono_remote_class_vtable, which returns the vtable of a remote class
25368         (which can be the normal remoting vtable or the xdomain vtable).
25369         
25370         * threads.c: the xdomain invoke and dispatch wrappers must also be
25371         protected against interruptions.
25372
25373 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25374
25375         * icall.c: use memmove in BlockCopyInternal when the source and
25376         destination arrays are the same.
25377
25378 2004-11-09  Martin Baulig  <martin@ximian.com>
25379
25380         * class-internals.h (MonoGenericContainer): Removed `method' and
25381         `signature', replaced them with `is_method' and `is_signature'
25382         flags.  Added `context'.
25383
25384         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
25385         instead of a `MonoGenericContainer *'.
25386
25387         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
25388         for dynamic type parameters.
25389         (mono_metadata_load_generic_params): Setup `container->context'.
25390
25391         * reflection.c (mono_reflection_setup_generic_class): Setup
25392         `tb->generic_container->context'.
25393         (do_mono_reflection_bind_generic_parameters): Use
25394         mono_class_inflate_generic_type() to correctly inflate types,
25395         rather than using our own hack just for MONO_TYPE_VAR.
25396
25397 2004-11-09  Martin Baulig  <martin@ximian.com>
25398
25399         * class.c (mono_class_inflate_generic_method): Small fix; don't
25400         crash here.
25401
25402         * icall.c
25403         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
25404         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
25405         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
25406         (ves_icall_Type_BindGenericParameters): Likewise.
25407         (ves_icall_Type_get_IsGenericInstance): Likewise.
25408         (ves_icall_Type_GetGenericParameterPosition): Likewise.
25409         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
25410         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
25411         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
25412
25413 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
25414
25415         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
25416         assembly versions and public key tokens. Fixes #69113.
25417
25418 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
25419
25420         * metadata.c: fix bug introduced with the type cache changes
25421         on 2004-11-06.
25422
25423 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
25424
25425         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
25426         the MonoClass pointer instead of the token in exception clauses.
25427         * reflection.c: updates for the above and make the code not depend
25428         on the structure of MonoExceptionClause.
25429
25430 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
25431
25432         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
25433         Add support for dynamic assemblies. Fixes #69114.
25434
25435         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
25436
25437 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
25438
25439         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
25440         since most only those methods use it. the code member of
25441         MonoMethodPInvoke was dead, so that can be removed too. Also,
25442         remove inline_count (again, not used), and move slot so that it
25443         can share bits with some other flags. This saves 8 bytes in the
25444         structure and gives us about 50 kb back for mcs helloworld.cs
25445
25446         * *.[ch]: Do naming changes for the above.
25447
25448         * loader.c (mono_method_get_header): Lazily init the header
25449         on first access.
25450         (mono_get_method_from_token): don't init the header here
25451         (mono_free_method): the header may never be allocated
25452
25453         Overall, this saves 150 kb of unmanaged allocations
25454         for mcs helloworld.cs. That accounts for 10% of the unmanaged
25455         memory at runtime.
25456         
25457         * loader.c, loader.h (mono_method_get_header): new accessor.
25458
25459         * *.[ch]: use the above method. Prepares us to lazily load
25460         the header.
25461
25462         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
25463         three warnings, which are actual bugs (see 69206).
25464
25465         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
25466         unused. Saves a cool 4 bytes / method.
25467
25468 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
25469
25470         * metadata.c (builtin_types): Add types for System.Object here.
25471         (mono_metadata_parse_type_full): Cache MonoType*'s that are
25472         for a class or valuetype from klass->this_arg or klass->byval_arg.
25473
25474         On mcs for a hello world, this gets us down from 21836 MonoType's
25475         to 14560.
25476
25477         (mono_metadata_free_type): Account for the above change.
25478
25479 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
25480
25481         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
25482         exception instead of asserting if name is null.
25483         (ves_icall_System_AppDomain_GetData): Ditto.
25484
25485 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
25486
25487         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
25488         EnumBuilder.
25489
25490         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
25491         Return NULL when the domain does not have entry_assembly set.
25492
25493         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
25494         Add a 'resource_modules' argument.
25495         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
25496
25497         * reflection.c (mono_reflection_create_runtime_class): Move setting
25498         of wastypebuilder here, so mono_get_type_object () returns a MonoType
25499         for enums too.
25500
25501         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
25502         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
25503         Throw an ArgumentNullException if 'ptr' is null.
25504
25505         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
25506         assemblies here. Fixes #69020.
25507
25508 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
25509
25510         * reflection.c (build_compressed_metadata): Fix the previous patch for
25511         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
25512         the stack.
25513
25514 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
25515
25516         * assembly.c (mono_assembly_names_equal): Allow a match if one of
25517         the cultures is false. Fixes #69090.
25518
25519         * reflection.c (build_compressed_metadata): Fix invalid memory read 
25520         detected by valgrind.
25521         
25522         * reflection.c (mono_reflection_get_type): Avoid triggering a 
25523         TypeResolve multiple times for the same type. Fixes #65577.
25524
25525 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
25526
25527         * marshal.c: Avoid using ldftn to call managed functions. It is
25528         much slower than just a call.
25529
25530         * reflection.c (mono_module_get_object): free the basename we
25531         allocate here from glib.
25532         
25533         * reflection.c (ensure_runtime_vtable): make sure to free
25534         overrides.  Also, we were allocating an array of MonoMethod not an
25535         array of MonoMethod*.
25536
25537         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
25538
25539         * image.c (mono_image_close): free image->guid here.
25540
25541 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
25542
25543         * reflection.c: Fix some spec conformance issues with the PE file
25544         structures so mcs compiled apps run on the Net 2.0 beta.
25545
25546 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
25547
25548         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
25549         Implement this. Fixes #67264.
25550
25551         * debug-helpers.h debug-helpers.c marshal.c: Move 
25552         mono_find_method_by_name to debug-helpers.c.
25553
25554 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
25555
25556         * object.c (mono_release_type_locks): type_initialization_hash is
25557         a GHashTable.
25558
25559         * reflection.c object.c object-internals.h: Fix warnings.
25560
25561         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
25562         without accessors. Fixes #61561.
25563
25564         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
25565         application base from the root domain if not set. Fixes #65641.
25566         (mono_runtime_init): Fix warning.
25567
25568 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25569
25570         * appdomain.c: call mono_thread_pool_init.
25571         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
25572         of worker threads based on the number of CPUs and the environment
25573         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
25574         for non-windows (windows) systems.
25575
25576 2004-10-27  Chris Toshok  <toshok@ximian.com>
25577
25578         * mono-debug-debugger.c (write_class): don't call mono_class_init
25579         here, as even with the check for (!klass->init_pending), we get
25580         into a situation where we're hitting cycles in class
25581         initialization.  Fixes #68816.
25582
25583 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
25584
25585         * image.c: Avoid overwriting values in the loaded_images_hash when an
25586         assembly is loaded multiple times. Fixes #61152.
25587
25588         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
25589         so multiple satellite assemblies for the same name can be loaded.
25590         Fixes #68259.
25591
25592         * mono_domain_assembly_preload: Actually return the loaded assembly, 
25593         not NULL.
25594
25595         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
25596         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
25597
25598         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
25599         pending finalizers are not invoked after the appdomain has been 
25600         unloaded. Fixes #67862.
25601
25602 2004-10-22  Martin Baulig  <martin@ximian.com>
25603
25604         * mono-debug-debugger.c
25605         (mono_debugger_runtime_invoke): Don't box valuetypes.
25606
25607 2004-10-22  Chris Toshok  <toshok@ximian.com>
25608
25609         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
25610         don't hide private methods.
25611
25612 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
25613
25614         * icall.c: Allows the runtime to "share" (when known) the public key
25615         token of an assembly. This avoid the need to recalculate the token 
25616         (from the public key) in managed code.
25617
25618 2004-10-21  Chris Toshok  <toshok@ximian.com>
25619
25620         * debug-helpers.c (append_class_name): argh, revert last patch.
25621         
25622 2004-10-21  Chris Toshok  <toshok@ximian.com>
25623
25624         * debug-helpers.c (append_class_name): use '+' as the delimiter,
25625         not '/', so that it matches what the debugger uses to look up
25626         methods.
25627
25628 2004-10-21  Martin Baulig  <martin@ximian.com>
25629
25630         * mono-debug-debugger.c (mono_debugger_throw_exception): New
25631         public method; this is called each time an exception is thrown and
25632         allows the debugger to use exception catch points.
25633
25634 2004-10-21  Martin Baulig  <martin@ximian.com>
25635
25636         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
25637         the stack pointer and the exception object in some struct and pass
25638         that to the debugger.
25639
25640 2004-10-21  Chris Toshok  <toshok@ximian.com>
25641
25642         * mono-debug-debugger.c (do_write_class): add instance/static
25643         event support.  We don't expose "raise" or "other" yet.
25644         (event_is_static): new method.
25645
25646 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
25647
25648         * mono-debug-debugger.c
25649         (mono_debugger_handle_exception): Remove
25650         bogus return value for fussy compilers.
25651
25652 2004-10-20  Martin Baulig  <martin@ximian.com>
25653
25654         * mono-debug-debugger.c
25655         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
25656         (mono_debugger_handled_exception): Likewise.
25657
25658 2004-10-20  Martin Baulig  <martin@ximian.com>
25659
25660         * mono-debug-debugger.h (MonoDebuggerEvent): Added
25661         MONO_DEBUGGER_EVENT_EXCEPTION.
25662
25663         * mono-debug-debugger.c (mono_debugger_handle_exception): New
25664         public function to send the debugger a notification for an
25665         exception and inform it about a catch/finally clause.
25666
25667 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
25668
25669         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
25670         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
25671         fix 2.95 build. 
25672
25673         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
25674
25675 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
25676
25677         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
25678         marshalled as [In,Out]. Fixes #58325.
25679
25680 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
25681
25682         * reflection.c (mono_method_body_get_object): Implement some fields.
25683
25684 2004-10-12  Martin Baulig  <martin@ximian.com>
25685
25686         * reflection.c (mono_reflection_bind_generic_parameters): Small
25687         fix, correctly retrieve our parent from a generic instance.
25688
25689 2004-10-12  Martin Baulig  <martin@ximian.com>
25690
25691         * metadata.c (mono_metadata_generic_param_equal): We always have
25692         an owner.
25693
25694         * class.c
25695         (mono_class_from_generic_parameter): We need to have an owner.
25696         (my_mono_class_from_generic_parameter): Likewise.
25697
25698         * reflection.c (mono_reflection_setup_generic_class): Renamed to
25699         mono_reflection_create_generic_class() and added a new
25700         mono_reflection_setup_generic_class().  
25701         (mono_reflection_initialize_generic_param): If we're a nested
25702         generic type and inherited from the containing class, set our
25703         owner to the outer class.
25704
25705 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
25706
25707         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
25708
25709         * reflection.c (mono_method_body_get_object): New function to create
25710         a MethodBody object.
25711
25712         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
25713
25714 2004-10-11  Martin Baulig  <martin@ximian.com>
25715
25716         * metadata.c (_mono_metadata_type_equal): Renamed to
25717         do_mono_metadata_type_equal() and made static.
25718
25719 2004-10-11  Martin Baulig  <martin@ximian.com>
25720
25721         * appdomain.c: Bump corlib version number to 28.
25722
25723 2004-10-10  Martin Baulig  <martin@ximian.com>
25724
25725         * class-internals.h
25726         (MonoGenericInst): Added `MonoGenericContainer *container'.
25727         (MonoGenericMethod): Likewise.
25728         (MonoGenericContext): Likewise.
25729         (MonoGenericParam): Added `MonoGenericContainer *owner'.
25730
25731         * metadata.c
25732         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
25733         (do_mono_metadata_parse_generic_inst): Likewise.
25734         (mono_metadata_parse_type_full): New public method.  This is the actual
25735         mono_metadata_parse_type() implementation - with an additional
25736         `MonoGenericContainer *' argument.
25737         (mono_metadata_parse_array_full): Likewise.
25738         (mono_metadata_parse_signature_full): Likewise.
25739         (mono_metadata_parse_method_signature_full): Likewise.
25740         (mono_metadata_parse_mh_full): Likewise.
25741         (mono_type_create_from_typespec): Likewise.
25742         (mono_metadata_interfaces_from_typedef_full): New public method;
25743         this is similar to the other _full() methods, but we take a
25744         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
25745         (mono_metadata_parse_generic_param): Take an additional
25746         `MonoGenericContainer *' argument and lookup the MonoGenericParam
25747         from that container.
25748         (mono_metadata_generic_param_equal): New static method to compare
25749         two type parameters.
25750         (_mono_metadata_type_equal): New static method; takes an
25751         additional `gboolean signature_only' argument - if true, we don't
25752         compare the owners of generic parameters.
25753         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
25754         with a TRUE argument - do a signature-only comparision.
25755
25756         * loader.c: Use the new _full() methods and pass the
25757         MonoGenericContainer to them.
25758
25759         * object-internals.h (MonoReflectionTypeBuilder): Added
25760         `MonoGenericContainer *generic_container' field.
25761         (MonoReflectionMethodBuilder): Likewise.
25762
25763 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
25764
25765         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
25766         case initial images of dynamic assemblies.
25767
25768         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
25769
25770         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
25771
25772         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
25773         length of event->other array.
25774         (typebuilder_setup_events): Ditto.
25775
25776         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
25777         'assembly_by_name' and add an 'assemblies' list.
25778
25779         * assembly.h assembly.c: Add a new search hook for determining whenever
25780         an assembly is already loaded. Use this instead of searching in the
25781         loaded_assemblies list.
25782
25783         * domain.c appdomain.c: Implement the new search hook so loaded 
25784         assemblies are now scoped by appdomain. Fixes #67727.
25785
25786 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
25787
25788         * threads.c (mono_thread_attach): Initialize synch_lock field so
25789         mono_thread_detach works again.
25790
25791         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
25792         'lib' too. Fixes #63130.
25793
25794 2004-10-06  Jackson Harper  <jackson@ximian.com>
25795
25796         * culture-info-tables.h: regenerated.
25797
25798 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
25799
25800         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
25801         implemented by other interfaces in the result. Fixes #65764.
25802         
25803         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
25804         Handle unloadable modules without crashing.
25805
25806         * image.c (load_modules): Revert the previous patch since modules must
25807         have a fixed index inside the array.
25808         
25809         * image.c (load_modules): Don't include native modules in the modules
25810         array.
25811
25812 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
25813
25814         * reflection.h: Add param_defaults field.
25815
25816         * reflection.c: Add support for parameter defaults in dynamic methods.
25817         Fixes #64595.
25818
25819         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
25820         an empty string when a type has no namespace. Fixes #64230.
25821
25822 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
25823
25824         * tabledefs.h: Added "internal" security actions to support non-CAS
25825         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
25826         Note: they do not seems to be used anymore in 2.0 (new metadata format)
25827
25828 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
25829
25830         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
25831         constructor of abstract class. Fixes #61689.
25832
25833 2004-10-04  Martin Baulig  <martin@ximian.com>
25834
25835         * class-internals.h (MonoGenericContainer): New type.
25836         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
25837         `MonoGenericContainer *generic_container'.
25838         (MonoClass): Replaced `gen_params' and `num_gen_params' with
25839         `MonoGenericContainer *generic_container'.
25840
25841         * metadata.c (mono_metadata_load_generic_params): Return a
25842         `MonoGenericContainer *' instead of a `MonoGenericParam *';
25843         removed the `num' argument.
25844
25845 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
25846
25847         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
25848         for dynamic images.
25849
25850         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
25851         machine fields.
25852
25853         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
25854
25855         * reflection.c: Save pe_kind and machine values into the generated
25856         image file.
25857
25858         * appdomain.c: Bump corlib version number.
25859
25860         * object-internals.h: Reorganize layout of LocalBuilder.
25861
25862         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
25863         New helper function.
25864
25865         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
25866         created MonoType for dynamic types. Fixes #66180.
25867
25868 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
25869
25870         * threadpool.c: the ares hashtable needs a critical section around it.
25871         this prevents some nasty segfaults
25872
25873 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
25874
25875         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
25876         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
25877         bug 67324).
25878         
25879 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
25880
25881         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
25882         
25883 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
25884
25885         * image.c: Always canonicalize image file names, to avoid loading
25886         the same assembly twice when referenced using a relative path.
25887
25888 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
25889
25890         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
25891
25892         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
25893
25894         * marshal.c: Fix warnings.
25895
25896 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
25897
25898         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
25899         attempting to marshal the delegate_trampoline as the method_addr.
25900         This patch has a static hashtable of marshalled delegates so that 
25901         we can map delegate_trampoline addresses back to delegates.  This
25902         allows a delegate passed to managed code to be passed back into native
25903         code.  Fixes #67039
25904
25905 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
25906
25907         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
25908
25909         * reflection.c (method_encode_code): Align method headers properly.
25910         Fixes #66025.
25911
25912 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
25913
25914         * marshal.c: In the runtime invoke wrapper, reset the abort
25915         exception if it is cached. This avoids the automatic rethrowal of 
25916         the exception after the catch of the wrapper. Also check for pending
25917         interruptions before calling the managed method. This is done using
25918         the new method emit_thread_force_interrupt_checkpoint, since the
25919         normal checkpoint method is ignored when running the invoke wrapper.
25920         * object.c: If the abort exception is rethrown, set the abort_exc
25921         field of the thread, so it will be rethrown aftere every catch.
25922         * threadpool.c: Only run an interruption checkpoint if what has been
25923         requested is a stop of the thread (aborts will be ignored).
25924         * threads.c: By default, a thread will now never be interrumped while
25925         running the runtime invoke wrapper (this ensures that runtime_invoke
25926         will always return to the caller if an exception pointer is provided).
25927         There is a new special method mono_thread_force_interruption_checkpoint()
25928         to force an interruption checkpoint even if running a protected
25929         wrapper, which is used by the same runtime invoke wrapper to do a check
25930         at a safe point.
25931
25932 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
25933
25934         * object.c, object-internals.h: Implemented mono_release_type_locks,
25935         which releases the cctor locks held by a thread.
25936         * threads.c, threads.h: In thread_cleanup, release cctor locks held
25937         by a thread. Added mono_thread_exit() method to be used to safely stop
25938         a thread.
25939
25940 2004-09-28  Raja R Harinath  <rharinath@novell.com>
25941
25942         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
25943         Move null check before dereference.  Avoid indexing beyond the end
25944         of the 'modules' array.
25945
25946 2004-09-28  Raja R Harinath  <rharinath@novell.com>
25947
25948         * metadata-internals.h (MonoImage): Add module_count field.
25949         * image.c (load_modules): Set image->module_count.
25950         (mono_image_load_file_for_image): Use image->module_count.
25951         * reflection.c (mono_image_load_module): Append to image->modules array 
25952         of dynamic assembly.
25953         (mono_module_get_object): Fix loop to actually increment index.
25954         Use image->module_count.
25955         * assembly.c (mono_assembly_load_references): Use image->module_count.
25956         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
25957         Likewise.
25958
25959 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
25960
25961         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
25962         Avoid assert on generic types.
25963
25964 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
25965
25966         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
25967
25968         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
25969
25970         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
25971         function to convert a MarshalSpec structure to its managed counterpart.
25972
25973         * reflection.c: Fix warnings.
25974         
25975         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
25976         field.
25977
25978         * icall.c (mono_create_icall_signature): Fix build.
25979
25980 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
25981
25982         * icall.c: Add MakePointType icall.
25983
25984         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
25985         warnings.
25986
25987 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25988
25989         * threadpool.c: reuse allocated slots in the queue.
25990
25991 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
25992
25993         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
25994
25995         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
25996
25997         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
25998         previous change.
25999
26000         * tabledefs.h: Add constants for pinvoke attributes BestFit and
26001         ThrowOnUnmappableChar.
26002
26003         * icall.c (ves_icall_Type_GetPacking): New icall.
26004
26005 2004-09-24  Martin Baulig  <martin@ximian.com>
26006
26007         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
26008
26009 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26010
26011         * appdomain.c:
26012         (mono_domain_set): allow setting a domain that is being unloaded.
26013         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
26014         being unloaded.
26015
26016 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
26017
26018         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
26019         the GetCustomAttributes icall.
26020
26021 2004-09-23  Martin Baulig  <martin@ximian.com>
26022
26023         * object-internals.h (MonoReflectionGenericParam): Replaced
26024         'has_ctor_constraint', `has_reference_type' and `has_value_type'
26025         with `guint32 attrs'.
26026
26027 2004-09-23  Martin Baulig  <martin@ximian.com>
26028
26029         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
26030
26031 2004-09-23  Martin Baulig  <martin@ximian.com>
26032
26033         * object-internals.h (GenericParameterAttributes): New enum.
26034
26035 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
26036
26037         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
26038         
26039         * class.c (init_events): Fill out event->other field.
26040
26041         * class.c: Fix warnings.
26042
26043         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
26044
26045 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
26046
26047         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
26048         walk which doesn't supply the IL offset.
26049
26050 2004-09-22  Martin Baulig  <martin@ximian.com>
26051
26052         * reflection.c (mono_reflection_setup_internal_class): If we're
26053         System.ValueType, System.Object or System.Enum, set
26054         `klass->instance_size' and create the vtable.
26055         (mono_reflection_create_internal_class): If we're an enum type,
26056         get the base class from our current corlib.
26057
26058 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
26059
26060         * reflection.h (MonoResolveTokenError): New type.
26061
26062         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
26063         icall.
26064
26065         * icall.c: Add an 'error' argument to the ResolveToken icalls.
26066
26067 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
26068
26069         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
26070         Support also calling constructors, but only for already allocated objects.
26071
26072 2004-09-17  Geoff Norton <gnorton@customerdna.com>
26073
26074         * reflection.c (type_get_qualified_name): If the klass is null
26075         return the typename to avoid a NullRefEx.
26076         (encode_cattr_value): Get the qualified name of the boxed type,
26077         not the underlying enumtype.  Fixes #62984.
26078
26079 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
26080
26081         * marshal.c: Fix problems with previous checkin.
26082
26083 2004-09-21    <vargaz@freemail.hu>
26084
26085         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
26086         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
26087
26088         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
26089
26090 2004-09-21  Geoff Norton <gnorton@customerdna.com>
26091
26092         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
26093         should only return a type for pointers, arrays, and passbyref types.
26094         Fixes bug #63841.
26095
26096 2004-09-21  Martin Baulig  <martin@ximian.com>
26097
26098         * domain.c (mono_debugger_check_runtime_version): New public
26099         function.
26100
26101         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
26102
26103 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
26104
26105         * reflection.c: Added missing sort to the declarative security 
26106         attributes table. MS implementation stops seeing the attributes if the
26107         token number regress in the table (as shown by ildasm and permview).
26108
26109 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
26110
26111         * object-internals.h (MonoReflectionModule): Add 'token' field.
26112         
26113         * reflection.c (mono_reflection_get_token): Add support for Module
26114         and Assembly.
26115         (mono_module_get_object): Set 'token' field.
26116         (mono_module_file_get_object): Set 'token' field.
26117
26118         * icall.c: Add new Assembly and Module icalls.
26119
26120         * appdomain.c: Bump corlib version.
26121
26122 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
26123
26124         * loader.h loader.c class.h class.c: Add helper functions for obtaining
26125         tokens of metadata objects.
26126
26127         * reflection.h reflection.c (mono_reflection_get_token): New function
26128         to obtain the token of a metadata object.
26129
26130         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
26131
26132 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
26133
26134         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
26135         
26136         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
26137
26138 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
26139
26140         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
26141         * object-internals.h: Added 3 MonoArray* members to MonoReflection
26142         AssemblyBuilder to access the permissions set in the class lib.
26143         * reflection.c: Added security attributes encoding step in 
26144         mono_image_build_metadata.
26145         * tabledefs.h: Added new security actions defined in 2.0:
26146         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
26147
26148 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
26149
26150         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
26151         macro parameter.
26152
26153 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
26154  
26155         * locales.c: nullify the ICU_collator member of CompareInfo when it is
26156           finalized. There where random SIGSEVs at program termination, when
26157           an object being finalized was trying to do a string comparison and
26158           the current culture was already finalized.
26159  
26160 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26161
26162         * threads.c: call thread_cleanup before finishing the thread if we get
26163         there.
26164
26165 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
26166
26167         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
26168         assemblies from the parent. Fixes #65665.
26169
26170 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
26171
26172         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
26173         modifiers.
26174
26175 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
26176
26177         * reflection.h: add prototype for mono_get_dbnull_object
26178         * reflection.c: add prototypes for get_default_param_value_blobs 
26179         and mono_get_object_from_blob for fussier compilers
26180
26181 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
26182  
26183         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
26184         false deadlock checks in class initialization.
26185  
26186 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
26187
26188         * image.c (mono_image_addref): Fix comment.
26189
26190         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
26191         possible.
26192
26193 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
26194
26195         * reflection.c (mono_param_get_objects): Modified to return
26196         ParameterInfo.DefaultValue object.
26197
26198         (get_default_param_value_blobs):
26199         (mono_get_object_from_blob):
26200         (mono_get_dbnull_object): New helper routines. 
26201
26202         * object.c (mono_get_constant_value_from_blob): New helper routine
26203         carved out from get_default_field_value ()
26204
26205         * object-internals.h (mono_get_constant_value_from_blob): Added
26206         function declaration.
26207
26208 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
26209
26210         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
26211         referenced assemblies. Fixes #62135.
26212
26213         * exception.h exception.c (mono_get_exception_file_not_found2): New
26214         helper function.
26215
26216 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
26217
26218         * class.h class.c: Add mono_type_get_underlying_type ().
26219
26220 2004-09-09  Geoff Norton <gnorton@customerndna.com>
26221
26222         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
26223         Fix GetTypes() to support dynamically created assemblies.
26224
26225 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
26226
26227         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
26228         
26229         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
26230         previous patch.
26231
26232         * reflection.h reflection.c loader.c: Allow dynamic construction of
26233         pinvoke methods. Fixes #65571.
26234         
26235         * reflection.c (mono_reflection_get_type): Revert previous change since
26236         it causes regressions.
26237
26238 2004-09-08  Martin Baulig  <martin@ximian.com>
26239
26240         * class.c (class_compute_field_layout): Don't call
26241         mono_class_layout_fields() for open generic instances.
26242
26243 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
26244         * threads.c appdomain.c: fix typo in GC macro
26245
26246 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26247
26248         * threads.c: don't call mono_thread_detach() in start_wrapper(),
26249         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
26250
26251 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
26252
26253         * image.c (mono_image_close): Applied patch from 
26254         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
26255         assembly is loaded multiple times from data.
26256         
26257         * image.c (mono_image_open): Fix warning.
26258
26259 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26260
26261         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
26262         once. Fixes #58334.
26263         
26264         * reflection.c (mono_reflection_create_runtime_class): Initialize
26265         klass->nested_classes. Fixes #61224.
26266
26267 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
26268
26269         * threads.c: sched_yield() on exit, to allow threads to quit.
26270
26271 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26272
26273         * object.c (mono_unhandled_exception): Remove leftover debug code.
26274
26275 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
26276
26277         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
26278
26279 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26280
26281         * marshal.c (emit_marshal_array): Really null terminate string arrays.
26282         
26283         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
26284
26285 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26286
26287         * marshal.c (emit_marshal_array): Null terminate string arrays.
26288         
26289         * marshal.c (raise_auto_layout_exception): Fix warning.
26290
26291         * reflection.c (mono_param_get_objects): Initialize the default value
26292         with DBNull.Value, not null. Fixes #62123.
26293
26294 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
26295
26296         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
26297         throw an exception with a cute explanation.
26298
26299 2004-09-06  Dick Porter  <dick@ximian.com>
26300
26301         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
26302         Close the new process's thread handle, as we don't use it.  The
26303         handle stays around forever otherwise.
26304
26305 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26306
26307         * object.c (arith_overflow): Fix warning.
26308
26309         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
26310         calling conventions in method refs. Fixes #65352.
26311
26312         * reflection.c: Fix warnings.
26313
26314 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
26315
26316         * icall.c: Add a new icall for Array.Clear
26317
26318 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
26319
26320         * object.c: When allocating an array, we have to throw
26321         an overflow exception if any of the lengths are < 0.
26322
26323 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26324
26325         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
26326         properly. Also move implementation of string array marshalling to 
26327         managed code. Fixes #42316.
26328
26329 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26330
26331         * assembly.c: provide more information when loading an assembly fails.
26332
26333 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26334
26335         * filewatcher.c: don't expect the development fam package to be
26336         installed.
26337
26338 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
26339
26340         * marshal.c: Make a copy of the signature cookie since it will be
26341         freed by the caller.
26342         
26343         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
26344
26345         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
26346
26347         * metadata.c (mono_metadata_free_marshal_spec): New function to free
26348         marshal specs.
26349
26350         * marshal.c: More refactoring.
26351         
26352         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
26353         smaller functions.
26354
26355 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
26356
26357         * object.c: In mono_message_invoke, fill the output parameter array after
26358           calling the managed method (it was done before the call). This fixes
26359           bug #59299.
26360
26361 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
26362
26363         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
26364         as well.
26365
26366 2004-09-02  Martin Baulig  <martin@ximian.com>
26367
26368         * class.c (mono_class_instance_size): Don't allow generic type
26369         definitions or open generic instances.
26370         (mono_class_array_element_size): If we're a value type, call
26371         mono_class_instance_size() on the original class.
26372
26373         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
26374         handle generic instances.
26375
26376         * mono-debug-debugger.c (write_type): Handle generic instances
26377         like classes.
26378
26379 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
26380
26381         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
26382         the allocation request fails. Fixes #65089.
26383
26384         * object.c (mono_runtime_free_method): Do not call mono_free_method.
26385         
26386         * object.c (mono_runtime_free_method): New function to free a dynamic
26387         method.
26388
26389         * marshal.c (mono_delegate_free_ftnptr): New function to free the
26390         delegate trampoline.
26391
26392         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
26393         with hasthis as dynamic,
26394
26395         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
26396
26397         * domain.c (mono_jit_info_table_remove): New function to remove an
26398         entry from the jit info table.
26399
26400         * class-internals.h (MonoMethod): Add 'dynamic' field.
26401
26402         * loader.c: Fix warnings.
26403
26404 2004-09-01  Martin Baulig  <martin@ximian.com>
26405
26406         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
26407         instead of mono_debugger_lock() because the latter one is a no-op
26408         unless running in the debugger.
26409
26410 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
26411
26412         * class.c (class_compute_field_layout): Classes with auto-layout or
26413         reference fields are not blittable.
26414         
26415 2004-09-01  Dick Porter  <dick@ximian.com>
26416
26417         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
26418         mono_image_get_filename() to get the assembly location.
26419
26420         * icall.c:
26421         * metadata.h: Fix compile warnings
26422
26423 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
26424
26425         * class.c (class_compute_field_layout): System.Object is blittable.
26426
26427         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
26428         as in/out. Fixes #59909.
26429
26430 2004-09-01  Martin Baulig  <martin@ximian.com>
26431
26432         * metadata.h (MONO_TYPE_ISREFERENCE): Call
26433         mono_metadata_generic_inst_is_valuetype() if we're a generic
26434         instance to check whether our underlying type is a reference type.
26435
26436 2004-09-01  Martin Baulig  <martin@ximian.com>
26437
26438         * metadata.c (mono_type_size): If we're a generic instance, call
26439         mono_class_value_size() for value types.
26440
26441 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
26442
26443         * marshal.c: Implement more custom marshalling functionality. Fixes
26444         #64915.
26445
26446 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
26447
26448         * mono-debug.c, debug-mono-symfile.c: add some locking love.
26449
26450 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
26451
26452         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
26453
26454         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
26455
26456         * icall.c: Fix some warnings.
26457
26458         * threads.c (abort_appdomain_thread): Fix unref errors.
26459         (mono_thread_current): Fix THREAD_DEBUG define.
26460
26461 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
26462
26463         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
26464
26465         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
26466
26467 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
26468
26469         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
26470         string arrays.
26471
26472 2004-08-28  Martin Baulig  <martin@ximian.com>
26473
26474         * metadata.c
26475         (mono_metadata_generic_inst_is_valuetype): New public function.
26476
26477         * metadata.h (MONO_TYPE_ISSTRUCT): Call
26478         mono_metadata_generic_inst_is_valuetype() if we're a generic
26479         instance to check whether our underlying type is a valuetype.
26480
26481 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
26482
26483         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
26484         #63768.
26485
26486 2004-08-25  Martin Baulig  <martin@ximian.com>
26487
26488         * loader.c (mono_get_method_from_token): Abstract methods can also
26489         be generic and thus have type parameters.
26490
26491         * metadata-internals.h
26492         (MonoDynamicImage): Added `GPtrArray *gen_params'.
26493
26494         * reflection.c (mono_image_get_generic_param_info): Don't create a
26495         metadata row, just add an entry to the `gen_params' array.
26496         (build_compressed_metadata): Sort the `gen_params' array and then
26497         actually create the metadata.
26498
26499 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26500
26501         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
26502
26503 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
26504
26505         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
26506
26507 2004-08-24  Martin Baulig  <martin@ximian.com>
26508
26509         * class.cs (mono_class_is_subclass_of): Like an interface, a
26510         generic instance also derives from System.Object.
26511
26512 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
26513
26514         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
26515         custom modifiers to be in any order. Fixes #61990.
26516
26517 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
26518
26519         * object.c: Register mono_object_new_fast icall.
26520         
26521         * object.c (mono_class_get_allocation_ftn): Return to calling
26522         mono_object_new_fast, since it seems faster to compute the object 
26523         size in unmanaged code than passing it as a parameter.
26524
26525         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
26526
26527         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
26528         this function with Boehm as the oom handler, so we don't have to check
26529         the result of GC_malloc.
26530
26531         * object.c: Remove checks for oom.
26532
26533         * object.h object.c (mono_class_get_allocation_ftn): New function to
26534         return the icall which can be used to allocate an instance of a given
26535         class. 
26536
26537         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
26538
26539         * class-internals.h: Add 'enabled' field.
26540
26541 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
26542
26543         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
26544
26545 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
26546         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
26547         value 0x0010.
26548
26549 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
26550
26551         * appdomain.c: use the Tls function for appdomain too,
26552         at Zoltan's request. Actually return in mono_context_get
26553
26554         * appdomain.c, profiler.c, threads.c: use __thread
26555
26556 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
26557
26558         * appdomain.c threads.c: Call GC_CreateThread on windows.
26559
26560         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
26561         multiple libraries since this don't work on windows.
26562
26563 2004-08-18  Martin Baulig  <martin@ximian.com>
26564
26565         * class-internals.h
26566         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
26567         MonoMethodHeader.
26568
26569         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
26570         MonoMethodNormal since we also need it for abstract and interface
26571         methods.
26572
26573         * reflection.c
26574         (build_compressed_metadata): Sort the GenericParam table.
26575         (mono_image_create_token): Added `gboolean create_methodspec'
26576         argument; this is false when generating a MethodImpl token.
26577         (reflection_methodbuilder_to_mono_method): Abstract and interface
26578         methods may also have generic parameters.
26579
26580 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
26581
26582         * appdomain.c: thread local alloc
26583
26584 2004-08-17  Martin Baulig  <martin@ximian.com>
26585
26586         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
26587
26588         * icall.c
26589         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
26590         argument.
26591
26592         * class.c (mono_type_get_full_name): New public function.
26593         (mono_type_get_name): Don't include the type arguments.
26594
26595 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
26596
26597         * Makefile.am: Build static versions of libmetadata and libmonoruntime
26598         for inclusion into the mono executable.
26599
26600 2004-08-16  Martin Baulig  <martin@ximian.com>
26601
26602         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
26603         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
26604
26605 2004-08-14  Martin Baulig  <martin@ximian.com>
26606
26607         * class.c (dup_type): Also copy the `byref' field.
26608
26609 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
26610
26611         * reflection.c (create_dynamic_mono_image): Revert the last change 
26612         since it breaks bootstrap.
26613
26614 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
26615
26616         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
26617
26618         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
26619         not free them with g_free.
26620
26621 2004-08-11  Martin Baulig  <martin@ximian.com>
26622
26623         * reflection.c (mono_reflection_setup_internal_class): Also call
26624         mono_class_setup_mono_type() if we already have a `tb->type.type'.
26625
26626 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
26627
26628         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
26629         called during default (first) AppDomain creation. Keep track of
26630         Evidence when loading assemblies.
26631
26632 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
26633
26634         * opcodes.c, opcodes.h: reduce runtime relocations.
26635
26636 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
26637
26638         * culture-info.h, locales.c: fixes and chages to sue the new
26639         optimized format of the locale data.
26640         * culture-info-tables.h: regenerated.
26641
26642 2004-08-06  Geoff Norton <gnorton@customerdna.com>
26643         
26644         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
26645
26646 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
26647
26648         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
26649         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
26650         * domain-internals.h: icall declaration.
26651         * icall.c: icall registration.
26652         * object-internals.h: New fields in MonoAssembly for CAS.
26653
26654 2004-08-05  Duncan Mak  <duncan@ximian.com>
26655
26656         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
26657         CEE_LDELEM_ANY.
26658
26659 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
26660
26661         * reflection.c: fix to deal with object[] arrays in custom ctors
26662         (bug #62550).
26663
26664 2004-08-05  Martin Baulig  <martin@ximian.com>
26665
26666         * class.c (mono_class_array_element_size): Added support for
26667         generic instances and correctly handle "recursive" types.
26668
26669 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
26670
26671         * assembly.c: Fix warnings.
26672
26673 2004-08-04  Martin Baulig  <martin@ximian.com>
26674
26675         * class.c
26676         (mono_type_get_name_recurse): Added `gboolean include_arity'
26677         argument specifying whether or not we should include the generic
26678         arity in the type name.
26679         (_mono_type_get_name): New static function.
26680         (mono_class_setup_vtable): If we're a generic instance, don't
26681         include the generic arity in the names of explicit method
26682         implementations.        
26683
26684 2004-08-03  Martin Baulig  <martin@ximian.com>
26685
26686         * class.c (mono_type_get_name_recurse): Enclose the generic type
26687         arguments in `<', '>'.
26688
26689 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
26690
26691         * gc.c: make GC warning messages use the trace API, they are just
26692         noise to most of the users.
26693
26694 2004-08-03  Martin Baulig  <martin@ximian.com>
26695
26696         * debug-mono-symfile.c (read_string): Correctly read the string.
26697
26698 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
26699
26700         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
26701         
26702         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
26703         icalls.
26704         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
26705
26706 2004-07-30  Martin Baulig  <martin@ximian.com>
26707
26708         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
26709         Reflect latest symbol writer changes.   
26710
26711 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
26712
26713         * object.c: always create an object if null is passed
26714         to Invoke() where a valuetype is expected.
26715
26716 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
26717
26718         * marshal.c (mono_marshal_init): make managed
26719         signatures match native ones better for 64bits.
26720
26721 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26722
26723         * appdomain.c: hack to build correctly the private bin path on windows.
26724         Fixes bug #61991.
26725
26726 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
26727
26728         * assembly.c: Load mscorlib from the correct framework directory
26729           (mono/<version>/mscorlib.dll).
26730         * appdomain.h: Added prototypes for new functions.
26731         * internals.h: Added some prototypes.
26732         * domain.c: When initializing the runtime, get from the executable and
26733           the configuration files the runtime version that the app supports.
26734           Added support methods for reading app.exe.config. Added list of versions
26735           supported by the JIT. Added two new methods: mono_init_from_assembly,
26736           which initializes the runtime and determines the required version from
26737           the provided exe file, and mono_init_version, which initializes
26738           the runtime using the provided version.
26739         * icall.c: Get machine.config from version-specific directory.
26740         * reflection.c: When generating an image, embed the version number
26741           of the current runtime.
26742
26743 2004-07-28  Dick Porter  <dick@ximian.com>
26744
26745         * socket-io.c
26746         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
26747         returned sockaddr size before creating the remote address object.
26748         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
26749         61608.
26750
26751 2004-07-28  Dick Porter  <dick@ximian.com>
26752
26753         * locales.c (string_invariant_compare_char): Fix invariant char
26754         compares between upper and lower cases.  Fixes bug 61458.
26755
26756 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
26757         
26758         * marshal.c: actually cache stelem.ref wrappers.
26759         
26760 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
26761
26762         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
26763         sections and remove the mono_cli_rva_map () function.
26764
26765 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
26766
26767         * debug-mono-symfile.c: fix one more endianess issue, from a patch
26768         by Geoff Norton (<gnorton@customerdna.com>).
26769
26770 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
26771
26772         * class.c: fix class loads for pointer types (typeof(int) !=
26773         typeof(int*)).
26774
26775 2004-07-27  Martin Baulig  <martin@ximian.com>
26776
26777         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
26778         reading the debugging information from an external ".mdb" file.
26779
26780 2004-07-24  Martin Baulig  <martin@ximian.com>
26781
26782         * reflection.c (mono_image_get_type_info): Only write a class
26783         layout entry if we actually have a size or a packing size.
26784
26785 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
26786
26787         * reflection.c (type_get_fully_qualified_name): 
26788         insert cast to get type checking of ?: with non-gcc compilers
26789
26790 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
26791
26792         * rand.c: use g_getenv for both lookups of
26793         MONO_EGD_SOCKET
26794
26795 2004-07-17  Martin Baulig  <martin@ximian.com>
26796
26797         * reflection.c (mono_reflection_bind_generic_method_parameters):
26798         Set `gmethod->reflection_info'.
26799
26800 2004-07-17  Martin Baulig  <martin@ximian.com>
26801
26802         * class.c (mono_class_create_from_typedef): Insert the newly
26803         created class into the hash table before computing the interfaces
26804         since we could be called recursively.
26805
26806 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
26807
26808         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
26809         function to implement stelem.ref in managed code
26810         * class-internals.h, debug-helpers.c: a new wrapper type
26811         for the above.
26812
26813 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
26814
26815         * gc.c: allow GC handles to work even when no GC is compiled in.
26816         Fix part of bug #61134 (GetAddrOfPinnedObject).
26817
26818 2004-07-13  Peter Williams  <peter@newton.cx>
26819  
26820         * process.c (complete_path): Make sure we don't attempt to execute
26821         directories.
26822  
26823 2004-07-12  Geoff Norton <gnorton@customerdna.com>
26824
26825         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
26826           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
26827           and will add/subtract the hour if needed
26828
26829 2004-07-12  Martin Baulig  <martin@ximian.com>
26830
26831         * reflection.c (mono_field_get_object): If we have
26832         `field->generic_info', take the attributes from
26833         `field->generic_info->generic_type'.    
26834
26835 2004-07-12  Martin Baulig  <martin@ximian.com>
26836
26837         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
26838         This function must be called before initializing the runtime.
26839         (mono_debug_init_1): New function; call this after initializing
26840         the runtime, but before loading the assembly.  It tells the
26841         debugger to load corlib and the builtin types.
26842
26843         * mono-debug-debugger.c: Did some larger changes in the debugging
26844         code; support recursive class declarations, make sure we actually
26845         add all classes.
26846
26847 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26848
26849         * debug-helpers.c: undo my previous patch and fixed the real issue in
26850         ../mini/exceptions-x86.c
26851
26852 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26853
26854         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
26855         when no HOME env. variable was set and a NullRef was thrown in a .cctor
26856         called from other .cctors.
26857
26858 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
26859
26860         * loader.c: Removed the mono_loader_wine_init hack now that we are
26861         doing a managed version of Windows.Forms.
26862
26863 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
26864
26865         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
26866         threadpool.c, threads.c: remove static data from rootset.
26867
26868 2004-07-09  Dick Porter  <dick@ximian.com>
26869
26870         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
26871         Don't do any more processing if the matched length was 0.  It was
26872         increasing the size of the string before.  Fixes bug 61167.
26873
26874 2004-07-09  Dick Porter  <dick@ximian.com>
26875
26876         * socket-io.h:
26877         * socket-io.c
26878         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
26879         Add support for SO_PEERCRED if its available.
26880
26881 2004-07-09  Peter Bartok <pbartok@novell.com>
26882         * loader.c: winelib.exe.so error message is now only displayed if
26883         MONO_DEBUG is set. To help us avoid questions when people are trying
26884         out the new Managed.Windows.Forms.
26885
26886 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
26887
26888         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
26889         for isinst and castclass wrappers.
26890
26891         * class-internals.h icall.c: Move registration and lookup of JIT icalls
26892         to libmetadata from the JIT, so they could be used by the marshalling
26893         code and the interpreter.
26894
26895         * marshal.c: Register marshalling related JIT icalls here instead of
26896         in mini.c. Use CEE_MONO_ICALL instead of the family of 
26897         CEE_MONO_PROC<x> opcodes to call marshalling functions.
26898
26899         * metadata.h: Remove unneeded marshalling conversions.
26900
26901         * opcodes.c: Update for new opcodes.
26902         
26903 2004-07-08  Martin Baulig  <martin@ximian.com>
26904
26905         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
26906         (mono_debug_get_domain_data): Make this function static.
26907
26908 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
26909
26910         * gc.c, object.h: add nice GC handle API for embedders.
26911
26912 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
26913
26914         * reflection.c: more changes for the new api
26915
26916         * object.c: When we reflect on a field w/ a constant value, it
26917         will not have a memory location, so we must access metadata. Also,
26918         allow easier reading of strings so that we can read them from
26919         the constant data.
26920
26921         * class.c (mono_class_layout_fields): no need for literal fields here.
26922
26923         * class-internals.h: api changes for const fields
26924
26925         * icall.c (ves_icall_get_enum_info): use new apis for const fields
26926
26927 2004-07-06  Martin Baulig  <martin@ximian.com>
26928
26929         * mono-debug.h: Increment version number to 44.
26930
26931         * mono-debug.c (mono_debug_add_wrapper): The second argument is
26932         now a gpointer, rewrote this whole method.
26933
26934         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
26935         function.  Add information about the wrapper in a new "misc table".
26936
26937         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
26938         for the new misc table.
26939
26940 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
26941
26942         * metadata-internals.h image.c: Add a cache for helper signatures.
26943
26944         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
26945
26946 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
26947
26948         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
26949         delegates from a delegate. Fixes #61033.
26950         
26951         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
26952         marshalling of stringbuilder arrays. Fixes #59900.
26953
26954 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
26955
26956         * icall.c: Add EnumBuilder:setup_enum_type icall.
26957
26958 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
26959
26960         * icall.c: Added a new icall for the property version of
26961         OffsetOfStringData.
26962
26963 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
26964
26965         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
26966         it has a constant size across platforms.
26967
26968         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
26969         stack trace.
26970
26971 2004-06-29  Martin Baulig  <martin@ximian.com>
26972
26973         * mono-debug.c (mono_debug_add_method): Protect the whole function
26974         in mono_debugger_lock(), not just parts of it.
26975
26976 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
26977
26978         * reflection.c: make sure padding bytes in heaps are zeroed.
26979
26980 2004-06-24  David Waite  <mass@akuma.org>
26981
26982         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
26983         image.c, loader.c, locales.c, marshal.c, metadata.c,
26984         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
26985         string-icalls.c, threads.c: change to C90-style comments from C99 /
26986         C++ -style
26987
26988 2004-06-24  Dick Porter  <dick@ximian.com>
26989
26990         * threads.c
26991         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
26992         return createdNew.  Fixes bug 60412.
26993
26994         * threads-types.h: 
26995         * icall.c: Add createdNew parameter to CreateMutex icall
26996
26997 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
26998
26999         * reflection.c, object-internals.h: save default value in params.
27000
27001 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27002
27003         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
27004         no need to build a new path combining that with the application base.
27005         Fixes bug #60442.
27006
27007 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
27008
27009         * reflection.c: fixed minor standard compliance issues.
27010
27011 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
27012
27013         * reflection.c: fixed issue with encoding some custom attributes
27014         (arrays in properties and fields, bug #60411).
27015
27016 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27017
27018         * reflection.c: fix start address when copying the public key token.
27019
27020 2004-06-23  Martin Baulig  <martin@ximian.com>
27021
27022         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
27023         the `exc' object in a static object to put it into the GC's root set.
27024
27025 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
27026
27027         * reflection.c: make mono_reflection_setup_internal_class ()
27028         callable a second time to setup a new parent class.
27029
27030 2004-06-23  Dick Porter  <dick@ximian.com>
27031
27032         * threads.c: Check for WAIT_IO_COMPLETION return values.
27033
27034 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
27035
27036         * appdomain.c: Removed the g_free on the public key token. Now copy 
27037         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
27038         * assembly.c: Added public key token string value when loading 
27039         assemblies. Fix bug #60439.
27040         * icall.c: Added missing informations (like public key) in 
27041         GetReferencedAssemblies. Fix #60519.
27042         * image.h: Changed definition for public key token from const char*
27043         public_tok_value to guchar public_key_token [17];
27044         * reflection.c: Updated for changes to public key token.
27045
27046 2004-06-22  Lluis Sanchez Gual
27047
27048         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
27049         for the field in base classes.
27050
27051 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
27052
27053         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
27054         mark headers as not supported, they are installed only for use by the
27055         debugger.
27056
27057 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
27058
27059         * *.c, *.h: avoid namespace pollution in public headers.
27060
27061 2004-06-21  Martin Baulig  <martin@ximian.com>
27062
27063         * exception.c (mono_get_exception_security): It's in
27064         "System.Security", not in "System".
27065
27066         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
27067         the exception classes.
27068
27069 2004-06-21  Martin Baulig  <martin@ximian.com>
27070
27071         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
27072         Protect the exception object from being finalized.
27073
27074 2004-06-21  Martin Baulig  <martin@ximian.com>
27075
27076         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
27077         public function.
27078
27079 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
27080
27081         * reflection.c: Load the assembly in mono_reflection_type_from_name,
27082         if it was not loaded before. Fix parts of #60439.
27083
27084 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
27085
27086         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
27087         code that was broken since Ben's change: wrappers are now
27088         dependent on the method signature only again.
27089
27090 2004-06-21  Martin Baulig  <martin@ximian.com>
27091
27092         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
27093         added interface support.
27094
27095 2004-06-21  Martin Baulig  <martin@ximian.com>
27096
27097         * class.c (mono_vtable_get_static_field_data): New public method.
27098
27099 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
27100
27101         * filewatcher.c : Windows build fix to be compliant with API changes.
27102
27103 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
27104
27105         * class.h, class.c: more accessors.
27106         * metadata.h, metadata.c: prepare for hiding MonoType and
27107         MonoMethodSignature: people should use the accessors from now on
27108         outside of the tree.
27109
27110 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
27111
27112         * *.c, *.h: more API cleanups.
27113
27114 2004-06-18  Jackson Harper  <jackson@ximian.com>
27115
27116         * assembly.c: Trace loading assemblies.
27117         * loader.c: Trace loading native libraries.
27118         * mono-config.c: Trace loading config files.
27119         
27120 2004-06-18  Dick Porter  <dick@ximian.com>
27121
27122         * locales.c: Tell ICU the lengths of strings, it can cope with
27123         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
27124
27125 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
27126
27127         * image.c: swapped name/filename;
27128
27129 2004-06-18  Martin Baulig  <martin@ximian.com>
27130
27131         * mono-debug-debugger.c (write_class): Write the parent class at
27132         the end of the header.
27133
27134 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
27135
27136         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
27137
27138 2004-06-17  Raja R Harinath  <rharinath@novell.com>
27139
27140         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
27141         (bundle_obj): New conditional define.
27142         (BUILT_SOURCES): Remove.
27143         ($(bundle_srcs)): Make parallel-make safe.
27144         (libmonoruntime_la_LIBADD): Make unconditional.
27145         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
27146         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
27147
27148 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
27149
27150         * culture-info-tables.h: It was inconsistent with the latest
27151           supp info files.
27152
27153 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
27154
27155         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
27156         be loaded.
27157
27158         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
27159         with gcc 2.95.
27160
27161 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
27162
27163         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
27164         cleaned up public header threads.h.
27165
27166 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
27167
27168         * Makefile.am, *.c, *.h: more API cleanups.
27169
27170 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
27171
27172         * Makefile.am: removed monosn from compilation.
27173         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
27174         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
27175         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
27176         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
27177         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
27178         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
27179
27180 2004-06-15  Jackson Harper  <jackson@ximian.com>
27181
27182         * assembly.c: Make locales lower case when searching the GAC for
27183         assemblies. gacutil will always make locales lowercase when
27184         installing so this effectively makes them case insensitive.
27185         
27186 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
27187
27188         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
27189         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
27190           parameter which allows to choose whether the wait can be interrupted or 
27191           not. Also added the method mono_monitor_enter(), which locks the monitor
27192           using an infinite wait and without allowing interruption.
27193           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
27194           interrupted.
27195         * object.h: Added new fields in MonoThread. suspend_event holds the event
27196           used to susped/resume the thread. synch_lock is the lock object to use for
27197           modifying the thread state.
27198         * threads.c: Use the new synch_lock object for locking, instead of "this",
27199           which can generate deadlocks.
27200           Moved thread state change in Thread.Sleep and Thread.Join from managed
27201           to unmanaged code. This avoids a deadlock when the thread was suspended
27202           just after acquiring the thread lock.
27203           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
27204           Implemented Thread.Suspend using an event instead of ThreadSuspend,
27205           which is not fully implemented in the io-layer.
27206         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
27207
27208 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
27209
27210         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
27211         threads-types.h: more API cleanups.
27212
27213 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
27214
27215         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
27216         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
27217         threadpool.c, threads.c: first pass at the exported API cleanup.
27218
27219 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
27220
27221         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
27222
27223 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27224
27225         * icall.c: added internalGetHome.
27226
27227 2004-06-14  Dick Porter  <dick@ximian.com>
27228
27229         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
27230         possible to return successfully when '.' or '..' were the only
27231         entries in a directory, but were skipped.  The MonoIOStat was not
27232         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
27233         Fixes bug 59574.
27234
27235 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
27236
27237         * reflection.c: make binaries run on .Net 1.1 by default.
27238
27239 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
27240
27241         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
27242
27243 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
27244
27245         * marshal.c: keep track of struct size with explicit layout
27246         (bug #59979).
27247
27248 2004-06-12  Martin Baulig  <martin@ximian.com>
27249
27250         * mono-debug-debugger.c: Comment out a debugging g_message().
27251
27252 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
27253
27254         * reflection.c, reflection.h: do not free custom attrs that are cached.
27255         * icall.c: use braces to make code clearer.
27256
27257 2004-06-11  Martin Baulig  <martin@ximian.com>
27258
27259         * class.h (MonoInflatedField): New type.
27260         (MonoClassField): Replaced `MonoType *generic_type' with
27261         `MonoInflatedField *generic_info'.
27262
27263         * icall.c
27264         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
27265
27266 2004-06-11  Martin Baulig  <martin@ximian.com>
27267
27268         * reflection.c (mono_image_create_method_token): Correctly encode
27269         varargs methods.
27270
27271 2004-06-11  Martin Baulig  <martin@ximian.com>
27272
27273         * metadata.c (mono_metadata_parse_method_signature): When parsing
27274         a MethodDef which has VarArgs, also set sentinelpos if we don't
27275         have any parameters.
27276
27277 2004-06-11  Martin Baulig  <martin@ximian.com>
27278
27279         * verify.c (mono_method_verify): In CEE_CALL, use
27280         mono_method_get_signature() to get the method's signature, unless
27281         we're a PInvoke method.
27282
27283 2004-06-10  Jackson Harper  <jackson@ximian.com>
27284
27285         * assembly.c: Use <path>/lib/mono/gac for the extra paths
27286         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
27287         logical name as the supplied path is just a prefix to the gac not
27288         the direct path to it.
27289         
27290 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
27291
27292         * reflection.c: make the token for a created method match
27293         the token of the MethodBuilder it was created from
27294         (IKVM requires this behaviour now).
27295
27296 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
27297
27298         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
27299         reflection.c, socket-io.c: leak fixes.
27300
27301 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
27302
27303         * icall.c: handle sentinel pos in vararg methods in position different
27304         from 0.
27305
27306 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27307
27308         * culture-info-tables.h: freshly generated.
27309
27310 2004-06-09  Martin Baulig  <martin@ximian.com>
27311
27312         * loader.c (mono_get_method_constrained): Call `mono_class_init
27313         (constrained_class)'.   
27314
27315 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
27316
27317         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
27318         any methods. Fixes #59629.
27319
27320 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27321
27322         * culture-info-tables.h: reflecting locale-builder updates.
27323
27324 2004-06-08  Dick Porter  <dick@ximian.com>
27325
27326         * object.h:
27327         * locales.c: Fixed compile warnings, including a real bug in
27328         CompareInfo_internal_compare.
27329         
27330 2004-06-08  Dick Porter  <dick@ximian.com>
27331
27332         * locales.c
27333         (ves_icall_System_Globalization_CompareInfo_internal_index):
27334         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
27335         Double-check the resuls of usearches, because ICU currently
27336         ignores most of the collator settings here.  Fixes bug 59720.
27337         
27338 2004-06-08  Dick Porter  <dick@ximian.com>
27339
27340         * locales.c
27341         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
27342         Fix memory leak and segfault-causing typo.  No idea how this one
27343         lasted so long without being noticed.
27344
27345 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
27346
27347         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
27348         any methods. Fixes #59629.
27349
27350 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27351
27352         * assembly.c:
27353         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
27354         own the critical section before). Removed dead code (that's done
27355         in the preload hook).
27356
27357         (mono_assembly_load_with_partial_name): call the preload hook.
27358
27359 2004-06-08  Martin Baulig  <martin@ximian.com>
27360
27361         * metadata.c (mono_metadata_signature_alloc): Default
27362         `sentinelpos' to -1.
27363
27364         * reflection.c (mono_image_get_array_token): Likewise.
27365
27366 2004-06-08  Martin Baulig  <martin@ximian.com>
27367
27368         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
27369
27370         * metadata.c (mono_metadata_parse_method_signature): When parsing
27371         a MethodDef which has VarArgs, set sentinelpos.
27372
27373         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
27374         `gint16' since we're using -1 for non-varargs methods.
27375
27376         * reflection.c
27377         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
27378         (method_encode_signature): Added varargs support.
27379         (method_builder_encode_signature): Likewise.
27380         (mono_image_get_varargs_method_token): New static method.
27381         (mono_image_create_method_token): New public method; this is
27382         called via an icall instead of mono_image_create_token() when
27383         calling a varargs method.       
27384
27385 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
27386
27387         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
27388
27389 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27390
27391         * culture-info-tables.h : Reflecting the latest locale-builder that
27392           fixed empty array representation ({} to {0}).
27393
27394 2004-06-07  Jackson Harper  <jackson@ximian.com>
27395
27396         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
27397         looking up extra gac paths. This allows MONO_GAC_PATH to act
27398         exactly like a prefix.
27399         
27400 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
27401
27402         * reflection.c (mono_reflection_type_from_name): Make a copy of the
27403         type name before modifying it. Fixes #59405.
27404
27405 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27406
27407         * culture-info.h: added fields for "all datetime patterns".
27408         * locales.c: (  ves_icall_System_Globalization_CultureInfo
27409           _construct_datetime_format ()): fill xxx_patterns fields.
27410         * object.h: added fields for "all datetime patterns" to
27411           MonoDateTimeFormatInfo.
27412         * culture-info-tables.h: reflecting locale-builder updates.
27413
27414 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
27415
27416         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
27417         the event has no add and remove methods. Fixes #59629.
27418
27419 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
27420
27421         * object.c: Fixed possible integer overflow when allocating large
27422         strings.
27423
27424 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
27425
27426         * culture-info-tables.h: reflecting locale-builder updates.
27427
27428 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
27429
27430         * culture-info-tables.h: reflecting locale-builder updates.
27431
27432 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
27433
27434         * culture-info-tables.h: reflecting locale-builder updates.
27435
27436 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
27437
27438         * threads.c: Made Thread.Sleep abortable.
27439
27440 2004-06-02  Martin Baulig  <martin@ximian.com>
27441
27442         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
27443
27444         * debug-mono-symfile.h: Bumped symbol file version number to 37.
27445
27446 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
27447
27448         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
27449
27450 2004-05-30  Jackson Harper  <jackson@ximian.com>
27451
27452         * reflection.c: Do not hardcode assembly versions or public key
27453         tokens anymore. All of this except the corlib section was dead
27454         code anyways.
27455         
27456 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
27457
27458         * object.c (mono_runtime_invoke_array): Automatically create boxed
27459         objects for byref valuetypes if needed. Fixes #59300.
27460         
27461         * object.c (mono_method_return_message_restore): Handle 
27462         MONO_TYPE_OBJECT as well.
27463
27464 2004-05-28  Jackson Harper  <jackson@ximian.com>
27465
27466         * reflection.c: The modified type encoding was causing build
27467         problems. Reverted for now.
27468         
27469 2004-05-28  Jackson Harper  <jackson@ximian.com>
27470
27471         * reflection.c/h: Take an assembly ref so that we dont create
27472         fully qualified names when encoding types in the same assembly as
27473         the custom attribute being emitted.
27474         * appdomain.c: Increment version number.
27475         
27476 2004-05-26  Duncan Mak  <duncan@ximian.com>
27477
27478         * icall.c
27479         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
27480         Set the full version number (major, minor, build, revision).
27481
27482 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
27483
27484         * marshal.c (emit_struct_conv): increment src/dst after blit
27485         (mono_marshal_get_managed_wrapper,
27486         mono_marshal_get_native_wrapper): make sure we have marshalling
27487         info before marshalling params (info computation affects
27488         blittable)
27489
27490         * class.c (class_compute_field_layout): correctly deal with
27491         blittable
27492         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
27493         value types (as per what windows dows by default)
27494         (mono_class_setup_mono_type): System.ValueType is blittable
27495         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
27496         blittable
27497
27498         * marshal.c (mono_marshal_load_type_info): flag types  as
27499         non-blittable if the native layout doesn't match the managed
27500         layout
27501
27502 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27503
27504         * appdomain.c: don't add stuff in the private search path that is
27505         above the application base. If application base is not set, there's
27506         no private search path.
27507
27508 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
27509
27510         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
27511         byref struct arguments in native->managed marshalling.
27512
27513 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
27514
27515         * marshal.c (mono_marshal_get_runtime_invoke): correctly
27516         cache methods using signature (special case for methods
27517         that are value type or string class)
27518         
27519         * image.c (mono_image_close): clean up allocated GSList's
27520         in runtime_invoke_cache.
27521
27522 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27523
27524         * mono-config.c: set the correct path for mono_cfg_dir on windows when
27525         there's no MONO_CFG_DIR environment variable defined.
27526
27527 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27528
27529         * threads.c: windows version must be >= 0x0500 to include OpenThread.
27530
27531 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
27532
27533         * threadpool.c: Really wait for 500ms after the async call, even if the wait
27534           is interrumped.
27535         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
27536           before waiting for it, and call CloseHandle after the wait to unref it.
27537           This will make sure that handles are not disposed too early.
27538
27539 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27540
27541         * appdomain.c:
27542         * appdomain.h:
27543         * icall.c: removed
27544         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
27545         needed now.
27546
27547         * object.c: se the application_base only for the domain that runs
27548         Main. Fixes bug #59216,
27549
27550 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27551
27552         * appdomain.c:
27553         * object.c: only the domain in which Main is run have
27554         SetupInformation.ConfigurationFile set, so moved a few lines from
27555         appdomain.c to object.c.
27556
27557 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27558
27559         * appdomain.c: we tried to load [name].(dll|exe), but according
27560         to bug #57710, we must also try [culture]/[name].(dll|exe) and
27561         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
27562         There's a test case attached to bug #58922.
27563
27564 2004-05-27  Dick Porter  <dick@ximian.com>
27565
27566         * icall.c:
27567         * file-io.c: Implemented icalls for locking and unlocking regions
27568         in a file.
27569         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
27570         FALSE on error (fixes both compiler warning and real bug.)
27571
27572 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
27573
27574         * culture-info-tables.h: reflecting locale-builder updates.
27575
27576           (Added missing ChangeLog entry for 05/26)
27577
27578 2004-05-27  Jackson Harper  <jackson@ximian.com>
27579
27580         * locales.c: Fix some cut and paste errors.
27581         
27582 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27583
27584         * mono-config.c: set the correct path for config. directory on windows.
27585
27586 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
27587
27588         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
27589           on win32.
27590
27591 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
27592
27593         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
27594         from pinvoke functions.
27595         
27596         * marshal.c (mono_ftnptr_to_delegate): Implement this.
27597
27598 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
27599
27600         * culture-info-tables.h: reflecting locale-builder updates.
27601
27602 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
27603
27604         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
27605         #59086.
27606
27607 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
27608
27609         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
27610         * icall.c: Modified icalls for RNG.
27611         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
27612         Windows (CryptoAPI).
27613
27614 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
27615
27616         * locales.c: Fix build.
27617
27618 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
27619
27620         * culture-info-tables.h: reflecting locale-builder updates.
27621
27622 2004-05-25  Jackson Harper  <jackson@ximian.com>
27623
27624         * locales.c: When creating the current culture use the $LANGs
27625         specific culture. So DateTimeFormat and NumberFormat entries are created.
27626         
27627 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
27628
27629         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
27630         a char array as parameter.
27631
27632 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
27633
27634         * image.c: In mono_image_open(), always use an absolute path name to
27635           look for already loaded images.
27636
27637 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
27638
27639         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
27640         missing in the windows build (like older cygwin include files).
27641
27642 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
27643
27644         * icall.c: Fixed check for possible integer overflow in Buffer_
27645         BlockCopy icall. Replaced comments style // by /* */.
27646
27647 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
27648
27649         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
27650         
27651         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
27652         check after MONO_VTADDR. Fixes pinvoke2.exe.
27653
27654         * marshal.h marshal.c metadata.h: Add beginnings of support for
27655         ftnptr -> delegate marshalling.
27656
27657 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
27658
27659         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
27660         * threads.c: Fix warnings.
27661
27662 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
27663
27664         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
27665         * icall.c: Registered icalls for Suspend and Resume.
27666         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
27667           Thread.Abort.
27668         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
27669         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
27670         * process.c: Use WaitForSingleObjectEx.
27671         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
27672           checkpoints.
27673         * threads.c, threads.h: Make use of new Ex wait methods. Improved
27674           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
27675           for Suspend and Resume. Added new mono_thread_stop, used for stoping
27676           background threads. Added basic support for Abort in Windows.
27677           Start new threads using a managed delegate invoke wrapper. This wrapper
27678           has an interruption checkpoint that is needed since an interruption
27679           can be requested before the thread leaves the unmanaged code that starts 
27680           the thread.
27681         * marshal.c: Added interruption checkpoint after every native call, and
27682           also before managed calls for wrappers called from unmanaged code to
27683           go into managed code.
27684         * object.h: Added new field in MonoThread to keep track of interruption
27685           requests.
27686
27687 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
27688
27689         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
27690         calls.
27691
27692 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27693
27694         * appdomain.c:
27695         * assembly.c:
27696         * gc.c:
27697         * locales.c:
27698         * mono-config.c:
27699         * rand.c: getenv -> g_getenv (windows!)
27700
27701         * process.c: complete_path is also used on non-windows platforms.
27702
27703 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27704
27705         * icall.c: new signature for Process_Start.
27706
27707         * process.[ch]: new signature for Process_Start. If we're on windows
27708         and UseShellExecute is false, we have to search for the program by
27709         ourselves if we don't get a full path.
27710
27711 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
27712
27713         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
27714         marshalling and call CleanUpNativeData if needed. Fixes #58646.
27715
27716 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27717
27718         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
27719         Fixes bug #58373.
27720
27721 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27722
27723         * process.c: use double quotes to quote program name and arguments on
27724         windows. Fixes bug #58575.
27725
27726 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27727
27728         * file-io.c: don't return "." and ".." when using windows Find*File.
27729
27730 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
27731
27732         * marshal.c: Don't pass wrappers to message init because method 
27733         addressed used to lookup metadata. part of remoting[2|3] fix.
27734
27735 2004-05-15  Jackson Harper  <jackson@ximian.com>
27736
27737         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
27738         path is essentially the same as MONO_PATH except that it points to
27739         GACs instead of lib directories.
27740         * loader.h: The user gac is gone so we dont need function to
27741         enable/disable it.
27742         * mono-config.c: user gac option is now gone.
27743         
27744 2004-05-15  Jackson Harper  <jackson@ximian.com>
27745
27746         * culture-info.h: Make defines more consistent, add calendar data
27747         to the culture info table.
27748         * culture-info-tables.h: Add basic calendar data. Basically
27749         everyone gets default gregorian until all the data is
27750         updated.
27751         * locales.c: Use the new consistent defines. Set calendar data for
27752         culture info objects.
27753         * object.h: add a field for calendar data to CultureInfo
27754         
27755 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
27756
27757         * image.c: image->runtime_invoke_cache is keyed on signatures now.
27758         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
27759         a signature.
27760         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
27761         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
27762         an extra param that is the pointer of the method to invoke. The IL for
27763         the invoke method is no longer specific to the method, but to the
27764         signature of the method. Thus, we can share the same code for multiple
27765         methods. This reduces the number of methods that have to be compiled.
27766
27767 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
27768
27769         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
27770
27771         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
27772
27773         * icall.c: Optimize Buffer.BlockCopy.
27774
27775 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27776
27777         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
27778         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
27779         quote). Changed them to "MMMM yyyy".
27780
27781 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
27782
27783         * rand.c
27784         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
27785
27786 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
27787
27788         * reflection.h: Updated after changes to managed structures.
27789
27790         * appdomain.c: Bump corlib version.
27791
27792 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27793
27794         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
27795         windows.
27796
27797 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27798
27799         * Makefile.am: link to ../os/libmonoos.la on windows.
27800
27801         * assembly.c:
27802                 -If MONO_DEBUG, warn about non-existing directories in
27803                 MONO_PATH.
27804                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
27805                 compile time variable.
27806                 -Removed init_default_path and call mono_set_rootdir from
27807                 libmonoos.a instead (windows only).
27808
27809         * assembly.h: declare mono_assembly_getrootdir().
27810
27811         * domain.c:
27812         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
27813
27814         * loader.c: s/getenv/g_getenv/
27815
27816 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
27817
27818         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
27819
27820         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
27821
27822         * metadata.h: Add new marshalling conversions.
27823
27824         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
27825         function.
27826
27827         * reflection.c (mono_reflection_get_type): Lookup the type in all
27828         modules of a multi-module assembly. Fixes #58291.
27829
27830 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
27831
27832         * threads.c: Before aborting a background, set the StopRequested
27833         state.  This avoids throwing the Abort exception.
27834         In mono_thread_manage, don't continue with the shutdown until all
27835         aborted threads have actually stopped.
27836
27837 2004-05-10  Jackson Harper  <jackson@ximian.com>
27838
27839         * locales.c: Remove the modifier from culture names.
27840         
27841 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27842
27843         * Makefile.am: monosn is not installed any more. It has been deprecated
27844         in favor of sn.
27845
27846 2004-05-07  Jackson Harper  <jackson@ximian.com>
27847
27848         * locales.c
27849         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
27850         Fix array construction, add bailout if the length is 0.
27851
27852 2004-05-07  Dick Porter  <dick@ximian.com>
27853
27854         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
27855         machine doesn't have a DNS entry.  Patch by Urs Muff
27856         (umuff@quark.com), fixes bug 57928.
27857
27858 2004-05-06  Jackson Harper  <jackson@ximian.com>
27859
27860         * reflection.c: Handle null PublicTokens properly. alloc mem for
27861         assembly names culture so we dont crash when freeing it.
27862         
27863 2004-05-06  Jackson Harper  <jackson@ximian.com>
27864
27865         * assembly.c: Check the usergac when loading with partial names.
27866         
27867 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
27868
27869         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
27870         does nothing for now (not required for Linux/Windows) but the class
27871         library can call it (and a newer or modified runtime could need it).
27872         * icall.c: Registred icall.
27873
27874 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27875
27876         * loader.c: prints a message on module loading error we set MONO_DEBUG
27877         environment variable.
27878
27879 2004-05-05  Jackson Harper  <jackson@ximian.com>
27880
27881         * appdomain.c: Handle PublicKeyToken=null properly.
27882         
27883 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
27884
27885         * environment.c|h: Added icall ves_icall_System_Environment_
27886         GetOSVersionString to get the current OS version as a string.
27887         * icall.c: Registred icall.
27888
27889 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
27890
27891         * object.c: in mono_object_get_virtual_method(), take into account that
27892         non-virtual methods don't have a slot in the vtable. Check needed when
27893         the object is a proxy.
27894
27895 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
27896
27897         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
27898         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
27899
27900         * object.c (mono_class_compute_gc_descriptor): Fix warning.
27901
27902         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
27903         passed when a valuetype is expected.
27904
27905         * object.c (mono_unhandled_exception): Only set the exit code if the
27906         exception happens in the main thread. Fixes thread5.exe.
27907
27908         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
27909         invalid names. Fixes #58047.
27910
27911 2004-05-03  Jackson Harper  <jackson@ximian.com>
27912
27913         * assembly.c: This line was committed accidently and is unneeded.
27914         
27915 2004-05-03  Jackson Harper  <jackson@ximian.com>
27916
27917         * icall.c: Add new icall for Assembly::LoadWithPartialName
27918         * assembly.c/.h: new function that probes the GAC to load partial
27919         assembly names by Paolo Molaro.
27920         
27921 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27922
27923         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
27924         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
27925         (type_get_fully_qualified_name): Added PublicKeyToken when building a
27926         full type name.
27927
27928 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27929
27930         * appdomain.c: fixed check for 'neutral' culture and removed warning.
27931         * reflection.c: fix bug when parsing a full type name and Version is not
27932         the last thing in the string.
27933
27934 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
27935
27936         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
27937         crashes when it is freed.
27938
27939 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27940
27941         * assembly.c: print the compat warning to stderr.
27942
27943 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
27944
27945         * assembly.c (mono_assembly_load_references): Add a compatibility
27946         hack to run old applications that might be still referencing the
27947         3300-based assemblies, only do this for System.xxx.
27948
27949 2004-05-01  Jackson Harper  <jackson@ximian.com>
27950
27951         * appdomain.c: If the culture is neutral we set it to "".
27952         
27953 2004-04-29  Jackson Harper  <jackson@ximian.com>
27954
27955         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
27956
27957 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
27958  
27959         * string-icalls.c: added low overhead function for copying chars
27960         * icall.c: added needed icall for the above function
27961  
27962 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27963
27964         * icall.c: fix return value of get_global_assembly_cache.  Implemented
27965         Environment.GetLogicalDrives.
27966
27967 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
27968
27969         * rand.c: try and talk to egd or prngd
27970         for random bytes if opening devices fail.
27971
27972 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
27973
27974         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
27975         alignment for the type using the native alignment of its members 
27976         instead of using klass->min_align.
27977
27978         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
27979
27980 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27981
27982         * file-io.c:
27983         * socket-io.c: added check for sys/aio.h.
27984
27985 2004-04-28  Dick Porter  <dick@ximian.com>
27986
27987         * threads.c: Don't abort a thread thats already aborting, when
27988         terminating everything.
27989
27990 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27991
27992         * icall.c: added 2 new async calls for Socket.
27993
27994         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
27995         IO on *nix systems.
27996
27997         * threadpool.c: removed unused variable.
27998
27999 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
28000
28001         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
28002
28003 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
28004
28005         * locales.c: put back string_invariant_tolower () and
28006         string_invariant_toupper ().
28007
28008 2004-04-26 David Waite <mass@akuma.org>
28009
28010         * file-io.h:
28011         * socket-io.h:
28012         * threads.h:
28013         * unicode.h: remove comma from end of enumeration declarations
28014
28015 2004-04-26 David Waite <mass@akuma.org>
28016
28017         * debug-mono-symfile.h:
28018         * decimal.c:
28019         * mono_debug.h:
28020         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
28021
28022
28023 2004-04-26  Jackson Harper  <jackson@ximian.com>
28024
28025         * appdomain.c: Increment version number.
28026         
28027 2004-04-26  Jackson Harper  <jackson@ximian.com>
28028
28029         * appdomain.c: Set assembly references public token value when
28030         PublicKeyToken is specified, not the hash_value. Free public token
28031         values when free assembly name data. Previously the public key
28032         token was hex decoded, however we are using hex encoded public key
28033         tokens, so this is not neccasary.
28034         * assembly.c: Lookup assemblies in the gac if their public token
28035         value is set. Add function to allow enabling user gac
28036         lookups. Specify whether or not the assembly was loaded from the
28037         GAC. Compare full assembly names when checking the cache for
28038         assemblies (Temporarily disabled see comment in code). Remove
28039         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
28040         specifies trace-loader they get extra info to stdout on the
28041         loading of assemblies.
28042         * image.h: Add a field for an assembly references public token
28043         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
28044         whether an assembly has been loaded from the GAC.
28045         * image.c: Remove a corlib -> mscorlib name mapping.
28046         * loader.h: Add function to enable/disable the user gac.
28047         * mono-config.c: Check if the usergac is enabled in the config
28048         file.
28049         * icall.c: New icall to determine whether or not an assembly has
28050         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
28051         * tabldefs.h: Add constant for assemblyref flag that specifies a
28052         full public key is used instead of a public token.
28053         * reflection.c: Remove mscorlib -> corlib mappings. Set
28054         PublicTokenValue instead of hash value. This value is a hex
28055         string so it does not need to be expanded.
28056
28057 2004-04-26  Martin Baulig  <martin@ximian.com>
28058
28059         * mono-debug-debugger.c (mono_debugger_initialize): Set
28060         `mono_debugger_initialized' before calling mono_debug_lock().
28061
28062 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
28063
28064         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
28065           InternalToUpper/InternalToLower.
28066         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
28067           removed invariant culture shortcut.  This is now done in managed code.
28068         * locales.c: (string_invariant_toupper/tolower) removed.
28069
28070 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28071
28072         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
28073         Added Poll internal call.
28074
28075         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
28076         call for Poll. Select was too heavy for polling a single socket.
28077
28078         * threadpool.[ch]: added mono_threadpool_cleanup.
28079         * threads.c: use it. Don't use Thread_Abort on windows.
28080
28081 2004-04-23  Martin Baulig  <martin@ximian.com>
28082
28083         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
28084
28085 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
28086
28087         * icall.c: Registred new icalls for key pair protection and added an
28088         icall for Environment.GetFolderPath on Windows.
28089         * security.c|h: Added new icalls for key pair protection.
28090
28091 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28092
28093         * socket-io.c: don't display the non-supported family warning for known
28094         families. Now this is not displayed on windows when checking support
28095         for IPv4/IPv6.
28096
28097 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28098
28099         * class.c: don't display the layout warning for static fields.
28100
28101 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
28102
28103         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
28104         * locales.c, locales.h: Added new icalls for culture-specific
28105         Char.ToLower and Char.ToUpper.
28106
28107 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28108
28109         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
28110         by David Waite.
28111
28112 2004-04-20  Martin Baulig  <martin@ximian.com>
28113
28114         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
28115         of the type name before passing it to mono_reflection_type_from_name().
28116
28117 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
28118
28119         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
28120         encodings here. Fixes #56965.
28121
28122 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
28123
28124         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
28125         fix test on strstr result not that I can see anything that
28126         relies on the result.
28127
28128 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
28129
28130         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
28131         Fixes #57081.
28132
28133         * marshal.c (mono_marshal_get_string_encoding): New helper function.
28134
28135         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
28136         function to determine which marshalling to use for strings. Fixes
28137         #56965.
28138
28139         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
28140
28141         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
28142
28143 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
28144
28145         * icall.c: #include mono-config.h
28146
28147 2004-04-15  Jackson Harper  <jackson@ximian.com>
28148
28149         * culture-info-tables.h: Fix date formats for en-US culture.
28150         
28151 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
28152
28153         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
28154         ThreadPool.SetMinThreads.
28155         * threadpool.c: Implemented ThreadPool.GetMinThreads and
28156         ThreadPool.SetMinThreads.
28157
28158 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
28159
28160         * mono-config.c: also load the .config file in the directory
28161         where the assembly was found.
28162
28163 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
28164
28165         * assembly.c: load per-assembly config files.
28166         * icall.c: decrapified code to get the config dir and moved to
28167         mono-config.c.
28168         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
28169         per-assembly config files. When doing a dll map lookup give precedence
28170         to the per-assembly data.
28171
28172 2004-04-14  Martin Baulig  <martin@ximian.com>
28173
28174         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
28175         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
28176         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
28177
28178         * mono-debugger-debugger.c: While the debugger is locked, remember
28179         whether the symbol tables have changes and send one single
28180         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
28181
28182 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
28183
28184         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
28185
28186         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
28187         function.
28188
28189         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
28190         account when marshalling string arrays. Fixes #56965.
28191
28192 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
28193
28194         * icall.c: Add new icalls mapping for security.
28195         * security.c|h: Add internal calls for WindowsIdentity,
28196         WindowsImpersonationContext and WindowsPrincipal.
28197
28198 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
28199
28200         * class.c: Added comment to ensure the System.MonoDummy class
28201         is removed when no longer necessary
28202
28203 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
28204
28205         * appdomain.c: Pass arguments to the bootstraping exceptions to
28206         minimize JITed methods at boot
28207
28208         * metadata.c (mono_exception_from_name_two_strings): Allow for the
28209         second string to be null.
28210
28211         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
28212         Change the protocol to minimize the JIT methods at startup.  Now
28213         it Returns the internal codepage, if the value of "int_code_page"
28214         is 1 at entry, and we can not compute a suitable code page
28215         number, returns the code page as a string.
28216
28217 2004-04-13  Jackson Harper  <jackson@ximian.com>
28218
28219         * culture-info-tables.h: Fix number of decimal digits for all
28220         english locales.
28221
28222 2004-04-13  Jackson Harper  <jackson@ximian.com>
28223
28224         * icall.c: Clairfy out of sync error message. It is not always
28225         your corlib that is out of sync.
28226
28227 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
28228
28229         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
28230         properties when only the set accessor is overriden. Fixes #55874.
28231
28232 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
28233
28234         * assembly.c (mono_assembly_load_references): Make this thread safe.
28235         Fixes #56327.
28236
28237 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
28238
28239         * monosn.c: Add missing initialization calls.
28240
28241 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
28242
28243         * locales.c:
28244         ves_icall_System_Globalization_CultureInfo_construct_number_format
28245         Fix g_assert so it compiles on fussier compilers re int/ptr
28246         mismatch
28247
28248 2004-04-08  Dick Porter  <dick@ximian.com>
28249
28250         * socket-io.h:
28251         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
28252         53992.  Also rearrange the code so that the internal calls return
28253         an error value and exceptions are thrown from managed code.
28254
28255         * icall.c: Add type info to the socket icalls.
28256
28257 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28258
28259         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
28260         owes me a beer.
28261
28262 2004-04-07  Martin Baulig  <martin@ximian.com>
28263
28264         * class.c (mono_class_from_generic_parameter): Don't default
28265         `klass->parent' to `mono_defaults.object_type'.
28266
28267 2004-04-07  Martin Baulig  <martin@ximian.com>
28268
28269         * reflection.c (mono_reflection_initialize_generic_parameter): Set
28270         `param->pklass->reflection_info'.       
28271
28272 2004-04-07  Jackson Harper  <jackson@ximian.com>
28273
28274         * culture-info-tables.h: Fix date separator symbol.
28275         
28276 2004-04-07  Martin Baulig  <martin@ximian.com>
28277
28278         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
28279         from System.Type to System.MonoType.
28280
28281 2004-04-07  Martin Baulig  <martin@ximian.com>
28282
28283         * reflection.h
28284         (MonoReflectionGenericParam): Added `has_reference_type' and
28285         `has_value_type' fields.
28286
28287         * reflection.c (mono_image_get_generic_param_info): Encode the
28288         correct flags if we have the `class' or `struct' constraint.
28289
28290 2004-04-07  Martin Baulig  <martin@ximian.com>
28291
28292         * reflection.h
28293         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
28294
28295 2004-04-07  Jackson Harper  <jackson@ximian.com>
28296
28297         * appdomain.c: Revert extra patches, just wanted to bump the
28298         version number.
28299         
28300 2004-04-07  Jackson Harper  <jackson@ximian.com>
28301
28302         * Makefile.am: Add culture-info private headers.
28303         * icall.c: Add new icalls for contructing locales.
28304         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
28305         * locales.h: Declare new culture info construction methods.
28306         * object.h: Add new fields used to avoid the CultureMap to
28307         MonoCultureInfo.
28308         * culture-info.h: Definition of structs used in the culture info
28309         tables.
28310         * culture-info-tables.h: Autogenerated tables that contain culture
28311         info data. This file was generated with the locale-builder tool.
28312         * appdomain.c: Incement corlib version number.
28313         
28314 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
28315
28316         * appdomain.c: (mono_runtime_init) move mono_thread_init
28317         to before mono_object_new calls so critical sections
28318         are initialized before use.
28319
28320 2004-04-07  Martin Baulig  <martin@ximian.com>
28321
28322         * icall.c
28323         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
28324         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
28325         (ves_icall_MonoGenericParam_initialize): Removed.
28326         (monogenericparam_icalls): Removed.
28327         (generictypeparambuilder_icalls): Added new table for
28328         System.Reflection.Emit.GenericTypeParameterBuilder.
28329
28330         * reflection.c
28331         (mono_reflection_define_generic_parameter): Removed.
28332         (mono_reflection_initialize_generic_parameter): This is now called
28333         from GenericTypeParameterBuilder's .ctor.
28334
28335 2004-04-06  Martin Baulig  <martin@ximian.com>
28336
28337         * class.c (mono_class_init): Don't inflate nested classes in a
28338         generic instance.
28339         (mono_type_get_name_recurse): Include the generic arguments for
28340         generic instances and generic type declarations.
28341         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
28342         (_mono_class_get_instantiation_name): Removed.
28343         (mono_class_create_generic): Always use `gklass->name' as our name.
28344
28345         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
28346
28347         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
28348         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
28349         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
28350         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
28351         closed generic methods here.
28352
28353         * reflection.c
28354         (mono_reflection_generic_inst_get_nested_types): Removed.
28355         (inflate_mono_method): Copy the generic parameters from the
28356         MonoMethodHeader into out MonoGenericMethod.
28357
28358 2004-04-06  Martin Baulig  <martin@ximian.com>
28359
28360         * row-indexes.h
28361         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
28362
28363         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
28364
28365         * reflection.c (build_compressed_metadata): If we have any entries
28366         in the GenericParam, MethodSpec or GenericParamConstraint tables,
28367         set the header version to 1.1.
28368
28369 2004-04-06  Martin Baulig  <martin@ximian.com>
28370
28371         * class.c (mono_class_init): If we're a generic instance,
28372         initialize our nested classes, too.
28373         (_mono_class_get_instantiation_name): Deal with the new `!%d'
28374         suffix. 
28375
28376 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28377
28378         * process.c: quote the argument passed to the shell on windows.
28379
28380 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
28381
28382         * threads.c (mono_alloc_special_static_data): Allow this to be
28383         called during startup.
28384
28385 2004-04-02  Martin Baulig  <martin@ximian.com>
28386
28387         * icall.c
28388         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
28389
28390 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
28391
28392         * icall.c: Fix build.
28393
28394 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
28395
28396         * Makefile.am: Added security.c|h.
28397         * icall.c: Added icall for get_UserName;
28398         * security.c: New file for security related icalls. Added function
28399         get_UserName for System.Environment (fix #56144).
28400         * security.h: New. Header file for security.c
28401
28402 2004-04-02  Dick Porter  <dick@ximian.com>
28403
28404         * icall.c: Deleted the icalls that were obsoleted some time ago
28405         by the ICU string code, and which were mixed into the icall
28406         rearranging.  Fixes bug 55969.
28407
28408         * string-icalls.h: 
28409         * string-icalls.c: Deleted the code that those icalls reference.
28410
28411 2004-04-01  Martin Baulig  <martin@ximian.com>
28412
28413         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
28414
28415         * class.c (mono_class_from_generic_parameter): Don't set 
28416         TYPE_ATTRIBUTE_INTERFACE.
28417         (my_mono_class_from_generic_parameter): Likewise.
28418
28419 2004-04-01  Martin Baulig  <martin@ximian.com>
28420
28421         * loader.c (find_method): Added an optional `MonoClass *ic'
28422         argument to search in a specific interface.
28423         (mono_get_method_constrained): New public function.
28424
28425 2004-04-01  Martin Baulig  <martin@ximian.com>
28426
28427         * reflection.c (mono_image_get_generic_field_token): Use the
28428         `handleref' cache here.
28429
28430 2004-04-01  Martin Baulig  <martin@ximian.com>
28431
28432         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
28433
28434         * reflection.c (create_generic_typespec): Use the `typespec' hash
28435         here, not the `typeref' one.    
28436
28437 2004-04-01  Martin Baulig  <martin@ximian.com>
28438
28439         * class.c (mono_class_inflate_generic_type): Moved the
28440         functionality into a new static inflate_generic_type() which
28441         returns NULL if it didn't do anything.  Only increment the
28442         `mono_stats.inflated_type_count' if we actually inflated
28443         something.
28444         (mono_class_get_full): Check the classes type to see whether we
28445         need to inflate it; also inflate MONO_TYPE_(M)VAR.
28446
28447 2004-04-01  Jackson Harper  <jackson@ximian.com>
28448
28449         * reflection.c: Set culture for assembly references.
28450         
28451 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
28452
28453         * reflection.[ch], icall.[ch], Fix support for pinning variables.
28454
28455 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28456
28457         * assembly.c:
28458         (do_mono_assembly_open): the critical section also covers
28459         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
28460
28461 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28462
28463         * threads.c:
28464         (mono_manage_threads): abort the background threads when finishing.
28465         Fixes bug #47232.
28466
28467 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28468
28469         * gc.c: only close the done_event handle if there was no timeout.
28470         C-ified comments.
28471
28472 2004-03-30  Martin Baulig  <martin@ximian.com>
28473
28474         * icall.c (icall_entries): It's called "System.Activator", not
28475         "System.Activation".    
28476
28477 2004-03-30  Martin Baulig  <martin@ximian.com>
28478
28479         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
28480         (mono_class_create_from_typespec): Likewise.
28481
28482 2004-03-30  Martin Baulig  <martin@ximian.com>
28483
28484         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
28485         `has_ctor_constraint' and `initialized'.
28486
28487 2004-03-30  Martin Baulig  <martin@ximian.com>
28488
28489         * reflection.c (encode_new_constraint): New static function to add
28490         the constructor constraint attribute to a type parameter.
28491         (encode_constraints): Call encode_new_constraint() if necessary.
28492
28493         * reflection.h
28494         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
28495
28496         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
28497         
28498 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
28499
28500         * reflection.c, icall.c: add support for pinning variables. 
28501
28502 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
28503
28504         * marshal.c (mono_marshal_get_managed_wrapper):
28505         init bool local with zero rather than null.
28506
28507 2004-03-29  Martin Baulig  <martin@ximian.com>
28508
28509         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
28510         the "official" behavior here.
28511         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
28512
28513 2004-03-29  Martin Baulig  <martin@ximian.com>
28514
28515         * icall.c: Reflect latest API changes.
28516
28517 2004-03-29  Martin Baulig  <martin@ximian.com>
28518
28519         * loader.c (mono_get_method_from_token): Also call
28520         mono_metadata_load_generic_params () for abstract and interface
28521         methods; replace the type arguments in the method signature with
28522         the ones which are loaded from the metadata.
28523
28524 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
28525
28526         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
28527         of the lock is not the current thread. MS.NET don't do it, in spite of
28528         what the documentation says. See bug #56157.
28529
28530 2004-03-28  Martin Baulig  <martin@ximian.com>
28531
28532         * class.c (mono_class_init): Don't call init_properties() and
28533         init_events() for generic instances; set `prop->parent' when
28534         inflating properties.
28535
28536         * reflection.c (mono_generic_inst_get_object): Call
28537         `mono_class_init (ginst->klass)'.
28538         (mono_type_get_object): Only create a MonoGenericInst if your
28539         generic type is a TypeBuilder.
28540         (do_mono_reflection_bind_generic_parameters): Only set
28541         `ginst->is_dynamic' if our generic type is a TypeBuilder.
28542
28543 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
28544
28545         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
28546         Fixes #56091.
28547
28548 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28549
28550         * icall.c: added Kill_internal icall.
28551         * process.[ch]: added Kill_internal icall.
28552
28553 2004-03-25  Martin Baulig  <martin@ximian.com>
28554
28555         * class.h (MonoStats): Added `generic_instance_count',
28556         `inflated_method_count', `inflated_type_count' and
28557         `generics_metadata_size'.       
28558
28559 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28560
28561         * reflection.c: no warnings now.
28562
28563 2004-03-25  Martin Baulig  <martin@ximian.com>
28564
28565         * class.c (mono_class_get_full): New public function; does a
28566         mono_class_get(), but also takes a `MonoGenericContext *'.
28567
28568         * loader.c (mono_field_from_memberref): Renamed to
28569         `field_from_memberref', made static and added `MonoGenericContext *'
28570         argument.
28571         (mono_field_from_token): Added `MonoGenericInst *' argument.
28572         (method_from_memberef): Likewise.
28573         (mono_get_method_from_token): Likewise.
28574         (mono_get_method_full): New public function; does a
28575         mono_get_method(), but also takes a `MonoGenericContext *'.
28576
28577         * verify.c (mono_method_verify): Get the method's generic context
28578         and pass it to mono_field_from_token(), mono_get_method_full() and
28579         mono_class_get_full().
28580
28581 2004-03-25  Martin Baulig  <martin@ximian.com>
28582
28583         * class.c (mono_class_inflate_generic_type): Take a
28584         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
28585         `MonoGenericMethod *'.
28586
28587 2004-03-25  Martin Baulig  <martin@ximian.com>
28588
28589         * loader.h (MonoMethodInflated): Store the MonoGenericContext
28590         instead of the MonoGenericMethod here.
28591
28592 2004-03-25  Martin Baulig  <martin@ximian.com>
28593
28594         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
28595         each time we create a new MonoGenericInst, we also create a new
28596         context which points back to us.
28597
28598         * class.c (inflate_method): Use `ginst->context' instead of
28599         creating a new context.
28600
28601         * loader.c (method_from_memberref): Use
28602         `klass->generic_inst->context' instead of creating a new context.
28603
28604 2004-03-25  Martin Baulig  <martin@ximian.com>
28605
28606         * class.h (MonoGenericContext): New struct.
28607         (MonoGenericMethod): Removed `generic_inst'.
28608
28609         * class.c (mono_class_inflate_generic_method): Take a
28610         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
28611
28612 2004-03-25  Martin Baulig  <martin@ximian.com>
28613
28614         * loader.h (MonoMethodInflated): New typedef.
28615
28616         * metadata.h (MonoMethodSignature): Removed `gen_method', make
28617         `generic_param_count' consume just 30 bits, added `is_inflated'
28618         and `has_type_parameters' flags (one bit each).
28619
28620         * class.c (mono_class_inflate_generic_method): Create a
28621         MonoMethodInflated instead of a MonoMethodNormal and set
28622         `is_inflated' in the method signature.
28623
28624         * class.h (MonoGenericMethod): Removed `generic_method'.
28625
28626 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
28627
28628         * image.c: Make sure the name of a MonoImage is always an absolute path.
28629           This fixes bug #54415.
28630
28631 2004-03-24  Martin Baulig  <martin@ximian.com>
28632
28633         * class.c (mono_class_setup_vtable): If we're a generic instance,
28634         use our generic type's vtable size.
28635
28636 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
28637
28638         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
28639         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
28640         problems.
28641
28642 2004-03-23  Martin Baulig  <martin@ximian.com>
28643
28644         * class.h (MonoDynamicGenericInst): Added `int count_events' and
28645         `MonoEvent *events'.
28646
28647         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
28648         (typebuilder_icalls): Added "get_event_info"; calls
28649         mono_reflection_event_builder_get_event_info(). 
28650
28651         * reflection.c (mono_reflection_generic_inst_initialize): Added
28652         `MonoArray *events'.
28653         (mono_reflection_event_builder_get_event_info): New function.
28654
28655 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
28656
28657         * object.h: add mono_type_initialization_init
28658
28659         * object.c (mono_runtime_class_init): 
28660         implement class constructor synchronization rules
28661         to cope with threading issues.  
28662         add mono_type_initialization_init
28663
28664         * appdomain.c (mono_runtime_init): call 
28665         mono_type_initialization_init
28666
28667         * class.h: removing initializing field from MonoVTable
28668
28669 2004-03-23  Martin Baulig  <martin@ximian.com>
28670
28671         * class.c (my_mono_class_from_generic_parameter): Use
28672         `param->name' if it's not NULL. 
28673
28674 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
28675
28676         * class.c: do not insert non-virtual methods in the vtable.
28677         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
28678         that means the method is non-virtual. This never would have
28679         happened before.
28680
28681 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
28682
28683         * profiler.c: Added lock for accessing coverage_hash.
28684
28685 2004-03-22  Martin Baulig  <martin@ximian.com>
28686
28687         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
28688         `method->method->signature->generic_param_count != 0' to make it
28689         work for interface methods.
28690
28691 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28692
28693         * process.c: quote the string passed to the shell using g_shell_quote.
28694
28695 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28696
28697         * threads.c:
28698         (mono_threads_manage): don't remove the finalizer thread and self
28699         from the threads hash table so that mono_thread_manage can be called
28700         more than once.
28701
28702 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28703
28704         * process.c: quote the arguments when UseShellExecute is true. Fixes
28705         bug #55790.
28706
28707 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28708
28709         * threads.c: set mono_thread_detach as a cleanup routine for every
28710         thread. This way it's always executed upon thread termination, either
28711         aborted or finished normally. No more xsp hangs!
28712
28713 2004-03-17  Martin Baulig  <martin@ximian.com>
28714
28715         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
28716         `int count_nested' and a `MonoType **nested'.
28717
28718         * reflection.c (mono_reflection_bind_generic_parameters): Moved
28719         most of the functionality into a new static
28720         do_mono_reflection_bind_generic_parameters() and don't take a
28721         `MonoType *nested_in' argument any more.  Don't compute nested
28722         types here.
28723         (mono_reflection_generic_inst_get_nested_types): New public method
28724         to get nested types.
28725
28726         * class.c (mono_class_create_generic): Set `klass->nested_in' if
28727         we're a nested class.
28728
28729         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
28730         mono_reflection_generic_inst_get_nested_types() to compute the
28731         nested types.
28732
28733 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
28734
28735         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
28736         descriptive error message under windows.
28737         
28738 2004-03-17  Martin Baulig  <martin@ximian.com>
28739
28740         * class.c (dup_type): Added `const MonoType *original' argument;
28741         copy the attrs from the original type.
28742
28743 2004-03-17  Martin Baulig  <martin@ximian.com>
28744
28745         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
28746         `m->generic_inst_cache' here.
28747
28748 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
28749
28750         * exception.h exception.c: Add stack_overflow_exception.
28751
28752 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28753
28754         * threadpool.c:
28755         (overlapped_callback): call SetEvent *after* invoking the callback.
28756         No need to call CloseHandle.
28757
28758 2004-03-16  Martin Baulig  <martin@ximian.com>
28759
28760         * reflection.c (mono_image_get_fieldref_token): Take a
28761         `MonoReflectionField *' instead of a `MonoClassField *' and a
28762         `MonoClass *'; store the `MonoReflectionField *' in the hash.
28763
28764 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28765
28766         * appdomain.c: don't add the culture to the filename we're looking for
28767         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
28768
28769 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28770
28771         * locales.c: don't ignore symbols when doing case insensitive compares.
28772         Thanks Dick! Fixes bug #54046.
28773
28774         * threads.c: surround 'threads' usage with enter/leave in
28775         mono_thread_manage.
28776
28777 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
28778
28779         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
28780         implicitly marshalled as [Out]. Fixes #55450.
28781
28782         (mono_marshal_get_runtime_invoke): Zero out the result if there is
28783         an exception.
28784
28785 2004-03-16  Martin Baulig  <martin@ximian.com>
28786
28787         * class.c (mono_class_from_generic_parameter): Use the actual
28788         parameter name. 
28789
28790 2004-03-16  Martin Baulig  <martin@ximian.com>
28791
28792         * reflection.c (type_get_signature_size): New static function.
28793         Compues the size of the type in a method signature.
28794         (method_get_signature_size): New static function; calls
28795         type_get_signature_size() to compute the actual size of the
28796         method's signature.
28797         (method_encode_signature): Use method_get_signature_size() to get
28798         the signature's size rather than using `nparams * 10'.
28799
28800 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28801
28802         * file-io.h: define here WapiOverlapped on windows. I don't want the
28803         regular OVERLAPPED one.
28804
28805         * file-io.c:
28806         * threadpool.c: somehow, BindIoCompletionCallback is not found.
28807         Disabling AIO on windows.
28808
28809 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28810
28811         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
28812         bug #55385.
28813
28814 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28815
28816         * appdomain.c: upgraded corlib version.
28817
28818         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
28819         and BeginWrite. Allow opening files for asynchrnous operations.
28820
28821         * file-io.h: new struct that maps FileStreamAsyncResult.
28822         * icall.c: added new icalls.
28823         * process.[ch]: support setting child process environment variables
28824         and use the SHELL or COMSPEC when UseShellExecute is true.
28825
28826         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
28827         callback for async. IO is here and also BindHandle.
28828
28829         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
28830         from here.
28831
28832 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
28833
28834         * reflection.c (create_custom_attr): Allow len == 0.
28835
28836         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
28837         computation on big-endian machines.
28838
28839 2004-03-13  Martin Baulig  <martin@ximian.com>
28840
28841         * class.h (MonoGenericInst): Added `int count_ifaces'.
28842
28843         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
28844         `ginst->count_ifaces' instead `klass->interface_count' since we
28845         may get called before the vtable is created.
28846
28847         * loader.c (mono_method_get_param_names): If we're a generic
28848         instance, return and don't initialize the class.
28849
28850         * reflection.c (mono_reflection_setup_generic_class): Don't call
28851         ensure_runtime_vtable().
28852         (mono_reflection_bind_generic_parameters): Set
28853         `ginst->count_ifaces'.
28854
28855 2004-03-11  Jackson Harper <jackson@ximian.com>
28856
28857         * icall.c:
28858         * unicode.c:
28859         * unicode.h: Remove unused System.Char icalls.
28860         
28861 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
28862
28863         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
28864         code when we P/Invoke the first library in Windows.Forms, instead
28865         of when we first open the assembly.
28866
28867         * assembly.c: Drop the lookup from here.
28868
28869 2004-03-10  Martin Baulig  <martin@ximian.com>
28870
28871         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
28872         class for properties, fields and events.  Finally fixes #54945.
28873
28874 2004-03-10  Martin Baulig  <martin@ximian.com>
28875
28876         * metadata.c (mono_metadata_class_equal): New static function;
28877         checks whether two generic instances or two generic parameters are
28878         equal.
28879         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
28880         compare classes.        
28881
28882 2004-03-10  Martin Baulig  <martin@ximian.com>
28883
28884         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
28885
28886         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
28887         argument and write it into the `reflection_info' field.
28888
28889         * icall.c
28890         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
28891         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
28892
28893 2004-03-09  Jackson Harper  <jackson@ximian.com>
28894
28895         * char-conversions.h: use 8 bits for numeric data its all we need
28896         * icall.c: numeric data is only 8 bits now.
28897
28898 2004-03-09  Martin Baulig  <martin@ximian.com>
28899
28900         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
28901
28902         * class.c (init_properties, init_events): Initialize the new
28903         `parent' field.
28904
28905         * reflection.c (typebuilder_setup_properties): Likewise.
28906         (typebuilder_setup_events): Likewise.
28907
28908         * reflection.h (MonoEventInfo): Replaced `parent with
28909         `declaring_type' and `reflected_type'.
28910
28911         * icall.c (ves_icall_get_property_info): Distinguish between
28912         declaring and reflected type.
28913         (ves_icall_get_event_info): Likewise.
28914
28915 2004-03-09  Martin Baulig  <martin@ximian.com>
28916
28917         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
28918         (ves_icall_Type_GetField): Correctly set field->klass.
28919
28920 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
28921
28922         * loader.h: Fix warning.
28923
28924 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
28925
28926         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
28927         library routine if present.  Notice that it will still continue
28928         executing even if its missing, for those working on the Gtk#
28929         edition of Windows.Forms.
28930
28931         * assembly.c (do_mono_assembly_open): If loading the
28932         System.Windows.Forms call mono_loader_wini_init.
28933
28934 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
28935
28936         * class.h: Added MonoRemoteClass struct.
28937         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
28938         function for MonoStrings.
28939         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
28940         Added internal call for getting the proxy type.
28941         * marshal.c: Get the type of transparent proxies from its remote_class.
28942         Added methods that generate the IL for type checks and casts:
28943         mono_marshal_get_isinst, mono_marshal_get_castclass, 
28944         mono_marshal_get_proxy_cancast.
28945         * marshal.h: Declaration of the previous new methods.
28946         * object.c: Added new moethods for creating and updating MonoRemoteClass
28947         instances: mono_remote_class, mono_upgrade_remote_class, 
28948         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
28949         * verify.c: FIx transparent_proxy_fields layout.
28950         * appdomain.c: Bump corlib version.
28951
28952 2004-03-04  Jackson Harper  <jackson@ximian.com>
28953
28954         * icall.c: Add icall to access char conversion tables.
28955         * char-conversions.h: Character conversion tables.
28956         * Makefile.am: Add char-conversions.h private header file.
28957         
28958 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
28959
28960         * appdomain.c (unload_thread_main): Increase unloading timeout to
28961         10 sec as a temporary workaround for Nant problems.
28962
28963 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
28964
28965         * gc.c: Add checks for GC_enable and GC_disable.
28966
28967         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
28968         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
28969         (bug #54988).
28970         
28971 2004-02-27  Martin Baulig  <martin@ximian.com>
28972
28973         * reflection.c (mono_reflection_bind_generic_parameters): Take a
28974         `MonoReflectionType *' instead of a `MonoType *'.
28975
28976 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
28977
28978         * gc.c (run_finalize): Avoid finalizing the object representing the
28979         finalizer thread.
28980         (finalizer_thread): Fix warning.
28981
28982 2004-02-25  Martin Baulig  <martin@ximian.com>
28983
28984         * class.c (_mono_class_get_instantiation_name): Added `int offset'
28985         argument for nested types.
28986         (mono_class_create_generic): Added support for nested generictypes.
28987
28988         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
28989         `GList *nested'.
28990
28991         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
28992
28993         * reflection.c (method_encode_signature): Increase the minimum
28994         value of `size' from 10 to 11.
28995         (mono_reflection_bind_generic_parameters): Take `int type_argc'
28996         and `MonoType **types' arguments instead of the `MonoArray
28997         *types'; added `MonoType *nested_in'.  Recursively instantiate
28998         nested classes. 
28999
29000 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
29001
29002         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
29003         stack_overflow_ex members which are used by exception handling.
29004
29005         * appdomain.c (mono_runtime_init): Initialize the new members.
29006
29007         * gc.c (mono_gc_enable): New helper function.
29008         * gc.c (mono_gc_disable): New helper function.
29009
29010 2004-02-23  Martin Baulig  <martin@ximian.com>
29011
29012         * icall.c: I must have been really stupid - make it actually work
29013         this time ;-)
29014
29015 2004-02-23  Martin Baulig  <martin@ximian.com>
29016
29017         * loader.c (method_from_memberref): Only inflate the method if
29018         it's in another klass.
29019
29020 2004-02-23  Martin Baulig  <martin@ximian.com>
29021
29022         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
29023         (mono_class_init): If we're a generic instance and an interface,
29024         compute `class->interface_id'; also create `class->interfaces'
29025         here and inflate them.
29026
29027         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
29028         `ginst->is_open'.
29029         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
29030
29031         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
29032
29033 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
29034
29035         * reflection.c (method_encode_code): Improved the error message
29036         generated by the exception.
29037
29038 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29039
29040         * icall.c: Martin did not do what he said in the ChangeLog for
29041         2004-02-18, but put back the changes for properties and events.
29042         Commenting those changes out again and adding comment to bug #54518.
29043         
29044         * process.c: removed warning.
29045
29046 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
29047
29048         * marshal.c (emit_struct_conv): Print an error message instead of
29049         asserting when a type does not have the StructLayout attribute.
29050
29051 2004-02-20  Martin Baulig  <martin@ximian.com>
29052
29053         * reflection.c (mono_type_get_object): Also use the cache for
29054         generic instances.
29055         (mono_reflection_bind_generic_parameters): Always compute
29056         `ginst->ifaces'.        
29057
29058 2004-02-20  Martin Baulig  <martin@ximian.com>
29059
29060         * class.h (MonoGenericMethod): Removed `klass'.
29061
29062         * class.c (mono_class_inflate_generic_method): Added `MonoClass
29063         *klass' argument.
29064
29065 2004-02-20  Martin Baulig  <martin@ximian.com>
29066
29067         * reflection.c (method_encode_methodspec): Actually use the
29068         uninflated signature for the memberref.
29069
29070 2004-02-20  Martin Baulig  <martin@ximian.com>
29071
29072         * class.h (MonoGenericMethod): Removed `declaring'.
29073
29074         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
29075         is NULL, compute it here.
29076
29077 2004-02-20  Martin Baulig  <martin@ximian.com>
29078
29079         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
29080
29081         * metadata.c (mono_metadata_generic_inst_hash): New method.
29082         (mono_metadata_generic_inst_equal): New method.
29083
29084         * reflection.c (mono_reflection_bind_generic_parameters): Use the
29085         `klass->image->generic_inst_cache' cache to avoid creating
29086         duplicate MonoGenericInst's.
29087
29088         * class.c (mono_class_inflate_generic_type): Use the cache.
29089
29090 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
29091
29092         * object.c: fixed gc descriptor calculation for embedded valuetypes.
29093
29094 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29095
29096         * icall.c: added Socket.WSAIoctl icall.
29097
29098         * socket-io.[ch]: implemented
29099         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
29100
29101 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
29102
29103         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
29104
29105 2004-02-18  Urs C Muff  <umuff@quark.com>
29106
29107         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
29108         this work on PPC and other big-endian architectures.
29109
29110         * debug-mono-symfile.h: Prepended the names of all the `guint32'
29111         fields with an underscore to make sure they're only accessed by
29112         the read32() macro.
29113
29114 2004-02-18  Martin Baulig  <martin@ximian.com>
29115
29116         * icall.c: Put the klass->refclass changes back for methods and
29117         fields, but not for properties and events.  We're currently not
29118         distinguishing between DeclaringType and ReflectedType for
29119         properties and events, that's what caused the regressions.
29120
29121 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29122
29123         * object.c:
29124         (mono_async_result_new): the handle can be NULL.
29125
29126         * threadpool.c: Use an event instead of a semaphore, don't initialize
29127         it until needed. This saves quite a few semaphores from being created
29128         when using the threadpool.
29129
29130 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
29131
29132         * object.c (mono_string_is_interned_lookup): Fix interning of long
29133         strings. Fixes #54473.
29134
29135         * domain.c (ldstr_equal): Optimize if the two strings are equal.
29136
29137         * icall.c: Revert the klass->refclass changes since they introduce
29138         regressions (bug #54518).
29139
29140 2004-02-18  Martin Baulig  <martin@ximian.com>
29141
29142         * class.c (mono_class_init): If we're a generic instance and don't
29143         come from a TypeBuilder, inflate our members here.
29144         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
29145         (mono_class_create_generic): New public method.
29146         (mono_class_initialize_generic): Removed.
29147         (get_instantiation_name): Renamed to
29148         _mono_class_get_instantiation_name() and made it public.
29149
29150 2004-02-18  Martin Baulig  <martin@ximian.com>
29151
29152         * class.c (mono_class_inflate_generic_type): Clear the new
29153         instance's `nginst->klass' when inflating a generic instance.
29154         (mono_class_is_subclass_of): Added (basic) support for generic
29155         instances.
29156
29157 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
29158
29159         * appdomain.h, domain.c: use a MonoCodeManager instead of a
29160         MonoMempool to hold compiled native code.
29161
29162 2004-02-17  Martin Baulig  <martin@ximian.com>
29163
29164         * class.h (MonoDynamicGenericInst): Added `count_properties' and
29165         `properties'.
29166
29167         * reflection.c (mono_reflection_generic_inst_initialize): Added
29168         `MonoArray *properties' argument.
29169
29170         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
29171
29172 2004-02-17  Martin Baulig  <martin@ximian.com>
29173
29174         * icall.c (ves_icall_Type_GetFields): Renamed to
29175         ves_icall_Type_GetFields_internal() and added a
29176         `MonoReflectionType *rtype' argument; pass it to
29177         mono_field_get_object() to set the field's "reflected" type.
29178         (ves_icall_Type_GetConstructors): Likewise.
29179         (ves_icall_Type_GetEvents): Likewise.
29180         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
29181         argument; pass it to mono_method_get_object() to set the method's
29182         "reflected" type.       
29183
29184 2004-02-17  Martin Baulig  <martin@ximian.com>
29185
29186         * class.h (MonoDynamicGenericInst): New type.
29187         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
29188
29189         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
29190         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
29191         (ves_icall_MonoGenericInst_GetFields): New interncall.
29192
29193         * class.c (mono_class_from_generic): Don't call
29194         mono_class_initialize_generic() if this is a dynamic instance;
29195         ie. it's being created from a TypeBuilder.
29196         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
29197         `class->byval_arg.type'.
29198
29199         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
29200         to `inflate_method' and made static.
29201         (mono_reflection_inflate_field): Removed.
29202         (mono_reflection_generic_inst_initialize): New public method.
29203
29204         * reflection.h (MonoReflectionGenericInst): Removed `methods',
29205         `ctors' and `fields'; added `initialized'.
29206
29207 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
29208
29209         * debug-helpers.c (mono_method_full_name): Fix output for empty
29210         namespaces.
29211
29212 2004-02-12  Martin Baulig  <martin@ximian.com>
29213
29214         * class.h (MonoClassField): Added `MonoType *generic_type'.
29215
29216         * reflection.c (mono_image_get_fieldref_token): Added support for
29217         instantiated generic types.
29218         (field_encode_inflated_field): Removed.
29219         (mono_image_get_inflated_field_token): Removed.
29220         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
29221
29222         * reflection.h (MonoReflectionInflatedField): Removed.
29223
29224 2004-02-12  Martin Baulig  <martin@ximian.com>
29225
29226         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
29227         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
29228
29229         * reflection.c (mono_image_get_methodspec_token): Take a
29230         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
29231         (mono_image_create_token): Check whether we have a
29232         `method->signature->gen_method' and call
29233         mono_image_get_methodspec_token() if appropriate.
29234         (inflated_method_get_object): Removed.
29235         (mono_reflection_bind_generic_method_parameters): Return a
29236         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
29237         (mono_reflection_inflate_method_or_ctor): Likewise.
29238
29239         * reflection.h (MonoReflectionInflatedMethod): Removed.
29240
29241 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
29242
29243         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
29244         for custom valuetype marshalling.
29245
29246         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
29247
29248 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29249
29250         * icall.c: fixed WSAGetLastError_internal name.
29251
29252 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
29253
29254         * threads.c (mono_thread_attach): Allow this to be called multiple
29255         times for a thread.
29256         
29257         * threads.c (build_wait_tids): Do not wait for ourselves.
29258
29259         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
29260         appdomain list is empty.
29261
29262         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
29263         memory returned by mono_string_builder_to_utf16, since it points into
29264         managed memory. Thanks to Bernie Solomon for noticing this.
29265
29266         * icall.c: Add AppDomainSetup icalls.
29267
29268         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
29269
29270         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
29271         types.
29272
29273         * reflection.c (reflection_methodbuilder_to_mono_method): Save
29274         custom attributes to the method_aux struct. Also fix array indexes etc.
29275
29276         * loader.c (mono_method_get_param_names): Make dynamic case work again.
29277         
29278 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
29279
29280         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
29281         (both static and runtime) and reduce startup time.
29282
29283 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
29284
29285         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
29286         AsAny marshalling conversion instead of crashing.
29287
29288         * marshal.c: Fix warnings.
29289
29290 2004-02-09  Martin Baulig  <martin@ximian.com>
29291
29292         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
29293
29294         * reflection.h (MonoReflectionInflatedMethod): Removed the
29295         `declaring' field, it's now in the unmanaged MonoGenericMethod.
29296
29297         * reflection.c (method_encode_methodspec): Removed the `method'
29298         argument; we get it from `gmethod->declaring'.
29299         (inflated_method_get_object): Removed the `declaring' argument.
29300
29301 2004-02-09  Martin Baulig  <martin@ximian.com>
29302
29303         * class.h (MonoGenericMethod): New type.
29304         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
29305         `generic_method'.
29306
29307         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
29308         a `MonoGenericMethod *gen_method' one.
29309
29310         * class.c (mono_class_inflate_generic_type): Take an additional
29311         `MonoGenericMethod * argument.  This is only non-NULL if we're
29312         inflating types for a generic method.   
29313         (mono_class_inflate_generic_signature): Renamed to
29314         inflate_generic_signature() and made static; take a
29315         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
29316         (inflate_generic_header): Take a `MonoGenericMethod *' argument
29317         instead of a `MonoGenericInst *' one.
29318         (mono_class_inflate_generic_method): Likewise.
29319
29320         * reflection.c (encode_generic_method_sig): Take a
29321         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
29322         (method_encode_methodspec): Likewise.
29323         (inflated_method_get_object): Likewise. 
29324
29325         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
29326         field with a `MonoGenericMethod *gmethod' one.  
29327
29328 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
29329
29330         * class.h (mono_class_has_parent): add parens to expansion
29331         so you can ! this.
29332
29333 2004-02-08  Martin Baulig  <martin@ximian.com>
29334
29335         * image.h (MonoImage): Removed `generics_cache'.
29336
29337         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
29338         instead of a `MonoType *' argument; removed the `inflate_methods'
29339         argument.  Don't inflate methods here.
29340
29341         * loader.c (find_method): If it's a generic instance, call
29342         mono_class_init() on the `sclass->generic_inst->generic_type'.
29343
29344         * metadata.c (mono_type_size): Make this work on uninitialized
29345         generic instances; call it on the `ginst->generic_type's class.
29346
29347         * reflection.c (mono_reflection_bind_generic_parameters): Call
29348         mono_class_from_generic() to create the `ginst->klass'.
29349
29350 2004-02-08  Martin Baulig  <martin@ximian.com>
29351
29352         * class.h (MonoClass): Changed type of `generic_inst' from
29353         `MonoType *' to `MonoGenericInst *'.
29354
29355 2004-02-08  Martin Baulig  <martin@ximian.com>
29356
29357         * icall.c (ves_icall_Type_BindGenericParameters): Just call
29358         mono_type_get_object(), this is now creating a `MonoGenericInst'
29359         for MONO_TYPE_GENERICINST.
29360         (ves_icall_MonoGenericInst_GetParentType): Likewise.
29361         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
29362
29363         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
29364         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
29365         (inflated_method_get_object): Added `MonoClass *refclass' argument.
29366         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
29367         and reflected type.
29368
29369         * reflection.h (MonoReflectionInflatedMethod): Removed
29370         `declaring_type' and `reflected_type'.
29371
29372 2004-02-08  Martin Baulig  <martin@ximian.com>
29373
29374         * class.h (MonoGenericInst): Added `MonoType *parent' and
29375         `MonoType **ifaces'.
29376
29377         * reflection.h (MonoReflectionGenericInst): Removed `klass',
29378         `parent' and `interfaces'.
29379
29380         * reflection.c (mono_reflection_bind_generic_parameters): Take a
29381         `MonoType *' argument and return a `MonoType *'.
29382
29383         * icall.c
29384         (ves_icall_MonoGenericInst_GetParentType): New interncall.
29385         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
29386
29387 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
29388
29389         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
29390         valuetype marshalling.
29391
29392 2004-02-06  Martin Baulig  <martin@ximian.com>
29393
29394         * class.c
29395         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
29396         (my_mono_class_from_generic_parameter): Likewise.
29397
29398 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
29399
29400         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
29401         contents of the symbol files lazily.
29402
29403         * object.h (MonoThread): Add 'name' and 'name_len' fields.
29404
29405         * threads.h threads.c icall.c: New icalls for getting and setting the
29406         threads name.
29407
29408 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
29409
29410         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
29411         Raise an exception when the domain is not found.
29412
29413 2004-02-03  Martin Baulig  <martin@ximian.com>
29414
29415         * reflection.c (mono_image_get_methodspec_token): Use the
29416         uninflated signature; fixes gen-33.
29417
29418 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
29419
29420         * gc.c threads.c: Make the finalizer thread a normal managed thread so
29421         the finalizer code can use thread functionality.
29422
29423         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
29424         the finalizer thread.
29425
29426         * threads.c: Make some functions more robust.
29427
29428         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
29429
29430         * metadata.h: Add new marshalling conventions.
29431
29432         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
29433         stringbuilder marshalling. Fixes #53700.
29434
29435         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
29436
29437         * reflection.c (mono_image_get_type_info): Save declarative security
29438         info.
29439
29440         * reflection.c (mono_image_get_field_info): Handle uninitialized 
29441         unmanaged fields as well.
29442
29443         * appdomain.c: Bump corlib version.
29444
29445 2004-02-01  Martin Baulig  <martin@ximian.com>
29446
29447         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
29448         method type arguments.  
29449
29450 2004-01-30  Duncan Mak  <duncan@ximian.com>
29451
29452         * marshal.h: Add prototype for
29453         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
29454         and
29455         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
29456         fix the build.
29457
29458 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
29459
29460         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
29461         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
29462
29463 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
29464
29465         * marshal.c (mono_marshal_get_native_wrapper): Add support for
29466         custom marshalling of valuetypes.
29467
29468         * marshal.c: Fix some warnings.
29469
29470 2004-01-29  Martin Baulig  <martin@ximian.com>
29471
29472         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
29473         for generic method parameters.
29474
29475         * reflection.c (method_encode_methodspec): Write the uninflated
29476         signature into the methodspec table.
29477         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
29478         is always the uninflated method.
29479         (reflection_methodbuilder_to_mono_method): Copy the generic
29480         parameters from the MethodBuilder into `header->gen_params'.
29481
29482 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
29483
29484         * class.c (mono_class_from_generic_parameter): Fix warning.
29485
29486 2004-01-27  Martin Baulig  <martin@ximian.com>
29487
29488         * class.c (mono_class_from_generic_parameter): Don't create
29489         `klass->methods' here.  
29490
29491 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
29492
29493         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
29494         extension since it does not work with libraries named lib<FOO>.dll.so.
29495
29496 2004-01-25  Martin Baulig  <martin@ximian.com>
29497
29498         * class.c (mono_class_inflate_generic_type): Added support for
29499         MONO_TYPE_GENERICINST.
29500
29501         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
29502         inflate methods on open constructed types.      
29503
29504 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29505
29506         * object.c: fire ProcessExit event in the root AppDomain after running
29507         Main. Fixes bug #53299.
29508
29509 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
29510
29511         * socket-io.c: include the new socket-wrappers.h header.
29512         Use the wrappers instead of the unix socket functions to make the code
29513         more clear.
29514
29515 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
29516
29517         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
29518
29519         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
29520         Fixes #22532.
29521
29522 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
29523
29524         * reflection.c (mono_image_create_pefile): Handle the case when the
29525         entry point is not a MethodBuilder.
29526
29527         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
29528         field to ReflectionMethod since it is not allways a builder.
29529
29530         * reflection.c (type_get_fully_qualified_name): New helper function to
29531         return the fully qualified name of a type.
29532
29533         * reflection.c (encode_marshal_blob): Always emit the fully qualified
29534         type name for custom marshallers.
29535
29536         * reflection.c (mono_marshal_spec_from_builder): Ditto.
29537
29538         * class.c (mono_class_setup_vtable): If a parent class already 
29539         implements an interface, use the implementing methods from that class.
29540         Fixes #53148.
29541
29542 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29543
29544         * threadpool.c: just return instead of ExitThread to allow for thread
29545         clean up earlier.
29546
29547 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
29548
29549         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
29550         when closing resource modules.
29551
29552         * reflection.c (mono_image_create_pefile): Handle the case when the
29553         entry point is not a MethodBuilder.
29554
29555         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
29556         field to ReflectionMethod since it is not allways a builder.
29557
29558 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
29559
29560         * marshal.c (mono_marshal_get_managed_wrapper): 
29561         mono_marshal_alloc takes native int so CONV_I
29562         the arg for 64bits.
29563
29564 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
29565
29566         * reflection.c (fixup_cattrs): New function to fixup the methoddef
29567         tokens in the cattr table. Fixes #53108.
29568
29569 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29570
29571         * loader.c: don't trim ".dll" before looking up in the config file.
29572         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
29573
29574 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
29575
29576         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
29577         Return the module which contains the resource as well.
29578         (ves_icall_System_Reflection_Module_Close): New icall.
29579
29580         * appdomain.c: Bump corlib version number.
29581
29582         * image.c (mono_image_addref): New public function.
29583
29584         * assembly.c: Call mono_image_addref.
29585
29586         * reflection.c (mono_module_get_object): Increase reference count of 
29587         the image.
29588
29589         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
29590         Fixes #22532.
29591
29592         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
29593         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
29594         proper exceptions on DllImport problems.
29595
29596 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
29597
29598         * class.c, metadata.c: eliminate CSIZE macro.
29599
29600 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
29601
29602         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
29603         * object.h: Added async_callback field in MonoAsyncResult.
29604         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
29605         * verify.c: Added async_callback in MonoAsyncResult layout.
29606
29607 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
29608
29609         * reflection.c (mono_reflection_get_custom_attrs): Add support
29610         for Modules.
29611
29612 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
29613
29614         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
29615         marshalling.
29616         (mono_marshal_method_from_wrapper): Add null pointer check.
29617
29618 2004-01-16  Martin Baulig  <martin@ximian.com>
29619
29620         * debug-mono-symfile.h: Set version number to 36 and reflect
29621         latest symbol writer changes.
29622
29623 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
29624
29625         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
29626         multi-dimensional arrays.
29627         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
29628         (mono_class_from_mono_type): Use bounded_array_class_get.
29629         
29630         * class.c (mono_bounded_array_class_get): New function which takes
29631         a 'bounded' bool argument to distinguish vectors from one dimensional
29632         arrays.
29633
29634         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
29635         bounded_array_class_get if the array has bounds.
29636
29637         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
29638         Search modules loaded using AssemblyBuilder:AddModule as well.
29639
29640 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29641
29642         * appdomain.c: increased corlib version.
29643         * filewatcher.c: removed g_print.
29644         * icall.c:
29645         (get_property_info): only allocate what is actually requested.
29646         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
29647
29648 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29649
29650         * Makefile.am: added filewatcher.[ch]
29651         * filewatcher.[ch]: FileSystemWatcher runtime support.
29652         * icall.c: added new FSW icalls.
29653
29654 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
29655
29656         * string-icalls.c: fix stringbuilder regression as suggested by
29657         Iain McCoy <iain@mccoy.id.au>.
29658
29659 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
29660
29661         * process.c (process_read_stringtable_block): Recognize '007f' as
29662         a language neutral stringtable block.
29663
29664 2004-01-12  Patrik Torstensson
29665
29666         * object.h (MonoStringBuilder) : Changed layout to support our
29667         new stringbuilder class.
29668         * marshal.c: Change marshalling to support the new layout of 
29669         string builder.
29670         * appdomain.c: increased version number because new layout of
29671         string builder.
29672
29673 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
29674
29675         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
29676         assembly name as an string instead of an AssemblyName, since it is
29677         easier to extract info from it.
29678
29679         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
29680         the culture subdirectories too. Fixes #52231.
29681
29682 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29683
29684         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
29685         It takes 2 new parameters with an optional name for the method to look
29686         for and case ignoring info.
29687
29688         * threadpool.c: removed unused variable.
29689
29690 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29691
29692         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
29693         It takes 2 new parameters with an optional name for the property to look
29694         for and case ignoring info.
29695         Fixes bug #52753.
29696
29697 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
29698
29699         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
29700         Fix #52451.
29701
29702 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29703
29704         * appdomain.c:
29705         * assembly.c: escape the uri before passing it to g_filename_from_uri.
29706         Fixes bug #52630.
29707
29708 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
29709
29710         * reflection.c: Add support for more than one unmanaged resource.
29711
29712         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
29713         in field->def_value, as done in all other cases.
29714
29715         * reflection.c (mono_reflection_get_custom_attrs): Add support for
29716         TypeBuilders.
29717
29718         * reflection.c (mono_reflection_create_runtime_class): Remove 
29719         errorneous assignment to klass->element_class, since it is already
29720         done in mono_reflection_setup_internal_class.
29721
29722 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29723
29724         * gc.c: added missing LeaveCriticalSection.
29725         * icall.c: indented a couple of lines.
29726         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
29727         if we call EndInvoke inside a callback. Fixes bug #52601.
29728
29729 2004-01-07  Martin Baulig  <martin@ximian.com>
29730
29731         * mono-debug-debugger.h
29732         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
29733
29734 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
29735
29736         * appdomain.c: Use messages in NotImplementedException.
29737
29738         * exception.c (mono_get_exception_not_implemented): Now this takes
29739         a message argument.
29740
29741         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
29742         exception instead of g_asserting an aborting when something is not
29743         implemented.
29744
29745         Add some inline docs.
29746
29747 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
29748
29749         * reflection.h: Update after changes to object layout.
29750
29751         * reflection.c: Implement saving of unmanaged aka win32 resources.
29752
29753         * appdomain.c: Bump version number.
29754
29755         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
29756         Handle missing domains gracefully.
29757
29758 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
29759
29760         * file-io.c : On Windows, there are much more invalid_path_chars.
29761
29762 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
29763
29764         * class.h, object.c: prepare for GetType () speedup.
29765
29766 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
29767
29768         * profiler.c: workaround for --profile null reference exception on
29769           cygwin. Patch by Patrik Torstensson.
29770
29771 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
29772
29773         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
29774         make work for unaligned access.
29775
29776 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
29777
29778         * class.c: small cleanup (class->fields [i] -> field).
29779         * image.c: check address of metadata is valid.
29780
29781 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
29782
29783         * assembly.h assembly.c (mono_assembly_loaded): New public function to
29784         search the list of loaded assemblies.
29785
29786         * reflection.c (mono_reflection_type_from_name): Use 
29787         mono_assembly_loaded instead of mono_image_loaded.
29788
29789         * reflection.c: Fix warnings.
29790
29791 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
29792
29793         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
29794         is dynamic. This is needed since an assembly can contain both dynamic and
29795         non-dynamic images.
29796
29797         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
29798         assembly->dynamic.
29799
29800         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
29801
29802         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
29803         to store modules loaded using AddModule.
29804
29805         * reflection.c (mono_image_fill_file_table): Generalize this so it works
29806         on Modules.
29807
29808         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
29809
29810         * reflection.c (mono_image_fill_export_table_from_module): New function to
29811         fill out the EXPORTEDTYPES table from a module.
29812
29813         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
29814         into a separate function. Also handle loaded non-dynamic modules.
29815
29816         * reflection.c (mono_image_basic_init): Fix memory allocation.
29817
29818         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
29819
29820         * assembly.c (mono_assembly_load_references): Make this public.
29821
29822 2003-12-19  Martin Baulig  <martin@ximian.com>
29823
29824         * class.c (mono_class_initialize_generic): Made this static, take
29825         a `MonoGenericInst *' instead of a `MonoClass *'.
29826         (mono_class_from_generic): Call mono_class_initialize_generic()
29827         unless we're already initialized or being called from
29828         do_mono_metadata_parse_generic_inst().
29829
29830         * class.h (MonoGenericInst): Added `initialized' and
29831         `init_pending' flags.
29832
29833         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
29834         `mono_class_init (gklass)' or mono_class_initialize_generic()
29835         here; set `generic_inst->init_pending' while parsing the
29836         `type_argv'.
29837
29838 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
29839
29840         * locales.c: include string.h for memxxx prototypes
29841
29842 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
29843
29844         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
29845         constructor when accessing literal fields.
29846
29847 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
29848
29849         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
29850
29851         * reflection.c (assembly_add_resource_manifest): New function to fill
29852         the MANIFESTRESOURCE table.
29853
29854         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
29855
29856         * reflection.h: Update to changes in class layout.
29857
29858         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
29859         Reenable call to mono_runtime_is_shutting_down ().
29860
29861         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
29862         determine if the runtime is shutting down.
29863
29864 2003-12-16  Jackson Harper <jackson@ximian.com>
29865
29866         * icall.c: comment out call to mono_runtime_is_shutting_down to
29867         fix build.
29868         
29869 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
29870
29871         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
29872         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
29873
29874 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
29875
29876         * reflection.c: move definition of swap_with_size
29877         to before its first call
29878
29879 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
29880
29881         * appdomain.c (mono_runtime_is_shutting_down): New public function.
29882
29883         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
29884         icall.
29885
29886         * object.c: Fix warnings.
29887
29888         * icall.c (ves_icall_Type_Get...): Only consider inherited static
29889         members if FlattenHierarchy is set.
29890
29891         * reflection.c (mono_image_add_decl_security): New function to emit
29892         declarative security.
29893
29894         * reflection.h reflection.c: Add support for declarative security.
29895
29896         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
29897         
29898 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
29899
29900         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
29901         
29902         * appdomain.c verify.c: Moved corlib version checking into its own
29903         function in appdomain.c since it needs to create vtables etc.
29904
29905 2003-12-13  Patrik Torstensson <p@rxc.se>
29906
29907         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
29908         instead of unwrapped server.
29909
29910 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
29911
29912         * verify.c (check_corlib): Fix field index.
29913
29914 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
29915
29916         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
29917         GetGacPath icall.
29918
29919 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
29920
29921         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
29922         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
29923         cope with sizeof(size_t) != sizeof(guint32).
29924
29925 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29926
29927         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
29928         in case of failure.
29929
29930 2003-12-10  Mark Crichton <crichton@gimp.org>
29931
29932         * icall.c: removed the GetNonZeroBytes.  We now handle this case
29933         in managed code.
29934
29935         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
29936
29937 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
29938
29939         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
29940         marked as deleted.
29941
29942 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
29943
29944         * verify.c (check_corlib): Handle the case when the version field is 
29945         initialized by a static constructor.
29946
29947 2003-12-08  Patrik Torstensson  <p@rxc.se>
29948
29949     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
29950
29951 2003-12-08  Martin Baulig  <martin@ximian.com>
29952
29953         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
29954         a MonoReflectionGenericParameter, also take the parameter index
29955         and name as arguments.
29956         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
29957         (ves_icall_MonoGenericParam_initialize): New interncall.
29958         (ves_icall_Type_make_byref_type): New interncall.
29959
29960         * reflection.h (MonoReflectionGenericParam): Derive from
29961         MonoReflectionType, not just from MonoObject.  Added `refobj' and
29962         `index' fields.
29963
29964         * reflection.c (mono_reflection_define_generic_parameter): Create
29965         and return a new MonoReflectionGenericParam; don't initialize the
29966         constraints here.
29967         (mono_reflection_initialize_generic_parameter): New public method;
29968         initializes the constraints and creates the `param->pklass'.
29969
29970 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
29971
29972         * reflection.h reflection.c: Use the new fields 'num_types', 
29973         'num_fields' and 'num_methods' to track the number of types etc.
29974
29975         * verify.c (check_corlib): Check corlib version number.
29976
29977 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
29978
29979         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
29980         function works on all methods.
29981
29982 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
29983
29984         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
29985         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
29986         the custom_type_info flag of the transparent proxy.
29987         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
29988         objects that supports IRemotingTypeInfo.
29989         * object.h: Added custom_type_info field in transparent proxy.
29990
29991 2003-12-06  Martin Baulig  <martin@ximian.com>
29992
29993         * class.c (mono_class_create_from_generic): Removed.
29994         (mono_class_from_generic): Check `ginst->klass' before doing
29995         anything else.  This is important to fully support "recursive"
29996         generic types.
29997
29998         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
29999         empty `generic_inst->klass' before doing anything else.
30000
30001 2003-12-06  Dick Porter  <dick@ximian.com>
30002
30003         * verify.c: 
30004         * object.h:
30005         * icall.c:
30006         * locales.c: Use C structs to access class fields.  Don't do a
30007         conversion between MonoString and UChar because both are
30008         platform-endian UTF-16.  Compare now takes startindex and count
30009         parameters.  Add a char overload for IndexOf.  Speed up the
30010         invariant string IndexOf.
30011
30012 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
30013
30014         * Makefile.am (monosn_LDADD): Fix parallel build.
30015
30016 2003-12-04  Martin Baulig  <martin@ximian.com>
30017
30018         * icall.c
30019         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
30020         (ves_icall_Type_make_array_type): New interncall.       
30021
30022 2003-12-04  Martin Baulig  <martin@ximian.com>
30023
30024         * locales.c: also change it in the !HAVE_ICU case.
30025
30026 2003-12-04  Dick Porter  <dick@ximian.com>
30027
30028         * icall.c:
30029         * locales.c: construct_compareinfo is now in CompareInfo, not
30030         CultureInfo.
30031
30032 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
30033
30034         * image.c (mono_image_load_file_for_image): Cache loaded images in the
30035         image->files array.
30036
30037         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
30038         table as well.
30039
30040         * assembly.c (mono_assembly_load_references): Only load references
30041         once.
30042
30043         * class.c (mono_class_from_name): Avoid linear search of the 
30044         EXPORTEDTYPE table.
30045
30046         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
30047
30048 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
30049
30050         * image.h (MonoImage): Add 'field_cache' field.
30051
30052         * loader.c (mono_field_from_token): Cache field lookups.
30053         
30054         * reflection.c (mono_module_get_object): Fix name property.
30055
30056         * icall.c (ves_icall_get_enum_info): Update after changes to 
30057         mono_metadata_get_constant_index ().
30058
30059         * icall.c: Get rid of get_type_info icall, use a separate icall for
30060         each type property to avoid needless memory allocations. Fixes #51514.
30061
30062         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
30063         to avoid needless binary searches.
30064
30065         * class.c (class_compute_field_layout): Move the initialization of
30066         field->def_value to mono_class_vtable ().
30067
30068         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
30069         non-corlib types.
30070
30071         * object.c (mono_object_allocate): Make it inline.
30072
30073         * object.c (mono_object_allocate_spec): Make it inline.
30074         
30075 2003-12-02  Dick Porter  <dick@ximian.com>
30076
30077         * locales.c (create_NumberFormat): NumberFormatInfo construction.
30078         Patch by Mohammad DAMT (mdamt@cdl2000.com).
30079
30080 2003-12-01  Dick Porter  <dick@ximian.com>
30081
30082         * threads.c: Fix signature and call in CreateMutex and
30083         CreateEvent.
30084
30085 2003-12-01  Dick Porter  <dick@ximian.com>
30086
30087         * icall.c: 
30088         * locales.c: Implement string compares and searching
30089
30090         * object.h: Add extra Thread field
30091
30092 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
30093
30094         * reflection.c (fixup_method): Add support for MonoCMethod.
30095
30096 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
30097
30098         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
30099
30100         * reflection.c (assembly_name_to_aname): Allow extra characters in
30101         assembly names. Fixes #51468.
30102
30103 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
30104
30105         * exception.c (mono_exception_from_name_domain): New helper function.
30106
30107         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
30108         exception object in the correct domain.
30109
30110         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
30111         formatting + make a copy a the input data.
30112
30113         * loader.c (mono_get_method_from_token): Methods which contain
30114         native code do not have entries in the ImplMap.
30115
30116         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
30117         Thanks to Gonzalo for spotting this.
30118         
30119         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
30120         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
30121
30122         * assembly.h (mono_assembly_load_from): Split the second part of 
30123         assembly loading into a new public function.
30124
30125         * exception.h (mono_get_exception_bad_image_format): New function.
30126
30127 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
30128
30129         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30130         Enumerate all modules inside a dynamic assembly. Fixes #51293.
30131         
30132         * icall.c: Add new icall for creating dynamic methods.
30133
30134         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
30135
30136         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
30137
30138         * reflection.c (mono_reflection_create_dynamic_method): New icall to
30139         create a dynamic method.
30140
30141         * reflection.c (resolve_object): New helper function.
30142
30143         * reflection.c: Generalize ReflectionMethodBuilder and the functions
30144         which manipulate it so they can also work on dynamic methods.
30145
30146         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
30147         creating the MonoReflectionMethodAux structure if it is not needed.
30148         
30149         * reflection.h verify.c: Update after changes to object layout.
30150
30151         * reflection.c (method_builder_encode_signature): Fix compilation on
30152         gcc 2.95.x.
30153
30154 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
30155
30156         * appdomain.h: Added support for context static fields. Added static_data
30157           field to MonoAppContext and renamed thread_static_fields to a more
30158           generic special_static_fields in MonoAppDomain, since it can now contain
30159           context static fields.
30160         * domain.c: Updated hashtable name.
30161         * object.c: Replaced field_is_thread_static() for a more generic
30162           field_is_special_static() which also checks for context static attribute.
30163           In mono_class_vtable(), added support for static context fields.
30164         * threads.c: Changed methods that manage thread static fields to more
30165           generic methods so they can be reused both for thread and context static
30166           data.
30167         * threads.h: Declared some new methods.
30168
30169 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
30170
30171         * reflection.h: Update after changes to the managed types.
30172
30173         * reflection.c (encode_custom_modifiers): New helper function.
30174
30175         * reflection.c (method_encode_signature): Emit custom modifiers.
30176
30177         * reflection.c (field_encode_signature): Emit custom modifiers.
30178
30179 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
30180
30181         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
30182
30183         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
30184         implementation.
30185
30186         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
30187         icall.
30188
30189         * object.c (mono_field_get_value_object): New function.
30190
30191         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
30192         specific.
30193
30194 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
30195
30196         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
30197         return a preallocated out-of-memory exception instance.
30198
30199         * object.c (out_of_memory): Use the new function.
30200
30201         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
30202         flag is before the custom modifiers. Fixes #49802.
30203
30204 2003-11-16  Martin Baulig  <martin@ximian.com>
30205
30206         * class.c (mono_class_is_open_constructed_type): Implemented the
30207         MONO_TYPE_GENERICINST case.
30208
30209 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
30210
30211         * assembly.c (mono_assembly_fill_assembly_name): New function to
30212         fill out the MonoAssemblyName structure.
30213         (mono_assembly_open): Use the new function.
30214
30215         * icall.c (fill_reflection_assembly_name): New helper function.
30216
30217         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
30218         new function.
30219
30220         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
30221
30222 2003-11-15  Martin Baulig  <martin@ximian.com>
30223
30224         * class.c (mono_class_is_open_constructed_type): New public
30225         function; checks whether a type is an open constructed type,
30226         ie. whether it still contains type parameters.
30227         (mono_class_inflate_generic_type): If we're a type parameter and
30228         the inflated type is also a MONO_TYPE_(M)VAR, return the original
30229         type.
30230
30231         * class.h (MonoGenericInst): Added `guint32 is_open'.
30232
30233         * loader.c (method_from_methodspec): Check whether we're an open
30234         or closed constructed type and set `ginst->is_open'.
30235
30236         * reflection.c (mono_reflection_bind_generic_parameters): Check
30237         whether we're an open or closed constructed type and set
30238         `ginst->is_open'.
30239         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
30240         from open constructed types.
30241
30242 2003-11-15  Martin Baulig  <martin@ximian.com>
30243
30244         * reflection.c (mono_reflection_bind_generic_parameters): If we're
30245         a generic instance (instead of a generic type declaration) with
30246         unbound generic parameters, bind them to our actual types.
30247
30248 2003-11-14  Martin Baulig  <martin@ximian.com>
30249
30250         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
30251
30252         * reflection.c (mono_reflection_bind_generic_parameters): If we're
30253         an interface type, populate `res->interfaces' with instantiated
30254         versions of all the interfaces we inherit.
30255
30256 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
30257
30258         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
30259         when MONO_PATH is set but doesn't contain the install dir.
30260
30261 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30262
30263         * icall.c:
30264         (ves_icall_Type_GetInterfaces): don't return an interface twice when
30265         it's also implemented in base classes. Fixes bug #50927.
30266
30267 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
30268
30269         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
30270         if this method is called from a finalizer. Fixes #50913.
30271
30272 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
30273
30274         * threads.c: Implement VolatileRead/VolatileWrite
30275
30276         * icall.c: Add new icalls for VolatileRead/VolatileWrite
30277
30278 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30279
30280         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
30281         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
30282         2.95.3.
30283
30284         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
30285         from Peter Ross (pro@missioncriticalit.com).
30286         
30287 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
30288
30289         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
30290
30291 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30292
30293         * assembly.c (mono_assembly_load_references): Disable check because it
30294         triggers on older corlibs which lots of people have.
30295
30296 2003-11-12  Jackson Harper  <jackson@ximian.com>
30297
30298         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
30299         load corlib.dll if mscorlib.dll is not found.
30300         * assembly.h: Remove corlib name define.
30301         * class.c:
30302         * domain.c:
30303         * image.c: Change corlib name to mscorlib.
30304         
30305 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30306
30307         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
30308
30309 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
30310
30311         * appdomain.h: Added loader_optimization here to sync with the C#
30312         code, and add disallow_binding_redirects field.
30313
30314 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
30315
30316         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
30317
30318         * reflection.c (mono_image_build_metadata): Fix crash on modules
30319         with no types.
30320
30321         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
30322
30323         * icall.c (ves_icall_get_method_info): Return callingConvention as
30324         well.
30325
30326         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
30327         namespaces from the EXPORTEDTYPE table as well.
30328
30329         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
30330         from all modules inside the assembly.
30331         
30332 2003-11-11  Martin Baulig  <martin@ximian.com>
30333
30334         * reflection.c (mono_reflection_bind_generic_parameters): Make
30335         this work for interfaces.
30336
30337 2003-11-11  Martin Baulig  <martin@ximian.com>
30338
30339         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
30340
30341 2003-11-11  Martin Baulig  <martin@ximian.com>
30342
30343         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
30344         "MonoInflatedMethod" and "MonoInflatedCtor".
30345
30346 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
30347
30348         * reflection.c (resolution_scope_from_image): Use the assembly table
30349         from the manifest module, since other modules don't have it.
30350
30351         * debug-helpers.c (mono_type_full_name): New helper function.
30352
30353         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
30354
30355         * image.c (mono_image_load_file_for_image): New public function which
30356         is a replacement for the load_file_for_image in class.c.
30357
30358         * assembly.c (mono_assembly_load_module): A wrapper for the function
30359         above which does assembly association and reference loading too.
30360
30361         * class.c (mono_class_from_name): Call mono_assembly_load_module.
30362
30363 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30364
30365         * appdomain.c: not all of the attributes for the full assembly name
30366         are required and the order doesn't matter. Fixes bug #50787.
30367
30368 2003-11-10  Dick Porter  <dick@ximian.com>
30369
30370         * locales.c: Use platform-endian UTF16
30371
30372 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
30373
30374         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
30375         
30376 2003-11-10  Martin Baulig  <martin@ximian.com>
30377
30378         * metadata.c
30379         (mono_metadata_load_generic_params): Make this actually work.
30380
30381         * reflection.c (mono_reflection_bind_generic_parameters): If our
30382         parent is a generic instance, pass all the `types' to it, no
30383         matter whether it has the same number of type parameters or not.
30384
30385 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
30386
30387         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
30388
30389         * assembly.c (mono_assembly_load_references): Move the image<->assembly
30390         assignment code to this function so it gets called recursively for all
30391         modules.
30392
30393         * image.c (load_modules): Remove the assembly assignment since it is
30394         now done by mono_assembly_load_references.
30395         
30396         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30397         Add 'module' argument.
30398         (mono_module_get_types): New helper function.
30399         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
30400
30401 2003-11-08  Martin Baulig  <martin@ximian.com>
30402
30403         * class.c (mono_class_inflate_generic_method): Interface method
30404         don't have a header.
30405
30406         * reflection.c (mono_image_get_methodspec_token): Take an
30407         additional `MonoGenericInst *' argument instead of reading it from
30408         the header; this is necessary to support interfaces.
30409         (mono_image_create_token): Pass the `MonoGenericInst *' from the
30410         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
30411         (inflated_method_get_object): Take an additional `MonoGenericInst *'
30412         argument.
30413
30414         * reflection.h (MonoReflectionInflatedMethod): Added
30415         `MonoGenericInst *ginst'.
30416
30417 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
30418
30419         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
30420
30421 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
30422
30423         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
30424
30425 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
30426
30427         * reflection.c 
30428         (reflection_methodbuilder_from_method_builder):
30429         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
30430         initialize a ReflectionMethodBuilder structure.
30431         (mono_image_get_methodbuilder_token):
30432         (mono_image_get_ctorbuilder_token): New functions to emit memberref
30433         tokens which point to types in another module inside the same assembly.
30434
30435         * reflection.c: Use the new helper functions.
30436         
30437         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
30438
30439         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
30440         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
30441
30442         * reflection.c (resolution_scope_from_image): Emit a moduleref if
30443         neccesary.
30444
30445         * reflection.c (mono_image_build_metadata): Emit metadata only for the
30446         current module. Emit the manifest only for the main module.
30447
30448         * reflection.c (mono_image_create_token): Add assertion when a 
30449         memberref needs to be created.
30450
30451         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
30452
30453         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
30454         larger buffer for the custom attribute blob. Fixes #50637.
30455         
30456 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30457
30458         * threadpool.c: notify listener on async processing handles after
30459         invoking the async callback. Thanks to Zoltan.
30460
30461 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30462
30463         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
30464         avoid code duplication.
30465
30466         * reflection.h (MonoDynamicImage): New type which is currently unused,
30467         but will be used through the ref.emit code in place of 
30468         MonoDynamicAssembly.
30469
30470         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
30471         object layout.
30472
30473         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
30474         a MonoDynamicImage instead of just a MonoImage.
30475         
30476         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
30477         icalls to ModuleBuilder but keep their semantics, so they will work
30478         with moduleb->assemblyb. This will change later.
30479         
30480 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30481
30482         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
30483         object layout.
30484
30485         * reflection.c (mono_image_build_metadata): Avoid creation of a default
30486         main module, since it is now done by the managed code.
30487
30488 2003-11-03  Martin Baulig  <martin@ximian.com>
30489
30490         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
30491         `ginst->klass' here.
30492         (method_encode_methodspec): Don't use the `ginst->generic_method's
30493         klass if it's a generic instance, use `ginst->klass' in this case.
30494
30495 2003-11-03  Martin Baulig  <martin@ximian.com>
30496
30497         * reflection.c (mono_image_get_generic_method_param_info):
30498         Removed, use mono_image_get_generic_param_info() instead.
30499         (mono_image_get_type_info): Write the GenericParam table before
30500         the Method table.  This is neccessary because in the GenericParam
30501         table, type parameters of the class (ie. '!0' etc.) must come
30502         before the ones from its generic methods (ie. '!!0' etc).
30503
30504 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30505
30506         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
30507
30508 2003-11-02  Martin Baulig  <martin@ximian.com>
30509
30510         * reflection.c (create_generic_typespec): Take a
30511         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
30512         the generic parameters from it.
30513
30514 2003-11-02  Martin Baulig  <martin@ximian.com>
30515
30516         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
30517         instead of a `MonoClassField *' since we just need the type.
30518         (create_generic_typespec): New static function.  Creates a
30519         TypeSpec token for a generic type declaration.
30520         (mono_image_get_generic_field_token): New static function.
30521         (mono_image_create_token): If we're a FieldBuilder in a generic
30522         type declaration, call mono_image_get_generic_field_token() to get
30523         the token.
30524
30525 2003-11-02  Martin Baulig  <martin@ximian.com>
30526
30527         * reflection.h
30528         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
30529         `MonoReflectionGenericInst *declaring_type' and
30530         `MonoReflectionGenericInst *reflected_type' fields.
30531
30532         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
30533         `MonoReflectionGenericInst *declaring_type' and a
30534         `MonoReflectionGenericInst *reflected_type' argument instead of a
30535         single `MonoReflectionGenericInst *type' one.  Set
30536         `res->declaring_type' and `res->reflected_type' from them.
30537         (mono_reflection_inflate_field): Likewise.      
30538
30539 2003-11-02  Martin Baulig  <martin@ximian.com>
30540
30541         * class.c (mono_class_setup_vtable): Don't store generic methods
30542         in the vtable.  
30543
30544 2003-11-02  Martin Baulig  <martin@ximian.com>
30545
30546         * reflection.h (MonoReflectionGenericInst): Added
30547         `MonoReflectionType *declaring_type'.
30548
30549         * reflection.c (mono_reflection_bind_generic_parameters): Use
30550         `if (tb->parent)' instead of `klass->parent'.
30551
30552 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
30553
30554         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
30555         with an empty ASSEMBLY table.
30556
30557         * reflection.c (mono_image_build_metadata): Avoid using the same loop
30558         variable in the inner and outer loops.
30559
30560 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
30561
30562         * metadata.h (mono_metadata_make_token): Put parentheses around macro
30563         argument.
30564
30565         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
30566         
30567         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
30568         icalls. Instead, do everything in managed code. This is needed since
30569         it is hard to restore the original domain etc. in unmanaged code in the
30570         presence of undeniable exceptions.
30571
30572         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
30573         New icalls to push and pop appdomain refs.
30574
30575 2003-10-31  Martin Baulig  <martin@ximian.com>
30576
30577         * class.c (inflate_generic_type): Renamed to
30578         mono_class_inflate_generic_type() and made it public.
30579
30580         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
30581         New interncall.
30582
30583         * loader.c (mono_field_from_memberref): Also set the retklass for
30584         typespecs.
30585
30586         * fielder.c (mono_image_get_inflated_field_token): New static
30587         method; creates a metadata token for an inflated field.
30588         (mono_image_create_token, fixup_method): Added support for
30589         "MonoInflatedField".
30590         (fieldbuilder_to_mono_class_field): New static function.
30591         (mono_reflection_inflate_field): New public function.
30592
30593         * reflection.h
30594         (MonoReflectionGenericInst): Added `MonoArray *fields'.
30595         (MonoReflectionInflatedField): New typedef.     
30596
30597 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
30598
30599         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
30600         for Solaris and other platforms without s6_addr16
30601
30602 2003-10-30  Martin Baulig  <martin@ximian.com>
30603
30604         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
30605         argument instead of two.
30606         (mono_class_inflate_generic_signature): Likewise.
30607         (inflate_generic_header): Likewise.
30608         (mono_class_inflate_generic_method): Likewise.  In addition, if
30609         `ginst->klass' is set, it becomes the new `method->klass'.
30610
30611         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
30612         field.
30613
30614         * reflection.c (encode_generic_method_sig): Write a 0xa as the
30615         first byte. [FIXME]
30616         (method_encode_methodspec): If we have generic parameters, create
30617         a MethodSpec instead of a MethodRef.
30618         (fixup_method): Added support for "MonoInflatedMethod" and
30619         "MonoInflatedCtor".
30620         (mono_image_create_token): Added support for "MonoInflatedMethod"
30621         and "MonoInflatedCtor".
30622         (inflated_method_get_object): New static function; returns a
30623         managed "System.Reflection.MonoInflatedMethod" object.
30624         (mono_reflection_bind_generic_method_parameters): Return a
30625         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
30626         (mono_reflection_inflate_method_or_ctor): Likewise.
30627         (mono_image_get_generic_method_param_info): Initialize unused
30628         fields to zero.
30629         (mono_image_get_generic_param_info): Likewise.
30630
30631         * reflection.h (MonoReflectionInflatedMethod): New public
30632         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
30633         "S.R.MonoInflatedCtor" classes.
30634
30635         * loader.c (method_from_memberref): If we're a TypeSpec and it
30636         resolves to a generic instance, inflate the method.
30637
30638 2003-10-28  Dick Porter  <dick@ximian.com>
30639
30640         * object.c (mono_runtime_run_main): Convert command-line arguments
30641         into utf8, falling back to the user's locale encoding to do so.
30642
30643 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
30644
30645         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
30646         at this time.
30647
30648         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
30649
30650         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
30651         up icalls at method definition time. Partially fixes #33569.
30652
30653 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
30654
30655         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
30656         marshalling of arrays. Fixes #50116.
30657
30658         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
30659
30660         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
30661         points to a vtable in the dying appdomain.
30662
30663         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
30664         listeners into unmanaged code inside the lock.
30665
30666         * object.c (mono_class_vtable): Turn off typed allocation in non-root
30667         domains and add some comments.
30668
30669 2003-10-25  Martin Baulig  <martin@ximian.com>
30670
30671         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
30672
30673         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
30674
30675         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
30676         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
30677         currently parsing.  Create the generic class and store it in
30678         `generic_inst->klass' before parsing the type arguments.  This is
30679         required to support "recursive" definitions; see mcs/tests/gen-23.cs
30680         for an example.
30681         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
30682         to support recursive typespec entries.
30683
30684         * class.c (mono_class_setup_parent): If our parent is a generic
30685         instance, we may get called before it has its name set.
30686         (mono_class_from_generic): Splitted into
30687         mono_class_create_from_generic() and mono_class_initialize_generic().
30688
30689 2003-10-25  Martin Baulig  <martin@ximian.com>
30690
30691         * icall.c (ves_icall_Type_BindGenericParameters): Return a
30692         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
30693         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
30694         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
30695
30696         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
30697         (create_typespec): Likewise.
30698         (mono_reflection_bind_generic_parameters): Return a
30699         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
30700         (mono_reflection_inflate_method_or_ctor): New public function.
30701
30702         * reflection.h (MonoReflectionGenericInst): New typedef.        
30703
30704 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
30705
30706         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
30707         inside the domain lock. Fixes #49993.
30708         
30709         * object.c (mono_class_vtable): When typed allocation is used, 
30710         allocate vtables in the GC heap instead of in the mempool, since the
30711         vtables contain GC descriptors which are used by the collector even
30712         after the domain owning the mempool is unloaded.
30713
30714         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
30715
30716         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
30717         reflect what it does. Also invalidate mempools instead of freeing
30718         them if a define is set.
30719
30720         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
30721         of the appdomain.
30722         
30723         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
30724         hold the finalizable objects in this domain.
30725
30726         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
30727         appdomain.
30728
30729         * appdomain.c (mono_domain_set): New function to set the current
30730         appdomain, but only if it is not being unloaded.
30731
30732         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
30733         appdomain which is being unloaded.
30734         
30735         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
30736         unloading of the root appdomain.
30737
30738         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
30739         icall to execute a method in another appdomain. Intended as a 
30740         replacement for InternalSetDomain, which can confuse the code 
30741         generation in the JIT.
30742
30743         * appdomain.c (mono_domain_is_unloading): New function to determine
30744         whenever an appdomain is unloading.
30745
30746         * appdomain.c (mono_domain_unload): New function to correctly unload
30747         an appdomain.
30748
30749         * assembly.c (mono_assembly_load_references): Check that an assembly
30750         does not references itself.
30751
30752         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
30753         domain manually, it asks the finalizer thread to do it, then waits for
30754         the result. Also added a timeout.
30755
30756         * icall.c: Register the new icalls.
30757
30758         * threads.h threads.c: Export the mono_gc_stop_world and 
30759         mono_gc_start_world functions.
30760         
30761         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
30762         function to fill out the mempool with 0x2a.
30763
30764 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
30765
30766         * reflection.h (MonoReflectionMethodAux): New structure to store
30767         information which is rarely used, thus is not in the MonoMethod
30768         structure.
30769
30770         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
30771         store the aux info.
30772
30773         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
30774         and marshalling info into the aux structure.
30775
30776         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
30777         from the aux structure.
30778
30779         * loader.c (mono_method_get_param_names): Retrieve the param names from
30780         the aux structure.
30781         
30782 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
30783
30784         * exception.h exception.c: Add AppDomainUnloadedException && fix 
30785         warning.
30786
30787 2003-10-21  Dick Porter  <dick@ximian.com>
30788
30789         * socket-io.c
30790         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
30791         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
30792
30793 2003-10-21  Martin Baulig  <martin@ximian.com>
30794
30795         * reflection.c (mono_reflection_bind_generic_parameters):
30796         `klass->parent' is NULL for interfaces.
30797
30798 2003-10-21  Martin Baulig  <martin@ximian.com>
30799
30800         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
30801
30802 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
30803
30804         * exception.c (mono_exception_from_name_msg): New helper function for
30805         creating exceptions and initializing their message field.
30806
30807         * exception.c: Simplify functions using the new helper.
30808
30809         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
30810         New function.
30811
30812         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
30813         mono_raise_exception, since otherwise gcc doesn't generate the function
30814         epilog for raise_exception, confusing the stack unwinding in the JIT.
30815         Fixes #45043.
30816
30817         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
30818         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
30819         Fixes #49499.
30820
30821 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30822
30823         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
30824         utf8.
30825
30826 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
30827
30828         * icall.c: Removed GetUninitializedObject method because
30829           AllocateUninitializedClassInstance does the same.
30830
30831 2003-10-18  Martin Baulig  <martin@ximian.com>
30832
30833         * class.c (inflate_generic_signature): Renamed to
30834         mono_class_inflate_generic_signature() and made it public.
30835         (my_mono_class_from_generic_parameter): New static function; if we
30836         don't already have the generic parameter's MonoClass, create a
30837         very simple one which is just used internally in the runtime and
30838         not passed back to managed code.
30839
30840         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
30841
30842         * metadata.h (MonoMethodSignature): Moved the
30843         `MonoGenericParam *gen_params' to the MonoMethodHeader.
30844         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
30845
30846         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
30847         ves_icall_MonoMethod_GetGenericArguments(); this is now an
30848         interncall on the MonoMethod class, not on MethodInfo.
30849         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
30850         calling mono_reflection_bind_generic_method_parameters() directly.
30851
30852         * loader.c (mono_method_get_signature): If this is a MethodSpec;
30853         return the already computed `method->signature'.
30854         (method_from_methodspec): New static function to load a method
30855         from a MethodSpec entry.
30856         (mono_get_method_from_token): Call the new method_from_methodspec()
30857         for MethodSpec tokens.  
30858         (mono_get_method_from_token): If we're a generic method, load the
30859         type parameters.
30860
30861         * reflection.c (mono_image_get_memberref_token): Allow
30862         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
30863         table.
30864         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
30865         (mono_image_create_token): First check whether it's a generic
30866         method (so we'd need to create a MethodSpec), then do the other
30867         two alternatives.
30868         (mono_reflection_bind_generic_method_parameters): Return a
30869         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
30870         called directly from the interncall.
30871
30872 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
30873
30874         * reflection.c (load_public_key): Move loading of the public key
30875         into managed code.
30876
30877         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
30878
30879         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
30880         fields.
30881
30882         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
30883         culture, hash_alg and public_key. Fixes #49555.
30884
30885 2003-10-17  Martin Baulig  <martin@ximian.com>
30886
30887         * class.h (MonoGenericInst): Moved this declaration here and added
30888         `MonoMethod *generic_method'.
30889
30890         * icall.c
30891         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
30892         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
30893
30894         * metadata.c (mono_metadata_type_equal): Two types of
30895         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
30896         index; ie. don't compare the address of the `MonoGenericParam'
30897         structure.
30898         (mono_metadata_load_generic_params): Removed the `MonoMethod
30899         *method' argument.
30900
30901         * metadata.h (MonoGenericInst): Moved declaration to class.h.
30902         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
30903
30904         * reflection.c (method_encode_signature): Encode the number of
30905         generic parameters.
30906         (encode_generic_method_sig): New static function.
30907         (method_encode_methodspec): New static function; creates an entry
30908         in the MethodSpec table for a generic method.
30909         (mono_image_get_methodspec_token): New static function.
30910         (mono_image_create_token): Call mono_image_get_methodspec_token()
30911         for generic methods.
30912         (mono_reflection_bind_generic_method_parameters): New public
30913         function.  Instantiates a generic method.
30914
30915 2003-10-16  Martin Baulig  <martin@ximian.com>
30916
30917         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
30918         *gen_params' here from MonoMethodHeader.
30919
30920         * metadata.c (mono_metadata_parse_method_signature): If we have
30921         generic parameters, initialize `method->gen_params' and then set
30922         the correct `type->data.generic_param' in all the parameters.
30923
30924 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
30925
30926         * threads.c (mono_threads_get_default_stacksize): New function to 
30927         return the default stacksize.
30928
30929         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
30930         termination of the finalizer thread, since the previous method had
30931         race conditions. Fixes #49628.
30932
30933         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
30934         as for the other managed threads.
30935
30936 2003-10-16  Martin Baulig  <martin@ximian.com>
30937
30938         * class.c (inflate_generic_signature): Copy `generic_param_count'
30939         and `gen_params'.
30940
30941         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
30942         New interncall.
30943
30944         * metadata.c (mono_metadata_parse_method_signature): Actually set
30945         the `method->generic_param_count' here.
30946         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
30947
30948 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
30949
30950         * object.h: Add a new field to TypedRef to simplify the implementation
30951         of the REFANY opcodes in the JIT.
30952
30953         * icall.c: Make use of the new field.
30954
30955         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
30956         dynamically.
30957
30958 2003-10-15  Martin Baulig  <martin@ximian.com>
30959
30960         * class.c (mono_class_from_gen_param): Renamed to
30961         mono_class_from_generic_parameter() and moved most of the
30962         functionality from mono_reflection_define_generic_parameter()
30963         here; ie. we create a "real" class here.
30964         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
30965         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
30966         previously been called.
30967
30968         * class.h (MonoGenericParam): Moved the declaration of this struct
30969         here from metadata.h and added `MonoMethod *method'.
30970
30971         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
30972         interncall.
30973
30974         * loader.c (mono_get_method_from_token): If we have any generic
30975         parameters, call mono_metadata_load_generic_params() to read them
30976         from the MONO_TABLE_GENERICPAR.
30977
30978         * metadata.c (mono_metadata_load_generic_params): Added
30979         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
30980
30981         * metadata.h (MonoMethodSignature): Replaced
30982         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
30983         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
30984
30985         * reflection.c (mono_reflection_define_generic_parameter): Moved
30986         most of the functionality into the new
30987         mono_class_from_generic_parameter(); set the `method' field if
30988         we're a method parameter.       
30989
30990 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
30991
30992         * marshal.c (emit_struct_conv): if native size is 0
30993         emit no code.
30994
30995 2003-10-14  Martin Baulig  <martin@ximian.com>
30996
30997         * icall.c: The generics API has changed in the spec since it was
30998         added to System.Type; these modifications make it match the spec
30999         again.
31000         (ves_icall_Type_GetGenericParameters): Renamed to
31001         `ves_icall_Type_GetGenericArguments'.
31002         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
31003         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
31004         `ves_icall_MonoType_get_HasGenericArguments'.
31005         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
31006         `ves_icall_MonoType_get_IsGenericParameter'.
31007         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
31008         this is no interncall anymore.
31009         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
31010         `ves_icall_TypeBuilder_get_IsGenericParameter'.
31011
31012 2003-10-14  Martin Baulig  <martin@ximian.com>
31013
31014         * reflection.c (mono_reflection_bind_generic_parameters): Also
31015         inflate generic methods if we're reading the class from IL.
31016
31017 2003-10-13  Martin Baulig  <martin@ximian.com>
31018
31019         * reflection.c (mono_reflection_define_generic_parameter): This
31020         method isn't called directly from the icall anymore; take a
31021         `MonoReflectionAssemblyBuilder *' so we can use this for type and
31022         method generic parameters.
31023         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
31024         (method_builder_encode_signature): Encode generic parameters.
31025         (mono_image_get_method_info): Write generic params to the
31026         MONO_TABLE_GENERICPARAM table.
31027
31028         * reflection.h (MonoReflectionMethodBuilder): Added
31029         `MonoArray *generic_params'.
31030
31031         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
31032
31033         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
31034         wrapper for mono_reflection_define_generic_parameter().
31035         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
31036
31037 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
31038
31039         * marshal.h: Add missing function to fix build.
31040
31041         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
31042         the SetLastError pinvoke attribute.
31043
31044         * marshal.c (mono_marshal_set_last_error): New helper function called
31045         by the generated code.
31046         
31047         * marshal.c (mono_mb_emit_branch): New helper function.
31048
31049         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
31050
31051         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
31052         classes as parameters and return values of delegates. Fixes #29256. 
31053
31054 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
31055
31056         * locales.c: use gint32 in non HAVE_ICU case
31057
31058 2003-10-11  Martin Baulig  <martin@ximian.com>
31059
31060         * mono-debug.c (mono_debug_add_method): Added a workaround for
31061         bug #48591.
31062
31063 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
31064
31065         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
31066         delegates passed to native code must use the STDCALL calling 
31067         convention. Fixes #35987.
31068
31069 2003-10-10  Martin Baulig  <martin@ximian.com>
31070
31071         * class.c (inflate_generic_type): If we're inflating for a generic
31072         type instance (and not for a generic method), return
31073         MONO_TYPE_MVAR unchanged.
31074
31075 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31076
31077         * string-icalls.c: Join ignores null strings in the source array.
31078         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
31079         * threads.c: GetAvailableTheads is slightly more accurate.
31080
31081 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
31082
31083         * threads.h threads.c : add mono_threads_set_default_stacksize
31084         and pass default to CreateThread calls.
31085
31086 2003-10-09  Dick Porter  <dick@ximian.com>
31087
31088         * icall.c:
31089         * locales.h:
31090         * locales.c: Internal calls for constructing CultureInfo and
31091         related objects from libicu (if its available.)
31092
31093 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
31094
31095         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
31096
31097 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31098
31099         * threadpool.c: added an argument to async_invoke_thread that is the
31100         item to process, pass the MonoAsyncResult to the thread start function
31101         when creating a new thread. This way we don't need to acquire any lock
31102         when we're creating a new thread. Readded a semaphore for faster
31103         response times (instead of that Sleep i added).
31104
31105 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
31106
31107         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
31108         get daylight change dates better on Windows, fix handling
31109         of platforms without tm_gmtoff.
31110
31111 2003-10-06  Martin Baulig  <martin@ximian.com>
31112
31113         * class.c (inflate_generic_method): Renamed to
31114         mono_class_inflate_generic_method() and made public.
31115         (mono_class_init): Don't inflate the generic methods here.
31116         (mono_class_from_generic): Added `gboolean inflate_methods'
31117         argument.  Inflate the methods here.
31118
31119         * loader.c (mono_method_get_param_names): Ignore instances of
31120         generic types for the moment.
31121
31122         * reflection.c (fixup_method): Added support for inflated methods.
31123         (mono_image_create_token): Use mono_image_get_methodref_token()
31124         for inflated methods.
31125         (mono_custom_attrs_from_param): Ignore instances of generic types
31126         for the moment.
31127         (mono_reflection_bind_generic_parameters): New public function.
31128         Moved all the functionality from
31129         ves_icall_Type_BindGenericParameters() here and added support for
31130         dynamic types.
31131         (mono_reflection_define_generic_parameter): Initialize
31132         `klass->methods' here.
31133
31134         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
31135         functionality into mono_reflection_define_generic_parameter().
31136         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
31137         TypeBuilder, return that TypeBuilder.
31138
31139 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31140
31141         * appdomain.c: removed mono_delegate_semaphore.
31142
31143         * threadpool.c:
31144         (mono_thread_pool_add): moved hash table creation inside and the thread 
31145         creation outside of the critical region.
31146         (mono_thread_pool_finish): removed obsolete code.
31147         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
31148         continue or exit the thread depending on the queue.
31149
31150 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
31151
31152         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
31153         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
31154         handle more bool marshalling options
31155
31156 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
31157
31158         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
31159         arrays of structs. Also add a more descriptive error message when
31160         a structure member is marshalled as LPArray.
31161
31162 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
31163
31164         * marshal.c (mono_marshal_get_native_wrapper): Add support for
31165         marshalling arrays of complex types. Fixes #29098. Also remove an
31166         usused and incomplete function.
31167
31168 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
31169
31170         * gc.c: report heap_size - free_bytes as total memory allocated
31171         (bug#49362).
31172
31173 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
31174
31175         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
31176         fix timezone handling problems on Windows.
31177         
31178         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
31179         asserts when the year is outside the range handled by ms the functions.
31180
31181         * class.c (setup_interface_offsets): If the class is an interface,
31182         fill out its interface_offsets slot.
31183
31184 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31185
31186         * threadpool.c: mark threadpool threads as background.
31187
31188 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
31189
31190         * decimal.c - define DECINLINE to nothing if not using GCC
31191
31192 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
31193
31194         * assembly.c: More refcount fixes.
31195
31196 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31197
31198         * string-icalls.c: if we're not trimming, return the same string.
31199         When not splitting, don't create a new string.
31200
31201 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31202
31203         * image.c:
31204         (mono_image_open): increment the ref_count inside the critical section.
31205
31206 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
31207
31208         * image.c (mono_image_open): Fix reference counting bug.
31209
31210 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
31211
31212         * marshal.c (mono_marshal_type_size) struct alignment changed for 
31213         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
31214         64bits. Avoid leak in mono_marshal_get_native_wrapper when
31215         mono_lookup_pinvoke_call throws.        
31216
31217 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
31218
31219         * reflection.c (mono_reflection_parse_type): Fix #49114.
31220
31221         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
31222         temporary workaround for cygwin header problem.
31223
31224         * object.c (mono_object_isinst): Synchronize this with the code
31225         generated by the JIT for casts.
31226
31227 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
31228
31229         * reflection.c (encode_type): Fix #38332.
31230
31231 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
31232
31233         * marshal.c (mono_marshal_method_from_wrapper): New function to return
31234         the original method from the wrapper method.
31235
31236 2003-09-25  Martin Baulig  <martin@ximian.com>
31237
31238         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
31239         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
31240         (ves_icall_Type_get_IsGenericInstance): New interncall.
31241
31242 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
31243
31244         * object.c: fix cast warning in big endian code.
31245
31246 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
31247
31248         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
31249         
31250 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31251
31252         * assembly.c: don't call check_env from mono_assembly_load. It's
31253         already done once in mono_assemblies_init and may cause headaches when
31254         multiple threads are loading assemblies.
31255
31256 2003-09-19  Martin Baulig  <martin@ximian.com>
31257
31258         * reflection.c (mono_reflection_define_generic_parameter): Don't
31259         allocate `klass->methods', set `klass->flags' to
31260         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
31261
31262 2003-09-18  Martin Baulig  <martin@ximian.com>
31263
31264         * class.c (mono_class_init): Don't create `class->methods' if it's
31265         already initialized.
31266
31267         * metadata.c (mono_metadata_load_generic_params): Make this
31268         actually work.
31269
31270         * reflection.c (mono_reflection_define_generic_parameter): Set
31271         parent class and interfaces from the constraints.
31272
31273         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
31274         to keep this struct in sync with the declaration in TypeBuilder.cs.
31275
31276 2003-09-17  Martin Baulig  <martin@ximian.com>
31277
31278         * metadata.h (MonoType): Replaced the data's `int type_param'
31279         field with `MonoGenericParam *generic_param'.
31280         (MonoGenericParam): Added `MonoClass *klass'.
31281
31282         * class.c (mono_class_from_gen_param): Removed the
31283         `MonoImage *image' and `int type_num' arguments.
31284
31285         * metadata.c (mono_metadata_parse_generic_param): New static
31286         method; creates a MonoGenericParam which just contains the index.
31287         (do_mono_metadata_parse_type): Call
31288         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
31289         MONO_TYPE_MVAR.
31290
31291         * reflection.c (mono_image_typedef_or_ref): Generic type
31292         parameters may be in the same assembly, but never use a typedef
31293         for them.
31294         (mono_reflection_define_generic_parameter): We're now creating a
31295         "real" class for the type parameter; it's now safe to call
31296         mono_class_from_mono_type() on the class'es type, it'll do the
31297         right thing.
31298
31299 2003-09-16  Martin Baulig  <martin@ximian.com>
31300
31301         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
31302         `symfile->range_entry_size' and `symfile->class_entry_size' here;
31303         the `symfile' data structure must be fully initialized before it
31304         gets added to the table.
31305
31306 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
31307
31308         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
31309
31310         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
31311         class init trampolines.
31312
31313 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
31314
31315         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
31316         to the built-in profiler to turn off time and allocation profiling
31317         respectively.
31318
31319 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
31320
31321         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
31322         g_direct_equal.
31323
31324         * debug-helpers.c (mono_method_full_name): Print the wrapper type
31325         in human readable form.
31326
31327 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
31328
31329         * reflection.c icall.c: Fixed warnings.
31330
31331         * image.c (load_class_names): Use a temporary hash table to hold the
31332         namespaces in order to avoid doing many string comparisons.
31333
31334         * image.h: Fix typo.
31335
31336         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
31337         Pass NULL instead of g_direct_equal to the GHashTable constructor 
31338         since the NULL case is short-circuited inside g_hash_table_lookup, 
31339         leading to better performance.  
31340
31341         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
31342         obtain the first custom attribute for a given index. Depends on the
31343         CustomAttribute table being sorted by the parent field.
31344
31345         * reflection.c (mono_custom_attrs_from_index): Use the new function 
31346         for better performance.
31347
31348 2003-09-07  Martin Baulig  <martin@ximian.com>
31349
31350         * class.c (mono_class_init): If we're a generic instance, inflate
31351         all our methods instead of loading them from the image.
31352         (mono_class_from_generic): Set `class->methods = gklass->methods'.
31353
31354 2003-09-07  Martin Baulig  <martin@ximian.com>
31355
31356         * mono-debug-debugger.c: Added support for constructors.
31357
31358 2003-09-06  Martin Baulig  <martin@ximian.com>
31359
31360         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
31361         New interncall.
31362
31363         * reflection.c (mono_reflection_setup_generic_class): Call
31364         ensure_runtime_vtable() to create the vtable.
31365
31366 2003-09-05  Martin Baulig  <martin@ximian.com>
31367
31368         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
31369         MONO_TYPE_MVAR.
31370
31371 2003-09-04  Martin Baulig  <martin@ximian.com>
31372
31373         * reflection.c (mono_reflection_define_generic_parameter): Generic
31374         parameters start with zero.
31375
31376 2003-09-04  Martin Baulig  <martin@ximian.com>
31377
31378         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
31379
31380         * reflection.h (MonoReflectionGenericParam): New typedef.
31381         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
31382         the generic parameters from the managed TypeBuilder.
31383
31384         * reflection.c (mono_reflection_define_generic_parameter): New function.
31385         (mono_reflection_create_runtime_class): Encode generic parameters.
31386         (mono_reflection_setup_generic_class): New function; this is
31387         called after adding adding all generic params to the TypeBuilder.
31388         (encode_type): Added MONO_TYPE_VAR.
31389
31390 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
31391
31392         * class.h class.c (mono_class_needs_cctor_run): Moved this method
31393         here from the JIT.
31394
31395         * assembly.h assembly.c: Moved the AOT loading code into an assembly
31396         load hook.
31397
31398 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
31399
31400         * reflection.h reflection.c class.h class.c: Delete duplicate 
31401         definition of mono_type_get_name () from reflection.c and export the
31402         one in class.c.
31403
31404         * class.c: Class loading fixes from Bernie Solomon 
31405         (bernard@ugsolutions.com).
31406
31407         * reflection.c: Endianness fixes from Bernie Solomon 
31408         (bernard@ugsolutions.com).
31409         
31410 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
31411
31412         * assembly.h assembly.c: Define a file format version for AOT
31413         libraries.
31414         
31415         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
31416
31417         * appdomain.h (MonoJitInfo): New field to determine whenever the
31418         code is domain neutral.
31419         
31420 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
31421
31422         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
31423
31424 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
31425
31426         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
31427         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
31428         Avoid caching the result since strings must be domain specific. Fixes
31429         #48050.
31430
31431 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
31432
31433         * marshal.c (mono_marshal_init): Make this callable multiple times
31434         since it is hard to find a correct place to call it.
31435
31436         * object.c (mono_runtime_class_init): Execute static constructors in
31437         the correct appdomain.
31438
31439         * image.c (build_guid_table): Handle the case when multiple images have
31440         the same GUID.
31441
31442 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31443
31444         * icall.c: added a couple of icalls for System.Web.
31445
31446 2003-08-28  Martin Baulig  <martin@ximian.com>
31447
31448         * icall.c (ves_icall_Type_BindGenericParameters): Use
31449         `klass->generic_inst' instead of `&klass->byval_arg' in the
31450         mono_type_get_object() call.  The returned type must be
31451         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
31452
31453 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
31454
31455         * NOTES: New file.
31456
31457         * object.c (mono_class_proxy_vtable): Make it thread safe.
31458
31459         * pedump.c: Fix warning.
31460
31461         * object.c appdomain.h: Get rid of metadata_section. 
31462         It is no longer needed and it was causing deadlocks with domain->lock.
31463
31464         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
31465
31466 2003-08-26  Martin Baulig  <martin@ximian.com>
31467
31468         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
31469
31470 2003-08-26  Martin Baulig  <martin@ximian.com>
31471
31472         * pedump.c (main): Call mono_metadata_init(),
31473         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
31474         and mono_loader_init().
31475
31476 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
31477
31478         * loader.h: Add missing include to fix build.
31479
31480         * image.h: mono_image_load_references is no more.
31481
31482         * assembly.c: Reworked assembly loading to make it really thread safe.
31483         After these changes, the assembly returned by mono_assembly_open is
31484         fully initialized, i.e. all its references assemblies are loaded.
31485
31486         * assembly.c (mono_image_load_references): Renamed to 
31487         mono_assembly_load_references, and made private, since clients no
31488         longer need to call it.
31489
31490         * class.c: Removed calls to mono_assembly_load_references, since it was
31491         a source of deadlocks.
31492
31493         * loader.h loader.c class.h class.c: Protect data structures using a 
31494         new lock, the loader lock.
31495
31496         * class.c (mono_class_setup_vtable): Create temporary hash tables and
31497         GPtrArrays only when needed.
31498
31499         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
31500         into empty structures by mcs. Fixes pinvoke7.cs.
31501         
31502         * domain.c (mono_init): Call a new initialization function.
31503
31504         * appdomain.c (mono_runtime_init): Call the new initializer function
31505         of the marshal module.
31506
31507         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
31508         inserted into empty structures by mcs. Fixes pinvoke7.cs.
31509
31510         * marshal.h marshal.c: Added locks around the wrapper caches to make
31511         this module thread safe.
31512
31513         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
31514         this argument. Fixes pinvoke1.exe.
31515
31516 2003-08-25  Lluis Sanchez <lluis@ximian.com>
31517
31518         * object.h: Added call_type field to MonoMethodMessage and the corresponding
31519         enumeration of values. Removed fields to store remote call output values in
31520         MonoAsyncResult. Not needed any more.
31521         * object.c: Initialize call_type and async_result fields in mono_message_init.
31522         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
31523         dispatching the message.
31524         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
31525         async call to finish. To do it use a message with EndInvoke call type.
31526
31527 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
31528
31529         * loader.h loader.c (mono_method_hash_marhal_info): New function which
31530         determines whenever a method has marshalling info.
31531
31532 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31533
31534         * assembly.c: fix the build on windows.
31535
31536 2003-08-22 Lluis Sanchez <lluis@ximian.com>
31537
31538         * object.cs: Fixed bug #47785.
31539
31540 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
31541
31542         * string-icalls.c (StringReplace): If their are no occurances of
31543         the old string found return a reference to the supplied
31544         string. This saves some memory and matches MS behavoir.
31545         
31546 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31547
31548         * socket-io.c: fixed compilation for systems that define AF_INET6
31549         and don't define SOL_IP/SOL_IPV6.
31550
31551 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
31552
31553         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
31554         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
31555
31556         * rawbuffer.c rawbuffer.h: Make this module thread safe.
31557
31558         * domain.c: Make this module thread safe.
31559
31560         * domain.c (mono_init): Call new initialization function.
31561
31562         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
31563         reference types too. Fixes #38812.
31564
31565         * image.c (mono_image_init): Fixed warnings.
31566
31567         * class.c (mono_class_from_typeref): Handle assembly load failure
31568         correctly.
31569
31570         * appdomain.c (add_assemblies_to_domain): Handle the case when
31571         the references of an assembly are not yet loaded.
31572
31573         * metadata.c image.c assembly.c: Moved initialization of global
31574         variables to a separate function called at startup since lazy 
31575         initialization of these variables is not thread safe.
31576         
31577         * image.c assembly.c: Made this module thread safe by adding locks in 
31578         the appropriate places.
31579
31580         * domain.c (mono_init): Call the new initialization functions of the
31581         three modules.
31582
31583 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
31584
31585         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
31586           make a direct call. It is proxy's work to make the call asynchronous.
31587           mono_delegate_end_invoke(): If the targe is a proxy, just collect
31588           the return values.
31589         * object.cs: mono_method_call_message_new(): read AsyncResult and
31590           state object from parameters list, if this info is requested.
31591         * object.h: Added fields to store remote call output values in
31592           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
31593
31594 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
31595
31596         * object.h: add needed fields to MonoThread.
31597         * threads.c, threads.h: allow registering a function to cleanup data
31598         allocated per thread by the JIT.
31599
31600 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
31601
31602         * loader.h: portability fix by Bernie Solomon
31603         * <bernard@ugsolutions.com>.
31604
31605 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
31606
31607         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
31608         return a MonoArray. This simplifies the code and also ensures that
31609         the cache allways contains an object reference as a value.
31610
31611         * icall.c (ves_icall_get_parameter_info): Simplified using the new
31612         function.
31613
31614 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31615
31616         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
31617         fixes a problem with byte ordering when getting the address family for
31618         a socket.
31619
31620 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
31621
31622         * .cvsignore: Added monosn.
31623
31624         * reflection.h reflection.c loader.c: Added support for parameter
31625         marshalling to dynamically created types. Fixes #47295.
31626
31627 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
31628
31629         * rand.c: remove useless warnings.
31630
31631 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
31632
31633         * class.c: implemented ldtoken for methods and fieldrefs.
31634
31635 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31636
31637         * threadpool.c: when mono_async_invoke was called, no one took care of
31638         monitoring the queue. So if the method invoked took some time and we
31639         got new async invoke requests after 500 ms (the thread created waited
31640         that long in WaitForSingleObject), the new async invoke was not called
31641         until the previous one finished.
31642
31643         This is fixed now. Thanks to Totte for helping with it.
31644
31645 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31646
31647         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
31648
31649 2003-08-11  Martin Baulig  <martin@ximian.com>
31650
31651         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
31652
31653 2003-08-06  Martin Baulig  <martin@ximian.com>
31654
31655         * mono-debug-debugger.c: Added support for static fields,
31656         properties and methods.
31657
31658 2003-08-06  Martin Baulig  <martin@ximian.com>
31659
31660         * mono-debug-debugger.c: Don't store the MonoString's vtable to
31661         make this work for applications with multiple application domains.
31662
31663 2003-08-04  Martin Baulig  <martin@ximian.com>
31664
31665         * mono-debug-debugger.c: Completely reworked the type support; the
31666         most important thing is that we're now just using one single
31667         `MonoType' instance per type.
31668
31669 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
31670
31671         * mono-endian.h, mono-endian.c, icall.c: Added icall
31672         ves_icall_System_Double_AssertEndianity to assert double word endianity
31673         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
31674
31675 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
31676
31677         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
31678         support, icalls and fixes.
31679
31680 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
31681
31682         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
31683         classes that are a punctuation character in .NET is not the same a
31684         g_unichar_ispunct.
31685
31686 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
31687
31688         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
31689
31690 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
31691
31692         * icall.c: Add new MemCopy internalcall.
31693         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
31694         Simplified code; It is not necessary to handle all the cases here,
31695         as the C# code takes care of it.  Only handle the case of the name
31696         resource embedded into the assembly.
31697
31698         Changed signature to return the data pointer and the size of the
31699         data. 
31700
31701 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
31702
31703         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
31704         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
31705
31706 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
31707
31708         * socket-io.c: ignore EINTR error in select.
31709
31710 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
31711
31712         * class.h, class.c: removed unused subclasses field in MonoClass.
31713
31714 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
31715
31716         * icall.c: improve fix of get_base_definition(). If the parent class
31717           doesn't have the mehod, look at the parent of the parent.
31718         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
31719           to check if a parameter is an in or out parameter
31720           (PARAM_ATTRIBUTE_IN is not set by default).
31721           mono_method_return_message_restore(): Use mono_class_value_size to
31722           get the size of a value type. mono_type_stack_size (parameterType)
31723           does not return the correct value if parameterType is byRef.
31724           mono_load_remote_field(), mono_load_remote_field_new(),
31725           mono_store_remote_field(), mono_store_remote_field_new():
31726           raise exception if the remote call returns an exception.
31727
31728 2003-07-28  Martin Baulig  <martin@ximian.com>
31729
31730         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
31731         method.  This is a wrapper around mono_runtime_invoke() which
31732         boxes the instance object if neccessary.
31733
31734 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
31735
31736         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
31737         metadata.h, row-indexes.h, verify.c: first cut of generics support.
31738
31739 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
31740
31741         * icall.c: disable mcs bug workaround.
31742
31743 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
31744
31745         * object.c (mono_runtime_class_init): Take the metadata_section
31746         mutex before obtaining the domain mutex.
31747
31748         * appdomain.h: Added definition of metadata_section mutex here. 
31749
31750         * object.c: define metadata_mutex here.
31751
31752 2003-07-24  Ravi Pratap  <ravi@ximian.com>
31753
31754         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
31755         fixed.
31756
31757 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
31758
31759         * reflection.c: Fix bug #46669
31760
31761 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31762
31763         * exception.c:
31764         * exception.h:
31765         * icall.c:
31766         * object.h: fill in the type name for TypeLoadException.
31767
31768 2003-07-23  Ravi Pratap  <ravi@ximian.com>
31769
31770         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
31771         relationship between TypeBuilders while compiling corlib) and bug
31772         45993 (Array types returned from the runtime while compiling
31773         corlib were from the loaded corlib).
31774
31775 2003-07-22  Martin Baulig  <martin@ximian.com>
31776
31777         * mono-debug-debugger.c: Reworked the type support a bit more;
31778         distinguish between types and classes.
31779
31780 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
31781
31782         * icall.c: add IsArrayImpl icall.
31783
31784 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
31785
31786         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
31787         initializing real_size only once. Also fix bug #46602.
31788
31789 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
31790
31791         * object.c: Renamed mono_metadata_section to metadata_section.
31792
31793 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
31794
31795         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
31796           empty array if the type is an array. Fixed.
31797           ves_icall_MonoMethod_get_base_definition: if the base method
31798           is abstract, get the MethodInfo from the list of methods of
31799           the class.
31800         * reflection.c: ParameterInfo.PositionImpl should be zero-based
31801           and it was 1-based. Fixed in mono_param_get_objects.
31802
31803 2003-07-20  Martin Baulig  <martin@ximian.com>
31804
31805         * mono-debug.h: Set version number to 31.
31806         (mono_debug_init): Added `MonoDomain *' argument.
31807
31808         * mono-debug-debugger.c: Reworked the type support; explicitly
31809         tell the debugger about builtin types; pass the `klass' address to
31810         the debugger.
31811
31812 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
31813
31814         * image.c: Allow new metadata tables to be loaded without a
31815         warning. Also update the warning message to give the new constant value.
31816                 
31817 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
31818
31819         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
31820         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
31821         array type representation changes.
31822
31823 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
31824
31825         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
31826         on Environment.Exit () call.
31827
31828 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
31829
31830         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
31831         requires a matching corlib.
31832
31833 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
31834
31835         * Changelog: My editor decided to add a CR to each line. Sorry about that.
31836           Committed again without the CRs.
31837         
31838 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
31839
31840         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
31841           getting it from the "this" socket instance. Did not work
31842           if the socket is a subclass of Socket.
31843           Also fixed bug #35371.
31844
31845 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
31846
31847         * metadata.c: fixed size for TypedByRef.
31848         * loader.c: when searching for a method, consider the vararg amrker.
31849         * unicode.c, decimal.c: constify some arrays.
31850
31851 2003-07-15  Dick Porter  <dick@ximian.com>
31852
31853         * socket-io.c: Fixed compilation for gcc < 3.2.
31854
31855         Fixed compilation for machines that don't have AF_INET6 (thanks to
31856         Bernie Solomon <bernard@ugsolutions.com> for that part.)
31857
31858         Fixed compile warnings.
31859         
31860         Fixed formatting and line endings.
31861
31862 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
31863
31864         * socket-io.h:
31865         * socket-io.c: Added IPv6 support.
31866
31867 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
31868
31869         * class.c (mono_class_is_assignable_from): New function to implement
31870         the is_assignable_from logic. Used by mono_object_isinst, 
31871         Type::IsAssignableFrom () and the interpreter.
31872
31873         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
31874         Object, even interfaces.
31875         
31876         * object.c (mono_object_isinst): Implement in terms of 
31877         is_assignable_from.
31878
31879         * icall.c (ves_icall_type_is_assignable_from): New icall.
31880
31881 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
31882
31883         * domain.c (foreach_domain): fix compiler warning.
31884
31885 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
31886
31887         * image.c (load_metadata_ptrs): use g_strndup because strndup is
31888         not available on all plattforms
31889
31890 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
31891
31892         * image.h image.c: Store the metadata version string in MonoImage.
31893         * icall.c: New icall to retrieve the image version.
31894         * reflection.c (create_dynamic_image): Fill in the image version field
31895         * reflection.c (build_compressed_metadata): Use the image version
31896         from the image structure.
31897
31898 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31899
31900         * appdomain.c: modified comment.
31901         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
31902         That will be its last iteration when mono_gc_cleanup is called from
31903         mono_runtime_cleanup and before the domain is unloaded.
31904
31905         Fixes bug #45962.
31906
31907 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
31908
31909         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
31910         attributes.
31911
31912 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
31913
31914         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
31915         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
31916         Bernie Solomon <bernard@ugsolutions.com>.
31917
31918 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
31919
31920         * object.c, object.h: provide mono_object_new_fast() for faster
31921         allocation in some special cases.
31922
31923 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
31924
31925         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
31926         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
31927
31928 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
31929
31930         * threadpool.c: fix leaks.
31931
31932 2003-07-01  Dick Porter  <dick@ximian.com>
31933
31934         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
31935         using MonoGHashTables.  Fixes threadpool bug posted to list.
31936
31937 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
31938
31939         * image.h, image.c: added support to load an assembly from a byte array.
31940         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
31941         assembly bundle support.
31942
31943 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
31944
31945         * threadpool.c (mono_thread_pool_add): keep a reference to the
31946         AsyncResult to prevent GC
31947
31948 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
31949
31950         * class.c: leak fix.
31951
31952 2003-06-25  Dick Porter  <dick@ximian.com>
31953
31954         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
31955         for the async object, the WaitHandle object will close the handle.
31956         Fixes bug 45321.
31957
31958 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
31959
31960         * class.c: in mono_array_class_get (), lookup from the hash with the
31961         same type we insert: this works around a bug in
31962         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
31963         lluis. The real fix will have to wait for after the release.
31964
31965 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
31966
31967         * icall.c: fix memory leak when getting type members.
31968
31969 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
31970
31971         * reflection.c: added more pubtoken special cases.
31972
31973 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
31974
31975         * class.c: handle field offset correctly when class size
31976         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
31977
31978 2003-06-20  Martin Baulig  <martin@ximian.com>
31979
31980         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
31981         *image' field.
31982
31983 2003-06-20  Martin Baulig  <martin@ximian.com>
31984
31985         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
31986
31987 2003-06-20  Martin Baulig  <martin@ximian.com>
31988
31989         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
31990         just distinguish between variables in registers and variables at
31991         an offset relative to a register.
31992
31993 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31994
31995         * icall.c: #ifdef out latest changes until mcs is fixed.
31996
31997 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
31998
31999         * icall.c: return members in metadata order.
32000
32001 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
32002
32003         * icall.c: avoid infinite loop in GetTimeZoneData.
32004
32005 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
32006
32007         * icall.c: added Marshal.Prelink/All icalls.
32008
32009 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
32010
32011         * object.c, object.h: fix warnings and do some overflow checking
32012         when creating arrays.
32013
32014 2003-06-17  Dick Porter  <dick@ximian.com>
32015
32016         * file-io.h:
32017         * file-io.c: File attributes need to be tweaked slightly when
32018         passed from the managed to the w32 world.
32019
32020 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
32021         * profiler.h profiler-private.h profiler.c: Rework last patch
32022         based on suggestion by Paolo.
32023         
32024 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
32025
32026         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
32027         instruction level coverage data collection.
32028         * profiler.h profiler.c (: Added new callback function which can be
32029         used by the profiler to limit which functions should have coverage
32030         instrumentation.
32031         * profiler.c (mono_profiler_load): Call g_module_build_path to
32032         generate the file name of the profiler library.
32033
32034 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
32035
32036         * profiler.c, profiler.h, profiler-private.h: added basic block 
32037         coverage profiling API.
32038
32039 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
32040
32041         * reflection.c (mono_reflection_create_runtime_class): Add support
32042         for events in dynamically generated code.
32043
32044         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
32045         not allocated.
32046
32047 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
32048
32049         * icall.c: when getting timezone info, return reasonable values if we
32050         can't get the actual data.
32051
32052 2003-06-14  Dick Porter  <dick@ximian.com>
32053
32054         * threads.c (start_wrapper): Remove the reference to the thread
32055         object in the TLS data, so the thread object can be finalized.
32056         This won't be reached if the thread threw an uncaught exception,
32057         so those thread handles will stay referenced :-( (This is due to
32058         missing support for scanning thread-specific data in the Boehm GC
32059         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
32060
32061 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
32062
32063         * reflection.c: ensure streams and tables are first allocated with
32064         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
32065
32066 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32067
32068         * icall.c: fixed GetElementType for byrefs (bug# 44792).
32069
32070 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
32071
32072         * reflection.c (mono_reflection_create_runtime_class): Add support for
32073         properties to dynamically created classes.
32074         * reflection.c: Fix a few places where non-MonoObjects were inserted
32075         into the tokens hashtable.
32076
32077 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32078
32079         * object.c: some support to handle out of memory exceptions.
32080
32081 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
32082
32083         * marshal.c (mono_marshal_get_native_wrapper): support reference
32084         return types
32085
32086 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
32087
32088         * object.h, object.c: more portability stuff from Bernie Solomon.
32089         Unexport mono_object_allocate(). Added mono_object_unbox ().
32090         Set exitcode when an unhandled exception is thrown.
32091
32092 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
32093
32094         * marshal.c (mono_marshal_get_native_wrapper): use custom
32095         marshaler for return types.
32096
32097 2003-06-10  Dick Porter  <dick@ximian.com>
32098
32099         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
32100         ip_mreq is available
32101
32102 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
32103
32104         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
32105         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
32106         by Bernie Solomon <bernard@ugsolutions.com>.
32107
32108 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
32109
32110         * gc.c (mono_gc_init): Avoid error message on shutdown when
32111         GC_DONT_GC=1 is used.
32112
32113         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
32114         New icall to return the GUID of a module.
32115
32116 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
32117
32118         * class.c: ensure instance size always includes the parent's size
32119         even whem class size is set explicitly (fixes bug#44294).
32120
32121 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
32122
32123         * profiler.h, profiler.c: made the simple profiler thread-safe,
32124         get more accurate timing info. Allow the loading of an
32125         externally-developed profiler module.
32126
32127 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
32128
32129         * marshal.c (mono_marshal_get_native_wrapper): improved
32130         class/byref arguments.
32131         (mono_marshal_get_native_wrapper): better string marshaling support.
32132
32133 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
32134
32135         * class.c: ensure .pack and .size are handled correctly and
32136         simplified layout of static fields.
32137
32138 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
32139
32140         * appdomain.c
32141         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
32142
32143         * loader.c (mono_lookup_pinvoke_call): look for modules in the
32144         current directory (fix bug 44008)
32145
32146 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
32147
32148         * marshal.c (mono_marshal_get_native_wrapper): started support for
32149         custom marshalers.
32150         (mono_delegate_to_ftnptr): consider marshalling specifications
32151
32152 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
32153
32154         * reflection.c, reflection.h: emit custom marshal info.
32155
32156 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32157
32158         * object.c: free the GError.
32159         * icall.c: added CloseEvent_internal.
32160         * threads.[ch]:
32161         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
32162         call.
32163
32164 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
32165
32166         * loader.c (mono_method_get_signature): Add support for dynamic
32167         assemblies.
32168
32169 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
32170
32171         * reflection.c: fixed bug #43905.
32172
32173 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
32174
32175         * class.c, domain.c, icall.c, metadata.h, object.h: support for
32176         handling TypedReference and ArgIterator.
32177         * loader.c, loader.h: added function to get signature at call site.
32178
32179 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32180
32181         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
32182         data readonly. Buglets and warning fixes. Some MethodSpec support.
32183
32184 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
32185
32186         * class.h, class.c, object.c: remove relative numbering support.
32187
32188 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
32189
32190         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
32191         free the string, until we get a chance to fix Gtk#
32192
32193 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32194
32195         * marshal.c: revert last patch.
32196
32197 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
32198
32199         * icall.c: updates for new mono_class_vtable() not calling
32200         the type constructor anymore.
32201
32202 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
32203
32204         * object.h, object.c: separate vtable creation from type
32205         initialization. Make running the .cctor thread safe.
32206
32207 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
32208
32209         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
32210
32211 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
32212
32213         * loader.c (mono_get_method): consider calling convention
32214
32215 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
32216
32217         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
32218         to return the invisible global type for a module.
32219
32220         * reflection.c (mono_image_build_metadata): Emit global fields too.
32221
32222 2003-05-20  Peter Williams  <peterw@ximian.com>
32223
32224         * loader.c (mono_lookup_internal_call): Add a few newlines.
32225
32226 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
32227
32228         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
32229         literal strings.
32230
32231         * appdomain.c (set_domain_search_path): Recalculate search path when
32232         AppDomainSetup.PrivateBinPath changes.
32233
32234         * object.c (mono_class_compute_gc_descriptor): It turns out some
32235         parts of the class libs (like System.Thread) holds pointers to
32236         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
32237         to treat native int a pointer type here.
32238         
32239 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
32240
32241         * appdomain.h, domain.c: add hashtable for jump target resolution.
32242
32243 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
32244
32245         * reflection.h reflection.c icall.c: Added new icalls 
32246         GetManifestResourceInfoInternal, GetModulesInternal and support
32247         infrastructure.
32248
32249 2003-05-16  Dick Porter  <dick@ximian.com>
32250
32251         * icall.c:
32252         * file-io.h:
32253         * file-io.c: Implement System.IO.MonoIO::GetTempPath
32254
32255 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
32256
32257         * object.c: mono_store_remote_field: little fix to previous patch.
32258
32259 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
32260
32261         * class.c: add constructors to array classes.
32262         * icall.c: special case array construction for InternalInvoke (),
32263
32264 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
32265
32266         * class.h class.c reflection.c object.c: Added support for field
32267         defaults in dynamically generated classes.
32268
32269 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
32270
32271         * reflection.c: properly encode charset for ddlimport.
32272
32273 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
32274
32275         * threads.c: allow compiling without GC.
32276
32277 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
32278
32279         * appdomain.h, object.c, object.h, threads.c, threads.h: added
32280         handling of thread static data.
32281
32282 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
32283
32284         * reflection.h, reflection.c: added mono_custom_attrs_free ().
32285
32286 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
32287
32288         * class.c (mono_array_class_get): always set the serializable flags
32289         (mono_array_class_get): always set the SEALED attribute for array types
32290
32291 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
32292
32293         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
32294         attributes (fix for bug 42021).
32295
32296 2003-05-12  Dick Porter  <dick@ximian.com>
32297
32298         * gc.c: Don't run finalizers when the finalizer thread is
32299         finishing up, because the default domain has already been
32300         destroyed.
32301
32302 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
32303
32304         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
32305         value is null, we should throw an exception.   This is slightly
32306         different than the other conventions used for the constructor.
32307
32308 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32309
32310         * socket-io.c: fixed windows build.
32311
32312 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32313
32314         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
32315
32316 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
32317
32318         * object.c (mono_string_new_wrapper): Compatibility fix for MS
32319         compilers.
32320
32321 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
32322
32323         * class.c (mono_class_layout_fields): Add experimental GC aware
32324         auto layout facility. Requires class library changes to work correctly.
32325
32326         (mono_class_setup_vtable): Avoid overriding explicit interface
32327         method implementations. Fixes iface3.exe test.
32328
32329         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
32330         object reference.
32331         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
32332         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
32333
32334         * metadata.h: Add new type classification macro which determines
32335         whenever the type holds an object reference.
32336
32337 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
32338
32339         * marshal.c (mono_marshal_get_native_wrapper): cleanups
32340
32341 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
32342
32343         * gc.c (finalizer_thread): Work around a GC bug.
32344
32345 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
32346
32347         * marshal.c (emit_struct_conv): allow unions
32348
32349         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
32350
32351 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
32352
32353         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
32354
32355 2003-05-06  Martin Baulig  <martin@ximian.com>
32356
32357         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
32358
32359 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32360
32361         * socket-io.c:
32362         (Select_internal): allow NULLs, don't create arrays if not needed.
32363         Coupled with Socket.cs changes.
32364
32365         * threadpool.c:
32366         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
32367         register a finalizer for it that will close the semaphore handle. This
32368         fixes the leak and make Lupus' test run with > 4080 loops.
32369
32370 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
32371
32372         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
32373         Jerome Laban (bug #42287)
32374
32375 2003-05-02  Martin Baulig  <martin@ximian.com>
32376
32377         * debug-mono-symfile.h
32378         (MonoSymbolFile): Moved declaration into mono-debug.h.
32379         (MonoDebugMethodJitInfo): Likewise.
32380         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
32381         argument.
32382         (_mono_debug_address_from_il_offset): Take a
32383         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
32384
32385         * mono-debug.h
32386         (MonoDebugDomainData): New struct.
32387         (mono_debug_get_domain_data): New function.
32388         (mono_debug_add_method): Take an additional `MonoDomain *'
32389         argument.
32390         (mono_debug_source_location_from_address): Likewise.
32391         (mono_debug_il_offset_from_address): Likewise.
32392         (mono_debug_address_from_il_offset): Likewise.
32393
32394 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
32395
32396         * reflection.c: one more check for null type in custom attrs.
32397
32398 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32399
32400         * reflection.c: avoid warning (comparison is always false due to limited
32401         range of data type).
32402
32403 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32404
32405         * icall.c: throw an exception in Type.GetField if the argument 'name'
32406         is NULL.
32407
32408 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
32409
32410         * reflection.c: fixed handling of enums in named arguments to custom
32411         attributes (bug #42123).
32412
32413 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
32414
32415         * reflection.c: use the right array element type and handle
32416         a null for a Type argument, too.
32417
32418 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
32419
32420         * reflection.c: handle arrays as arguments to custom attributes.
32421
32422 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
32423
32424         * reflection.c: handle a string value in a custom attr
32425         ctor that takes an object.
32426
32427 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
32428
32429         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
32430         (fix bug #42063)
32431
32432 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
32433
32434         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
32435
32436 2003-04-27  Martin Baulig  <martin@ximian.com>
32437
32438         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
32439         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
32440         MONO_DEBUGGER_EVENT_BREAKPOINT.
32441         (mono_breakpoint_trampoline_code): Removed.
32442         (mono_debugger_event_handler): The last argument is now a
32443         `guint32'.
32444         (mono_debugger_insert_breakpoint_full): Removed the
32445         `use_trampoline' argument.
32446         (mono_debugger_method_has_breakpoint): Likewise.
32447         (mono_debugger_trampoline_breakpoint_callback): Renamed to
32448         mono_debugger_breakpoint_callback(); take the method and
32449         breakpoint number as arguments.
32450
32451 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
32452
32453         * metadata.c: fix off by one when loading parameters attributes.
32454
32455 2003-04-24  Martin Baulig  <martin@ximian.com>
32456
32457         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
32458
32459 2003-04-24  Martin Baulig  <martin@ximian.com>
32460
32461         * mono-debug-debugger.c: Moved all code which interacts with the
32462         Mono Debugger here.
32463
32464         * debug-mono-symfile.c: This code now just deals with the symbol
32465         file itself, the debugger code is now in mono-debug-debugger.c.
32466
32467 2003-04-23  Martin Baulig  <martin@ximian.com>
32468
32469         * mono-debug.c (mono_debug_source_location_from_il_offset):
32470         New method; like mono_debug_source_location_from_address(), but
32471         takes an IL offset instead of a machine address.
32472
32473 2003-04-23  Martin Baulig  <martin@ximian.com>
32474
32475         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
32476         `line' field; this is now computed by the debugger.
32477
32478 2003-04-23  Martin Baulig  <martin@ximian.com>
32479
32480         * mono-debug.[ch]: New files.  This is the new debugging interface.
32481
32482         * mono-debug-debugger.[ch]: New files.  Moved all code which
32483         interacts with the Mono Debugger here.
32484
32485 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
32486
32487         * domain.c (mono_init): initialize mono_defaults.monitor_class
32488
32489 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
32490
32491         * reflection.c (method_encode_code): Add a spicy exception to help
32492         future compiler authors.
32493
32494 2003-04-21  Martin Baulig  <martin@ximian.com>
32495
32496         * icall.c
32497         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
32498         Make this work with relative pathnames; g_filename_to_uri() needs
32499         an absolute filename.
32500
32501 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
32502
32503         * icall.c: Track name changes in Object and ValueType.
32504
32505 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
32506
32507         * metadata.c (mono_type_stack_size): size should be a multiple of
32508         sizeof (gpointer)
32509
32510 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32511
32512         * gc.c:
32513         (internal_domain_finalize): moved into mono_domain_finalize. No need
32514         to create another thread because the finalizers will be run in the
32515         finalizer thread.
32516         
32517         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
32518         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
32519         to be run (MS does this too).
32520
32521 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
32522
32523         * object.c (mono_class_compute_gc_descriptor): Update comment.
32524
32525         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
32526
32527         * image.h: Add synchronized wrapper cache.
32528
32529         * image.c (do_mono_image_open): Initialize cache.
32530
32531         * reflection.c (create_dynamic_mono_image): Initialize cache.
32532
32533 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32534
32535         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
32536         ves_icall_System_Buffer_ByteLengthInternal.
32537
32538 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32539
32540         * reflection.c: setup klass->nested_in earlier. Allow
32541         a dash in the assembly name.
32542
32543 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
32544
32545         * metadata.c (mono_type_to_unmanaged): dont access
32546         type->data.klass for MONO_TYPE_OBJECT
32547         (mono_type_to_unmanaged): consider System.Delegate class
32548
32549 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
32550
32551         * class.c: just setup supertypes in the proper place instead of
32552         initializing the full element class for arrays.
32553
32554 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
32555
32556         * class.c: ensure the element class of arrays is initialized.
32557         Setup the supertype info for array classes, too.
32558
32559 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
32560
32561         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
32562
32563 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32564
32565         * Makefile.am: re-added -m option when running cygpath. This way,
32566         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
32567         separator.
32568         * mono-config.c: same codepath for locating mono config file for WIN32
32569         and the rest.
32570         * assembly.c: if mono_assembly_setrootdir is called, don't override
32571         the value set.
32572
32573 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32574
32575         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
32576         MONO_ASSEMBLIES variable.
32577
32578 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
32579
32580         * icall.c: added Assembly::GetNamespaces() icall.
32581
32582 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32583
32584         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
32585
32586 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
32587
32588         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
32589         * object.c: fixed bug in the construction of vtable for proxies
32590
32591 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
32592
32593         * object.c (mono_array_new): Mark mono_array_new as an icall.
32594
32595 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32596
32597         * class.c: fixed test for public method when overriding interfaces.
32598         Closes bug #40970.
32599
32600 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
32601
32602         * appdomain.h, domain.c: added mono_domain_foreach() to
32603         be able to access the currently loaded appdomains.
32604         * object.c: make string interning work across sppdomains.
32605         Mark some functions for use as icalls.
32606
32607 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
32608
32609         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
32610
32611         * reflection.h reflection.c: Allocate long living data using 
32612         GC_MALLOC_ATOMIC so the collector does not need to scan it.
32613
32614         * reflection.c: Double the allocation size in streams instead of
32615         increasing it, to prevent unneccesary copying on large assemblies.
32616         
32617         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
32618         creation if the assembly does not have the Run flag set.
32619
32620 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
32621
32622         * class.h: avoid the C++ keywords in header files (Jerome Laban
32623         spotted and fixed this).
32624
32625 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32626
32627         * object.c:
32628         (mono_unhandled_exception): fill in the arguments for the
32629         UnhandledException event. Only trigger that event for the default
32630         domain (as MS does).
32631
32632 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
32633
32634         * object.c: Improve typed allocation stuff based on suggestions from
32635         Paolo. Also turn it on if the GC library supports it.
32636
32637 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
32638
32639         * object.c object.h class.h: Added experimental typed allocation
32640         facility using the interfaces in gc_gcj.h.
32641
32642         * os/gc_wrapper.h: Added new include files.
32643         
32644 2003-04-03  Martin Baulig  <martin@ximian.com>
32645
32646         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
32647         which is not yet enabled by default.
32648
32649         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
32650         functions.
32651         (mono_gc_lock, mono_gc_unlock): New static functions.
32652
32653         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
32654         functions; stop/start the world for the garbage collector.  This
32655         is using the windows API; we need to complete the SuspendThread()/
32656         ResumeThread() implementation in the io-layer to make this work on Unix.
32657         (mono_gc_push_all_stacks): New public function; tells the garbage
32658         collector about the stack pointers from all managed threads.
32659
32660 2003-04-03  Martin Baulig  <martin@ximian.com>
32661
32662         * object.h (MonoThread): Added `gpointer stack_ptr'.
32663
32664         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
32665
32666 2003-04-03  Martin Baulig  <martin@ximian.com>
32667
32668         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
32669
32670 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
32671
32672         * reflection.c (typebuilder_setup_fields): Initialize field.first and
32673         field.last.
32674
32675 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
32676
32677         * loader.c (mono_lookup_internal_call): Report the corlib that is
32678         out of sync.
32679
32680 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
32681
32682         * icall.c (ves_icall_type_GetTypeCode): fixed check for
32683         System.DBNull (it's class not valuetype).
32684
32685 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
32686
32687         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
32688         if the array method was already assigned a token (fixes bug#40646).
32689
32690 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
32691
32692         * reflection.c (mono_reflection_get_type): Attempt type resolve even
32693         if no assembly is given.
32694
32695 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
32696
32697         * metadata.h: Added the new tables.
32698
32699         * row-indexes.h: Added definitions for new tables.
32700
32701         * metadata.c: Add schemas for new tables, and add support for
32702         computing the sizes of them.
32703
32704         * class.c: Update for handling the new type cases.
32705
32706 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
32707
32708         * metadata.h (MONO_TYPE_IS_VOID): new macro
32709
32710 2003-03-31  Martin Baulig  <martin@ximian.com>
32711
32712         * threads.h (MonoThreadCallbacks): Added `thread_created'.
32713
32714         * threads.c (mono_thread_new_init): Call `thread_created' in the
32715         mono_thread_callbacks.
32716
32717 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
32718
32719         * loader.h: added marshalbyrefobject_class to mono_defaults
32720         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
32721         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
32722           generation of output parameters.
32723           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
32724         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
32725           contextbound and the target object belongs to the context of the caller.
32726         * object.h: added context and unwrapped_server variables in MonoRealProxy.
32727         * object.c: Implemented support for interfaces and abstract classes
32728           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
32729           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
32730
32731 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
32732
32733         * class.h class.c (mono_class_is_subclass_of): New function.
32734         
32735         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
32736         routines for most common case (calls from ArrayList::ToArray).
32737
32738         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
32739         routine so programs which call Environment::Exit() can be profiled.
32740
32741         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
32742         Added MONO_ARCH_SAVE_REGS.
32743
32744         * icall.c (ves_icall_type_is_subtype_of): Use new function.
32745
32746 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
32747
32748         * blob.h: Add a couple of new MonoType types definitions.
32749
32750         * tabledefs.h: Add a couple of new call convs.
32751
32752 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
32753
32754         * reflection.h (MonoReflectionDynamicAssembly): track changes in
32755         the layout of the class.
32756
32757         * reflection.c (alloc_table): double the size on overflow to avoid
32758         unnecessary copying.
32759
32760         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
32761         avoid filling out metadata tables and blobs. Also set mb->ilgen to
32762         null so it can be garbage collected.
32763         
32764 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
32765
32766         * reflection.c (mono_reflection_get_type): Return the resolved type
32767         only if it is in the assembly we searched.
32768
32769         * reflection.c (ensure_runtime_vtable): Initialize method slots.
32770
32771         * class.c (mono_class_setup_vtable): Set the slot of the overriding
32772         method.
32773
32774 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32775
32776         * appdomain.c:
32777         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
32778         the right one is 'file:///blah', but MS allows it.
32779         * assembly.c:
32780         (mono_assembly_open): allow 'file://blah'
32781
32782         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
32783
32784 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
32785
32786         * socket-io.c: fixes bug #40310.
32787
32788 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
32789
32790         * reflection.c (mono_reflection_parse_type): handle deeply nested
32791         types correctly.
32792
32793         * reflection.c (mono_image_create_token): Use unique token values
32794         since they will be put into a hash table.
32795
32796         * class.c (mono_class_setup_vtable): If a method occurs in more than
32797         one place in the vtable, and it gets overriden, then change the
32798         other occurances too.
32799
32800         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
32801         object as return type.
32802
32803 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
32804
32805         * icall.c: Deleted "ToString" implementation for double and float
32806         because they are full implemented in managed code.
32807
32808 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
32809
32810         * reflection.c, reflection.h: implemented and exported functions
32811         to retrieve info about custom attributes.
32812
32813 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32814
32815         * appdomain.c: moved Uri handling to assembly.c
32816         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
32817         work when using a file Uri in *nix and windows.
32818
32819         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
32820         GetReferencedAssemblies.
32821
32822 2003-03-18  Dick Porter  <dick@ximian.com>
32823
32824         * icall.c: Rename a couple of internal calls
32825
32826         * threads.c: Set the thread state to Stopped when a thread exits.
32827         Fixes bug 39377.
32828
32829 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
32830
32831         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
32832         New icall.
32833
32834         * object.c (mono_class_vtable): fix warning.
32835
32836 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
32837
32838         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
32839
32840         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
32841         memory.
32842         (method_encode_clauses): Create exception info structures in the right
32843         order.
32844         (mono_reflection_setup_internal_class): Initialize supertypes field.
32845
32846         * class.c object.c: Handle interfaces which implement other interfaces 
32847         correctly.
32848
32849         * class.h class.c: Move the supertypes array initialization code into 
32850         a separate function so it can be used for dynamic types too. Also call
32851         it earlier, in mono_class_init(), since it can be used before the
32852         type is initialized.
32853
32854 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32855
32856         * Makefile.am:
32857         * assembly.c:
32858         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
32859
32860         * appdomain.c:
32861         * appdomain.h:
32862         * marshal.c:
32863         * object.c: remove warnings.
32864
32865 2003-03-13  Martin Baulig  <martin@ximian.com>
32866
32867         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
32868         (MonoDebugLexicalBlockEntry): New types.
32869
32870         * debug-mono-symfile.c
32871         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
32872
32873 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32874
32875         * process.c: ret can be any non-zero value accroding to MS doc.
32876
32877 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
32878
32879         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
32880         fixing a warning for a miss-used prototype, would have cause
32881         random memory corruption.
32882
32883 2003-03-07  Martin Baulig  <martin@ximian.com>
32884
32885         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
32886         getting really annoying ....
32887
32888 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
32889
32890         * reflection.c (fixup_method): added support for array methods.
32891
32892 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
32893
32894         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
32895         (pointed out by Michael Adams).
32896
32897 2003-03-04  Dick Porter  <dick@ximian.com>
32898
32899         * icall.c: Temporarily reverted the Double and Single ToString()
32900         change, because it broke nunit.
32901
32902 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
32903
32904         * object.h, threads.h: make include files compatible with C++
32905         (patch by Jerome Laban <jlaban@wanadoo.fr>).
32906
32907 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
32908
32909         * icall.c: Erased ToString helper functions for Double and Single.
32910         Now, that implementations ar all in managed code (Double and Single
32911         Formatters).
32912
32913 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
32914
32915         * appdomain.c: Added method for initializing the default context of
32916         a domain. Added internal call for getting the default context.
32917         * appdomain.h: Added context variable in MonoDomain struct.
32918         * domain.c: mono_domain_set also sets the default context of the domain
32919         * icall.c: Mapped internal method InternalGetDefaultContext.
32920         * object.c: mono_object_get_virtual_method returns always a remoting
32921         wrapper if the object is a transparent proxy.
32922         mono_runtime_invoke_array: when creating an object by calling the
32923         constructor, if the created object is a proxy, then the constructor should
32924         be called using the a remoting wrapper.
32925
32926 2003-03-03  Dick Porter  <dick@ximian.com>
32927
32928         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
32929         variable so it compiles on solaris.  Problem spotted by
32930         Christopher Taylor <ct@cs.clemson.edu>
32931
32932 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32933
32934         * appdomain.c:
32935         (get_info_from_assembly_name): don't leak value.
32936
32937         * icall.c:
32938         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
32939         result.
32940
32941 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
32942
32943         * assembly.c: export mono_image_load_references ().
32944         * class.c: handle function pointers. mono_class_from_name() now
32945         supports nested type names directly.
32946
32947 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
32948
32949         * reflection.h reflection.c: Encode already created dynamic methods 
32950         and fields correctly as a DEF instead of a REF.
32951
32952         * reflection.c: Get rid of the force_ref argument to 
32953         mono_image_typedef_or_ref since it was wrong in the first place.
32954
32955         * string-icalls.c: add error checking to string constructors according
32956         to the MSDN docs.
32957
32958         * reflection.c: Emit types in the order their TypeBuilders were 
32959         created. Previously, a new table index was assigned to each type before
32960         the tables were emitted. This was wrong because the signature blob
32961         might already refer to a type by its original table index.
32962
32963 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
32964
32965         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
32966         change.
32967         
32968 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32969
32970         * Makefile.am: make assemblies dir have \ instead of / on windows.
32971
32972 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
32973
32974         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
32975         iterate over the NESTEDCLASS table using a linear search since the
32976         table is not guaranteed to be sorted by the secondary key.
32977
32978         * class.c (mono_class_create_from_typedef): fixed up call to
32979         mono_metadata_nesting_typedef.
32980         
32981 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
32982
32983         * marshal.c (mono_string_to_byvalstr): clear the memory as
32984         suggested by Jerome Laban <jlaban@wanadoo.fr>
32985
32986 2003-02-26  Dick Porter  <dick@ximian.com>
32987
32988         * process.c: Cope with padding in .rsrc blocks
32989
32990 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
32991
32992         * metadata.h: reverted the filter_len change, it breaks reflection
32993         
32994 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
32995
32996         * metadata.h: added a new field to store the filter_len
32997         
32998
32999 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
33000
33001         * reflection.c: handle custom attributes for types and members
33002         created with Reflection.Emit (bug#38422).
33003
33004 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
33005
33006         * reflection.c: define RTSpecialName automatically for constructors for
33007         compatibility with MS.NET.
33008
33009         * reflection.c (mono_reflection_create_runtime_class): initialize
33010         nested_in field of dynamically created classes.
33011
33012 2003-02-22  Martin Baulig  <martin@ximian.com>
33013
33014         * debug-mono-symfile.h: Incremented version number.
33015
33016 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
33017
33018         * object.h icall.c process.c: fix warnings.
33019
33020 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
33021
33022         * appdomain.h appdomain.c:
33023         (mono_domain_try_type_resolve): split the 
33024         name_or_tb argument into a name and a tb argument.
33025         (mono_domain_has_type_resolve): new function to check whenever the
33026         application has registered a TypeResolve event handler.
33027         
33028         * icall.c reflection.h reflection.c: move the type resolve logic into
33029         mono_reflection_get_type () so it will be invoked when 
33030         Assembly::GetType () is called.
33031
33032         * reflection.c:
33033         (mono_reflection_get_type): renamed to get_type_internal.
33034         (mono_reflection_get_type): fixed type name generation so it works 
33035         for nested types too.
33036         (mono_reflection_get_type): call has_type_resolve () to avoid the 
33037         costly type name generation if there is no resolve event handler.
33038
33039 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33040
33041         * class.c, image.c: load exported types from file references.
33042
33043 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
33044
33045         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
33046           used to cache the managed methods used to create proxies and make 
33047           remote invocation of methods.
33048         * class.h: Added in MonoVTable a flag to indicate that a class needs 
33049           to be remotely created.
33050         * object.c: Modified the method mono_class_vtable(). It now initializes 
33051           the remote flag of the vtable. Modified mono_object_new_specific(), 
33052           so now it checks the remote flag.
33053         * icall.c: Added a couple of internal methods, one for enabling instance 
33054           creation interception for a type, and one for creating objects bypassing
33055           the remote check.
33056
33057 2003-02-18  Martin Baulig  <martin@ximian.com>
33058
33059         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
33060         New interncall to get a method's metadata token.
33061
33062         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
33063         New interncall for the debugger.
33064
33065 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
33066
33067         * class.c (mono_class_setup_vtable): allocate supertype array
33068
33069 2003-02-18  Martin Baulig  <martin@ximian.com>
33070
33071         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
33072
33073 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33074
33075         * reflection.c:
33076         (assembly_name_to_aname): jump over unknown properties (i've found
33077         something like: 'type, assembly, version=xxx, custom=null, public...',
33078         so now will ignore custom=null and still get the rest of the values).
33079
33080 2003-02-17  Dick Porter  <dick@ximian.com>
33081
33082         * threads.c: Have Thread.Start() wait for a semaphore to signal
33083         that the thread has set up all its local data.  This fixes bug
33084         34323, where Abort() raced the new thread's TLS data.
33085
33086         Also removes the handle_store() call from start_wrapper, because
33087         threads are now always created suspended and there is no longer a
33088         race between the parent and child threads to store the info.
33089
33090 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
33091
33092         * image.c: explain the #- heap issue in a message, hopefully
33093         avoiding FAQs on mono-list.
33094
33095 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33096
33097         * icall.c:
33098         (GetEntryAssembly): if the domain has not invoked
33099         AppDomain.ExecuteAssembly yet, return the assembly of the default
33100         AppDomain.
33101
33102 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
33103
33104         * class.c (mono_ldtoken): make it work in dynamic assemblies.
33105
33106 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
33107
33108         * metadata.c, reflection.c: simple speedup to type hash
33109         and equals code.
33110
33111 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
33112
33113         * image.c, image.h, class.c, assembly.c: move module loading
33114         to MonoImage. When loading metadata, consider alignemnet from
33115         the start of metadata, not from the metadata address in memory.
33116
33117 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
33118
33119         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
33120         AssemblyBuilder objects. Factored out custom attribute creation into
33121         a separate function.
33122         (create_custom_attr): new function to create custom attributes.
33123
33124 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
33125
33126         * Makefile.am: Got tired of typing the full pathname to pedump.
33127         Until there is another option, am installing this.
33128
33129 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
33130
33131         * class.c (class_compute_field_layout): always set field->parent 
33132         (mono_ldtoken): use mono_defaults.fieldhandle_class;
33133
33134 2003-02-11  Dick Porter  <dick@ximian.com>
33135
33136         * threads-types.h:
33137         * monitor.c: Rewrote Monitor, making lock much faster and
33138         Pulse/Wait work as specified.  Also uses much fewer handles, and only
33139         creates them as needed.
33140
33141         * exception.c: Added SynchronizationLockException
33142
33143         * threads.c: Deleted old Monitor implementation.  The new one is
33144         in a new file.
33145
33146 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
33147
33148         * class.c: handled TypedReference type code. Set the correct size for
33149         class data. Setup interface_offsets for interface classes, too.
33150
33151 2003-02-09  Martin Baulig  <martin@ximian.com>
33152
33153         * debug-mono-symfile.h: Reflect latest symbol writer changes.
33154
33155 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
33156
33157         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
33158         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
33159         * object.c: fixed mono_object_get_virtual_method () for interfaces.
33160         * verify.c: check for code that runs after the end of the method.
33161
33162 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33163
33164         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
33165         "System.Math::Round2".
33166         * sysmath.h: Added Floor, Round and Round2 definitions.
33167         * sysmath.c: Modified certain functions that were not 100% compliant
33168         with MS.NET (math precision) and added the implementation of Floor,
33169         Round and Round2.
33170
33171 2003-02-07  Martin Baulig  <martin@ximian.com>
33172
33173         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
33174
33175 2003-02-07  Martin Baulig  <martin@ximian.com>
33176
33177         * debug-mono-symfile.c: Reflected latest symwriter changes.
33178         (mono_debug_create_mono_symbol_file): Removed.
33179         (mono_debug_open_mono_symbol_file): Take an argument which
33180         specifies whether to create a dynamic symbol file.
33181
33182 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
33183
33184         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
33185
33186 2003-02-05  Martin Baulig  <martin@ximian.com>
33187
33188         * reflection.c (mono_image_build_metadata): Make this public,
33189         protect it against being called multiple times, don't create
33190         resources and don't build the compressed metadata here.
33191         (mono_image_create_pefile): Do this here.
33192
33193         * icall.c
33194         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
33195
33196 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33197
33198         * socket-io.c: fixed bug #36322.
33199
33200 2003-02-06  Piers Haken <piersh@friskit.com>
33201
33202         * appdomain.[ch]:
33203         * class.h:
33204         * debug-mono-symfile.c:
33205         * icall.c:
33206         * loader.c:
33207         * mono-config.c:
33208         * monosn.c:
33209         * reflection.c:
33210         * socket-io.c: warning cleanups
33211
33212 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
33213
33214         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
33215         function. works like remoting invoke, but does a check for the Proxy first.
33216
33217 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
33218
33219         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
33220
33221 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
33222
33223         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
33224         array of pointers.
33225         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
33226         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
33227
33228         * object.c (mono_store_remote_field_new): used by the new jit
33229         instead of mono_store_remote_field
33230         (mono_load_remote_field_new): used by the new jit
33231         instead of mono_load_remote_field
33232
33233 2003-02-05  Patrik Torstensson
33234
33235         * appdomain.c: changed unload to take the domain id instead
33236         of domain
33237         
33238         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
33239
33240
33241 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33242
33243         * appdomain.c: don't look for assemblies in ApplicationBase if
33244         PrivateBinPathProbe is set.
33245
33246 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33247
33248         * object.c: make the first argument in main_args contain the absolute
33249         path to the assembly. Fixes bug #37511.
33250
33251 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33252
33253         * icall.c: get correct UTC offset for countries not using daylight
33254         time saving. Fixes bug #30030.
33255
33256 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33257
33258         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
33259         and 1 are the family).
33260
33261 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
33262
33263         * icall.c (ves_icall_InternalExecute): removed wrong assertion
33264
33265         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
33266
33267 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
33268
33269         * reflection.c: added support for SignatureHelper tokens, which is
33270         needed by the Calli opcode.
33271
33272         * reflection.h: track changes to SignatureHelper class.
33273
33274         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
33275
33276 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33277
33278         * appdomain.c: fixed loading assemblies from PrivateBinPath.
33279
33280 2003-02-03  Patrik Torstensson
33281         * appdomain.[c|h], domain.c : 
33282          - Added support for getting a domain via domain id
33283          - Support for setting and getting domain from System.AppDomain 
33284            (used in cross appdomain channel)
33285          - Added support for get/set for a MonoAppContext on a thread 
33286            (Context class in System.Runtime.Remoting.Contexts),
33287          - Removed hack in Get/SetData and ExecuteAssembly.
33288         
33289         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
33290         the managed world to get control when a proxy is created.
33291
33292         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
33293         
33294 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
33295
33296         * icall.c
33297         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
33298         Populate the codebase field as well.
33299
33300 2003-02-02  Martin Baulig  <martin@ximian.com>
33301
33302         * debug-mono-symfile.c
33303         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
33304         (mono_debug_symfile_add_method): Allow interncalls.
33305
33306 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33307
33308         * icall.c: throw parse exception if strtod fails or the string is empty.
33309
33310 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
33311
33312         * marshal.c: handle object type separately from defined
33313         class types.
33314
33315 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
33316
33317         * marshal.c: handle NATIVE_LPSTR for strings when it's
33318         explicitly specified.
33319
33320 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
33321
33322         * reflection.c, reflection.h, icall.c: setup the reflection
33323         handle cache for ModuleBuilders and AssemblyBuilders.
33324
33325 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
33326
33327         * reflection.c (reflection_methodbuilder_to_mono_method): set
33328         pinvoke flag
33329
33330 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33331
33332         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
33333
33334 2003-01-29  Dick Porter  <dick@ximian.com>
33335
33336         * threads.c: No need for the fake_thread kludge now that Thread
33337         doesn't run a class constructor
33338         
33339 2003-01-29  Dick Porter  <dick@ximian.com>
33340
33341         * threads.c: Use g_direct_hash instead of the rather bogus
33342         g_int_hash
33343
33344 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
33345
33346         * marshal.c (mono_marshal_get_native_wrapper): add check for null
33347         (fix pinvoke12.exe)
33348         (mono_marshal_get_struct_to_ptr): generate valid IL code
33349         (mono_marshal_get_ptr_to_struct): generate valid IL code
33350         (*): correctly set sig->pinvoke, we need to memdup the signature
33351         to do that
33352
33353 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33354
33355         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
33356         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
33357
33358 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
33359
33360         * profiler.c: provide more callers information.
33361
33362 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
33363
33364         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
33365
33366         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
33367
33368         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
33369
33370 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33371
33372         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
33373         exception instead of going into an infinite loop on dates which it 
33374         can't yet handle.
33375
33376         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
33377         out-of-range exception if needed.
33378
33379         * class.c (mono_class_setup_vtable): allow a virtual method to provide
33380         an implementation for an interface method and to override an inherited
33381         method at the same time. 
33382         Imagine a scenario when a virtual method is used to override a
33383         virtual abstract method in a parent class, and this same method 
33384         provides an implementation for an method inherited from an interface. 
33385         In this case, the interface resolution code will set im->slot, which 
33386         means that the virtual method override pass will skip this method 
33387         which means a pointer to the abstract method inherited from the parent
33388         will remain in the vtable of this non-abstract class.
33389
33390         * class.c: (mono_class_setup_vtable): continue search for a real 
33391         method if only an abstract method is found.     
33392
33393 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
33394
33395         * reflection.c: add size to encoding for ByValStr and ByValArray
33396         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
33397
33398 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33399
33400         * class.c (mono_class_setup_vtable): pass the override info as an
33401         argument.
33402
33403         * class.c (mono_class_setup_vtable): set the slot of overriding methods
33404         correctly.
33405         
33406         * reflection.c (ensure_runtime_vtable); add support for method 
33407         overrides.
33408         
33409 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33410
33411         * reflection.c (resolution_scope_from_image): Hack to work to work with
33412         dynamic assemblies.
33413
33414         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
33415         added a 'force_ref' argument to force this function to allways return 
33416         a TypeRef. This is needed by mono_image_get_memberref_token ().
33417         
33418 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33419
33420         * reflection.c (mono_image_get_type_info): interfaces really don't have
33421         a parent.
33422
33423         * reflection.c (mono_image_basic_init): fill out missing fields of
33424         image structure.
33425
33426         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
33427         dynamic assemblies. This is required so dynamic assemblies show up in
33428         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
33429         Type::GetType() etc. This is consistent with MS behaviour.
33430
33431         * image.c image.h reflection.c: add newly created classes to the name 
33432         cache so mono_class_get () will find them.      
33433
33434 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33435
33436         First part of changes to get IKVM.NET running under mono.
33437         
33438         * appdomain.h, appdomain.c: added new function 
33439         mono_domain_try_type_resolve() which will emit TypeResolve events. 
33440         This function will call AppDomain::DoTypeResolve to do the actual work.
33441
33442         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
33443         moved existing code dealing with dynamic tokens to a new function 
33444         called mono_reflection_lookup_dynamic_token (). This function will 
33445         raise TypeResolve events when appropriate. Since reflection.c is not 
33446         part of libmetadata, a new hook function called 
33447         mono_lookup_dynamic_token() is added to class.c which will call this.
33448
33449         * assembly.h assembly.c: make the invoke_load_hook function public,
33450         so it can be called for dynamic assemblies.
33451
33452         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
33453
33454         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
33455         type isn't found.
33456
33457         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
33458         MonoGHashTable, since it contains pointers to objects which the GC 
33459         needs to track.
33460
33461         * assembly.c (search_loaded): remove unused variable.
33462         
33463 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
33464
33465         * object.c: fixed issue exposed by gcc-generated IL programs
33466         that use RVA data for pointers.
33467
33468 2003-01-25  Martin Baulig  <martin@ximian.com>
33469
33470         * threads.c (start_wrapper): Moved the initialization of
33471         `start_func' above the mono_new_thread_init() call to which we
33472         pass it as argument.
33473
33474 2003-01-24  Martin Baulig  <martin@ximian.com>
33475
33476         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
33477         the MonoThread pointer.
33478
33479 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
33480
33481         * icall.c: Rename `PowImpl' to Pow.
33482
33483 2003-01-23  Dick Porter  <dick@ximian.com>
33484
33485         * threads.c (start_wrapper): Create a Thread object if needed, so
33486         the Main() thread can do the class initialisation in a subthread
33487         that has been set up to allow managed code execution.
33488
33489         Pass the thread ID instead of the MonoThread pointer to the thread
33490         start and attach callbacks.  This change is required, because the
33491         jit thread start callback must be called _before_ the Thread
33492         object can be created.
33493         
33494         (mono_thread_init): Removed much object creation code that is no
33495         longer needed.  No managed code is called from here now.
33496
33497         * object.c (mono_runtime_exec_managed_code): Create a subthread
33498         for Main, and call back to the runtime to use it.
33499         Set the exit code when Main exits.
33500
33501         * gc.c: Make sure domain finalisation happens in a subthread.
33502         Re-enable threaded GC, fixing bug 31333 (again).
33503
33504         * environment.c: System.Environment internall calls (so far just
33505         ExitCode is here, the others are still in icall.c)
33506
33507         * appdomain.c (mono_runtime_cleanup): All threads running managed
33508         code should have finished before mono_runtime_cleanup() is
33509         reached, so no need to clean up threads.
33510
33511 2003-01-22  Martin Baulig  <martin@ximian.com>
33512
33513         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
33514         `gpointer func' arguments.      
33515         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
33516         but added `MonoThread *thread' argument.
33517         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
33518
33519         * threads.c (mono_new_thread_init): Added `gpointer func' argument
33520         and pass it to the mono_thread_start_cb callback.
33521         (mono_install_thread_callbacks): New public function to install a
33522         set of callbacks which are set by the debugger.
33523         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
33524
33525 2003-01-22  Martin Baulig  <martin@ximian.com>
33526
33527         * Makefile.am: Install debug-mono-symfile.h.
33528
33529 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
33530
33531         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
33532
33533 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
33534
33535         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
33536         * class.c (mono_ptr_class_get): correctly set access levels of pointers
33537         (mono_array_class_get): correctly set access levels of arrays
33538
33539 2003-01-20      Patrik Torstensson
33540         * image.h (MonoAssemblyName): changed major, minor, build, revision
33541         from signed to unsigned.
33542
33543 2003-01-20  sean kasun <skasun@azstarnet.com>
33544
33545         * reflection.c (load_cattr_value): Now this handles
33546         MONO_TYPE_SZARRAY.  Fixes bug #35629
33547
33548 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
33549
33550         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
33551         integer value
33552
33553 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33554
33555         * decimal.c: fixed bug #26056.
33556
33557 2003-01-17  Martin Baulig  <martin@ximian.com>
33558
33559         * gc.c: Raise an ExecutionEngineException instead of using g_error().
33560
33561 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33562
33563         * exception.[ch]:
33564         (mono_get_exception_type_initialization): new function.
33565
33566         * object.c: throw a TypeInitializationException when an exception is
33567         thrown invoking the class constructor.
33568
33569 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33570
33571         * reflection.c: fixed attribute reading.
33572
33573 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33574
33575         * icall.c:
33576         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
33577         provided, look for the type in the calling assembly and then in
33578         mscorlib; if the assembly name is provided, only try that one.
33579
33580 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
33581
33582         * object.c: register the vtable before there is a chance it's
33583         queried again recursively.
33584
33585 2003-01-13  Duncan Mak  <duncan@ximian.com>
33586
33587         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
33588         gc-internal.h. 
33589         
33590 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
33591
33592         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
33593
33594 2003-01-11  Martin Baulig  <martin@ximian.com>
33595
33596         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
33597         this to 20 for the release.
33598
33599 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
33600
33601         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
33602
33603         * loader.c (mono_method_get_marshal_info): bug fix
33604
33605         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
33606         structures with explicit layout
33607
33608 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
33609
33610         * profiler.c: made the output more readable (and sorted). 
33611         Added caller information for the allocation profiler.
33612
33613 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
33614
33615         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
33616
33617 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33618
33619         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
33620         to get value types.
33621         
33622 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
33623
33624         * object.c, profiler.h, profiler.c, profiler-private.h:
33625         Added object allocation profiler.
33626
33627 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
33628
33629         * reflection.h, reflection.c: handle global methods.
33630         Compress blob entries.
33631
33632 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
33633
33634         * marshal.c: fix compilation.
33635
33636 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
33637
33638         * loader.c (mono_method_get_marshal_info): impl.
33639
33640         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
33641
33642 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33643
33644         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
33645         for reference types.
33646
33647 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
33648
33649         * loader.c: fixed off by one error in loaded parameter names.
33650
33651 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
33652
33653         * marshal.c (mono_marshal_get_icall_wrapper): like
33654         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
33655         instead of a MonoMethod.
33656
33657 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33658
33659         * decimal.c: fixed bug #36537.
33660
33661 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
33662
33663         * marshal.c: throw a missing method exception if a
33664         P/Invoke method is not found.
33665
33666 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
33667
33668         * icall.c: allow a null this for constructors.
33669
33670 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
33671
33672         * icall.c: raise the proper exceptions if the arguments to the
33673         internal Invoke are incorrect.
33674
33675 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
33676
33677         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
33678
33679 2003-01-03  Martin Baulig  <martin@ximian.com>
33680
33681         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
33682
33683 2002-12-31  Martin Baulig  <martin@ximian.com>
33684
33685         * debug-mono-symfile.c: Completely rewrote the type section.
33686         Instead of using individual malloc()ed fields, we use one big
33687         continuous memory area and offsets into this area.
33688         See the comments in the source code for details.
33689
33690 2002-12-30  Martin Baulig  <martin@ximian.com>
33691
33692         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
33693
33694 2002-12-30  Martin Baulig  <martin@ximian.com>
33695
33696         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
33697         line number table in this data blob instead of using an external
33698         pointer.
33699
33700 2002-12-28  Martin Baulig  <martin@ximian.com>
33701
33702         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
33703
33704 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
33705
33706         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
33707         as a boxed return type.
33708
33709 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
33710
33711         * appdomain.c
33712         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
33713         g_build_filename to properly get separators on the filename created.
33714
33715         * object.h: Small change, introduce MonoMarshalByRefObject to
33716         track the layout of that structure in the C# universe as we make
33717         changes there.
33718
33719 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
33720
33721         * object.c: removed assert to allow static fields on interfaces.
33722         * loader.c: a TypeSpec may be used for any type, not just arrays.
33723
33724 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
33725
33726         * class.c, class.h: added mono_class_array_element_size ().
33727         Ignore static methods in interfaces.
33728
33729 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33730
33731         * threads.c: fixed the build under cygwin.
33732
33733 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
33734
33735         * reflection.c: handle nullref constants. Allocate keys for
33736         reflection handles with the GC.
33737
33738 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
33739
33740         * threads.c, threads.h: added mono_thread_get_abort_signal()
33741         to get a suitable signal for thread abort.
33742
33743 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
33744
33745         * metadata.c: fix handling of ExportedType table.
33746
33747 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33748
33749         * icall.c: added WriteWindowsDebugString internal call.
33750
33751 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33752
33753         * reflection.h: added fields to match C# implementation.
33754
33755 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33756
33757         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
33758
33759 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
33760
33761         * gc.h, gc-internal.h: Rename header for GC internal calls to
33762         gc-internal.h from gc.h as to not clash with Boehm GC having its
33763         header installed as <gc.h> in outside include paths.
33764         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
33765         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
33766
33767 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33768
33769         * icall.c: assign minor, build and revision in FillName.
33770
33771 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
33772
33773         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
33774         Added support for running code generated by Reflection.Emit.
33775
33776 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33777
33778         * appdomain.c: check for NULL argument in LoadFrom.
33779
33780 2002-12-10  Dick Porter  <dick@ximian.com>
33781
33782         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
33783
33784 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33785
33786         * appdomain.c: fix buglet when building exe file name.  Handle full
33787         assembly name (needed after latest changes to AssemblyName).
33788         * image.c:
33789         (mono_image_close): free some hashtables.
33790
33791 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
33792
33793         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
33794         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
33795         on some systems (redhat 7.3) 
33796
33797 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
33798
33799         * threads.c: delete the critical section of a sync block,
33800         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
33801
33802 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
33803
33804         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
33805
33806 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33807
33808         * appdomain.[ch]: handle the assembly preload event to try loading the
33809         assemblies using the paths we have in the current domain.
33810
33811         * assembly.[ch]: created an assembly preload hook that is called to try
33812         loading the assembly by other means that the ones provided here.
33813
33814         * domain.c: initialize the domain search path.
33815
33816         From now on, assemblies (TODO: except corlib and System) are loaded
33817         according to these rules when using mono_assembly_load ():
33818
33819                 1. It tries to load the assembly from the ApplicationBase
33820                 of the current domain appending .dll and .exe (TODO: have to
33821                 try loading from name/name.dll and name/name.exe).
33822
33823                 2. It tries the search path specified in PrivateBinPath for the
33824                 current domain (if any).
33825
33826                 3. Previous behavior.
33827
33828 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
33829
33830         * icall.c: implemented GetInterfaceMap() related icall.
33831         * domain.c, loader.h: load MethodInfo in mono_defaults.
33832
33833 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
33834
33835         * gc.c: disable the finalizer thread for now, untill all the issues
33836         with it are resolved.
33837
33838 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
33839
33840         * string-icalls.c: handle embedded nulls in string ctor when the
33841         length is specified.
33842
33843 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
33844
33845         * class.c: look for explicit interface implementation in parent
33846         classes, too.
33847
33848 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
33849
33850         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
33851
33852 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
33853
33854         * gc.c: protect handles with a critical section.
33855
33856 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33857
33858         * icall.c:
33859         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
33860         parameters. If no assembly specified, try getting the type from all
33861         the assemblies in the current domain, else, load the assembly and get
33862         the type from it.
33863
33864 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33865
33866         * marshal.c: applied patch from Aleksey Demakov that fixes
33867         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
33868
33869 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33870
33871         * icall.c: fixed get_location.
33872
33873 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
33874
33875         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
33876         declarations to make it work with older gcc. 
33877
33878         * loader.c (mono_get_method): set signature->pinvoke for native calls
33879
33880 2002-11-20  Dick Porter  <dick@ximian.com>
33881
33882         * threads.c (mono_thread_init): Set the main thread's handle
33883
33884 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
33885
33886         * gc.c: allow compilation without GC support. Changed to match the
33887         mono coding style.
33888
33889 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
33890
33891         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
33892
33893 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
33894
33895         * reflection.c: set a public key token on the core assemblies.
33896
33897 2002-11-18  Dick Porter  <dick@ximian.com>
33898
33899         * threads.c: Split out some thread initialisation so that other
33900         files can set the start callback function.
33901
33902         * gc.c: Run finalisers in a separate thread, to avoid stack
33903         overflow.  Fixes bug 31333.
33904
33905         * appdomain.c: Set up GC finalisation thread.
33906
33907         * reflection.c: 
33908         * object.c: 
33909         * domain.c: Use gc.h macros for GC_malloc
33910         
33911 2002-11-15  Dick Porter  <dick@ximian.com>
33912
33913         * threadpool.c: 
33914         * threads.c:
33915         * appdomain.c: Removed mono_runtime_init_with_attach(),
33916         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
33917         merging the extra parameter with the existing function.  Removed
33918         unneeded code in mono_thread_attach().
33919
33920 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
33921
33922         * image.c (mono_image_loaded_by_guid): a method to get loaded
33923         images by guid. 
33924         (load_metadata_ptrs): we store the guid as string.
33925
33926 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
33927
33928         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
33929
33930         * metadata.c (mono_guid_to_string): imported method form Zoltan
33931         Varga (slightly modified)
33932
33933         * assembly.c (mono_assembly_open): load precompiled code
33934
33935         * loader.h (MonoMethod): we store the method token for use in the
33936         aot compiler. 
33937
33938 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33939
33940         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
33941         the hook function called when an assembly is loaded.
33942         
33943         * domain.c: Modified file.
33944         (mono_domain_assembly_load): removed hash table insertion of assemblies.
33945
33946         Fixes bug #33196.
33947
33948 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
33949
33950         * reflection.c: Map PEFileKind to the value expected by the WinNT
33951         image loader. 
33952
33953 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33954
33955         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
33956         Read until the buffer is filled completely.
33957
33958 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33959
33960         * icall.c: implemented MonoType.InternalGetEvent ().
33961
33962 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33963
33964         * appdomain.c: implemented InitAppDomainSetup. Delayed
33965         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
33966         the entry_assembly.
33967
33968         * assembly.c: base_dir is now an absolute path ending with
33969         G_DIR_SEPARATOR.
33970
33971         * icall.c: modified get_location according to the above changes.
33972
33973         * object.c: init AppDomain.SetupInformation for the default domain after
33974         we have the entry assembly.
33975
33976         * domain.c: when unloading a domain, setup = NULL.
33977
33978 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
33979
33980         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
33981
33982 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
33983
33984         * object.h, object.c: introduced mono_object_get_virtual_method ()
33985         to lookup the method invoked on an object when a callvirt is done on
33986         a method.
33987         * icall.c: make MethodInfo::Invoke() always do a virtual call.
33988
33989 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33990
33991         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
33992         current domain when loaded an assembly and failed to load it.
33993
33994         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
33995
33996 2002-10-31  Dick Porter  <dick@ximian.com>
33997
33998         * icall.c: 
33999         * file-io.h: 
34000         * file-io.c: Return the error status in a parameter, as the
34001         GetLastError() value has long since been blown away if we try and
34002         look it up in a subsequent internal call invocation.  Delete the
34003         GetLastError() internal call, because it's useless.
34004
34005 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
34006
34007         * class.[ch]: added cast_class to fix bug 29517
34008
34009 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
34010
34011         * marshal.c: create valid IL code in the filter clause:
34012         the new JIT is less forgiving:-)
34013
34014 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34015
34016         * icall.c: removed get_property internal call.
34017
34018 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
34019
34020         * appdomain.h domain.c: Added an ID to appdomains.
34021         
34022         * threads.c threads.h icall.c: Implement icall
34023         Thread:GetDomainID(), and remove unused icall 
34024         CurrentThreadDomain_internal.
34025
34026 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34027
34028         * icall.c: Don't recurse through the base types in GetConstructor.
34029         Fixes bug #32063. 
34030
34031 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
34032
34033         * mempool.h, mempool.c: added mono_mempool_empty() and
34034         mono_mempool_stats().
34035
34036 2002-10-23  Dick Porter  <dick@ximian.com>
34037
34038         * file-io.c: 
34039         * file-io.h: 
34040         * icall.c: Added MonoIO.GetFileType internal call
34041
34042 2002-10-17  Dick Porter  <dick@ximian.com>
34043
34044         * appdomain.c (mono_runtime_cleanup): Don't signal the async
34045         delegate semaphore before waiting for all threads to finish,
34046         because new threads can also call async delegates.  Fixes bug
34047         32004.
34048
34049         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
34050         of 3 seconds, in case another async job is queued.  (This part is
34051         needed because the bug fix reintroduced the 3s exit lag.)  This
34052         makes the mono_runtime_shutdown flag superfluous.
34053
34054 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
34055
34056         * reflection.c: include ehader size in method section headers.
34057         Really check for suplicated modules entries.
34058
34059 2002-10-17  Martin Baulig  <martin@gnome.org>
34060
34061         * debug-mono-symfile.c: Added back support for locals.
34062
34063 2002-10-14  Martin Baulig  <martin@gnome.org>
34064
34065         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
34066         MONO_TYPE_VOID.
34067
34068 2002-10-14  Martin Baulig  <martin@gnome.org>
34069
34070         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
34071         mono_class_get() instead of looking in the class cache. 
34072
34073 2002-10-13  Martin Baulig  <martin@gnome.org>
34074
34075         * debug-mono-symfile.c: Set version number to 28, include the
34076         signature in method names.
34077
34078 2002-10-13  Martin Baulig  <martin@gnome.org>
34079
34080         * debug-mono-symfile.h: Set version number to 27.
34081
34082 2002-10-11  Martin Baulig  <martin@gnome.org>
34083
34084         * gc.c: Don't register/unregister NULL pointers as disappearing links.
34085
34086 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
34087
34088         * metadata.c, metadata.h: added helper function to allocate signatures.
34089
34090 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34091
34092         * icall.c: added internal call to get the location of machine.config.
34093
34094 2002-10-08  Martin Baulig  <martin@gnome.org>
34095
34096         * debug-mono-symfile.c: Ignore classes with a pending init for the
34097         moment.
34098
34099 2002-10-03  Dick Porter  <dick@ximian.com>
34100
34101         * threads.c: Freebsd pthread_t is a pointer
34102
34103 2002-10-03  Dick Porter  <dick@ximian.com>
34104
34105         * socket-io.c: Implemented GetHostName_internal
34106
34107 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34108
34109         * mono-config.c:
34110         (mono_config_parse_file): don't leak the text.
34111
34112 2002-10-02  Martin Baulig  <martin@gnome.org>
34113
34114         * debug-mono-symfile.c: Added support for methods.
34115
34116 2002-10-01  Martin Baulig  <martin@gnome.org>
34117
34118         * debug-mono-symfile.c: Don't emit methods and line numbers for
34119         the dynamic symbol file, just write the type table.  We can easily
34120         have an external helper program which creates a symbol file for an
34121         IL file.        
34122
34123 2002-10-01  Dick Porter  <dick@ximian.com>
34124
34125         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
34126         Only add the handle to the cleanup array when we're about to
34127         launch the thread.  Bug 31425 deadlocked when the test was run on
34128         mono under w32.
34129
34130 2002-10-01  Martin Baulig  <martin@gnome.org>
34131
34132         * debug-mono-symfile.c: Added support for properties.
34133
34134 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
34135
34136         * reflection.c: unaligned store fix from Mark Crichton
34137         <crichton@gimp.org>.
34138
34139 2002-09-27  Martin Baulig  <martin@gnome.org>
34140
34141         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
34142         New interncall.
34143
34144 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
34145
34146         * assembly.h, assembly.c: use a sane API to hook into the assembly
34147         loading process instead of a useless special-purpouse hack
34148         (ngen needs a hook, too, for example).
34149
34150 2002-09-27  Dick Porter  <dick@ximian.com>
34151
34152         * threads.c (mono_thread_init): Call GetCurrentProcess() so
34153         io-layer can set up some process handle info.  Not needed on w32,
34154         but doesn't hurt either.
34155
34156         * process.c: Pass the program name in the second parameter to
34157         CreateProcess, so the path is searched.  Include the working
34158         directory. Implemented process name, process enumeration, and some
34159         process detail internal calls.
34160         
34161         * icall.c: Added internal calls for process lookup, and some
34162         process details
34163
34164 2002-09-26  Martin Baulig  <martin@gnome.org>
34165
34166         * assembly.c (mono_install_open_assembly_hook): New global
34167         function to install a function to be invoked each time a new
34168         assembly is loaded.
34169         (mono_assembly_open): Run this callback function if set.
34170
34171         * debug-mono-symfile.c: Put back line numbers for the dynamic
34172         symbol file and also record the .il file as source file.  This
34173         allows us to install the temporary symbol file as `file.dbg' just
34174         like a compiler-generated one.
34175
34176 2002-09-26  Nick Zigarovich <nick@chemlab.org>
34177
34178         * Corrected typo in gc.c (BOHEM vs BOEHM).
34179
34180 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34181
34182         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
34183         GetProperties. Also avoid calling g_slist_length in GetProperties and
34184         GetMethods.
34185
34186 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
34187
34188         * reflection.c: avoid unaligned stores (bug spotted by
34189         Mark Crichton  <crichton@gimp.org>).
34190
34191 2002-09-25  Martin Baulig  <martin@gnome.org>
34192
34193         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
34194         instead of guint64 for addresses and added prologue/epilogue info.
34195
34196 2002-09-25  Martin Baulig  <martin@gnome.org>
34197
34198         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
34199         store line number info.  For the dynamic symbol file, we only need
34200         to provide the JIT generated dynamic line number info for the dynamic
34201         symbol file.
34202
34203 2002-09-25  Martin Baulig  <martin@gnome.org>
34204
34205         * debug-mono-symfile.h: Incremented version number.
34206
34207 2002-09-24  Martin Baulig  <martin@gnome.org>
34208
34209         * class.c (mono_debugger_class_init_func): New global function
34210         pointer variable.
34211         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
34212         call it.
34213
34214         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
34215         function.  This is called via the mono_debugger_class_init_func
34216         hook to add all types to the dynamic type table.
34217         (ves_icall_MonoDebugger_GetType): New interncall to get a class
34218         from its metadata token.
34219
34220         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
34221         New interncall for the debugger.
34222
34223 2002-09-24  Nick Drochak <ndrochak@gol.com>
34224
34225         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
34226         before using it in case it is null.
34227         
34228 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
34229
34230         * metadata.c: allow custom modifiers in local var signatures
34231         (bug spotted by Zoltan Varga).
34232
34233 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
34234
34235         * class.c: deal with the <Module> class that may have a NULL vtable.
34236         Eliminate warnings.
34237
34238 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34239
34240         * image.c, image.h: more strong name helpers.
34241         * monosn.c: more work: convert pem keys to cryptoapi format.
34242
34243 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
34244
34245         * string-icalls.c: speedup IndexOf.
34246
34247 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34248
34249         * icall.c: updates from Zoltan.2.Varga@nokia.com.
34250
34251 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
34252
34253         * icall.c: cleanup: use mono_object_domain ().
34254
34255 2002-09-23  Martin Baulig  <martin@gnome.org>
34256
34257         * debug-mono-symfile.c: Improved type support.
34258
34259 2002-09-22  Martin Baulig  <martin@gnome.org>
34260
34261         * debug-mono-symfile.c: Added support for reference types and strings.
34262
34263 2002-09-22  Martin Baulig  <martin@gnome.org>
34264
34265         * debug-mono-symfile.c: Started to work on the type table.
34266
34267 2002-09-21  Martin Baulig  <martin@gnome.org>
34268
34269         * debug-mono-symfile.c: Largely reworked the symbol table format.
34270         The symbol table is now incrementally updated each time a new
34271         method is added.  We're now also using our own magic and version
34272         so that you don't need to recompile all your classes if the
34273         dynamic table changes.
34274         (mono_debug_update_mono_symbol_file): Removed.
34275         (mono_debug_symfile_add_method): New function to add a method.
34276
34277 2002-09-21  Martin Baulig  <martin@gnome.org>
34278
34279         * icall.c
34280         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
34281         New interncall.
34282
34283         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
34284         New interncall to get a method from its metadata token.
34285
34286 2002-09-21  Martin Baulig  <martin@gnome.org>
34287
34288         * debug-mono-symfile.c: Create type table.
34289
34290 2002-09-20  Martin Baulig  <martin@gnome.org>
34291
34292         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
34293
34294 2002-09-20  Martin Baulig  <martin@gnome.org>
34295
34296         * debug-mono-symfile.c: Provide information about params and locals.
34297
34298 2002-09-20  Martin Baulig  <martin@gnome.org>
34299
34300         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
34301         New interncall.
34302
34303         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
34304         interncall to get a method from its metadata token.
34305
34306 2002-09-20  Martin Baulig  <martin@gnome.org>
34307
34308         * debug-mono-symfile.c: Added a few checks for method->header
34309         being non-NULL.  This should never happen, but for the moment
34310         let's use a g_warning() rather than a g_assert().
34311
34312 2002-09-19  Mark Crichton  <crichton@gimp.org>
34313
34314         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
34315         even if support for it isn't present.  Added an #ifdef to fix this.
34316
34317         * socket-io.c: Added checks back for Solaris support.
34318
34319 2002-09-19  Martin Baulig  <martin@gnome.org>
34320
34321         * debug-mono-symfile.c (read_string, write_string): Reflect latest
34322         changes in the symbol file format.
34323
34324 2002-09-18  Martin Baulig  <martin@gnome.org>
34325
34326         * debug-mono-symfile.c: Set version number to 21.
34327
34328 2002-09-18  Dick Porter  <dick@ximian.com>
34329
34330         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
34331         on netbsd.  Fixes bug 30051.
34332
34333 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34334
34335         * reflection.c:
34336         (set_version_from_string): little fix.
34337
34338 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34339
34340         * monosn.c, Makefile.am: added strong name utility.
34341         * reflection.h, reflection.c: implemented delayed signing,
34342         locale, version and hash id assembly attributes.
34343
34344 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
34345
34346         * loader.c, metadata.c: load param attributes in signatures.
34347
34348 2002-09-16  Martin Baulig  <martin@gnome.org>
34349
34350         * debug-mono-symfile.c: Added string table with all method names.
34351
34352 2002-09-14  Martin Baulig  <martin@gnome.org>
34353
34354         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
34355         fast method lookup.
34356
34357 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
34358
34359         * reflection.c: record the public key token of referenced assemblies.
34360
34361 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
34362
34363         * image.c, image.h: added functions to get the strong name and the
34364         public key of an assembly.
34365         * pedump.c: use them.
34366
34367 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
34368
34369         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
34370
34371 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
34372
34373         * marshal.c (mono_marshal_get_managed_wrapper): Added
34374         MONO_TYPE_BOOLEAN 
34375
34376 2002-09-11  Martin Baulig  <martin@gnome.org>
34377
34378         * gc.c: Call GC_unregister_disappearing_link() on all links when
34379         finalizing them, this is necessary to aviod a crash in boehm's
34380         finalize handler.
34381
34382 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34383
34384         * gc.c: handle GetTarget for finalized objects spotted and fixed by
34385         nick@chemlab.org.
34386
34387 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
34388
34389         * icall.c: implemented MonoType::Module.
34390         * reflection.c, reflection.h: mono_module_get_object () from
34391         Tomi Pakarinen <tomi.pakarinen@welho.com>.
34392
34393 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
34394
34395         * icall.c: ignore overridden methods in GetMethods ().
34396         Fix for FieldInfo::SetValue().
34397         * object.c: handle float/double in runtime invoke.
34398
34399 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
34400
34401         * object.c: allow a constructor to be called again on an object.
34402
34403 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34404
34405         * class.h, class.c: move field layout code to it's own function and
34406         export it. Get an interface id earlier. Move fields in MonoClass
34407         so they are more cache friendly and align the bitfields.
34408         * loader.c: temporary handle get_param_names() for a runtime method.
34409         * reflection.c, reflection.h: more code to handle runtime creation of
34410         types.
34411
34412 2002-09-09  Martin Baulig  <martin@gnome.org>
34413
34414         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
34415         signature with the pinvoke field being set for the actual call.
34416
34417 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
34418
34419         * icall.c: removed some unused icalls. Start of map of glib charsets
34420         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
34421
34422 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
34423
34424         * debug-helpers.c: break infinite loop (found and fixed by
34425         Holger Arnold <harnold@gmx.de>).
34426
34427 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
34428
34429         * icall.c: target may be null in create_delegate.
34430
34431 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34432
34433         * marshal.c: handle a boolean return type.
34434
34435 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34436
34437         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
34438
34439 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
34440
34441         * gc.c: fix weakreferences.
34442
34443 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
34444
34445         * icall.c: added icall to get default codepage.
34446
34447 2002-09-03  Dick Porter  <dick@ximian.com>
34448
34449         * threads.h: 
34450         * threads.c: Use MonoThread instead of MonoObject where
34451         apropriate.
34452
34453         Store running thread objects in a hash table, so that we have all
34454         the info to hand when waiting for them to finish
34455         (means we don't need OpenThread() any more, so mingw builds should
34456         be fully functional again.)
34457
34458         * verify.c:
34459         * object.h: Added thread ID to MonoThread
34460
34461 2002-09-03  Martin Baulig  <martin@gnome.org>
34462
34463         * icall.c (System.Reflection.Assembly::get_location): New interncall.
34464
34465 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34466
34467         * icall.c: fixed leak in get_temp_path. Thanks lupus.
34468
34469 2002-09-03  Martin Baulig  <martin@gnome.org>
34470
34471         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
34472         argument to store the end address of the disassembled instruction.
34473
34474         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
34475         here from debug-symfile.h.
34476         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
34477         JIT into this struct.
34478         (MonoSymbolFile): Added `char *image_file' field.
34479         (MonoDebugGetMethodFunc): Removed.
34480         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
34481         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
34482         (mono_debug_find_method): New method.
34483
34484         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
34485         create a full symbol file.
34486         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
34487         and static symbol files.
34488         (mono_debug_find_method): The symbol file keeps an internal method hash,
34489         call this to get a MonoDebugMethodInfo from a MonoMethod.
34490
34491         * debug-symfile.[ch]: Removed.
34492
34493 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
34494
34495         * image.c (do_mono_image_open): Remove linker version check.
34496
34497 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
34498
34499         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
34500         wrappers for instance methods.
34501         
34502 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34503
34504         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
34505
34506 2002-08-28  Dick Porter  <dick@ximian.com>
34507
34508         * Makefile.am: Export HOST_CC for w32 builds
34509
34510 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
34511
34512         * file-io.c process.c: MonoString are null terminated, no
34513         need for mono_string_to_utf16() anymore.
34514
34515 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
34516
34517         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
34518
34519 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
34520
34521         * icall.c, reflection.h: speedup System.MonoType.
34522
34523 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
34524
34525         * reflection.c: allow null as the value of a string argument in
34526         custom attributes constructors.
34527
34528 2002-08-27  Martin Baulig  <martin@gnome.org>
34529
34530         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
34531         `trampoline_address' field.
34532
34533 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
34534
34535         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
34536         check (fixes bug #29486) 
34537
34538 2002-08-27  Martin Baulig  <martin@gnome.org>
34539
34540         * debug-mono-symfile.c: Changed the file format in a way that allows us
34541         open it read-only and to use a specially malloced area for all the
34542         dynamic data.  We can now also generate a symbol file on-the-fly if we're
34543         debugging IL code and there is no MCS generated symbol file for it.
34544
34545 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
34546
34547         * object.c: added a define for a good string and array
34548         creation speedup (not enabled by default because we need to deal with
34549         the synch stuff).
34550
34551 2002-08-26  Martin Baulig  <martin@gnome.org>
34552
34553         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
34554         function to create a dynamic symbol file.  This is used by the
34555         debugger to create a symbol file for IL code on-the-fly.
34556
34557 2002-08-26  Martin Baulig  <martin@gnome.org>
34558
34559         * loader.c (mono_lookup_pinvoke_call): Include the error message
34560         from g_module_error() in the error message.
34561
34562 2002-08-24  Martin Baulig  <martin@gnome.org>
34563
34564         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
34565         function to update the symbol file.  The symbol file is mmap()ed
34566         writable, but private.  This allows us to install the symbol file
34567         together with the assembly.
34568
34569 2002-08-24  Martin Baulig  <martin@gnome.org>
34570
34571         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
34572         but they can read the new symbol file format which mcs is now creating.
34573
34574         * debug-symfile.c (mono_debug_find_source_location): Moved to
34575         debug-mono-symfile.c; this is now operating on the new symbol file.
34576
34577 2002-08-23  Martin Baulig  <martin@gnome.org>
34578
34579         * debug-helpers.c (mono_method_desc_from_method): New function to get
34580         a MonoMethodDesc from a MonoMethod.
34581
34582 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
34583
34584         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
34585         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
34586
34587 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
34588
34589         * string-icalls.[ch]: make helper methods static.
34590
34591 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34592
34593         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
34594         types to it and to SetValueInternal.
34595
34596         * object.c: Moved handle_enum label to its proper place. This was the
34597         f... bug! ;-)
34598
34599         This time i compiled mcs and gtk-sharp and they both work.
34600
34601 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34602
34603         * icall.c: reverted partially my previous patch until 
34604         object.c:set_value handles enums correcly.
34605
34606 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34607
34608         * icall.c:
34609         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
34610         (ves_icall_System_Environment_get_MachineName): removed warning when
34611         compiling under cygwin.
34612
34613 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
34614
34615         * object.c: fixed field_get_value() for reference types.
34616
34617 2002-08-22  Dick Porter  <dick@ximian.com>
34618
34619         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
34620         Don't free a buffer while it's still needed.  Patch from Jonathan
34621         Liger <Jonathan.liger@wanadoo.fr>
34622
34623 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
34624
34625         * icall.c (ves_icall_System_Environment_get_Platform): Add new
34626         internal call.
34627
34628 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
34629
34630         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
34631         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
34632
34633         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
34634         we call unmanaged code which throws exceptions.
34635
34636 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34637
34638         * appdomain.h: added per-domain entry_assembly.
34639         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
34640         arguments.
34641         * icall.c: Assembly::GetEntryAssembly icall.
34642         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
34643         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
34644
34645 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
34646
34647         * appdomain.h, gc.c: added mono_domain_finalize ().
34648
34649 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34650
34651         * object.c:
34652         (mono_print_unhandled_exception): changed g_warning by g_printerr
34653         because g_log has a 1024 characters limit (yeah, i got a big stack
34654         trace). Don't print exception name, that should be in ToString 
34655         returned string.
34656
34657 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34658
34659         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
34660         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
34661
34662 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34663
34664         * object.c:
34665         (mono_print_unhandled_exception): after previous commit, i realized
34666         that MS calls ToString on the exception. I changed this function to
34667         do that. This way we get stack_trace for free.
34668
34669 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34670
34671         * object.c:
34672         (mono_print_unhandled_exception): invoke Message property instead of
34673         getting 'message' field from Exception. Don't allocate memory for
34674         'trace' and 'message' if not needed.
34675
34676 2002-08-18  Dick Porter  <dick@ximian.com>
34677
34678         * unicode.c: Fix asserts to match Encoder.cs checks
34679
34680 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
34681
34682         * marshal.c: fix unaligned store issue and a few wrong
34683         opcode argument types.
34684
34685 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34686
34687         * icall.c: added GetUninitializedObjectInternal internal call.
34688
34689 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
34690
34691         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
34692         to the right domain.
34693
34694 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
34695
34696         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
34697
34698         * class.c (class_compute_field_layout): set blittable to false for Strings
34699
34700         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
34701
34702 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
34703
34704         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
34705         first chunk of code to create types at runtime. Code to
34706         handle ReflectedType/DeclaringType. Make reflection handles
34707         domain specific.
34708
34709 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
34710
34711         * class.c: set correct name in arrays.
34712
34713 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
34714
34715         * appdomain.c (mono_domain_transfer_object): make it work with
34716         valuetypes. bug fixes.
34717
34718 2002-08-12  Dick Porter  <dick@ximian.com>
34719
34720         * object.h: Rename some parameters to avoid c++ keywords (Patch
34721         from Joseph Wenninger <kde@jowenn.at>)
34722
34723 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
34724
34725         * icall.c: added icall to implement Assembly.GetFile*.
34726
34727 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
34728
34729         * reflection.h, reflection.c: code to embed managed resources.
34730
34731 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
34732
34733         * class.c: move all the type size stuff into
34734         class_compute_field_layout().
34735
34736 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34737
34738         * class.c: ensure enums have always the correct instance size.
34739         * unicode.c: remove wrong assert.
34740
34741 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
34742
34743         * assembly.c: fix mem corruption issue.
34744         * image.h, image.c: added mono_image_get_resource () to access
34745         managed resources.
34746         * icall.c: implemented Assembly.EntryPoint property and some
34747         Managed Resources related internalcalls.
34748
34749
34750 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
34751
34752         * image.c, image.h: impemented mono_image_get_entry_point ().
34753         * appdomain.c: use mono_image_get_entry_point.
34754
34755 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
34756
34757         * reflection.c: support the object type argument when loading
34758         custom attributes.
34759
34760 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
34761
34762         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
34763         String as return type.
34764
34765 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
34766
34767         * reflection.c: fix encoding of named args for custom attrs to match
34768         the ms implementation. Read them back when instantiating custom
34769         attributes.
34770
34771 2002-08-02  Radek Doulik  <rodo@ximian.com>
34772
34773         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
34774         by Dietmar as quick fix
34775         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
34776         16 as stack size, used on more places as quick fix before Dietmar
34777         will fix it properly
34778
34779 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
34780
34781         * object.h, object.c: added accessors for fields and properties.
34782
34783 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
34784
34785         * class.c, class.h: made mono_class_get_field_from_name ()
34786         loop on parent types.
34787         Added mono_class_get_property_from_name ().
34788
34789 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
34790
34791         * class.c, class.h: move the code to setup the type vtable in its own
34792         function so that it can be reused also for types created at runtime.
34793         Eliminate the "class" identifier from the header file.
34794         * reflection.c: setup the vtable for enums so that we can create
34795         objects for use in SetConstant ().
34796
34797 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
34798
34799         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
34800         instead of the delegate itself as this pointer (bug #28383)
34801
34802 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
34803
34804         * marshal.c (mono_marshal_get_managed_wrapper): added return type
34805         conversions.
34806
34807 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
34808
34809         * loader.c: don't set the pinvoke bit on icalls.
34810
34811 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
34812
34813         * debug-helpers.c (mono_method_full_name): only print a number to
34814         indicate wrapper type (so that the output is more readable in traces).
34815
34816 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
34817
34818         * class.c (mono_class_init): include method override patch from Paolo
34819
34820 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
34821
34822         * icall.c: fixed GetTypeCode().
34823
34824 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
34825
34826         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
34827         use real delegate invoke function to make it work with multicast
34828         delegates (fix bug# 28291).
34829
34830 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
34831
34832         * object.c: load constant strings.
34833
34834 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
34835
34836         * reflection.c: no magic numbers.
34837         * tabledefs.h: security action enum.
34838
34839 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
34840
34841         * assembly.c: fix possible memory corruption.
34842
34843 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
34844
34845         * reflection.h, reflection.c: added support for linking resources.
34846         * verify.c: check we have an updated corlib.
34847
34848 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
34849
34850         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
34851         string arrays.
34852         (mono_marshal_string_array): null terminate unmanaged string arrays.
34853         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
34854
34855 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
34856
34857         * icall.c: Type.GetType () can now return also types from the
34858         calling assembly.
34859
34860 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
34861
34862         * loader.h, loader.c: stack walking support.
34863         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
34864         GetCallingAssembly.
34865
34866 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
34867
34868         * marshal.c: added optimisations for blittable types 
34869
34870         * class.c (mono_array_class_get): do not set blittable attribute on arrays
34871         (mono_class_setup_mono_type): set blittable attribute for single
34872         and double.
34873
34874         * marshal.c (mono_string_utf8_to_builder): impl.
34875         (mono_string_builder_to_utf8): impl.
34876         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
34877
34878 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
34879
34880         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
34881         (mono_marshal_get_managed_wrapper): impl. byref types
34882
34883 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34884
34885         * icall.c:
34886         (search_method): don't display debug message. 
34887
34888 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
34889
34890         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
34891
34892 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
34893
34894         * appdomain.c: set the missing filename when throwing exception.
34895
34896 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
34897
34898         * metadata.c (mono_type_size): code cleanup
34899         (mono_type_stack_size): removed some test code
34900
34901 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
34902
34903         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
34904         mono_get_exception_file_not_found now.
34905
34906         * exception.c (mono_exception_from_name_two_strings): New version
34907         that will call a constructor with two string arguments. 
34908         (mono_get_exception_file_not_found): New helper routine, used to
34909         report file-not-found errors.
34910
34911 2002-07-20  Dick Porter  <dick@ximian.com>
34912
34913         * process.h:
34914         * process.c: Pass file handles to CreateProcess
34915         
34916         * icall.c:
34917         * file-io.h:
34918         * file-io.c: Implemented CreatePipe
34919
34920 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
34921
34922         * metadata.c (mono_get_param_info): set alignment for value types
34923
34924 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
34925
34926         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
34927         Constify mono_domain_assembly_open().
34928         * loader.c: handle null namespace in icalls.
34929
34930 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
34931
34932         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
34933         (emit_str_to_ptr_conv): marshal object as structs
34934
34935         * metadata.c (mono_type_to_unmanaged): marshal object as structs
34936
34937         * marshal.c (mono_marshal_get_runtime_invoke): support value types
34938
34939 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
34940
34941         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
34942         (mono_marshal_get_native_wrapper): we an now return value types
34943
34944 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
34945
34946         * verify.c: more checks implemented.
34947
34948 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
34949
34950         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
34951         (fix bug #27695)
34952         (mono_marshal_get_native_wrapper): allow byref arguments
34953         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
34954         impl. PtrToStringXXX methods
34955         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
34956         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
34957         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
34958         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
34959         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
34960
34961 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
34962
34963         * reflection.c: fix buglet in parsing an assembly name.
34964
34965 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
34966
34967         * marshal.c (emit_ptr_to_str_conv): first impl.
34968
34969 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
34970
34971         * object.c, class.h: cache the vtable in the class as suggested by
34972         vargaz@freemail.hu (Zoltan Varga).
34973
34974 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
34975
34976         * class.h, loader.c: added mono_field_from_token().
34977         * verify.c: first cut of type checking code.
34978
34979 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
34980
34981         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
34982
34983 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
34984
34985         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
34986         (fix bug #27782)
34987         (mono_marshal_get_remoting_invoke): impl.
34988         (mono_delegate_begin_invoke): impl.
34989         (mono_mb_emit_save_args): impl.
34990         (mono_delegate_end_invoke): impl.
34991         (mono_marshal_get_delegate_begin_invoke):
34992         (mono_marshal_get_delegate_end_invoke):
34993         (mono_marshal_get_delegate_invoke): generate a special name for
34994         those methods (including the signature) and associate them whith
34995         the delegate class. 
34996
34997 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
34998
34999         * reflection.[ch]: 
35000         (mono_reflection_type_from_name): now it has a MonoImage parameter
35001         which is used as the default image to search the type in. If the image
35002         is NULL or getting the type from it fails, it defaults to corlib.
35003
35004         * icall.c: changed 1 call to mono_reflection_type_from_name to match
35005         new parameter.
35006
35007 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35008
35009         * reflection.c: update the parameter table index.
35010
35011 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35012
35013         * domain.c: don't include the mark byte in the string hash.
35014
35015 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35016
35017         * icall.cs: icall for Type.GetTypeCode ().
35018         * verify: a couple of fixes and disabled local initialization checks.
35019
35020 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
35021
35022         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
35023
35024         * debug-helpers.c (mono_method_full_name): print the type of the
35025         runtime wrapper
35026
35027         * metadata.c (mono_signature_hash): a hash function for signatures
35028         (mono_signature_hash): better hash algorithm
35029
35030         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
35031
35032         * debug-helpers.c (mono_method_full_name): this can now generate
35033         method names with signatures
35034
35035         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
35036         method dont have this pointers.
35037
35038 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
35039
35040         * reflection.c: fixup typebuilder tokens.
35041         * image.c: fix buglet.
35042         * marshal.h: remove whitespace.
35043         * metadata.h, metadata.c: reinstate code that was removed.
35044         * verify.c: handle catch directives and fix another couple of bugs.
35045
35046 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
35047
35048         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
35049         (mono_marshal_get_native_wrapper): make it comp. with the old code
35050         (mono_marshal_get_native_wrapper): support boolean
35051         (mono_marshal_get_managed_wrapper): support more types
35052
35053 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
35054
35055         * class.c (class_compute_field_layout): compute class->blittable attribute.
35056
35057 2002-07-09  Dick Porter  <dick@ximian.com>
35058
35059         * threads.c: Make the thread cleaning up cope with threads that
35060         call ExitThread()
35061
35062 2002-07-08  Radek Doulik  <rodo@ximian.com>
35063
35064         * reflection.c (method_encode_code): use non-translated values to
35065         compute finally_start, this fixes exception handling on ppc, yay!
35066
35067         * decimal.h (struct signscale): fix endianess
35068
35069 2002-07-07  Radek Doulik  <rodo@ximian.com>
35070
35071         * reflection.c: swap box_val and not val
35072
35073 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
35074
35075         * reflection.c, reflection.h: handle full assembly info in type name.
35076         Handle Type arguments when loading custom attributes.
35077         * icall.c: updated to use new mono_reflection_type_from_name () method.
35078
35079 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35080
35081         * loader.c:
35082         (method_from_memberref): also print assembly name when method not found.
35083
35084 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35085
35086         * icall.c:
35087         (ves_icall_TypeGetProperties): fixed bug #27473. 
35088
35089 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35090
35091         * reflection.c: display image name and token when cannot find the
35092         .ctor for an attribute.
35093
35094 2002-07-05  Martin Baulig  <martin@gnome.org>
35095
35096         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
35097
35098 2002-07-04  Dick Porter  <dick@ximian.com>
35099
35100         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
35101         compile on mingw.  This will cause mingw builds to not wait for
35102         subthreads to terminate after the main thread does.  I've lodged a
35103         bug with the mingw developers for them to wrap OpenThread().
35104
35105 2002-07-03  Dick Porter  <dick@ximian.com>
35106
35107         * threads.c: Store thread IDs instead of handles, because
35108         GetCurrentThread() returns a pseudohandle and therefore stores
35109         useless values.  mono_thread_cleanup() continues checking the
35110         array of threads until it is empty, to cope with subthreads
35111         spawning new threads after the main thread has finished.
35112
35113         * profiler.h:
35114         * profiler.c:
35115         * profiler-private.h: Pass the thread ID to thread profiler
35116         functions, instead of a handle
35117
35118 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35119
35120         * verify.c: fixes to make it more usable.
35121         * pedump.c: added --verify code to verify IL code in an assembly.
35122
35123 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35124
35125         * reflection.c: turn errors into warnings to allow compiling corlib.
35126
35127 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
35128
35129         * reflection.c: add special cases to compile corlib.
35130
35131 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35132
35133         * reflection.c: handle properties with only a set method.
35134
35135 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35136
35137         * opcodes.h: add enum with opcodes in opval order.
35138
35139 2002-07-01  Dick Porter  <dick@ximian.com>
35140         
35141         * object.h:
35142         * object.c (mono_runtime_run_main): Removed unneeded argument
35143
35144 2002-06-28  Martin Baulig  <martin@gnome.org>
35145
35146         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
35147
35148 2002-06-27  Dick Porter  <dick@ximian.com>
35149
35150         * threads.c: Store the handle in both the parent thread and in the
35151         subthread, to minimise the time between starting a new thread and
35152         storing its ID.
35153
35154 2002-06-26  Dick Porter  <dick@ximian.com>
35155
35156         * appdomain.c (mono_runtime_cleanup): Close the socket library
35157         after all the threads have finished, not before
35158
35159 2002-06-26  Martin Baulig  <martin@gnome.org>
35160
35161         * debug-symfile.c (mono_debug_find_source_location): Added
35162         `guint32 *line_number' argument.  If it's not NULL, store the line number
35163         there and return the file name without the line number.
35164
35165 2002-06-25  Dick Porter  <dick@ximian.com>
35166
35167         * icall.c:
35168         * process.h:
35169         * process.c: Process forking and other support functions
35170
35171 2002-06-25  Dick Porter  <dick@ximian.com>
35172
35173         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
35174         things dont happen when the image is closed.
35175         (mono_image_lookup_resource): Walk the resource section looking
35176         for a particular entry
35177
35178         * cil-coff.h: PE resource section decoding
35179
35180 2002-06-25  Dick Porter  <dick@ximian.com>
35181         
35182         * assembly.h:
35183         * assembly.c: 
35184         (mono_assembly_foreach): Accessor functions to walk the list of
35185         loaded assemblies
35186         (mono_assembly_set_main):
35187         (mono_assembly_get_main): Process methods need to know which
35188         assembly is the "main" one
35189
35190         * object.c (mono_runtime_run_main): Record the main assembly
35191
35192         * debug-helpers.c: Fix typo
35193
35194 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
35195
35196         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
35197         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
35198
35199 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35200
35201         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
35202
35203 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
35204
35205         * image.c (do_mono_image_open): Initialize reference count,
35206         otherwise we leak the MonoImage.
35207
35208 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
35209
35210         * reflection.c: small tweak to handle self-hosting.
35211
35212 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
35213
35214         * reflection.c: fix type name parse code.
35215
35216 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35217
35218         * reflection.c: break out of the loop.
35219         * image.c: special case corlib.
35220
35221 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35222
35223         * reflection.c: add all the custom attrs at the end to ensure the
35224         ctors have been properly initialized when the attributes are defined
35225         in the current assembly.
35226
35227 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35228
35229         * reflection.c: handle correctly multiple-nested types.
35230
35231 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
35232
35233         * row-indexes.h: fix typos.
35234         * reflection.c: adjust for typos and fix method_def_or_ref
35235         encoding in MethodImpl table.
35236
35237 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35238
35239         * reflection.c: fix entry point patching (thanks Serge!).
35240
35241 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
35242
35243         * verify.c: add check for System.Exception
35244
35245 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35246
35247         * image.c, class.c: minifix for code just c&p'ed.
35248         * reflection.c: warning fix.
35249         * object.h, loader.h, domain.c: load also StringBuilder.
35250
35251 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35252
35253         * marshal.h, marshal.c: some support code to handle complex marshaling.
35254
35255 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35256
35257         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
35258         Better signatures with vtable error dump.
35259
35260 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
35261
35262         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
35263
35264 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
35265
35266         * icall.c (ves_icall_Type_GetField): impl.
35267
35268 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35269
35270         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
35271         to retrieve a marshal description blob for a field or param.
35272
35273 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
35274
35275         * reflection.h, reflection.c: change order of nested type emission
35276         to avoid table corruption. The NestedTypes table is sorted.
35277         * icall.c: change order of GetConstructor results to workaround mcs bug.
35278
35279 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35280
35281         * reflection.h, reflection.c: handle field and param marshal
35282         information.
35283
35284 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35285
35286         * icall.c, marshal.c marshal.h: more Marshal class implementation.
35287
35288 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35289
35290         * reflection.c: fix call convention.
35291
35292 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35293
35294         * reflection.h, reflection.c: mono_image_get_memberref_token()
35295         takes a type instead of a class, now. Added
35296         mono_image_get_array_token() to create tokens for the special
35297         multi-dim array methods.
35298
35299 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
35300
35301         * assembly.c: handle modules (no assembly table). Split
35302         loading references in its own function.
35303         * class.c: handle moduleref resolution scope.
35304         * image.c, image.h: cache module name in image.
35305
35306 2002-06-07  Martin Baulig  <martin@gnome.org>
35307
35308         * reflection.c (mono_image_get_type_info): Only add a class layout entry
35309         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
35310
35311 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35312
35313         * icall.c: more signature fixes that used uint instead of int.
35314
35315 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35316
35317         * reflection.c: fixed signature of field refs.
35318
35319 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35320
35321         * class.c, reflection.c: handle typerefs of nested types
35322         (both on read and when writing files).
35323
35324 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
35325
35326         * icall.c: fix method signatures that tried to workaround the previous
35327         typo, d'oh!
35328
35329 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
35330
35331         * debug-helpers.c: fix typo.
35332
35333 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
35334
35335         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
35336         rewrote the PE/COFF writing code (our programs are understood by the
35337         ms runtime, now).
35338
35339 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
35340
35341         * gc.c, gc.h, icall.c: weakreference support.
35342
35343 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35344
35345         * Makefile.am, mono-config.c: use $(sysconfdir).
35346
35347 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35348
35349         * icall.c: changed default precision of Double.ToString() to 15.
35350         Fixed memory leak. Unified with Single.ToString.
35351
35352 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
35353
35354         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
35355
35356 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
35357
35358         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
35359         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
35360         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
35361         and myself.
35362
35363 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35364
35365         * debug-symfile.c, sysmath.c: yet more compilation fixes.
35366
35367 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35368
35369         * reflection.c, socket-io.c: more compilation fixes.
35370
35371 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35372
35373         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
35374         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
35375         unicode.c: warning and compiler compatibility fixes.
35376
35377 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
35378
35379         * class.h, metadata.c: fixed warnings/compilation errors.
35380
35381 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35382
35383         * Makefile.am, mono-config.c, mono-config.h: configuration file
35384         support routines.
35385         * loader.c, loader.h: make Dll mapping configurable at runtime in the
35386         config file. Export methods to insert and lookup mappings.
35387
35388 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
35389
35390         * reflection.c: handle types and boxed objects in custom attr
35391         constructors.
35392
35393 2002-05-30  Martin Baulig  <martin@gnome.org>
35394
35395         * debug-symfile.c
35396         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
35397
35398 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
35399
35400         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
35401         to lookup the implmap row for a P/Invoke method.
35402         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
35403         P/Invoke method from the runtime on an as needed basis.
35404
35405 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
35406
35407         * metadata.c (mono_metadata_parse_signature): impl.
35408
35409 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35410
35411         * class.c: handle .pack directive.
35412
35413 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
35414
35415         * object.c: initialize static fields with RVA data.
35416
35417 2002-05-25  Martin Baulig  <martin@gnome.org>
35418
35419         * debug-symfile.c
35420         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
35421
35422 2002-05-24  Martin Baulig  <martin@gnome.org>
35423
35424         * debug-symfile.c
35425         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
35426         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
35427         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
35428
35429 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
35430
35431         * object.c: special case string ctros in invoke.
35432         * gc.c: silly whitespace changes.
35433
35434 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
35435
35436         * threadpool.[ch]: impl. a threadpool that can
35437         be used by mint and mono.
35438
35439 2002-05-22  Martin Baulig  <martin@gnome.org>
35440
35441         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
35442         The first argument is now a `MonoReflectionModuleBuilder *', the return
35443         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
35444         `methods' field to get the method builder.  The `token' argument is the
35445         unfixed token.
35446
35447         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
35448         invalid characters instead of g_assert_not_reached()ing.  This seems
35449         to be the behaviour of mscorlib.
35450
35451 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
35452
35453         * object.c (mono_runtime_invoke_array): applied patch from Rachel
35454         Hestilow to fix bug #25104
35455
35456 2002-05-21  Martin Baulig  <martin@gnome.org>
35457
35458         * debug-symfile.c (mono_debug_find_source_location): New function.
35459         Looks up an IL offset in the line number table and returns the source
35460         location as a string.
35461
35462 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35463
35464         * icall.c:
35465         (mono_double_ToStringImpl): changed %f by %g until we have something
35466         better.
35467
35468 2002-05-21  Nick Drochak  <ndrochak@gol.com>
35469
35470         * icall.c : Use different name for Math.Pow's icall.  Needed to check
35471         parameters first in C#.
35472
35473 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35474
35475         * icall.c, reflection.h: added icall to get info about an event.
35476
35477 2002-05-20  Radek Doulik  <rodo@ximian.com>
35478
35479         * object.c (mono_value_box): don't use memcpy for boxing on BIG
35480         endian
35481         (mono_value_box): don't use memcpy for small sizes on
35482         architectures with unaligned access
35483
35484 2002-05-20  Martin Baulig  <martin@gnome.org>
35485
35486         * reflection.c (mono_reflection_setup_internal_class): Don't crash
35487         if `tb->parent == NULL'.
35488         (mono_reflection_create_internal_class): New function.  This is
35489         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
35490         for enum types.
35491
35492         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
35493         New interncall.
35494
35495 2002-05-19  Martin Baulig  <martin@gnome.org>
35496
35497         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
35498         argument to get the length, don't default to the array length.
35499
35500 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
35501
35502         * assembly.c (mono_assembly_setrootdir): New function used to
35503         override the MONO_ASSEMBLIES directory.
35504
35505 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
35506
35507         * icall.c: ValueType_GetHashCode() initialize local var.
35508
35509 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35510
35511         * reflection.c: sort custom attributes table.
35512
35513 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
35514
35515         * reflection.c: support named args in custom attributes (write support).
35516
35517 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
35518
35519         * reflection.c: fix finally position calculation.
35520
35521 2002-05-15  Radek Doulik  <rodo@ximian.com>
35522
35523         * reflection.c: fixed endianess at many places
35524
35525         * icall.c (ves_icall_InitializeArray): comment out debug msg
35526
35527 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
35528
35529         * object.c (mono_unhandled_exception): new function to handle
35530         unhandled exceptions.
35531         (mono_unhandled_exception): call the UnhandledException event.
35532         (mono_runtime_delegate_invoke): impl.
35533
35534 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
35535
35536         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
35537         returns the RVA, not the direct pointer to the data. Handle the case
35538         when the class size is fixed.
35539
35540 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
35541
35542         * reflection.c: fix some endianess issues.
35543
35544 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
35545
35546         * object.c (mono_runtime_invoke): is now able to catch exceptions.
35547
35548         * threads.c (mono_thread_init): added a callback which is invoked
35549         at thread start.
35550
35551 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
35552         
35553         * icall.c: make GetHashCode return non-negative values.
35554
35555 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
35556
35557         * object.c, icall.c, gc.c: revert to address-based hashcode.
35558
35559 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
35560
35561         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
35562
35563 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35564
35565         * icall.c, class.c: special case <Module>.
35566
35567 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
35568
35569         * icall.c: fix bug in GetNow().
35570
35571 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
35572
35573         * object.c (mono_runtime_class_init): make sure that we call all
35574         static class constructors.
35575
35576 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
35577
35578         * reflection.c: sort methodsemantics table.
35579
35580 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
35581
35582         * reflection.h, reflection.c: honour init locals setting.
35583
35584 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
35585
35586         * icall.c: copied Double ToStringImpl for Single ToStringImpl
35587
35588 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
35589
35590         * reflection.c: support ContructorBuilders in attribute blob creation.
35591
35592 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35593
35594         * reflection.c: some changes to build a binary that can be run
35595         directly in windows.
35596
35597 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
35598
35599         * loader.c: print a big message when an icall can't be found.
35600
35601 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35602
35603         * string-icalls.c: fix bug 24248.
35604
35605 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
35606
35607         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
35608         icall.c, reflection.h: separate assembly loading by pathname and by
35609         assembly name. Use the MONO_PATH env var to search for assemblies.
35610
35611 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35612
35613         * assembly.c, image.h: add some support for assemblies
35614         with multiple modules.
35615         * class.c, class.h: export mono_class_from_typeref().
35616         * loader.c: remove duplicated code and use mono_class_from_typeref(),
35617         instead.
35618
35619 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35620
35621         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
35622         documentation says (the ECMA one is correct).
35623
35624 2002-05-02  Dick Porter  <dick@ximian.com>
35625
35626         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
35627         Don't name the synchronisation mutex.
35628
35629 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
35630
35631         * rand.c
35632         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
35633         Make the prototypes match.
35634         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
35635         Same.
35636
35637         * icall.c
35638         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
35639         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
35640         all systems have tm.tm_zone, so use strftime() with %Z to print
35641         the timezone abreviation into a temp string.
35642
35643         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
35644         rather than mono_array_addr() on a MonoString on Big Endian
35645         machines.
35646
35647 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
35648
35649         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
35650         fix bug 24041
35651
35652 2002-04-30  Dick Porter  <dick@ximian.com>
35653
35654         * socket-io.c: Cope with SOCKET being an integer rather than a
35655         pointer now.
35656
35657         * threads.c: Added Thread_free_internal, to deal with thread
35658         handle cleanup.  Moved calls to handle_store() and handle_remove()
35659         to start_wrapper(), so each can only be called once.  Allocate
35660         synchronisation blocks with GC_malloc(), and use GC finalisation
35661         to close the handles.
35662
35663         * icall.c: added System.Threading.Thread::Thread_free_internal
35664
35665 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35666
35667         * icall.c: support Environment.Exit, CommandLineArgs().
35668
35669 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35670
35671         * object.c, object.h: added mono_runtime_run_main () and
35672         mono_runtime_get_main_args () for use in System.Environment.
35673
35674 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35675
35676         * gc.c: fix thinko, enable actual finalization since the jit is now
35677         fixed.
35678
35679 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35680
35681         * gc.c, object.c: take into account that an object may be offset wrt the address
35682         returned by GC_malloc().
35683
35684 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
35685
35686         * image.c: handle files without entries in the assembly table (modules).
35687
35688 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
35689
35690         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
35691         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
35692         allowed to be null when it's System.Object class setup.
35693
35694 2002-04-27  Martin Baulig  <martin@gnome.org>
35695
35696         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
35697         if `tb->parent == NULL' rather than crashing.
35698
35699 2002-04-28  Nick Drochak  <ndrochak@gol.com>
35700
35701         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
35702         calling acos() where asin() should have been called.
35703
35704 2002-04-26  Martin Baulig  <martin@gnome.org>
35705
35706         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
35707         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
35708         there's a subdirectory called `System', but we don't want to read that
35709         subdirectory as an assembly.
35710
35711 2002-04-25  Martin Baulig  <martin@gnome.org>
35712
35713         * debug-symfile.c: Reflect latest MonoString changes.
35714
35715 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
35716
35717         * rand.c, rand.h: instance method icalls need to have an explicit
35718         this pointer as first argument in the C implementation.
35719
35720 2002-04-25  Nick Drochak <ndrochak@gol.com>
35721
35722         * icall.c: Fix typo in map for GetNonZeroBytes
35723
35724 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
35725
35726         * string-icalls.c : String does now passes unit tests without any 
35727         errors, the following changes has been made:
35728         
35729         Implemented replace methods.
35730         Renaming of methods to (try) follow the standard.
35731         Fixed compare ordinal
35732         Made all memory allocated directly to function instead of via icall function.
35733         Small performance fix in is_in_array function
35734                         
35735  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
35736
35737         c (mono_string_Internal_ctor_charp_int_int):
35738         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
35739         sindex < 0, throw ArgumentOutOfRangeException instead of
35740         ArgumentNullException.
35741
35742         Added new check for length == 0, however
35743         I need to make it return String.Empty from the C code.
35744         
35745         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
35746         that calculate the length for us here.
35747         
35748         (mono_string_Internal_ctor_sbytep_int_int): Replaced
35749         mono_string_new_utf16 with mono_string_new, since value is utf8.
35750
35751 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35752
35753         * object.c: register the object for finalization if needed.
35754         Allocate one more char in the string for the terminating 0 char.
35755
35756 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35757
35758         * class.c, class.h, image.c: check if a type implemenst a destructor.
35759         Use the proper key for array class lookups.
35760         * icall.c: register the icalls in the System.GC class.
35761         * gc.c, gc.h: GC-related functions and icalls.
35762
35763 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35764
35765         * icall.c:
35766         * socket-io.c:
35767         * unicode.c: free some strings gotten from mono_string_to_utf8 and
35768         changed a couple of free () by g_free ().
35769
35770         * decimal.c: one-liner in the comments for decimal2string ().
35771
35772 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
35773
35774         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
35775
35776 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
35777
35778         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
35779         * object.c (mono_runtime_invoke_array) : handle null in params
35780
35781 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
35782
35783         * string-icalls.c: fixed bug in split (one off bug)
35784
35785 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
35786
35787         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
35788         * icalls.c: added String::Equals as internal method
35789
35790 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
35791
35792         * threads.c: fixed bug in the double interlocked functions
35793
35794 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
35795
35796         * threads.c: implemented all of the new interlocked icalls.
35797         * string-icalls.c: fix a bug in insert.
35798         * icalls.c: added the icalls for interlocked, removed old string functions.
35799         
35800 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
35801
35802         * loader.c: fix off-by-one error when reading argument names.
35803
35804 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35805
35806         * profiler.c: win32 counter implementation (untested).
35807         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
35808         (the latter needs testing and more complete impl. from win32 folks).
35809
35810 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
35811
35812         * object.c: mono_array_new_full workaround mono_array_class_get
35813         problem.
35814
35815 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
35816
35817         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
35818         * object.h (mono_string_chars): Changed casting type.
35819
35820 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
35821
35822         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
35823                            method signatures to use gunichar2 instead of gint16.
35824
35825 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
35826
35827         * object.h, object.c: domain-specific versions of mono_object_new and
35828         mono_array_new.
35829
35830 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
35831
35832         * object.c: changed String layout
35833
35834         * string-icalls.c (mono_string_Internal_ctor_chara): added
35835         internal string constructors.
35836
35837 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
35838
35839         * threads.c: pass 'this' to the thread start routine.
35840
35841 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35842
35843         * string-icalls.c: fix IndexOf and LastIndexOf. Now
35844         InternalCompareStr don't call twice mono_string_cmp_char for the last
35845         character. Improved performance in mono_string_cmp_char.
35846
35847 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
35848
35849         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
35850         code into its own library: libmonoruntime.
35851
35852 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
35853
35854         * object.h, object.c: changed array format so that szarrays do not
35855         require a bounds structure.
35856         * icall.c, appdomain.c: support for new szarray format.
35857
35858 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
35859
35860         * metadata.c: compare also the retuns type when comparing signatures:
35861         we didn't do this as an optimization since really overloaded methods
35862         must differ also in the arguments, but this doesn't work with
35863         low-level IL code (or when using explicit conversion operators: see
35864         bug#23498 for an example).
35865
35866 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35867
35868         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
35869
35870 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
35871
35872         * icall.c: make MonoType::GetElementType its own icall.
35873
35874 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35875
35876         * icall.c: remove MonoMethod_get_Name().
35877         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
35878         object.
35879
35880 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
35881
35882         * string-icalls.c: optimized a few methods.
35883
35884 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
35885
35886         * icall.c: added all new string internal calls
35887         * string-icalls.c: added, new string internal call implementation.
35888         * object.c: added mono_string_new_size for allocating a string a size
35889
35890 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
35891
35892         * object.c (mono_object_isinst): use the same code as in the
35893         optimized x86 version.
35894
35895 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35896
35897         * profiler.c: TSC-based timer code (faster and more accurate).
35898         Not hooked up in configure, yet (set USE_X86TSC to 1).
35899
35900 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
35901
35902         * profiler.c, profiler.h: track time spent compiling methods.
35903         * threads.c: track thread creation/destruction.
35904
35905 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
35906
35907         * profiler.c, profiler.h, profiler-private.h: profiling interface
35908         and sample implementation. Moved here so that it can be used also by
35909         the jit.
35910
35911 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
35912
35913         * reflection.c, reflection.h: keep types and other handles separate in
35914         the hash tables for referred tokens. Add guid for modules.
35915
35916 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
35917
35918         * assembly.c: fix bugs found with valgrind.
35919         * metadata.h, metadata.c: added mono_metadata_guid_heap().
35920
35921 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
35922
35923         * threads: added icall support for getting current domain for
35924                    the thread.
35925  
35926 2002-04-13  Martin Baulig  <martin@gnome.org>
35927
35928         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
35929         (MonoDebugVarInfo): Added `index' field for register based addresses.
35930         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
35931         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
35932         `MonoDebugVarInfo *params' and `guint32 this_offset' with
35933         `MonoDebugVarInfo *this_var'.
35934
35935         * debug-symfile.c (relocate_variable): New static function to write
35936         a location description for a local variable or method parameter.
35937
35938 2002-04-12  Martin Baulig  <martin@gnome.org>
35939
35940         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
35941         stack offset and begin/end scope address of a local variable.
35942         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
35943         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
35944         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
35945
35946         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
35947         Added new relocation types for start/end scope of a local variable.
35948
35949 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35950
35951         * object.h: add mono_object_domain() macro.
35952         * reflection.c: handle typespecs.
35953         * icall.c: MonoMethod::get_Name() implementation.
35954
35955 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35956
35957         * icall.c: String::GetHashCode() icall implementation.
35958
35959 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35960
35961         * icall.c: String::IndexOfAny icall.
35962         * object.c, object.h: make array->max_length more useful.
35963         Intrduced mono_object_class() and mono_string_length() macros.
35964
35965 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35966
35967         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
35968         instead of g_unichar_isdigit.
35969
35970 2002-04-11  Nick Drochak  <ndrochak@gol.com>
35971
35972         * icall.c: Implement a simple Double.ToString().
35973
35974 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
35975
35976         * appdomain.h: only io-layer.h is supposed to be included.
35977         * icall.c: explicitly import environ. Fix warning.
35978
35979 2002-04-10  Nick Drochak  <ndrochak@gol.com>
35980
35981         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
35982                 return true even if it's not Daylight Savings time.
35983                 Only return false for the case where the function isn't
35984                 implemented for a plaform (read Windows).
35985
35986 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35987
35988         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
35989         data with a mutex.
35990
35991 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
35992
35993         * mempool.c (mono_mempool_alloc): only use g_malloc when
35994         absolutely necessary.
35995
35996 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
35997
35998         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
35999
36000         * class.c (mono_class_vtable): use domain mempool to allocate vtable
36001         (mono_class_proxy_vtable): use domain mempool
36002
36003 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
36004
36005         * appdomain.h, appdomain.c: split initialization that requires the
36006         execution engine support into mono_runtime_init().
36007
36008 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
36009
36010         * class.c (mono_class_init): don't include vtable inside MonoClass
36011         to save some memory, gather some statistics.
36012         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
36013
36014 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
36015
36016         * icall.c: internalcall implementation for ValueType.Equals().
36017
36018 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
36019
36020         * object.c (mono_message_init): moved 
36021         (mono_runtime_exec_main): new arch. independent impl.
36022         (mono_runtime_invoke_array): new method - like
36023         mono_runtime_invoke, but you can pass an array of objects.
36024         (mono_remoting_invoke): new arch. independent impl.
36025         (mono_message_invoke): new arch. independent impl.
36026         (mono_runtime_class_init): new arch. independent impl.
36027         (mono_runtime_object_init): new arch. independent impl.
36028
36029 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36030
36031         * metadata.c, object.c, reflection.c: documented the exported
36032         functions.
36033
36034 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
36035
36036         * icall.c: simpler code to pass the assembly builder data to corlib.
36037         Implement GetNestedTypes() internalcall.
36038
36039 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
36040
36041         * class.c: warn if a type can't be loaded.
36042
36043 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
36044
36045         * image.h: typedef MonoImageOpenStatus
36046         * types.h: removed unused file
36047         
36048 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
36049
36050         * icall.c: Enum_ToObject accepts enum value arguments.
36051
36052 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
36053
36054         * class.c: move initialization of properties, events and nested
36055         classes, so that they happen for interfaces, too.
36056
36057 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
36058
36059         * icall.c: cleanup some ugly casts in Array_SetValue*.
36060
36061 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
36062
36063         * icall.c: the values array fro enums is of the correct type, now.
36064         Implement (correctly) getFullName instead of assQualifiedName for
36065         MonoType.
36066         * reflection.h, reflection.c: added mono_type_get_name ().
36067
36068 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
36069
36070         * assembly.c, image.h: for each MonoImage, record from wich assembly
36071         it was loaded.
36072         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
36073         Make Type.Assembly work.
36074
36075 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
36076
36077         * debug-symfile.h: use char* instead of gpointer to avoid
36078         unnecessary casts.
36079
36080         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
36081
36082         * icall.c (ves_icall_InternalExecute): impl. FielSetter
36083         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
36084
36085 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
36086
36087         * icall.c (mono_message_init): impl. (code cleanup)
36088         (ves_icall_InternalExecute): impl. FieldGetter
36089
36090         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
36091         defined we call all (non-static)methods through the vtable. 
36092
36093 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
36094
36095         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
36096         finalizer even though the memory is still referenced (and the chunk of
36097         memory is not freed).
36098
36099 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
36100
36101         * assembly.c: fix brokeness.
36102
36103 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
36104
36105         * class.c: kill some warnings. Check explicit interface method
36106         implementation also without considering the namespace.
36107         Load also literal strings in static class data.
36108
36109 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
36110
36111         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
36112         (default_assembly_name_resolver): Make the resolver take the
36113         "base" directory where the assembly was originally defined, so we
36114         can load DLLs that are in the same directory as the assembly that
36115         is being referenced.
36116
36117 2002-03-28  Dick Porter  <dick@ximian.com>
36118
36119         * file-io.h: 
36120         * file-io.c:
36121         * socket-io.c: 
36122         * unicode.h: 
36123         * unicode.c: Warning cleanups
36124
36125 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
36126
36127         * object.h, reflection.h: use the correct type instead of MonoObject.
36128
36129 2002-03-28  Martin Baulig  <martin@gnome.org>
36130
36131         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
36132         (mono_debug_update_symbol_file): Initialize classes if necessary.
36133
36134 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
36135
36136         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
36137         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
36138
36139 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
36140
36141         * assembly.h: fix function prototype.
36142         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
36143         * mono-endian.h: use const cast.
36144
36145 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
36146
36147         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
36148
36149 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
36150
36151         * loader.c: don't assert when a typeref can't be loaded, give
36152         a chance to the runtime to trow an exception instead.
36153         * loader.h: fix warning.
36154
36155 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
36156
36157         * class.c (mono_class_proxy_vtable): added proxy support
36158
36159 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
36160
36161         * icall.c: removed last of PAL calls, added System.Environment
36162         * file-io.h, file-io.c: MonoIO implementation
36163         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
36164
36165 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
36166
36167         * appdomain.c: do not use the byte marker in ldstr table lookup.
36168         * debug-helpers.c: allow two ':' to separate class and method name.
36169         * object.c: allocate arrays bounds with the GC, too.
36170         * verify: add a few more checks.
36171
36172 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
36173
36174         * reflection.c: output also literal strings. Allocate parameter data
36175         with GC_malloc() (thanks, Martin, for catching this!).
36176
36177 2002-03-26  Martin Baulig  <martin@gnome.org>
36178
36179         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
36180         include the `this' offset in the `param_offsets'.
36181
36182 2002-03-25  Martin Baulig  <martin@gnome.org>
36183
36184         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
36185         mono_debug_get_class() function to get the classes. Added new
36186         relocation types for arrays and strings.
36187         (mono_debug_get_class): New static function to search in all
36188         referenced assemblies for a metadata token.
36189
36190         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
36191
36192 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
36193
36194         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
36195         hold gc-allocated objects. Make the string heap a stream like the
36196         others. Removed duplicated code when writing stream info.
36197         Added asserts to catch possible buffer overflows. Set the sorted map
36198         for tables that need sorting. Added some documentation.
36199
36200 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
36201
36202         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
36203         for interned strings and vtables.
36204
36205 2002-03-24  Martin Baulig  <martin@gnome.org>
36206
36207         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
36208         it in the array since it was created with g_slist_prepend().
36209
36210 2002-03-24  Martin Baulig  <martin@gnome.org>
36211
36212         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
36213         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
36214         (mono_debug_method_from_token): Renamed to
36215         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
36216         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
36217
36218         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
36219         relocation types.
36220
36221         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
36222
36223 2002-03-24  Martin Baulig  <martin@gnome.org>
36224
36225         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
36226         (mono_debug_method_from_token): New func.
36227
36228         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
36229         New interncall, calls mono_debug_local_type_from_signature().
36230         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
36231         calls mono_debug_method_from_token().
36232
36233 2002-03-23  Martin Baulig  <martin@gnome.org>
36234
36235         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
36236         specifies the number of bytes to be converted, not the array size.
36237         Return the number of chars, not the number of bytes.
36238         (ves_icall_iconv_get_chars): The `byteCount' argument
36239         specifies the number of bytes to be converted, not the array size.
36240
36241 2002-03-23  Martin Baulig  <martin@gnome.org>
36242
36243         * reflection.h (MonoReflectionSigHelper): New type.
36244
36245         * reflection.c (mono_reflection_sighelper_get_signature_local),
36246         (mono_reflection_sighelper_get_signature_local): New functions.
36247
36248         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
36249         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
36250         interncalls.
36251
36252 2002-03-23  Martin Baulig  <martin@gnome.org>
36253
36254         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
36255         is_writeable is set.
36256         (mono_raw_buffer_update): New function to write the modified map
36257         back to disk.
36258
36259         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
36260
36261         * debug-symfile.c (mono_debug_update_symbol_file): Call
36262         mono_raw_buffer_update() when done writing.
36263
36264 2002-03-23  Martin Baulig  <martin@gnome.org>
36265
36266         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
36267
36268         * debug-symfile.c: Added support for arguments and local variables.
36269
36270 2002-03-23  Dick Porter  <dick@ximian.com>
36271
36272         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
36273         protected by ifdefs, hence breaking the w32 build.
36274
36275 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36276
36277         * object.c: implement is_interned() the right way.
36278
36279 2002-03-21  Martin Baulig  <martin@gnome.org>
36280
36281         * debug-symfile.[ch]: New files to handle debugging information
36282         files. There's also support to dynamically update these symbol
36283         files to include machine dependent information.
36284
36285 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
36286
36287         * threads.c (mono_thread_create): new function to create thread
36288         from C
36289
36290 2002-03-20  Martin Baulig  <martin@gnome.org>
36291
36292         * icall.c (ves_icall_InternalInvoke): Create a new object if the
36293         method is a constructor.
36294         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
36295         points to ves_icall_InternalInvoke().
36296
36297 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
36298
36299         * file-io.c: Flush shouldn't throw exceptions.
36300
36301 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
36302
36303         * file-io.c: FileStream flush support; FileSetLength now
36304         restores file pointer.
36305
36306 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
36307
36308         * class.c: set image for pointer classes.
36309
36310 2002/03/19  Nick Drochak <ndrochak@gol.com>
36311
36312         * sysmath.c: Forgot one.
36313
36314 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
36315
36316         * sysmath.c: Avoid redefining existing names.
36317
36318 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
36319
36320         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
36321         handled by runtime as icall rather than dllimport from libm.so
36322         * file-io.c, file-io.h: fixed handle argument type.
36323
36324 2002-03-18  Dick Porter  <dick@ximian.com>
36325
36326         * reflection.c (mono_image_get_type_info): rename interface to
36327         iface, because of "#define interface struct" on windows.
36328
36329 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
36330
36331         * class.c, class.h: rename and export mono_ptr_class_get().
36332         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
36333         * reflection.c, reflection.h, icall.c: better/saner type name
36334         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
36335         method signatures.
36336
36337 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
36338
36339         * class.c (mono_class_init): removed hardcoded GHC_SLOT
36340
36341         * icall.c (ves_icall_InternalInvoke): impl.
36342
36343 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
36344
36345         * reflection.c: output the interface map table, too.
36346
36347 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
36348
36349         * class.c (class_compute_field_layout): separate computation of 
36350         static field layout
36351
36352 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
36353
36354         * icall.c: added System.Buffer support.
36355         * file-io.c: moved file icalls from PAL to FileStream.
36356
36357 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
36358
36359         * icall.c (ves_icall_System_Object_GetHashCode): impl.
36360
36361 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
36362
36363         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
36364
36365 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
36366
36367         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
36368
36369 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
36370
36371         * debug-helpers.{c,h}: moved here from monograph some useful functions
36372         to locate a method by name/signature in a class or image. Included
36373         also a small and flexible IL disassembler.
36374
36375 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36376
36377         * reflection.c: fixup tokens in methods with small header size, too.
36378
36379 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
36380
36381         * object.c (mono_string_to_utf8): remove assert(!error), instead
36382         print a warning. 
36383
36384 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
36385
36386         * icall.c: update to the new mono_Array_class_get interface.
36387
36388 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
36389
36390         * appdomain.c, object.c: Boehm-GC enable.
36391         * icall.c: make get_data_chunk() support split data requests.
36392         Ensure a class is initialized in more cases. Return only the first
36393         property found in GetProperties() or the compiler gets confused. 
36394         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
36395         * reflection.h, reflection.c: add fixup mechanism for field and method
36396         tokens. Initialize assembly->typeref in a single place. Output
36397         properties after events. Support custom attributes for events, too.
36398         Typo fix for paramter custom attrs.
36399
36400 2002-03-07  Martin Baulig  <martin@gnome.org>
36401
36402         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
36403
36404 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
36405
36406         * class.c (mono_array_class_get): fix. for multi. dim. arrays
36407
36408 2002-03-06  Martin Baulig  <martin@gnome.org>
36409
36410         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
36411         non-zero lower bounds. See testcases #F10-#F13.
36412
36413 2002-03-05  Martin Baulig  <martin@gnome.org>
36414
36415         * exception.c (mono_get_exception_argument_out_of_range): New exception.
36416
36417         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
36418         ves_icall_System_Array_GetValue(), only calculate the absolute array position
36419         here.
36420         (ves_icall_System_Array_SetValue): Likewise.
36421         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
36422         as argument and does the actual work. This function is used when copying a
36423         multi-dimensional array.
36424         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
36425         now do all the widening conversions of value types.
36426         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
36427
36428 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36429
36430         * class.c: remove some magic numbers and use the smbolic names,
36431         instead. Added init_events() to load event info at class init time.
36432         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
36433         and mono_metadata_methods_from_event().
36434         * reflection.h, reflection.c: added support for writing out the evnets
36435         related information.
36436
36437 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
36438
36439         * reflection.h, icall.c: use a different method (GetInterfaces)
36440         to gather interface info and add isbyref, isprimitive and
36441         ispointer to the ves_icall_get_type_info() return value.
36442
36443 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
36444
36445         * class.h: stared adding support for events.
36446         * icall.c: split find_members implementation. Added debug icall to get
36447         the address of an object.
36448         * reflection.c: handle TypeBuilders in mono_type_get_object().
36449
36450 2002-03-01  Martin Baulig  <martin@gnome.org>
36451
36452         * icall.c (ves_icall_System_Array_GetLength): This must throw an
36453         ArgumentOutOfRangeException(), not an ArgumentException().
36454         (ves_icall_System_Array_GetLowerBound): Likewise.
36455         (ves_icall_System_Array_GetValue): Improved argument checking.
36456         (ves_icall_System_Array_SetValue): Improved argument checking.
36457
36458 2002-03-01  Martin Baulig  <martin@gnome.org>
36459
36460         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
36461         called with invalid arguments rather than just dying with g_assert().
36462         (ves_icall_System_Array_SetValue): Likewise.
36463         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
36464         raise a NotImplementedException instead.
36465         (ves_icall_System_Array_GetLength): Added argument checking.
36466         (ves_icall_System_Array_GetLowerBound): Added argument checking.
36467
36468 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
36469
36470         * object.h (mono_assert): new macros mono_assert and
36471         mono_assert_not_reached
36472
36473 2002-02-28  Martin Baulig  <martin@gnome.org>
36474
36475         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
36476         and "System::String::IsInterned" to "System::String::_IsInterned".
36477
36478 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
36479
36480         * icall.c: remove hacks for typebuilder. Added icall to create a
36481         modified type from a tybebuilder.
36482         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
36483         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
36484         to create a backing MonoClass for a TypeBuilder.
36485
36486 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36487
36488         * class.c, class.h: more refactoring of class init.
36489         Export mono_class_setup_mono_type() and mono_class_setup_parent().
36490
36491 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
36492
36493         * marshal.c, marshal.h: start of marshaling interface.
36494
36495 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
36496
36497         * icall.c: fix order in assembly qualified name icall.
36498
36499 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
36500
36501         * class.c: do not free str, since we store it in the hash table.
36502         * reflection.h: add label field to MonoILExceptionInfo.
36503         * reflection.c: handle references to more than one assembly. Handle
36504         case when there isn't a module created in the assembly.
36505
36506 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
36507
36508         * class.c: Fix typo. Start refactoring of class init code.
36509
36510 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
36511
36512         * appdomain.c: exit with 1 on error.
36513         * class.c: we already have the name in MonoClassField.
36514         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
36515         MonoStreamHeader instead of an offset of image->raw_metadata.
36516
36517 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
36518
36519         * appdomain.c (mono_init): Be even more descriptive about the error.
36520
36521 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
36522
36523         * appdomain.c: give the user an informative message when corlib can't
36524         be loaded.
36525
36526 2002-02-26  Martin Baulig  <martin@gnome.org>
36527
36528         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
36529         New icall to get the time zone data.
36530
36531 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36532
36533         * reflection.c: set virtual and raw size of section correctly.
36534         * threads.c: transfer domain information to newly created threads.
36535
36536 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
36537
36538         * class.c: when instancing a class in a domain, load the default
36539         vaules for static fields from the constant table. Fix System.Enum to
36540         not be an enum.
36541         * icall.c: implement Object::GetType() internalcall. Implemented
36542         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
36543         Fixed checking of binding flags in find_members().
36544         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
36545         * reflection.c: handle enumerations when writing to the constant
36546         table. Use a different object cache for types.
36547
36548
36549 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
36550
36551         * object.c (mono_object_isinst): fix for arrays
36552
36553         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
36554
36555 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
36556
36557         * object.c: don't use mprotect ()  and fix intern pool hash table
36558         lookup for big endian systems.
36559
36560 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36561
36562         * icall.c: change type_is_subtype_of () signature.
36563
36564 2002-02-21  Mark Crichton  <crichton@gimp.org>
36565
36566         * rand.c, rand.h: Added random number generator for
36567         System.Security.Cryptography classes.
36568
36569         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
36570
36571         * icall.c: Added System.Security.Cryptography calls.
36572
36573 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
36574
36575         * class.c, icall.c, metadata.c: better support for pointer types.
36576         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
36577         * reflection.c: Add support for getting custom attrs for properties
36578         and simplify some code.
36579
36580 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36581
36582         * icall.c: change getToken () and add custom attribute GetBlob()helper
36583         method.
36584         * reflection.h: add custom attrs array to the reflection builder structures.
36585         * reflection.c: encode and emit custom attributes for all the relevant
36586         reflection objects. Cache fieldref and methodref tokens. Change
36587         mono_image_create_token() interface to take a MonoDynamicAssembly.
36588         More complete custom attributes decoder. Load custom attributes for
36589         Assembly, Field, Method and Constructor objects, too. Make the
36590         returned array an Attribute[] one, not object[]. Added
36591         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
36592         custom attribute constructor.
36593
36594 2002-02-20  Dick Porter  <dick@ximian.com>
36595
36596         * icall.c:
36597         * rawbuffer.c:
36598         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
36599         problem code out for now).
36600
36601 2002-02-19  Radek Doulik  <rodo@ximian.com>
36602
36603         * object.c (mono_ldstr): use hash table to avoid multiple swapping
36604
36605 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
36606
36607         * icall.c: register the GetCustomAttributes method.
36608         * object.c, object.h: add mono_string_new_len ().
36609         * reflection.h, reflection.c: added mono_runtime_invoke(),
36610         mono_install_runtime_invoke(). Added
36611         mono_reflection_get_custom_attrs () to load custom attributes and
36612         create the attribute objects.
36613
36614 2002-02-19  Dick Porter  <dick@ximian.com>
36615         * threads-dummy-types.c:
36616         * threads-dummy-types.h:
36617         * threads-dummy.c:
36618         * threads-dummy.h:
36619         * threads-pthread-types.c:
36620         * threads-pthread-types.h:
36621         * threads-pthread.c:
36622         * threads-pthread.h:  Deleted obsolete files
36623
36624 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
36625
36626         * class.c (mono_class_vtable): runtime init the class when we
36627         allocate static class data.
36628
36629         * icall.c (ves_icall_System_Array_SetValue): check for null values.
36630
36631         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
36632         and String - but we will need generic marshalling support in the
36633         future. 
36634         (mono_init): set the domain name in a ms compatible way
36635
36636         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
36637         String[].
36638
36639 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
36640
36641         * object.c (mono_array_clone): use alloca() instead of g_malloc  
36642         for sizes
36643
36644         * appdomain.c (mono_domain_unload): impl.
36645
36646 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
36647
36648         * appdomain.c, object.c: fix intern pool implementation.
36649         * class.c: fix alignment code.
36650
36651 2002-02-16  Radek Doulik  <rodo@ximian.com>
36652
36653         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
36654         and s2 > s1, just copy lower bytes to be compatible with little
36655         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
36656         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
36657
36658         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
36659         force big_endian to be 1 for big endian machines 
36660         (ves_icall_iconv_new_decoder): ditto
36661
36662 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
36663
36664         * socket-io.c (convert_sockopt_level_and_name): If the system
36665         doesn't define SOL_IP or SOL_TCP, get them by hand using
36666         getprotobyname() and caching the values (because this could be a
36667         slow operation).
36668         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
36669         Use the appropriate struct when the system does support it. Ie,
36670         not all systems have struct ip_mreqn so use struct ip_mreq when
36671         appropriate.
36672
36673 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
36674
36675         * reflection.c: handle finally clauses.
36676
36677 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
36678
36679         * socket-io.c: use g_snprintf() instead of snprintf.
36680
36681 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
36682
36683         * reflection.c (mono_param_get_objects): Cast second argument to
36684         mono_method_get_param_names to a const char** to silence the
36685         compiler warning.
36686
36687         * appdomain.c (mono_domain_assembly_open): Put parens around the
36688         truth statement in the for-loop.
36689
36690         * unicode.c (iconv_convert): Got rid of a compiler warning about
36691         int i being unused when the system has a new iconv.
36692         (iconv_get_length): Same.
36693
36694         * image.c (load_class_names): Cast the second argument to
36695         g_hash_table_insert() to char* to hush compiler warnings about the
36696         arg being a const.
36697         (mono_image_open): Same here.
36698
36699         * socket-io.c: Don't conditionally include sys/filio.h or
36700         sys/sockio.h here anymore since we now get them from
36701         io-layer/io-layer.h
36702         (inet_pton): If the system doesn't support inet_aton, implement
36703         using inet_addr and also #define INADDR_NONE if it isn't defined
36704         by the system.
36705
36706 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
36707
36708         * metadata.c, metadata.h: added function to get packing and size info
36709         of a typedef.
36710         * reflection.h, reflection.c: handle field RVA data. Save info about
36711         the table layout if needed. Assign typedef indexes to all the types
36712         before dumping the info about them to avoid forward reference problems.
36713
36714 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
36715
36716         * socket-io.c (convert_sockopt_level_and_name): ifdef
36717         SO_ACCEPTCONN because it is not defined on my system (old debian)
36718
36719 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
36720
36721         * opcode.c: use stddef.h to get NULL.
36722
36723 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
36724
36725         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
36726         for FIONBIO, FIONREAD and SIOCATMARK.
36727         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
36728         define INADDR_NONE and besides, inet_addr() is deprecated and
36729         should not be used. Use inet_pton() instead - it also has the
36730         added bonus that it can easily handle IPv6 addresses as well.
36731         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
36732
36733 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
36734
36735         * decimal.c: remove _MSC_VER conditional.
36736
36737 2002-02-13  Dick Porter  <dick@ximian.com>
36738
36739         * socket-io.c: 
36740         * icall.c: Internal calls for Blocking, Select, Shutdown,
36741         GetSocketOption and SetSocketOption
36742
36743 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36744
36745         * assembly.cs: better resolver: use it instead of some kludgy
36746         code.
36747
36748 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
36749
36750         * reflection.c: the best way to speed-up the compiler is to avoid
36751         infinite loops.
36752
36753 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
36754
36755         * class.c (mono_class_vtable): changed the object layout
36756         (obj->vtable->class). 
36757         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
36758
36759 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36760
36761         * assembly.c: look for assemblies in the assembly dir, too.
36762
36763 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
36764
36765         * class.c: fix thinko in mono_class_from_type().
36766
36767 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36768
36769         * exception.h, exception.c: added TypeLoadException.
36770         * object.h, object.c: added mono_array_clone ().
36771         * icall.c: handle throwOnError in AssemblyGetType().
36772         Added Array.Clone().
36773         * opcode.h, opcode.c: use a single value for the opcode val.
36774         Compile fix for non-gcc compilers.
36775
36776 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
36777
36778         * opcodes.c, opcodes.h: export interesting info about opcodes.
36779
36780 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
36781
36782         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
36783         icalls. 
36784
36785         * class.c (class_compute_field_layout): set element_class for enums
36786         (mono_class_create_from_typedef): set element_class for normal classes
36787
36788         * icall.c (ves_icall_System_Enum_get_value): impl.
36789
36790         * class.c (mono_class_create_from_typedef): do not set valuetype
36791         flag for System.ValueType and System.Enum
36792
36793 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
36794
36795         * unicode.c (iconv_convert): fix big endian problem.
36796
36797 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
36798
36799         * class.c: add asserts if we are ever going to scribble over memory.
36800         * socket-io.c: not all systems have AF_IRDA defined.
36801
36802 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
36803
36804         * class.c (class_compute_field_layout): do not consider static
36805         fields to compute alignment
36806
36807 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
36808
36809         * appdomain.c (mono_appdomain_get): impl.
36810         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
36811
36812 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
36813
36814         * icall.c: ignore "file://" prefix when loading an assembly.
36815
36816 2002-01-23  Dick Porter  <dick@ximian.com>
36817
36818         * socket-io.c:
36819         * icall.c:
36820         * Makefile.am: Added socket support
36821
36822 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
36823
36824         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
36825         code back.  This should return the assemblies that are loaded by
36826         the runtime on behalf of an application domain. 
36827
36828         The current implementation is still broken, it just returns every
36829         assembly loaded, but until we get real applications domain this
36830         will do.
36831
36832 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
36833
36834         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
36835         AppDomain object.
36836
36837 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
36838
36839         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
36840         the mono_class_from_name lookup.
36841         (ves_icall_get_parameter_info): ditto.
36842         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
36843         method.
36844         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
36845
36846 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
36847
36848         * class.c: load also nested classes on class init.
36849         System.ValueType instance methods gets passed boxed
36850         values, unless methods in derived classed that get a pointer to the
36851         data.
36852         * icall.c: use better name parsing code in GetType().
36853         * image.c, image.h: add mono_image_loaded ().
36854         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
36855         * reflection.c, reflection.h: added mono_reflection_parse_type().
36856
36857 2002-01-22  Veronica De Santis <veron78@interfree.it>
36858
36859         * icall.c : Added mapping of internal calls for Manual and Auto reset events
36860         * threads.c : Added the implementation of internal calls for events
36861         * threads.h : Added prototypes of internal calls for events
36862         
36863 2002-01-21  Radek Doulik  <rodo@ximian.com>
36864
36865         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
36866
36867 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
36868
36869         * class.c (mono_class_init): set min_align to 1 (instead of 0)
36870         (mono_class_value_size): use min_align
36871
36872 2002-01-20  Dick Porter  <dick@ximian.com>
36873
36874         * threads.h:
36875         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
36876         so it compiles on w32.
36877
36878 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
36879
36880         * metadata.c (mono_type_stack_size): impl.
36881
36882         * class.c (mono_class_get_field): impl. memberref token
36883
36884 2002-01-16 Veronica De Santis <veron78@@interfree.it>
36885
36886         * icall.h : Added the internal calls mapping for CreateMutex_internal
36887                     and ReleaseMutex_internal.
36888         * threads.h : Added the prototype of mutexes internal calls.
36889         * threads.c : Added the implementations of mutexes internal calls.
36890
36891 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
36892
36893         * metaparse.h: removed unused file.
36894         * reflection.c, reflection.h: added stream_data_align () function 
36895         to align data in streams and keep stream aligned. Add support for
36896         exception support in method headers.
36897
36898 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
36899
36900         * unicode.c: make iconv_convert () return the number of bytess written
36901         in the output buffer.
36902
36903 2002-01-15  Dick Porter  <dick@ximian.com>
36904         * threads.c: Make the runtime's idea of infinite timeouts coincide
36905         with the class library's
36906
36907         Fix a particularly egregious bug in mono_thread_cleanup(). That
36908         code was so utterly bogus it must have been written on a Monday.
36909
36910 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
36911
36912         * reflection.h: add subtypes field to TypeBuilder.
36913         * reflection.c: encode constants for literal fields.
36914         Handle subtypes. Fix user string token (and add a zero byte)
36915         at the end.
36916         
36917 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
36918
36919         * class.c (mono_class_init): bug fix: assign slot numbers for
36920         abstract methods.
36921
36922 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
36923
36924         * reflection.c: don't try to output a code RVA for abstract methods.
36925         Small fixes for method header format. Output parameter info to the
36926         ParamDef table. Save method overriding info to MethodImpl table.
36927         Fix property support. Allow typedef.extends to be a type in the
36928         building assembly.
36929         * verify.c: fix off-by-one error.
36930
36931 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
36932
36933         * class.c: fix mono_class_from_mono_type () for szarray types.
36934         Remove unused cache check in mono_class_from_type_spec().
36935         * icall.c: *type_from_name () functions handle simple arrays and byref.
36936         * reflection.c: handle byref and szarray types. Handle methods without
36937         body (gets P/Invoke compilation working). Handle types and fields in
36938         get_token ().
36939         * reflection.h: add rank to MonoTypeInfo.
36940
36941 2002-01-10  Dick Porter  <dick@ximian.com>
36942
36943         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
36944         internal calls
36945
36946 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
36947
36948         * icall.c: initialize class in type_from_handle ().
36949         Loop also in parent classes for get_method ().
36950         * reflection.c: properly encode class and valuetype types.
36951         Start on encoding TypeBuilder types. Handle fieldrefs.
36952         Use correct length when registering a user string.
36953         Handle ConstructorBuilder and MonoMethod in get_token ().
36954         Make mono_type_get_object () aware of cached types.
36955         * object.c: back out change to mono_string_new ().
36956
36957 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
36958         * object.c: mono_string_new should return a NULL when the string 
36959         passed in is NULL -- not try to deference it.
36960         
36961 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
36962
36963         * icall.c: hack to make IsSubType work for TypeBuilders.
36964         * reflection.c: emit constructors before methods.
36965         Retrieve param names in mono_param_get_objects().
36966
36967 2002/01/05  Nick Drochak  <ndrochak@gol.com>
36968
36969         * Makefile.am: fix list of headers and sources so automake 1.5
36970         doesn't complain. Removed \# at end of list.
36971
36972 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
36973
36974         * reflection.c: get token for a method ref. Set return type of
36975         constructor to void.
36976         * loader.c: debug message.
36977         * class.c: typo fix.
36978
36979 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
36980
36981         * icall.c: fix array init with rank > 1. FindMembers
36982         loops in parent class as well.
36983         * image.c: do not insert nested types in name cache.
36984         * reflection.c: warning fix.
36985         * reflection.h: add override method (for interface impl).
36986
36987 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
36988
36989         * metadata.c: fix customattr decoding.
36990
36991 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
36992
36993         * rawbuffer.cs: Added native Win32 implementation, avoids using
36994         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
36995
36996 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
36997
36998         * class.c: make the low-level routines handle the cache.
36999
37000 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
37001
37002         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
37003
37004 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
37005
37006         * class.c: fix mono_array_element_size() for objects.
37007         * class.h, class.c: add properties to MonoClass and load them
37008         at init time.
37009         * icall.c: check with isinst() when assigning a value to an array
37010         instead of requiring the classes to match exactly.
37011         Implemented icall for System.Type::GetType().
37012         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
37013         enums. Handle bindingflags when looking for methods and fields.
37014         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
37015         and mono_metadata_methods_from_property().
37016         * reflection.h, reflection.c: added structures for propreties,
37017         parameters and enums. Implemented mono_property_get_object() and
37018         mono_param_get_objects().
37019
37020 2001-12-18  Dick Porter  <dick@ximian.com>
37021
37022         * file-io.c: Use mono_string_to_utf16() instead of
37023         mono_string_chars()
37024
37025         * object.c: Added mono_string_to_utf16(), which copies the non
37026         NULL-terminated MonoString into a new double-null-terminated
37027         buffer.
37028
37029 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
37030
37031         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
37032
37033 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
37034
37035         * file-io.c: raise exceptions if handle is invalid.
37036
37037 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
37038
37039         * assembly.c: yet another check for mscorlib.
37040         * class.c, class.h: load nesting info for classes.
37041         * icall.c: many new functions to support the Reflection classes.
37042         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
37043         * reflection.h, reflection.c: mono_image_create_token(),
37044         mono_assembly_get_object(), mono_type_get_object(),
37045         mono_method_get_object(), mono_field_get_object(): methods to return
37046         objects that parallel the C representation of assemblies, types,
37047         methods, fields.
37048
37049 2001-12-11  Dick Porter  <dick@ximian.com>
37050
37051         * icall.c:
37052         * file-io.c: Internal calls for file IO.
37053
37054 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
37055
37056         * tabledefs.h: missing FileAttributes.
37057         * verify.h, verify.c: use is_valid_string () to simplify and check for
37058         valid strings more correctly. Fix warnings and speeling.
37059         Check more tables: Filed, File, ModuleRef, StandAloneSig.
37060         Check code: branches, maxstack, method calls.
37061
37062 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
37063
37064         * object.c (mono_object_allocate): removed static, so that the jit
37065         can allocate value types.
37066
37067         * icall.c (ves_icall_System_DateTime_GetNow): impl.
37068
37069 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37070
37071         * class.c: init enum types right away and register the
37072         token->MonoClass map in mono_class_create_from_typedef ().
37073         * verify.h, verify.c: first cut of the verifier.
37074         * pedump.c: add --verify switch to verify metadata tables.
37075         * tabledefs.h: add some missing enums.
37076
37077 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
37078
37079         * class.c (mono_install_runtime_class_init): impl.
37080         (mono_class_init): renamed mono_class_metadata_init to
37081         mono_class_init, also removed the metadata_inited flag
37082
37083         * object.c (mono_object_isinst): use faster algorithm
37084
37085 2001-11-30  Radek Doulik  <rodo@ximian.com>
37086
37087         * mono-endian.h: reverted last change
37088         added function prototypes
37089
37090         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
37091         add mono-endian.c back
37092
37093         * mono-endian.c: returned back, as Paolo pointed out, it's needed
37094         for unaligned access, I've mistaked it with endianess. I am
37095         sorry.
37096         (mono_read16): fix reverted endianess
37097         (mono_read64): ditto
37098         (mono_read32): ditto
37099
37100 2001-11-30  Dick Porter  <dick@ximian.com>
37101
37102         * exception.c: Implement mono_exception_from_name()
37103
37104 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
37105
37106         * metadata.h, metadata.c: remove params_size and locals_size and their
37107         calculation from the metadata code: they are only usefult to the
37108         interp.
37109
37110 2001-11-29  Radek Doulik  <rodo@ximian.com>
37111
37112         * object.c (mono_ldstr): swap bytes here, it's probably not the
37113         best place, but works for me now, I'll redo it once I know mono
37114         better, also note that I add PROT_WRITE and don't reset back, also
37115         note that it's only affects big endians, so x86 should be OK
37116
37117         * mono-endian.h (read16): use just glib macros for both endians
37118
37119         * mono-endian.c: removed as glib macros are used in in
37120         mono-endian.h so we don't need to care about endianess for read
37121         macros as glib does that for us already
37122
37123 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
37124
37125         * class.h, class.h: take minimum alignment into consideration so
37126         that the fields of a class remain aligned also when in an array.
37127
37128 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37129
37130         * loader.h, loader.c: add mono_method_get_param_names().
37131         * class.c: 0-init class fields.
37132
37133 2001-11-26  Dick Porter  <dick@ximian.com>
37134
37135         * icall.c:
37136         * threads-types.h:
37137         * threads.c: New file that handles System.Threading on all platforms
37138
37139         * object.c: 
37140         * object.h: Remove the synchronisation struct from MonoObject,
37141         replace it with a pointer that gets initialised on demand
37142
37143         * Makefile.am: Replace all the system-specific threading code with
37144         a single file that uses the new wrapper library
37145
37146 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
37147
37148         * class.c, class.h: add mono_install_trampoline() so that the runtime
37149         can register a function to create a trampoline: removes the ugly
37150         requirement that a runtime needed to export arch_create_jit_trampoline.
37151         * object.h, object.c: added mono_install_handler() so that the runtime
37152         can install an handler for exceptions generated in C code (with
37153         mono_raise_exception()). Added C struct for System.Delegate.
37154         * pedump.c: removed arch_create_jit_trampoline.
37155         * reflection.c: some cleanups to allow registering user strings and
37156         later getting a token for methodrefs and fieldrefs before the assembly
37157         is built.
37158         * row-indexes.h: updates and fixes from the new ECMA specs.
37159
37160 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
37161
37162         * class.h, class.c: add enum_basetype field to MonoClass.
37163         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
37164         to get index in the constant table reated to a field, param or
37165         property.
37166         * reflection.h, reflection.c: handle constructors. Set public-key and
37167         version number of the built assembly to 0.
37168         * row-indexes.h: update from new ECMA spec.
37169
37170 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
37171
37172         * class.h, class.c: add a max_interface_id to MonoClass.
37173         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
37174         since it's used to do that. Added mono_type_type_from_obj().
37175         Make GetType() return NULL instead of segfaulting if the type was not
37176         found. Handle simple arrays in assQualifiedName.
37177         * object.h: add a struct to represent an Exception.
37178         * reflection.c: output call convention in method signature.
37179         Add code to support P/Invoke methods and fixed offsets for fields.
37180
37181 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
37182
37183         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
37184         the value.
37185         * icall.c: use mono_array_addr instead of array->vector: fixes the
37186         reflection image writing.
37187         * reflection.c: init call convention byte to 0 in method signature.
37188         Encode the property signature. Don't output property-related methods
37189         twice. Really process the properties for a type (don't cast a field to
37190         a property, my mom always told me that).
37191         Fix 64 bit issues in pointer alignment in a different and more
37192         readable way.
37193
37194 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
37195
37196         * loader.h: Removed type class from MonoDefaults, added monotype
37197
37198         * loader.c: Loaded MonoType, removed loading of Type
37199
37200         * icall.c (my_mono_new_object): Now returns a System.MonoType,
37201         and fills in System.Type._impl with a RuntimeTypeHandle rather
37202         than the actual MonoClass *
37203
37204         (ves_icall_type_from_handle): change from type_class to
37205         monotype_class
37206
37207         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
37208         implemented
37209
37210         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
37211         implemented
37212
37213         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
37214
37215         (ves_icall_System_Reflection_Assembly_GetType): implemented
37216
37217         (ves_icall_System_MonoType_assQualifiedName): implemented
37218
37219         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
37220
37221 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
37222
37223         * assembly.c (mono_assembly_open): Implement a cache for the
37224         assemblies. 
37225
37226         (mono_assembly_close): only destroy the assembly when the last
37227         reference is gone.
37228         
37229 2001-11-09  Dick Porter  <dick@ximian.com>
37230
37231         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
37232
37233 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
37234
37235         * class.c (mono_class_metadata_init): bug fix: compute the right slot
37236
37237 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
37238
37239         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
37240         from Martin Weindel.
37241         * object.h: add mono_string_chars ().
37242
37243 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
37244
37245         * reflection.c (build_compressed_metadata): Eliminates warnings
37246         and uses 64-bit clean code.
37247
37248         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
37249         (mono_type_equal): Change signature to eliminate warnings.
37250
37251 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37252
37253         * icall.c, loader.c: remove the internalcall array constructors.
37254         Changes to match the new MonoArray structure.
37255         * object.h, object.c: an array object doesn't allocate an extra
37256         vector. Add mono_array_new_full () to create jagged arrays easily.
37257
37258 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
37259
37260         * metadata.h, metadata.c: add mono_metadata_field_info () to
37261         retreive all the info about a field from vairous tables.
37262         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
37263         * class.h, class.c: augment MonoClassField with more info.
37264         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
37265         policy and load a field's RVA if needed.
37266
37267 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
37268
37269         * class.c (mono_class_metadata_init): create a trampoline for all
37270         virtual functions instead of actually compiling them.
37271
37272 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
37273
37274         * class.h, class.c: include name in MonoClassField.
37275         * class.c: fix fundamental type of System.Object and System.String.
37276         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
37277         tokens in ldtoken.
37278         * icall.c: remove internalcalls for the Reflection stuff that is now
37279         done in C# code.
37280         * loader.c: mono_field_from_memberref () implementation.
37281         * mono-endian.c: thinko (s/struct/union/g).
37282         * object.c, object.h: make the mono_string_* prototypes actually use
37283         MonoString instead of MonoObject.
37284         * reflection.c, reflection.h: updates for changes in the reflection
37285         code in corlib: we use C structures that map to the actual C# classes.
37286         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
37287         fat method header if needed and use the info from the ILGenerator for
37288         methods. Handle fields in types. Misc fixes.
37289
37290 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
37291
37292         * class.c (mono_class_metadata_init): bug fix: always allocate
37293         space for static class data
37294
37295 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
37296
37297         * class.c (mono_compute_relative_numbering): use relative
37298         numbering to support fast runtime type checks.
37299
37300 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
37301
37302         * class.c (mono_class_create_from_typeref): added debugging output
37303         to print class name when MonoDummy is returned instead of real class
37304
37305 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
37306
37307         * class.c (mono_class_metadata_init): interface offset table now
37308         contains pointers into the vtable - this is more efficient for the jit
37309
37310 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
37311
37312         * class.c (mono_class_metadata_init): use a temporary vtable (the
37313         old algorithm only worked for the interpreter, but not for the jit)
37314
37315 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
37316
37317         * loader.c (method_from_memberref): use mono_class_get to get the
37318         class of an array instead of using System.Array directly.
37319         (mono_get_method): also add MEMBERREF methods to the method cache
37320         which usefull for arrays.
37321
37322 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
37323
37324         * pedump.c (arch_compile_method): added to compute vtable entry
37325
37326         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
37327         number of interfaces.
37328         
37329         * class.h: merged MonoArrayClass into MonoClass
37330
37331         * class.c (mono_class_create_from_typedef): compute the vtable size and
37332         allocate space to include the vtable inside MonoClass
37333         (mono_class_metadata_init): initialize the vtable
37334
37335 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
37336
37337         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
37338         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
37339         * image.c: endian fixes by Laurent Rioux.
37340         * object.h, object.c: rename MonoStringObject to MonoString and
37341         MonoArrayObject to MonoArray. Change some function names to conform to
37342         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
37343         guint16* as first argument, so don't use char*.
37344         Provide macros to do the interesting things on arrays in a portable way.
37345         * threads-pthread.c: updates for the API changes and #include <sched.h>
37346         (required for sched_yield()).
37347         * icall.c: updates for the API changes above.
37348         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
37349         platforms that need them.
37350
37351 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
37352
37353         * class.c: set the correct type for all the fundamental
37354         type when loading the class.
37355
37356 2001-10-05  Dick Porter  <dick@ximian.com>
37357
37358         * threads-pthread.c (pthread_mutex_timedlock): Simple
37359         compatibility version for C libraries that lack this call.
37360
37361 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37362
37363         * class.c: MonoTypes stored in MonoClass are stored as
37364         fundamental MonoTypes when the class represents a
37365         fundamental type (System.Int32, ...).
37366         The TypeHandle return by ldtoken is a MonoType*.
37367         * icall.c: ves_icall_get_data_chunk () write out all the
37368         PE/COFF stuff. Implement ves_icall_define_method (),
37369         ves_icall_set_method_body (), ves_icall_type_from_handle ().
37370         * image.c: properly skip unknown streams.
37371         * loader.h, loader.c: add type_class to mono_defaults.
37372         * metadata.c, metadata.h: export compute_size () as
37373         mono_metadata_compute_size () with a better interface.
37374         Typo and C&P fixes.
37375         * pedump.c: don't try to print the entry point RVA if there is no entry point.
37376         * reflection.c, reflection.h: many cleanups, fixes, output method
37377         signatures and headers, typedef and typeref info, compress the metadata
37378         tables, output all the heap streams, cli header etc.
37379         * row-indexes.h: typo fixes.
37380
37381 2001-10-04  Dick Porter  <dick@ximian.com>
37382
37383         * object.h: Add a synchronisation mutex struct to MonoObject
37384
37385         * object.c (mono_new_object): Initialise the object
37386         synchronisation mutexes
37387
37388         * icall.c: System.Threading.Monitor internal calls
37389         
37390         * threads-pthread.h:
37391         * threads-pthread.c: System.Threading.Monitor internal calls
37392
37393         * threads-types.h: New file, includes the system-specific thread
37394         structures
37395         
37396         * threads-pthread-types.h:
37397         * threads-pthread-types.c: New files, handle pthread-specific
37398         synchronisation types
37399
37400         * threads-dummy-types.h: 
37401         * threads-dummy-types.c: New files of dummy support for
37402         thread-specific types
37403
37404         * metadata.c:
37405         * image.c:
37406         * pedump.c: include mono-endian.h not endian.h
37407         
37408         * Makefile.am: More threads files.
37409         Name mono-endian.h not endian.h
37410
37411 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
37412
37413         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
37414         stuff and implement a few more bits.
37415         * icall.c: a field needs to be dereferenced twice. Do not use the same
37416         name for two variables in the same scope.
37417         * image.c, image.h: cleanups.
37418
37419 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
37420
37421         * class.c (mono_class_metadata_init): bug fix: compute the right size
37422
37423 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
37424
37425         * icall.c: implemented some of the Reflection internalcalls.
37426         * image.c, image.h: start writing out the PE/COFF image.
37427         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
37428         that does the reverse than decode_blob_size ().
37429         * object.c: use mono_metadata_encode_value (). Move here
37430         temporary implementation of mono_string_to_utf8 ().
37431         * rawbuffer.c: make malloc_map static.
37432
37433 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37434
37435         * metadata.c: fix type comparison for arrays.
37436         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
37437         Added a couple of new classes to monodefaults.
37438         * icall.c: added a couple of Reflection-related internalcalls.
37439         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
37440         Added a byval_arg MonoType to MonoClass.
37441
37442 2001-09-28  Dick Porter  <dick@ximian.com>
37443
37444         * icall.c:
37445         * threads-pthread.h: 
37446         * threads-pthread.c: Implemented internal calls for
37447         LocalDataStoreSlot operations.  Applied mutexes around all shared
37448         data.  Reworked the thread creation and Start() operations to
37449         avoid a race condition.
37450         
37451         * threads-dummy.h:
37452         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
37453
37454 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
37455
37456         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
37457
37458 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
37459
37460         * class.c, loader.c: warn and return NULL instead of erroring out.
37461         * icall.c: added System.AppDomain::getCurDomain().
37462         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
37463
37464 2001-09-25  Dick Porter  <dick@ximian.com>
37465
37466         * threads-pthread.h:
37467         * threads-pthread.c: Implemented timed thread joining and added
37468         System.Threading.Thread::Join_internal internal call
37469
37470         * icall.c: Added System.Threading.Thread::Join_internal internal call
37471
37472         * threads-dummy.h:
37473         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
37474
37475 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
37476
37477         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
37478         mono_string_intern () to implement the semantics of the ldstr opcode
37479         and the interning of System.Strings.
37480         * icall.c: provide hooks to make String::IsIntern and String::Intern
37481         internalcalls.
37482
37483 2001-09-23  Dick Porter  <dick@ximian.com>
37484
37485         * threads-dummy.c: 
37486         * threads-dummy.h: New files of dummy threading routines
37487
37488         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
37489         support code based on system specifics
37490
37491         Rename PTHREAD_LIBS to THREAD_LIBS
37492         
37493 2001-09-23  Dick Porter  <dick@ximian.com>
37494
37495         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
37496         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
37497         internal calls.
37498         (mono_thread_init): Set up a Thread object instance to return when
37499         the main thread calls Thread.CurrentThread
37500         (mono_thread_cleanup): Wait for all subthreads to exit
37501
37502         * icall.c: New internal calls for System.Threading.Thread::Sleep
37503         (including Schedule) and CurrentThread
37504
37505         * threads.h: New file, to insulate thread-specific stuff from the
37506         rest of the code
37507
37508 2001-09-21  Dick Porter  <dick@ximian.com>
37509
37510         * threads-pthread.h: 
37511         * threads-pthread.c: New file, for handling pthreads-style
37512         threading support.  Start() now starts a new thread and executes
37513         the ThreadStart delegate instance.
37514
37515         * icall.c: Added the internalcall for
37516         System.Threading.Thread::Start_internal
37517
37518         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
37519
37520 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
37521
37522         * loader.c: work around the different signatures for delegates
37523         constructors csc generates in compiled code vs the ones compiled in mscorlib.
37524
37525 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
37526
37527         * class.h, class.c: add mono_class_get_field_from_name ().
37528         * *: Fix C comments and other ANSI C issues.
37529
37530 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
37531
37532         * endian.h, assembly.c: fix some endianness issues.
37533
37534 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
37535
37536         * loader.h, load.c: add delegate_class to mono_defaults.
37537         Handle runtime provided methods in mono_get_method ().
37538
37539 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
37540
37541         * loader.c (mono_get_method): use pinvoke for internal call
37542
37543         * icall.c: use pinvoke for internal call
37544
37545         * loader.c (method_from_memberref): set the method name
37546
37547 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
37548
37549         * metadata.c: help the compiler generate better code for
37550         mono_class_from_mono_type ().
37551
37552 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
37553
37554         * class.c (mono_class_metadata_init): delayed computing of the
37555         class size to mono_class_metadata_init ()
37556
37557 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
37558
37559         * class.c, class.h: add an interfaces member to MonoClass.
37560         * image.c, image.h: add assembly_name field to MonoImage
37561         from the assembly table.
37562         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
37563
37564 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
37565
37566         * class.c: Handle Array in mono_class_from_mono_type ().
37567         * metadata.c, pedump.c: some endian fixes.
37568
37569 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
37570
37571         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
37572         * metadata.c: fix small problem introduced with the latest commit.
37573
37574 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
37575
37576         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
37577         We don't need a MonoMetadata pointer anymore to compare signatures in
37578         mono_metadata_signature_equal (), update callers.
37579         Reduced memory usage an number of allocations for MonoMethodHeader and
37580         MonoMethodSignature.
37581
37582 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
37583
37584         * metadata.c: added compare for szarray.
37585
37586 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
37587
37588         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
37589         and add a couple more types to it and mono_defaults. Give an hint on
37590         classes that need implementing in our corlib and are referenced
37591         in mscorlib.
37592
37593 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
37594
37595         * class.h, class.c: keep track if a class is also an Enum.
37596         * loader.c: Implement a couple more types for use in libffi
37597         marshalling. Gives better diagnostics when failing to dlopen
37598         a library. Set method->klass for P/Invoke methods, too.
37599
37600 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
37601
37602         * class.c, class.h: add a MonoType this_arg to MonoClass that
37603         represents a pointer to an object of the class' type that
37604         can be used by the interpreter and later the type cache.
37605         Add best guess alignment info for valuetype objects.
37606
37607 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
37608
37609         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
37610         into MonoType: one less level of indirection and allocation and
37611         simplifies quite a bit of code. Added cache for MonoTypes that are
37612         used frequently, so that we don't need to allocate them all the time.
37613
37614 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
37615
37616         * class.c (mono_class_create_from_typedef): System.Enum is also a
37617         value type, although it does not derive from System.ValueType
37618         (maybe a bug in the ms compiler?)
37619
37620         * metadata.c (mono_type_size): return the right size for value types
37621
37622         * loader.c (mono_get_method): only initialize method header if not abstract
37623
37624         * class.c (mono_class_from_mono_type): use mono_default values. 
37625
37626 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
37627
37628         * *: use MonoClass pointers instead of <type_tokens>
37629         
37630         * class.h: new flag: metadata_inited.
37631
37632         * class.c (mono_class_metadata_init): impl.
37633         (mono_class_instance_size): impl.
37634         (mono_class_data_size): impl.
37635
37636 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37637
37638         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
37639         MonoClass now has the name and name_space fields. 
37640         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
37641         mono_get_method () takes and optional MonoClass as argument.
37642         Removed mono_typedef_from_name() and added mono_class_token_from_name()
37643         instead that takes advantage of a map from class names to typedef
37644         tokens in MonoImage.
37645
37646 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
37647
37648         * metadata.c: zero is not a valid alignment boundary.
37649         Merge MONO_TYPE_VOID in default decoding code.
37650
37651 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
37652
37653         * image.h: merged MonoMetadata into MonoImage
37654
37655         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
37656         identify the type of elements.
37657
37658 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
37659
37660         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
37661         * cil-coff.h: split MonoMSDOSHeader and add size info.
37662         * image.c: add some consistency checks.
37663         * metadata.c: fix row size computation: one programmer
37664         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
37665         add explanation for the locator routine.
37666         Fix decoding of size in method header.
37667         
37668 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
37669
37670         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
37671         (g_concat_dir_and_file): Bring g_concat_dir_and_file
37672         function from gnome-libs.  This uses the right path separator
37673         based on the OS, and also works around a bug in some systems where
37674         a double slash is not allowed. 
37675         (default_assembly_name_resolver): Use g_concat_dir_and_file
37676         (mono_assembly_open): ditto.
37677
37678 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
37679
37680         * metadata.c (mono_metadata_signature_equal): impl.
37681
37682         * *: void is now a realy MonoType (instead of using NULL)
37683         
37684         * metadata.c (do_mono_metadata_parse_type): use
37685         mono_metadata_parse_type to parse void value.
37686
37687 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
37688
37689         * metadata.c, metadata.h: in the signature and method header store
37690         only the space required for holding the loca vars and incoming arguments.
37691
37692 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
37693
37694         * metadata.c (do_mono_metadata_parse_type): treat void like any
37695         other type (instead of assigning NULL);
37696
37697 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
37698
37699         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
37700
37701 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
37702
37703         * image.c (do_mono_image_open): added a cache for arrays.
37704
37705 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
37706
37707         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
37708         decode a single column from a row in a metadata table and changes
37709         to take advantage of it in the typedef locator (gives a nice speed up).
37710         Store offset info for function params.
37711
37712 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
37713
37714         * image.h (MONO_IMAGE_IS_CORLIB): removed 
37715
37716 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
37717
37718         * assembly.c: how could mono_assembly_close () had ever worked?
37719         * metadata.c, metadata.h: provide offset info for local vars.
37720         Implement mono_type_size () to take care of alignment as well
37721         as size (it was mono_field_type_size in cli/class.c before).
37722
37723 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
37724
37725         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
37726
37727         * assembly.h (CORLIB_NAME): set to corlib.dll
37728
37729         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
37730
37731 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
37732
37733         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
37734         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
37735         tokentype.h: massive namespace cleanup.
37736
37737 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
37738
37739         * metadata.h, metadata.c: decode exception clauses when parsing method header.
37740
37741 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
37742
37743         * metadata.c (mono_metadata_free_type): added check for type !=
37744         NULL (void) before calling mono_metadata_free_type()
37745
37746 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
37747
37748         * metadata.h, row_indexes.h: added header with enumerations to use
37749         to index in the columns from tables in metadata and to decode coded
37750         tokens: we should start using this instead of embedding magic numbers
37751         all over the code.
37752
37753 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
37754
37755         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
37756         Move metadata_t info from cli_image_info_t to MonoImage, where
37757         it's easily accessible. Changed all the uses accordingly.
37758         Added the method and class caches to MonoImage.
37759         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
37760         and mono_metadata_decode_value () signature to be more consistent
37761         with the other parse functions (and simplify code). Taken advantage
37762         of zero-length array allocation with GCC. Removed reduntant (and
37763         wrong) MonoFieldType struct and use MonoParam instead. Changed
37764         mono_metadata_parse_field_type () to use common code for parsing.
37765         Added mono_metadata_typedef_from_field () and
37766         mono_metadata_typedef_from_method () to lookup a typedef index from a
37767         field or method token.
37768         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
37769
37770 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
37771
37772         * metadata.c (mono_metadata_parse_field_type): Implement. 
37773         (do_mono_metadata_parse_type): Split engine from
37774         mono_metadata_parse_type, so that we can create smaller structures
37775         for things that just have one pointer to the MonoType (look at
37776         the MonoFieldType)
37777
37778 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
37779
37780         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
37781         as Jan Gray found out, it is incorrect. 
37782
37783 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
37784
37785         * assembly.c: Implement asssembly loading.  This loads an image
37786         and loads all the referenced assemblies.  Come to think of it, we
37787         could always do lazy loading of the assemblies. 
37788
37789         * image.c (mono_image_open): Keep loaded images in a hashtable.
37790
37791         * image.h (MonoImage): Add reference count.
37792
37793 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
37794
37795         * assembly.c (mono_assembly_open): Keep track of the file name in
37796         case the assembly has no ASSEMBLY table.
37797
37798         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
37799         from get.c here.
37800
37801 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
37802
37803         * metadata.c, metadata.h: decode local vars in method header
37804         parse function. Change callers accordingly.
37805
37806 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
37807
37808         * metadata.h, cil-coff.h: protect against multiple inclusion.
37809         Added some new structures to hold information decoded from metadata:
37810         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
37811         and relevant decoding/free functions.
37812         * metadata.c: implement decoding functions. Add warning for out of bounds
37813         index in mono_metadata_locate(). Implement mono_get_method () to retreive
37814         all the info about a method signature and invocation. Remove check on
37815         uninitialized local var in parse_mh() and fix memory leak.
37816
37817 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
37818
37819         * metadata.h: More macros.
37820
37821         * tokentype.h: New file.
37822
37823 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
37824
37825         * assembly.c: added a consistency check and initialize
37826         some structures with g_new0().
37827         * metadata.c: fixed a couple more bugs in table size computation
37828         and add other checks for out-of bound access to metadata.
37829
37830 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
37831
37832         * metatada.c: fix bugs computing table sizes. Spew a
37833         warning when index in string heap is out of bounds.
37834
37835 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
37836
37837         * metadata.h: Add a couple of macros to manipulate tokens. 
37838
37839 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
37840
37841         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
37842         cli_section_tables).
37843
37844 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
37845
37846         * metadata.c (mono_metadata_user_string): New function, provides
37847         access to the UserString heap. 
37848
37849 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
37850
37851         * metadata.c: Add inline documentation.
37852
37853 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
37854
37855         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
37856         files. 
37857
37858 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
37859
37860         * typeattr.h: New file, TypeAttribute flags. 
37861
37862 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
37863
37864         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
37865         mono_assembly_ensure_section): Section loading code.
37866         (load_section_tables): Load the sections.
37867
37868         * mono/metadata/metadata.c (mono_metadata_locate_token,
37869         mono_metadata_locate): Functions to locate the information
37870         definition given a token or a table and an index.
37871         (mono_metadata_compute_table_bases): New.
37872         (compute_size): New function to compute the sizes of the various
37873         tables.
37874
37875         * mono/metadata/metadata.h: Finish listing the different index
37876         types. 
37877
37878         * mono/metadata/pedump.c: Improve to dump new information.
37879
37880 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
37881
37882         * mono/metadata/metadata.c: Entered all the tables matching
37883         Beta2. 
37884
37885         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2