2010-07-12 Rodrigo Kumpera <rkumpera@novell.com>
[mono.git] / mono / metadata / ChangeLog
1 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
2
3         * reflection.c (fix_partial_generic_class): Inflate the
4         generic instance parent in case it was changed after
5         MonoGenericClass was instantiated.
6
7         Fixes one of the issues from #389886.
8
9 2010-07-10  Mark Probst  <mark.probst@gmail.com>
10
11         * sgen-gray.c: Store only a pointer to one end of the gray queue.
12
13 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
14
15         * loader.c (mono_method_signature_checked): Release the domain
16         lock on failure.
17
18 2010-07-10  Mark Probst  <mark.probst@gmail.com>
19
20         * sgen-gc.c: Store the forwarding address in the first word of an
21         object, where the forwarding bit is stored.
22
23 2010-07-10  Mark Probst  <mark.probst@gmail.com>
24
25         * gc.c, gc-internal.h, sgen-gc.c, sgen-gc.h, sgen-os-mach.c: An
26         interface to register our Mach exception thread which will not be
27         suspended by stop-the-world.
28
29 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
30
31         * loader.c (mono_get_method_constrained): Properly unlock the
32         domain lock on failure. Use checked variant of
33         inflate_generic_signature.
34
35 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
36
37         * loader.c (mono_method_signature_checked): Use checked
38         variant of inflate_generic_signature.
39
40         Fixes #606353.
41
42 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
43
44         * metadata.c (mono_metadata_parse_type_internal): Don't use
45         cannonical types when a transient type was requested.
46
47         Fixes #608626.
48
49 2010-07-10  Mark Probst  <mark.probst@gmail.com>
50
51         * sgen-gray.c, sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c:
52         All functions that touch the gray queue directly or indirectly now
53         take it as an argument.
54
55 2010-07-10  Mark Probst  <mark.probst@gmail.com>
56
57         * sgen-gray.c, sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c:
58         Put the gray queue data into a struct and pass it around.
59
60 2010-07-09 Rodrigo Kumpera  <rkumpera@novell.com>
61
62         * class.c (mono_method_can_access_method_full): Handle type
63         accessibility with very deep nested types.
64
65         * class.c (mono_method_can_access_field_full): Ditto.
66
67         Fixes #619300.
68
69 2010-07-10  Mark Probst  <mark.probst@gmail.com>
70
71         * sgen-gc.c, sgen-los.c, sgen-major-copying.c, sgen-marksweep.c,
72         sgen-scan-object.h: Use a macro for rounding up sizes and
73         addresses to ALLOC_ALIGN.
74
75 2010-07-09 Gonzalo Paniagua Javier <gonzalo@novell.com>
76
77         * file-io.c: fix GetFileSystemEntries for patterns containing
78         directories.
79
80 2010-07-09  Mark Probst  <mark.probst@gmail.com>
81
82         * sgen-marksweep.c (major_finish_major_collection): Don't free
83         major heap blocks on 32 bit platforms because it can lead to
84         address space fragmentation.  We'll figure this out later.
85
86 2010-07-09  Mark Probst  <mark.probst@gmail.com>
87
88         * sgen-marksweep.c, sgen-gc.c, sgen-major-copying.c: Free major
89         heap blocks for mark&sweep eventually.
90
91 2010-07-09  Mark Probst  <mark.probst@gmail.com>
92
93         * sgen-protocol.c: Fix build when binary protocol is disabled.
94
95 2010-07-09  Mark Probst  <mark.probst@gmail.com>
96
97         * sgen-protocol.c, sgen-gc.c: Make binary protocol lock-freely
98         thread-safe.
99
100 2010-07-08 Neale Ferguson <neale@sinenomine.net>
101
102         * sgen-archdep.h: Add support for s390x
103         * domain.c: Use gsize so that 64-bit big endian systems produce 
104         bitmap.
105
106 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
107
108         * pedump.c (verify_image_file): Initialize the vtable as well.
109
110 2010-07-07  Geoff Norton  <gnorton@novell.com>
111
112         * sgen-gc.h:  Not every system has sys/signal.h.  Prefer the posix
113         header.
114
115 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
116
117         * assembly.c (mono_assembly_load_reference): Replace a g_warning
118         with a mono_trace calls. This makes compiling MD a lot less scary.
119
120 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
121
122         * verify.c (do_stobj): Improve error message.
123
124 2010-07-08  Mark Probst  <mark.probst@gmail.com>
125
126         * sgen-gc.c (OBJ_COMPLEX_ARR_FOREACH_PTR): Don't load the vtable
127         from the object because it might have pinned/forwarding bits set.
128
129 2010-07-06  Zoltan Varga  <vargaz@gmail.com>
130
131         * Makefile.am (sgen_sources): Add missing sgen files.
132
133 2010-06-07  Martin Baulig  <martin@ximian.com>
134
135         * mono-debug-debugger.c (mono_debugger_get_thread_abort_signal):
136         New helper function since mono_thread_get_abort_signal() is now
137         internal.
138
139 2010-06-07  Martin Baulig  <martin@ximian.com>
140
141         * mono-debug.h, debug-mono-symfile.h: Kill glib dependencies.
142
143 2010-07-02  Michael Hutchinson  <mhutchinson@novell.com>
144
145         * object-internals.h, object.h: Make mono_string_to_utf_8_checked 
146         public, as mono_string_to_utf_8 is deprecated.
147
148         * object.(c|h): Added mono_object_to_string, a public helper function 
149         that calls ToString on a MonoObject and returns a MonoString.
150
151         * object.c (mono_print_unhandled_exception): Use mono_object_to_string.
152
153 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
154
155         * filewatcher.h filewatcher.h decimal.c threads-types.h: Applied patch
156         from Elijah Taylor (elijahtaylor@google.com). Fix some definitions to
157         match their declarations and vice-versa.
158
159
160 Wed Jun 30 12:08:36 CEST 2010 Paolo Molaro <lupus@ximian.com>
161
162         * class-internals.h, domain-internals.h: mark functions that are
163         needed by the llvm module.
164
165 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
166
167         * assembly.c (framework_assemblies): Add 3.5 assemblies.
168
169         * domain-internals.h (MonoRuntimeInfo): Increase version_sets
170         by one to have room to remap 3.5 assemblies.
171
172         * domain.c (supported_runtimes): Add 3.5 remapping information.
173
174 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
175
176         * reflection.c (mono_image_create_token): Handle a
177         FieldBuilder from a different assembly.
178
179         Fixes #611836.
180
181 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
182
183         * verify.c (do_store_static_field): Improve error
184         message.
185
186 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
187
188         * assembly.c: Revert r159692 since it breaks loading 3.5
189         assemblies under 2.0.
190
191 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
192
193         * icall.c (ves_icall_Type_make_array_type): Raise a TLE if a
194         TypedByRef is passed.
195
196         * icall.c (ves_icall_Type_make_byref_type): Ditto.
197
198         * icall.c (ves_icall_Type_MakePointerType): Ditto.
199
200         Fixes #612780.
201
202 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
203
204         * assembly.c: Add a few more assemblies to the list of framework
205         assemblies.
206
207         Fixes #617714.
208
209 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
210
211         * class.c (mono_class_get_vtable_entry): Avoid a crash if mono_class_setup_vtable ()
212         fails.
213
214 2010-06-25  Mark Probst  <mark.probst@gmail.com>
215
216         * class.c (mono_class_inflate_generic_method_full_checked): Added
217         a comment regarding a hack in mini-trampolines.c.
218
219 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
220
221         * sgen-gc.c (mono_gc_wbarrier_value_copy_bitmap): Use SIZEOF_VOID_P instead of
222         sizeof(SIZEOF_VOID_P) which is 4.
223
224         * gc.c (mono_gc_init): Move the GC disabled check to *-gc.c.
225
226 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
227
228         * null-gc.c boehm-gc.c: Define the mono_gc_ pthread wrapper functions for these
229         GCs too.
230
231         * *-gc.c (mono_gc_wbarrier_value_copy_bitmap): Implement this for all GCs.
232
233         * sgen-gc.c (mono_gc_is_moving): New function returning whenever this GC can move
234         objects.
235
236         * *-gc.c (mono_gc_set_desktop_mode): New function setting up the GC to work in
237         desktop mode.
238
239 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
240
241         * *-gc.c (mono_gc_get_description): New function returning a human readable
242         description of the current GC.
243
244 2010-06-24  Miguel de Icaza  <miguel@novell.com>
245
246         * mono-hash.c: Moved here from mono/utils as this file is
247         GC-aware, and the utils directory is not.
248
249 2010-06-23  Miguel de Icaza  <miguel@novell.com>
250
251         * Makefile.am: Add support for building a sgen-aware versions of
252         the libraries: libmonoruntimesgen.la libmonoruntimesgen-static.la,
253         they share all the components of the default, but use a differen
254         set of CFLAGS to enable SGEN instead.
255
256         Put the BOEHM defines in the CFLAGS definition. 
257
258         * domain-internals.h (MonoJitInfo): this structure used to have
259         different sizes depending on the GC that was configured (Boehm vs
260         SGen).   I have removed this difference for the sake of avoiding
261         the complexity of dealing with the mono/arch directory requiring
262         GC-specific changes to their Makefiles.
263
264 2010-06-23  Mark Probst  <mark.probst@gmail.com>
265
266         * sgen-gc.c, sgen-los.c, sgen-marksweep.c: Fix warnings.
267
268 2010-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
269
270         * metadata.c (mono_metadata_type_hash): Don't hash
271         the type kind for dynamic types since it can change.
272
273 2010-06-22 Geoff Norton  <gnorton@novell.com>
274
275         * sgen-os-mach.c: We cannot call malloc from the gc, so we need to use
276         alloca instead to prevent a deadlock.
277
278 2010-06-22  Geoff Norton  <gnorton@novell.com>
279
280         * domain.c: Allow gettings the tls key, since we need it for
281         cross thread tls poking in sgen-mach
282         * sgen-gc.(c|h), gc-internal.h: Rework sgen into having some functions
283         in external files for platform specific STW support.
284         * sgen-os-mach.c: Add a new mach kernel backend implementation of STW.
285         * sgen-os-posix.c: Move the existing posix signal based STW here.
286
287 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
288
289         * marshal.c (mono_array_to_lparray): Allow MONO_TYPE_PTR. Fixes #615952.
290
291 2010-06-21 Rodrigo Kumpera  <rkumpera@novell.com>
292
293         * object-internals.h: Map new PropertyBuilder fields.
294
295         * reflection.c (property_encode_signature): Emit an instance
296         signature if property's callconv is hasthis.
297
298         * appdomain.c: Bump corlib version.
299
300 2010-06-20  Jb Evain  <jbevain@novell.com>
301
302         * metadata-verify.c: do not consider the assembly invalid if it
303         doesn't have a #Blob stream as resource assemblies don't
304         necessarily have one.
305
306 2010-06-17  Geoff Norton  <gnorton@novell.com>
307
308         * sgen-archdep.h: sgen support for arm linux and darwin.
309
310 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
311
312         * loader.c (mono_method_get_header): Avoid a crash if the declaring method
313         has a faulty header.
314
315 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
316
317         * sgen-gc.c (mono_gc_wbarrier_value_copy_bitmap): Work in a similar
318         way to mono_gc_wbarrier_value_copy but takes a bitmap that
319         indicates which slots need a write barrier.
320
321 2010-06-14  Jonathan Pryor <jpryor@novell.com>
322
323         * Makefile.am (EXTRA_DIST): Add runtime.h.
324
325 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
326
327         * object.c (build_imt_slots): Don't crash if callbacks.get_imt_trampoline is not set.
328
329 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
330
331         * object.c (mono_method_add_generic_virtual_invocation): Fix the computation of the
332         IMT slot which is passed to callbacks.get_imt_trampoline.
333
334 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
335
336         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
337         imt trampoline per imt slot when using LLVM.
338
339 2010-06-10  Jonathan Pryor <jpryor@novell.com>
340
341         * object.c (mono_runtime_run_main): Move fire_process_exit_event() into
342           runtime.c:mono_runtime_shutdown().
343         * runtime.c: Added; adds mono_runtime_shutdown(), which invokes the
344           AppDomain.ProcessExit event in all AppDomains.
345
346 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
347
348         * marshal.c (mono_marshal_get_runtime_invoke): Don't set *exc to NULL, it is now
349         done by the caller.
350
351 2010-06-05  Mark Probst  <mark.probst@gmail.com>
352
353         * sgen-los.c: Keep bitmaps on chunk usage in LOS sections to speed
354         up freeing.
355
356 2010-06-05  Mark Probst  <mark.probst@gmail.com>
357
358         * sgen-gc.c, sgen-los.c: New LOS allocator that allocates large
359         segments of memory at once, to reduce the number of mmap/munmap
360         calls.
361
362 2010-06-05  Mark Probst  <mark.probst@gmail.com>
363
364         * sgen-gc.c, sgen-protocol.c, sgen-protocol.h: Protocol degraded
365         allocations and distinguish between normal, degraded and pinned
366         allocations.
367
368 2010-06-05  Mark Probst  <mark.probst@gmail.com>
369
370         * sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c: Make degraded
371         allocations count toward major collections and trigger major
372         collections from degraded allocations if appropriate.
373
374 2010-06-05  Mark Probst  <mark.probst@gmail.com>
375
376         * sgen-marksweep.c (ms_get_empty_block): Update heap boundaries.
377
378 2010-06-05  Mark Probst  <mark.probst@gmail.com>
379
380         * sgen-gc.c: Enable mark&sweep again.
381
382 2010-06-05  Mark Probst  <mark.probst@gmail.com>
383
384         * sgen-gc.c: Increase the maximum small object size to 8000 bytes.
385
386 2010-06-05  Mark Probst  <mark.probst@gmail.com>
387
388         * sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c: Have only one
389         major heap allowance for minor collections, instead of two
390         separate ones for small and large objects.  This reduces the
391         number of major collections.
392
393 2010-06-04  Marek Habersack  <mhabersack@novell.com>
394
395         * icall.c (ves_icall_MonoType_GetEvent): be case insensitive is
396         the BFLAGS_IgnoreCase is raised
397
398 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
399
400         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Rewrite this so it returns
401         all information in a single structure. Return information about scopes as well.
402
403         * mono-debug.c (mono_debug_lookup_locals): Ditto.
404
405 2010-06-02  Geoff Norton  <gnorton@novell.com>
406
407         * appdomain.c: If we are running with IOMAP we might
408         have been provided a string that isn't case-aware for our file-
409         system, so we need to use io-portability to check if the file 
410         exists, rather than a simple glib test.
411
412         Fixes #608849
413
414 2010-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
415
416         * verify.c (verify_generic_parameters): Verify if
417         there are not loops in constraints.
418
419 2010-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
420
421         * verify.c (is_compatible_boxed_valuetype): Constaints
422         must be recursively checked if one generic argument
423         has a constraint on another.
424
425         Fixes #610625.
426
427 2010-05-31  Miguel de Icaza  <miguel@novell.com>
428
429         * console-unix.c (terminal_get_dimensions): Fix my previous
430         botched commit and return the actual value obtained from the ioctl.
431
432 2010-05-29  Mark Probst  <mark.probst@gmail.com>
433
434         * sgen-gc.c: Always use DESC_TYPE_RUN_LENGTH for objects without
435         references so that we don't have to do the cache-cold fetch of the
436         class in copy_object_no_checks().
437
438 2010-05-29  Robert Jordan  <robertj@gmx.net>
439
440         * marshal.c (mono_marshal_asany): marshal LPWSTRs using
441         mono_marshal_string_to_utf16_copy () to avoid memory allocation
442         mismatches under Windows. Fixes pinvoke2:test_0_asany.
443
444 2010-05-28  Mark Probst  <mark.probst@gmail.com>
445
446         * sgen-gc.c: Change default nursery size to 4MB, because it
447         improves performance on many applications and benchmarks.
448
449 2010-05-28  Mark Probst  <mark.probst@gmail.com>
450
451         * sgen-gc.c, sgen-scan-object.h: Value types in arrays are not
452         always aligned to ALLOC_ALIGN.  To handle this, shift the size in
453         the GC descriptor by one bit, and don't encode the size for value
454         types not containing references.  Also get rid of
455         DESC_TYPE_STRING.
456
457 2010-05-28  Mark Probst  <mark.probst@gmail.com>
458
459         * sgen-gc.c: Don't depend on the size encoded in a GC descriptor
460         other than for remset processing.
461
462 2010-05-28  Mark Probst  <mark.probst@gmail.com>
463
464         * sgen-gc.c: More and better remset consistency checks.
465
466 2010-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
467
468         * sgen-gc.c: Add a note about the int[] trick to avoid some
469         memset.
470
471 2010-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
472
473         * sgen-gc.c (sort_addresses): Use heap sort since it has better
474         performance.
475
476         This helps programs with lots of threads or thread with big stacks
477         since the bottleneck the pin queue can get quite big.
478
479 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
480
481         * sgen-gc.c (search_fragment_for_size): Move fragment setup into
482         a separate function called setup_fragment.
483
484         * sgen-gc.c (search_fragment_for_size_range): Variant of
485         search_fragment_for_size that does search for a secondary smaller
486         size.
487
488         * sgen-gc.c (mono_gc_alloc_obj_nolock): Use search_fragment_for_size_range
489         for tlab allocation so small fragments are used.
490
491         This patch uses small fragments for tlab allocation when possible in order
492         to improve nursery utilization. With a fixed size tlab this patch is not very
493         usefull but once size gets dynamically adjusted, this will be invaluable.
494
495         Performance under pystone 500k is unchanged. Nursery utilization improves by
496         3.5% and 18 more fragments are used per minor GC.
497
498         Performance under modified binary-tree is unchanged. Nursery utilization
499         improves by 0.5% and 3 more fragments are used per minor GC.
500
501         These numbers make sense since as more pinning happens, more fragments are
502         created and so are the chances of having a bunch of small ones.
503
504 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
505         * sgen-gc.c (mono_gc_alloc_obj_nolock): Avoid wasting space     from
506         the current fragment when allocating a TLAB.
507
508         Reduces number of pystone 500k minor collections by 7%.
509
510 2010-05-25  Martin Baulig  <martin@ximian.com>
511
512         Applying a patch from Lucas Meijer <lucas@lucasmeijer.com>.
513
514         * debug-mono-symfile.c: Release memory from symfiles that were
515         loaded from memory.
516
517 2010-05-24  Zoltan Varga  <vargaz@gmail.com>
518
519         * marshal.c (mono_marshal_free_dynamic_wrappers): Avoid an assert when this is called
520         during shutdown.
521
522 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
523
524         * marshal.c (mono_marshal_get_runtime_invoke): Simplify the code computing the
525         target class and remove some dead code.
526
527 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
528
529         * metadata.c: Add a 'transient' argument to the MonoType creation functions, so
530         the MonoTypes inside method headers can be freed when the header is freed.
531
532 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
533
534         * threadpool.c: Fix the DISABLE_SOCKETS build.
535
536 2010-05-19 Martin Baulig  <martin@novell.com>
537
538         Fix #604911.
539
540         * threads.c (wait_for_tids_or_state_change): Use an
541         alertable WaitForMultipleObjectsEx().
542         (wait_for_tids): Likewise.
543
544 2010-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
545
546         * marshal.c (mono_marshal_init): Register mono_gchandle_get_target
547         icall.
548
549         * marshal.c (mono_delegate_to_ftnptr): Use a gchandle instead of
550         gc tracked memory.
551
552         * marshal.c (mono_marshal_emit_managed_wrapper): Retrieve the first
553         argument from a gchandle.
554
555         * marshal.c: Get rid of the delegate_target_locations hash table.
556
557         Fixes #605295.
558
559 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
560
561         * sgen-gc.c: Use _fast variants for string and array length.
562
563 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
564
565         * sgen-gc.c: Fix counters to be 64 bits.
566
567         * sgen-gc.c (dump_heap): Fix formating strings.
568
569 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
570
571         * sgen-gc.c (global_remset_location_was_not_added): New
572         function that implements a 2 element LRU cache for just
573         added remsets. It is used to avoid adding duplicate ones.
574
575         * sgen-gc.c (add_to_global_remset): Check cache before
576         adding new entry.
577
578         * sgen-gc.c (scan_from_remsets): Don't process global remsets
579         that fail the cache test.
580
581         * sgen-gc.c (scan_from_remsets): Simplify the global remset
582         loop removing one condtion that is not possible.
583
584         A 2 element LRU cache was chosen by profiling IronPython 2.6
585         pytones with 1M passes and corlib compilation.
586
587         For the ipy test duplication was originally 940.92, measured
588         by "Store remsets" divided by "Unique store remsets".
589
590         With a 2-element LRU, duplication went to 1.007. Without the
591         check in scan_from_remsets 1.438.
592
593         With a 16-elements LRU, duplication reduction was negligibe.
594         A single element cache was basically of no use.
595
596         With corlib compilation duplication went from  1.4 to 1.02.
597
598         Performance results is a 20% time decrease for ipy and 2%
599         with corlib.
600 2010-05-16  Zoltan Varga  <vargaz@gmail.com>
601
602         * mono-debug.c (mono_debug_cleanup): Fix a crash in the previous change.
603
604 2010-05-15  Geoff Norton  <gnorton@novell.com>
605
606         * mono-debug.c: Fix a leak of the global table on shutdown.
607
608 2010-05-15  Geoff Norton  <gnorton@novell.com>
609
610         * debug-mono-symfile.(c|h): Add mono_debug_symfile_free_location
611         to clean up MonoDebugSourceLocation's.
612
613 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
614
615         * class.c (mono_class_create_from_typedef): Fail a class
616         if there is a loop with its parent.
617
618         Fixes #598239.
619
620 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
621
622         * loader.c (mono_loader_set_error_type_load): Convert
623         a g_warninig to mono_trace_warning.
624
625 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
626
627         * class.c (mono_class_get_full): Release strings on failure
628         to avoid leaking them.
629
630 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
631
632         * class.c (mono_class_create_from_typedef): Only return
633         the class if no exceptions were detected.
634
635         * class.c (mono_class_create_from_typedef): Don't remove
636         broken classes from class_cache. Just set failure and
637         bail out.
638
639         This fixes a memory a memory leak where resolving the same
640         broken class multiple times resulted in a memory leak.
641
642         The right behavior would be to actually return the class
643         a let the caller figure it out.
644
645 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
646
647         * mono-ptr-array.h: Add mono_ptr_array_sort.
648
649         * reflection.c (mono_image_build_metadata): Replace that ugly
650         qsort call with mono_ptr_array_sort.
651
652 2010-05-13  Mark Probst  <mark.probst@gmail.com>
653
654         * sgen-gc.c: Switch to the copying major collector, because
655         Mark&Sweep is still buggy.
656
657 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
658
659         * reflection.c (mono_image_build_metadata): Don't put managed
660         references on non-tracked memory.
661
662 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
663
664         * sgen-archdep.h (ARCH_COPY_SIGCTX_REGS): Fix this for amd64.
665
666 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
667
668         * icall.c: Switch to mono-ptr-array.h.
669
670 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
671
672         * Makefile.am: Add mono-ptr-array.h.
673
674         * mono-ptr-array.h: New header that implements
675         a GC tracked equivalent of g_ptr_array. 
676
677 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
678
679         * icall.c (ves_icall_Type_GetInterfaces): Rewrite this
680         method to avoid initializing the class.
681
682         Fixes #605115.
683
684 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
685
686         * icall.c (ves_icall_System_MonoType_getFullName): It
687         doesn't require to init the class.
688
689 2010-05-11  Miguel de Icaza  <miguel@novell.com>
690
691         * console-unix.c: Signal handlers now save and restore errno.   We
692         have never had a bug report about this, ioctl does change errno. 
693
694         Hide the unused method.   
695
696         Remove internal declarations from public headers.
697
698         Document what the signal handler is doing
699
700 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
701
702         * sgen-gc.c (clear_unreachable_ephemerons): Clear
703         unreachable keys with a tombstone.
704
705         * sgen-gc.c (mark_ephemerons_in_range): Ignore
706         tombstone keys.
707
708 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
709
710         * icall-def.h:
711         * gc-internals.h:
712         * gc.c: New GC:get_ephemeron_tombstone.
713
714 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
715
716         * appdomain.c (create_exceptions): Rename to
717         create_domain_objects. Create the ephemeron tombstone object.
718
719         * domains-internals.h (MonoDomain): Add new field for the
720         ephemeron tombstone.
721
722         * domain.c (mono_domain_free): Set ephemeron_tombstone to
723         NULL.
724
725 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
726
727         * sgen-gc.c (mono_gc_clear_domain): Both ephemerons
728         and dislinks must be processed before LOS since they
729         could end up with pointers to memory returned to the
730         OS.
731
732 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
733
734         * class.c (mono_class_alloc): New helper function to centralize memory allocation
735         for classes, allocates either from the image mempool or from the heap.
736
737         * class.c: Use mono_class_alloc to allocate memory owned by classes.
738
739         * metadata.c (free_generic_class_dependents): Free more items belonging to
740         generic classes.
741
742 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
743
744         * reflection.c (mono_reflection_method_get_handle): Handle MonoGenericMethod
745         as well. Fixes #604054.
746
747 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
748
749         * metadata-verify.c: MS doesn't mind duplicates in the
750         typeref table. Move it to full verification.
751
752         Fixes #600508.
753
754 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
755
756         * image.c (do_mono_image_load): Report verification
757         errors when loading an image fails.
758
759 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
760
761         * reflection.c (mono_type_get_object): Remove chunk of code
762         no longer in use.
763
764 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
765
766         * icall-def.h
767         * icall.c: Delete some unused icalls.
768
769 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
770
771         * appdomain.c (mono_domain_has_type_resolve): Check for
772         NULL domain objects to make pedump happy.
773
774         * object.c (mono_field_get_value): Assert on NULL object.
775         It's the caller resposibility to check for this.
776
777         * object.c (mono_field_get_value_object): Ditto.
778
779         Fixes #601384.
780
781 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
782
783         * icall.c (ves_icall_type_is_subtype_of): Non iface subtype
784         checks can avoid doing a mono_class_init.
785
786         * icall.c: Remove mono_class_init from a bunch of icalls that
787         don't need it.
788
789         Hopefully we're now lazy enough to fix most victims of #601431.
790
791 2010-05-07  Mark Probst  <mark.probst@gmail.com>
792
793         * sgen-gc.c: Remove REMSET_ROOT_LOCATION.
794
795 2010-05-07  Mark Probst  <mark.probst@gmail.com>
796
797         * sgen-gc.c: Remove unnecessary checks in domain clearing code.
798
799 2010-05-07  Marek Habersack  <mhabersack@novell.com>
800
801         * culture-info-tables.h: updated to include en-TT culture. Fixes
802         bug #594035
803
804 2010-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
805
806         Move mono_class_init from mono_type_get_object to icalls.
807         This causes massive memory savings for Assembly::GetTypes () and
808         make it fail a lot less due to missing dependencies.
809
810         This is a conservative, naive change as it doesn't remove some
811         mono_class_init from places that might not need them. Carefull
812         review of those should follow.
813
814         * reflection.c (mono_type_get_object): Don't mono_class_init the
815         returning type.
816
817         * reflection.c:
818         * cominterop.c:
819         * icall.c:
820         * marshal.c: Call mono_class_init in functions receiving a MonoType
821         object.
822
823         First step into fixing #601431.
824
825 2010-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
826
827         * gc-internal.h: Add new functions required for ephemeron support.
828
829         * gc.c: Implement ves_icall_System_GC_register_ephemeron_array.
830
831         * icall-def.h: Add GC::register_ephemeron_array.
832
833         * object.c (compute_class_bitmap): sys.rt.cs.Ephemeronis an opaque type
834         under sgen. Its fields must not be marked.
835
836         * sgen-gc.c (mono_gc_clear_domain): Call cleanup function for ephemerons.
837
838         * sgen-gc.c (finish_gray_stack): Mark all reachable ephemerons before
839         handling finalizable objects. Clean dead ones after all finalizable
840         handling.
841
842         * sgen-gc.c (dump_heap): Add new kind of internal memory.
843
844         * sgen-gc.c (null_ephemerons_for_domain): Remove from the list ephemeron
845         arrays from the dead domain.
846
847         * sgen-gc.c (clear_unreachable_ephemerons): Clear dead ephemerons entries.
848
849         * sgen-gc.c (mark_ephemerons_in_range): Mark/Copy all ephemeron values
850         whose keys are reachable.
851
852         * sgen-gc.c (mono_gc_ephemeron_array_add): Register the array into the
853         list of live ephemeron arrays.
854
855 2010-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
856
857         * class.c (mono_class_layout_fields): Don't perform alignment
858         if align is zero.
859
860         * class.c (mono_class_layout_fields): Init field related information
861         to sane defaults.
862
863 2010-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
864
865         * verify.c (mono_verifier_verify_class): Verify the constraint
866         of generic type definitions.
867
868 2010-05-04  Mark Probst  <mark.probst@gmail.com>
869
870         * sgen-marksweep.c: Simplify free list maintenance in sweep.
871
872 2010-05-02  Mark Probst  <mark.probst@gmail.com>
873
874         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Unify
875         major_do_collection() across the two major collectors.
876
877 2010-05-02  Mark Probst  <mark.probst@gmail.com>
878
879         * sgen-gc.c: Add heavy statistics counter for re-added global
880         remsets.
881
882 2010-05-02  Mark Probst  <mark.probst@gmail.com>
883
884         * sgen-marksweep.c, sgen-gc.c: Use one mark bit per ALLOC_ALIGN to
885         get rid of a division in critical code.
886
887 2010-04-29  Mark Probst  <mark.probst@gmail.com>
888
889         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Have separate
890         blocks for objects without references in mark&sweep, to improve
891         performance.
892
893 2010-04-28  Mark Probst  <mark.probst@gmail.com>
894
895         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Bring heavy
896         statistics up-to-date.
897
898 2010-04-27  Mark Probst  <mark.probst@gmail.com>
899
900         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Support
901         heap-dump for mark&sweep.
902
903 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
904
905         * loader.c (mono_method_get_header): Move the is_inflated case before the
906         wrapper case, as a method can be both.
907
908 2010-04-27  Mark Probst  <mark.probst@gmail.com>
909
910         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Don't do a
911         separate pass to scan pinned and large object but use the gray
912         queue like for regular objects.
913
914 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
915
916         * boehm-gc.c: Applied patch from Robert Nagy (robert@openbsd.org). Include
917         string.h for memmove.
918
919         socket-io.c: Applied patch from Robert Nagy (robert@openbsd.org).
920         ipaddress_to_struct_in6_addr() is only needed when
921         defined(HAVE_STRUCT_IP_MREQN) || defined(HAVE_STRUCT_IP_MREQ).
922
923 2010-04-25  Mark Probst  <mark.probst@gmail.com>
924
925         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Properly
926         separate copy_object functions for major vs nursery.  Allows us to
927         get rid of a few checks and the start and end parameters for many
928         functions.
929
930 2010-04-25  Mark Probst  <mark.probst@gmail.com>
931
932         * sgen-marksweep.c, sgen-gc.c, sgen-major-copying.c,
933         sgen-protocol.c, sgen-protocol.h, Makefile.am: Major Mark&Sweep
934         collector.
935
936 2010-04-25  Zoltan Varga  <vargaz@gmail.com>
937
938         * class.c (mono_class_create_from_typedef): Initialize class->nested_in after
939         calling setup_mono_type () since the nested parent could recursively reference
940         the nested class using generic constraints. Fixes #599469.
941
942 2010-04-24  Mark Probst  <mark.probst@gmail.com>
943
944         * sgen-gc.c, sgen-pinning.c, sgen-major-copying.c: Major collector
945         abstraction.
946
947 2010-04-24  Mark Probst  <mark.probst@gmail.com>
948
949         * sgen-gc.c: Remove more unneeded code.
950
951 2010-04-24  Mark Probst  <mark.probst@gmail.com>
952
953         * sgen-gc.c: Disable managed allocator and wbarrier when the
954         binary protocol is enabled.
955
956 2010-04-24  Mark Probst  <mark.probst@gmail.com>
957
958         * sgen-gc.c: Put nursery-fragment-cleaning into its own function.
959
960 2010-04-24  Mark Probst  <mark.probst@gmail.com>
961
962         * sgen-gc.c: Remove a few commented out and unneeded bits.
963
964 2010-04-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
965
966         * threadpool.c: patch from Robert Nagy that fixes a nullref and
967         uses mono_sem_wait instead of mono_sem_timedwait for openbsd.
968
969 2010-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
970
971         * icall.c (ves_icall_type_is_assignable_from): Properly handle byref
972         types.
973
974         Fixes #331126
975
976 2010-04-21  Mark Probst  <mark.probst@gmail.com>
977
978         * sgen-gc.c: Turn off semi-precise stack mark.
979
980 2010-04-20  Sebastien Pouliot  <sebastien@ximian.com>
981
982         * reflection.c (mono_custom_attrs_from_index): Use right function
983         to free 'list' (i.e. g_list_free) if the verifier fails.
984
985 2010-04-19 Rodrigo Kumpera  <rkumpera@novell.com>
986
987                 * verify.c: Handle the case where mono_type_get_underlying_type_any
988                 returns NULL. Remove duplicated code between MONO_TYPE_GENERICINST
989                 and MONO_TYPE_VALUETYPE in those case.
990
991                 Based on a slightly modified patch by Sebastien Pouliot  <sebastien@ximian.com>
992
993                 Hopefully Fixes #564253.
994
995 2010-04-19 Gonzalo Paniagua Javier <gonzalo@novell.com>
996
997         * domain-internals.h: made threadpool_jobs volatile.
998         * mono-wsq.c: add an assert to verify that the threadpool cleaned up
999         all local jobs.
1000         * threadpool.c:
1001                 -When two threads try to initialize the socket IO pool,
1002                 the second one waits until the intialization is finished
1003                 instead of continuing right away.
1004                 -Add checks for domain unload: no items added in this case.
1005                 -Only measure the time every 10 elements added to the queue.
1006                 This is an experiment since linux x86 gettimeofday() sucks.
1007                 -Create new thread if there are none waiting for work items.
1008                 -There was a missing decrement of the busy threads.
1009                 -Make sure the local queue is cleaned up before exiting the
1010                 thread when the program ends.
1011
1012 2010-04-19 Rodrigo Kumpera  <rkumpera@novell.com>
1013
1014         * reflection.c (mono_type_get_object): Normalize generics types
1015         as to how managed code expect them to be. A generic instance over
1016         the GTD arguments must have the same mirror as the GTD itself.
1017
1018         Fixes #473289.
1019
1020 2010-04-19  Zoltan Varga  <vargaz@gmail.com>
1021
1022         * locales.c: Implement support for DISABLE_NORMALIZATION.
1023
1024 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1025
1026         * marshal.c (mono_marshal_get_native_func_wrapper): Set the marshal info to NULL,
1027         since it is not a MonoMethod.
1028
1029 2010-04-16  Sebastien Pouliot  <sebastien@ximian.com>
1030
1031         * icall-def.h: Add get_RequiresElevatedPermissions icall to
1032         System.Security.SecurityManager - used only by Moonlight
1033         * security-core-clr.c|h: Add Elevated Trust/Permission support
1034         for CoreCLR / Moonlight
1035
1036 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1037
1038         * boehm-gc.c (mono_gc_base_init): Applied patch from Robert Nagy
1039         (robert@openbsd.org). Fix GC_stackbottom calculation on OpenBSD.
1040
1041 2010-04-16  Marek Habersack  <mhabersack@novell.com>
1042
1043         * mono-perfcounters.c: added code for the "Mono
1044         Memory/Total Physical Memory" performance counter.
1045
1046         * mono-perfcounters-def.h: added definition of the "Mono
1047         Memory/Total Physical Memory" performance counter.
1048
1049 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1050
1051         * class.c (mono_class_get_method_by_index): Return NULL
1052         on type load failures.
1053
1054 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1055
1056         * class.c (mono_class_from_typeref): Check if the supplied
1057         image has an assembly bound to it.
1058
1059         Fixes #567884.
1060
1061 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1062
1063         * loader.c (mono_method_get_signature_full): Use new function
1064         inflate_generic_signature_checked to check for errors.
1065
1066         Fixes #560839.
1067
1068 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1069
1070         * loader.c (inflate_generic_signature): Add _checked variant
1071         and move this function to use it.
1072
1073 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1074
1075         * class.c (mono_class_setup_vtable_general): Use error checking
1076         version of mono_class_inflate_generic_method_full.
1077
1078         Fixes #596975.
1079
1080 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1081
1082         * class.c (mono_class_inflate_generic_type_no_copy): Do proper
1083         error handling passing MonoError around.
1084
1085         Fixes #560336.
1086
1087 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1088
1089         * socket-io.c: make GetHostByName ("") work on windows.
1090         Fixes bug #456723.
1091
1092 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1093
1094         * object-internals.h:
1095         * threads.c: use a spin lock when accesing the per-thread appdomain
1096         list.
1097
1098 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1099
1100         * threads.c: no need to take the threads lock in push/pop appdomain.
1101
1102 2010-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1103
1104         * reflection.c (_mono_reflection_parse_type): MS supports
1105         non-assembly-qualified types in a generic type parameter list
1106         when enclosed in '[]' (which signals that they should be a fqn).
1107
1108         This breaks ECMA specs for how type names are encoded in cattr
1109         blobs but F# does it.
1110
1111         Fixes #576342.
1112
1113 2010-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1114
1115         * icall.c (ves_icall_InternalInvoke): Check if the vtable is sane
1116         for instance methods/ctors.
1117
1118         Fixes #422113.
1119
1120 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1121
1122         * reflection.c: Use the new verifier support for checking
1123         custom attributes.
1124
1125         Fixes #595306.
1126
1127 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1128
1129         * metadata-verify.c: Implement structural verification
1130         of custom attributes. This check requires access to the
1131         loader since to resolve the size of an enum we have to
1132         look it up.
1133         We don't check if named argumenments are encoded in a
1134         compatible fashion to their underlying field/prop.
1135         Maybe we should?
1136
1137         * verify-internals.h: Add two new cattr verification API.
1138
1139 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1140
1141         * metadata-verify.c (decode_signature_header): Fix signature.
1142
1143 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1144
1145         * verify.c (mono_verifier_is_enabled_for_method): Handle
1146         assembly less images.
1147
1148         * verify.c (mono_verifier_is_class_full_trust): Ditto.
1149
1150 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1151
1152         * loader.c (mono_method_signature_checked): Properly
1153         init MonoError.
1154
1155         * loader.c (mono_method_signature): It's the calee
1156         resposibility to init the error object.
1157
1158 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1159
1160         * metadata-verify.c (decode_signature_header): Do proper
1161         overflow checking.
1162
1163 Tue Apr 13 12:36:29 CEST 2010 Paolo Molaro <lupus@ximian.com>
1164
1165         * reflection.c: maintain the invariants required by
1166         mono_class_layout_fields() also in typebuilder_setup_fields ().
1167
1168 2010-04-11  Sebastien Pouliot  <sebastien@ximian.com>
1169
1170         * security-core-clr.c: Call mono_class_setup_methods in 
1171         get_default_ctor before checking klass->methods. Fix typo in
1172         comment
1173
1174 2010-04-10  Jb Evain  <jbevain@novell.com>
1175
1176         * domain.c (supported_runtimes): remove .net 4.0 beta 2 and
1177         add .net 4.0 RTM version.
1178
1179 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1180
1181         * reflection.c (resolve_object): Properly inflate generic
1182         methods when a context is supplied.
1183
1184         Fixes #591226.
1185
1186 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1187
1188         * verify.c (mono_method_verify): A switch op don't empty
1189         the stack for the next one. Fixes a bug when running fsi
1190         under --verify-all.
1191
1192 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1193
1194         * metadata-verify.c (is_valid_standalonesig_blob): Accept
1195         fields as valid standalone sig too. F# does generate them.
1196
1197         * metadata-verify.c (verify_typedef_table_full): Ignore
1198         what <module> extends.
1199
1200 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1201
1202         * verify.c (do_invoke_method): It's ok to do use call with
1203         virtual, non-final methods if their class is sealed.
1204
1205 2010-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1206
1207         * icall.c (ves_icall_MonoField_GetValueInternal): This function
1208         is a near identical copy of mono_field_get_value_object. So simply
1209         call it.
1210
1211         * object.c (mono_field_get_value_object): Handle literal fields
1212         on open generic classes.
1213
1214         Fixes #594942.
1215
1216 2010-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1217
1218         * reflection.c (mono_reflection_create_runtime_class): Setup
1219         parent/supertype information again since it can be changed
1220         without notice.
1221
1222 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1223
1224         * verify.c (verify_type_compatibility_full): Properly handle
1225         stores between arrays of primitives.
1226
1227         Fixes the verifier side of #555950.
1228
1229 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1230
1231         class.c (mono_bounded_array_class_get): Properly init
1232         cast_class to take the fact that uint[] and int[] can be
1233         casted between each other.
1234
1235         Fixes #555950.
1236
1237 2010-04-07  Geoff Norton  <gnorton@novell.com>
1238
1239         * domain.c: Avoid a deadlock on osx.  Fixes #565765
1240
1241 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1242
1243         * icall.c (ves_icall_System_Enum_ToObject): Avoid a crash for unfinished type
1244         builders. Fixes #594464.
1245
1246 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1247
1248         * icall.c (ves_icall_System_Environment_Exit): Shutdown the threadpool before
1249         waiting for all threads to suspend, as those threads can't be suspended.
1250
1251 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1252
1253         * threads.c (mono_thread_suspend_all_other_threads): Call ensure_synch_cs_set ()
1254         to avoid crashes on newly created threads.
1255
1256 2010-04-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
1257
1258         * file-io.c: reset the MonoIOStat structure in case of error.
1259         Fixes bug #582667.
1260
1261 2010-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
1262
1263         * class.c (print_implemented_interfaces): Print proper type name.
1264
1265         * class.c (mono_class_setup_vtable): Don't try that hard to produce
1266         the override map for generic instances since it later ignored.
1267
1268         * class.c (mono_class_implement_interface_slow): Don't break for
1269         dynamic generic instances.
1270
1271         * object.c (mono_runtime_invoke_array): Add an assert for allocation.
1272
1273         * reflection.c (mono_reflection_method_get_handle): New method that
1274         resolves a method handle.
1275
1276         * reflection.c (mono_reflection_get_dynamic_overrides): Handle the
1277         case when we override methods from a dynamic generic instance interface.
1278
1279         Fixes #575941.
1280
1281 2010-04-05 Gonzalo Paniagua Javier <gonzalo@novell.com>
1282
1283         * threadpool.c: don't attempt to close the pipe when it has not been
1284         created.
1285
1286 2010-04-05 Gonzalo Paniagua Javier <gonzalo@novell.com>
1287
1288         * threadpool.c: if there are no waiting threads, try to start a new
1289         one. This fixes the not-so-random hangs in System.ServiceModel tests.
1290         No need to use InterlockedCompareExchange to read volatile variables.
1291
1292 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1293
1294         * verify.c (verify_type_compatibility_full): Fail mixed valuetype
1295         and reference types that point to the same class.
1296
1297         Fixes #565598.
1298
1299 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1300
1301         * verify.c (verify_stack_type_compatibility_full): Ignore constraints
1302         when verifying compatibility between a generic instance and a generic
1303         parameter.
1304
1305         * verify.c (check_is_valid_type_for_field_ops): Improve error message.
1306
1307         * verify.c (stack_slot_stack_type_full_name): Improve verification type
1308         name.
1309
1310         Fixes #587849.
1311
1312 2010-04-04  Mark Probst  <mark.probst@gmail.com>
1313
1314         * sgen-gc.c: Remove superfluous scanning of alloc-pinned objects.
1315
1316 2010-04-04  Zoltan Varga  <vargaz@gmail.com>
1317
1318         * threads.c Applied some openbsd changes from Robert Nagy <robert@openbsd.org>.
1319
1320 2010-04-03  Marek Habersack  <mhabersack@novell.com>
1321
1322         * process.c: when cross-compiling with MinGW, force GetProcessId
1323         lookup using GetProcAddress.
1324
1325 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1326
1327         * sgen-gc.c: parse_environment_string_extract_number() must be
1328         static.
1329
1330 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1331
1332         * sgen-gc.c, sgen-gray.c: Macros for gray_object_enqueue() and
1333         gray_object_dequeue(), to make sure they're inlined.
1334
1335 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1336
1337         * sgen-gc.c, sgen-gray.c: Fix a few debug levels, put a few
1338         asserts in inner loops into DEBUG and lower MAX_DEBUG_LEVEL.
1339
1340 2010-04-02  Jb Evain  <jbevain@novell.com>
1341
1342         * exception.c: remove dead code.
1343
1344 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1345
1346         * *-gc.c: Fix the signature of mono_gc_get_used/heap_size () to be consistent
1347         with mono-gc.h.
1348
1349 2010-04-01  Sanjoy Das <sanjoy@playingwithpointers.com>
1350
1351         * sgen-gc.c: Make the nursery size adjustable by the
1352         MONO_GC_PARAMS environment variable.
1353
1354         Code is contributed under MIT/X11 license.
1355
1356 2010-04-01 Gonzalo Paniagua Javier <gonzalo@novell.com>
1357
1358         * threadpool.c: threadpool threads wait is alertable.
1359         Fixes bug #592964.
1360         Reduced the stack size of the *poll_wait thread.
1361
1362 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1363
1364         * exception.c|metadata-internals.h: Add new mono_get_exception_
1365         field_access_msg and mono_get_exception_method_access_msg 
1366         functions that accept a const char* parameter to provide more 
1367         details when the exception is thrown.
1368         * security-core-clr.c|h: Rework code to allow logging exceptions
1369         (export MONO_LOG_MASK="security") and to supply more details in
1370         [TypeLoad|MethodAccess|FieldAccess]Exception thrown. Also added
1371         mono_security_core_clr_is_field_access_allowed and 
1372         mono_security_core_clr_is_call_allowed to return an exception,
1373         with messages and logging, that can be emitted by method-to-ir.c
1374
1375 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1376
1377         * sgen-gc.c, sgen-pinning-stats.c: In the heap-dump, dump each
1378         pinned object.
1379
1380 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1381
1382         * appdomain.c (mono_domain_assembly_postload_search): Avoid a crash/assert if
1383         the assembly name is not well formed utf8. Fixes #567882.
1384
1385 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1386
1387         * reflection.c (mono_reflection_create_generic_class): Set the flags field of
1388         the generic parameters from the builder. Fixes #473298.
1389
1390 2010-03-31  Miguel de Icaza  <miguel@novell.com>
1391
1392         * object.c (mono_class_proxy_vtable): Eliminate warning. 
1393
1394         * marshal.c (emit_marshal_boolean): Eliminate possible
1395         uninitialized local warning. 
1396
1397 2010-03-30  Sebastien Pouliot  <sebastien@ximian.com>
1398
1399         * class.c (mono_class_init): Postpone coreclr inheritance check
1400         until the end of the initialization (so we can check up the 
1401         default ctor manually for the core-clr inheritance rules).
1402         * security-core-clr.c: Add the missing (undocumented) checks on
1403         default constructors when verifying inheritance rules.
1404
1405 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1406
1407         * domain-internals.h (MonoJitExceptionInfo): Add new field
1408         handler_end to the data union. To be used to point the end
1409         of a finally block.
1410
1411 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1412
1413         * reflection.c: Add support for new v4 type
1414         System.Reflection.MonoModule that is the concrete version
1415         of Module which is abstract unver v4.
1416
1417 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1418
1419         * class.c (mono_class_init): Don't set class failure after
1420         inited = 1 is set. It must be done before.
1421
1422 2010-03-30  Andreas Färber  <andreas.faerber@web.de>
1423
1424         * mono-config.c: Add support for OS "haiku"
1425         * ChangeLog: Fix UTF-8 encoding
1426
1427         Code is contributed under MIT/X11 license.
1428
1429 Tue Mar 30 15:53:06 CEST 2010 Paolo Molaro <lupus@ximian.com>
1430
1431         * console-unix.c: fixed include logic for sys/ioctl.h.
1432
1433 2010-03-30  Mark Probst  <mark.probst@gmail.com>
1434
1435         * threads.c: Fix bitmap generation for TLS marking on 64 bit
1436         systems.
1437
1438 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1439
1440         * icall.c (ves_icall_System_Enum_get_underlying_type): Don't crash on
1441         unfinished/broken typebuilders.
1442
1443 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1444
1445         * sgen-gc.c: Use the same heuristic for the LOS target that we use
1446         for the minor section allowance.
1447
1448 2010-03-29  Raja R Harinath  <harinath@hurrynot.org>
1449
1450         * metadata-verify.c (INVALID_METHOD_IMPLFLAG_BITS): Allow bit 6
1451         "NoOptimization".
1452
1453 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1454
1455         * sgen-gc.c: Count bytes allocated with heavy statistics.
1456
1457 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1458
1459         * sgen-gc.c: More detailed time statistics.
1460
1461 Mon Mar 29 11:52:34 CEST 2010 Paolo Molaro <lupus@ximian.com>
1462
1463         * gc-internal.h, sgen-gc.c, threads.c, utils/mono-hash.c:
1464         fix the user defined mark interface to pass a pointer
1465         to the object location and not the object itself.
1466
1467 2010-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
1468
1469         * reflection.c (mono_method_body_get_object): Release
1470         the method header before the call to CACHE_OBJECT since
1471         this is a macro that returns.
1472
1473 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1474
1475         * class.c (inflate_generic_type): mono_metadata_type_dup
1476         already dupes array information, the g_memdup was just
1477         leaking memory.
1478
1479 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1480
1481         * verify.c: Add stack_peek function. Fix CEE_DUP
1482         to not read from invalid memory if push did expand
1483         the stack.
1484
1485 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1486
1487         * verify.c: Remove old table verification code that has
1488         been superseeded by the new metadata verifier.
1489
1490         * verify.h: Remove mono_image_verify_tables from the public
1491         API.
1492
1493         * pedump.c: Fix for removed bits.
1494
1495 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1496
1497         * verify.c: Allocate stack slows lazily to reduce stack usage
1498         in case of methods with huge stacks. Reduces memory consumption
1499         for mcs yyparse from 459Mb to 1.8Mb.
1500
1501 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1502
1503         * threadpool.c: don't try executing items from domains being
1504         unloaded. Fixes appdomain-async-invoke test.
1505
1506 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1507
1508         * threadpool.c: spin while the threadpool initializes.
1509         * mono-wsq.c: if the WSQ has not been initialized or has been shut
1510         down, don't do anything.
1511
1512 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1513
1514         * threads.c (mono_thread_create_internal): Set the GC type of the
1515         threads_starting_up hash table.
1516
1517 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1518
1519         * threadpool.c: reset 'state' to avoid returning non-null when the
1520         event type is not found.
1521
1522 Fri Mar 26 19:03:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1523
1524         * sgen-gc.c: make copy_object () take the address of the
1525         slot holding the reference. This allows saving memory stores
1526         when not needed and it allows keeping track of oldspace->nursery
1527         references for the card table code.
1528
1529 2010-03-26  Andreas Färber  <andreas.faerber@web.de>
1530
1531         * null-gc.c (mono_gc_invoke_with_gc_lock): Fix function name.
1532
1533         Code is contributed under MIT/X11 license.
1534
1535 Fri Mar 26 11:33:17 CET 2010 Paolo Molaro <lupus@ximian.com>
1536
1537         * object.c, threads.c, threads-types.h, threads.h: make the
1538         managed thread local storage references precisely tracked.
1539
1540 2010-03-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
1541
1542         * threadpool.[ch]: reworked the threadpool:
1543                 -Threadpool threads use a work-stealing queue. Adding a work
1544                 item from a threadpool thread will queue it in the thread
1545                 local queue without locking (in most cases).
1546                 -epoll events are coalesced before being added to the IO
1547                 queue.
1548                 -Dynamically change the number of active threads
1549                 -Changed the global queue to be more GC friendly
1550
1551         * class-internals.h: add 2 new performance counters for the number of
1552         threads in the threadpool and the IO threadpool.
1553
1554         * object-internals.h: new field in MonoAsyncResult.
1555         * icall-def.h: new internal call for queueing work items.
1556
1557         * Makefile.am: add 2 new files.
1558
1559         * appdomain.c: bump up corlib version.
1560
1561         * mono-wsq.[ch]: an implementation of a work-stealing queue.
1562
1563         * mono-perfcounters-def.h:
1564         * mono-perfcounters.c: added 2 new performance counters.
1565
1566 2010-03-26  Mark Probst  <mark.probst@gmail.com>
1567
1568         * sgen-gc.c: More FIXME/TODO updates.
1569
1570 2010-03-25  Mark Probst  <mark.probst@gmail.com>
1571
1572         * gc-internal.h, sgen-gc.c, sgen-gc.h, boehm-gc.c, null-gc.c: New
1573         function mono_gc_invoke_with_gc_lock() which invokes a function
1574         with the guarantee that no collection will occur during its execution.
1575
1576 2010-03-25  Mark Probst  <mark.probst@gmail.com>
1577
1578         * sgen-gc.c: Update a few comments.
1579
1580 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1581
1582         * reflection.c: Add support for new v4 type
1583         System.Reflection.MonoAssembly that is the concrete version
1584         of Assembly which is abstract unver v4.
1585
1586 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1587
1588         * reflection.c (mono_reflection_get_custom_attrs_info): Protect
1589         code that uses System.Reflection.Emit in DISABLE_REFLECTION_EMIT.
1590
1591         Expose a few macros that are needed for SR but not SRE to the
1592         world (previous inside the SRE ifdef)
1593
1594 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1595
1596         * sgen-gc.c (gc_register_current_thread): We need
1597         stack_start_limit as well in the non-attribute pthread case.
1598
1599 2010-03-23 Rodrigo Kumpera  <rkumpera@novell.com>
1600
1601         * threads.c: Fix windows build.
1602
1603 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1604
1605         * thread-types.h: Add mono_thread_resume_interruption.
1606
1607         * threads.c: Add mono_thread_resume_interruption, this
1608         function should be called after the last protected handler
1609         found at interruption time has finished.
1610
1611 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1612
1613         * threads.c (ves_icall_System_Threading_Thread_ResetAbort):
1614         Check MonoInternalThread's ::state instead of ::abort_exc
1615         since the later can be lazily created.
1616
1617         This is specially problematic when running a finally block
1618         under AbortRequested state. ResetAbort must work, but the
1619         abort_exc object has not been created because interruption
1620         has not began.
1621
1622 2010-03-22  Geoff Norton  <gnorton@novell.com>
1623
1624         * locales.c: Its possible for CFStringGetCStringPtr
1625         to return null and not convert encodings.  Use
1626         CFStringGetCString instead.
1627
1628 Mon Mar 22 18:06:38 CET 2010 Paolo Molaro <lupus@ximian.com>
1629
1630         * class-internals.h, class.c, object.c: introduce compressed
1631         interface bitmaps (for now only under small config): this saves
1632         about 600 KB of runtime memory on gmcs bootstraps or monodevelop
1633         startups.
1634
1635 Mon Mar 22 16:03:34 CET 2010 Paolo Molaro <lupus@ximian.com>
1636
1637         * mono-debug.c: don't try to get the method header, it causes a
1638         deadlock and it is not used for anything anymore.
1639
1640 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1641
1642         * loader.c (mono_method_get_marshal_info): Fix the handling of dynamic methods
1643         broken by the last change.
1644
1645 2010-03-21  Andreas Färber  <andreas.faerber@web.de>
1646
1647         * socket-io.c: Don't depend on AF_SNA, AF_DECnet,
1648         SOCK_RDM.
1649         
1650         Code is contributed under MIT/X11 license.
1651
1652 2010-03-20  Sanjoy Das <sanjoy@playingwithpointers.com>
1653
1654         * sgen-gc.c (mono_gc_get_write_barrier): Handle non-aligned
1655         nursery.
1656
1657         Code is contributed under MIT/X11 license.
1658
1659 2010-03-19  Martin Baulig  <martin@ximian.com>
1660
1661         * mono-debug.c (MonoDebugWrapperData): Replace `cil_code' with a
1662         dummy field, containing an empty string.
1663         (mono_debug_add_method): Don't call mono_disasm_code() for wrappers.
1664
1665
1666 Fri Mar 19 17:26:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1667
1668         * class.c: setup_interface_offsets() refactor to not call
1669         mono_class_get_implemented_interfaces () more times than needed and
1670         to reduce the runtime memory requirements to be O(num_interfaces)
1671         instead of O(max_interface_id).
1672
1673 2010-03-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
1674
1675         * mono-mlist.[ch]: add mono_mlist_set_next ().
1676
1677 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1678
1679         * domain-internals.h: Add MonoTryBlockHoleJitInfo struct and
1680         associated changes to support holes in the protected range of a
1681         try block.
1682
1683         * domain.c: Add mono_jit_info_get_try_block_hole_table_info, which
1684         retrieves the holes table from a given MonoJitInfo.
1685
1686 Tue Mar 16 13:11:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1687
1688         * object.h, object-internals.h, object.c, icall.c, gc-internal.h,
1689         debug-helpers.c, cominterop.c, process.c, sgen-gc.c, socket-io.c:
1690         hide the contents of the MonoString and MonoArray structs from the
1691         public API. Change the accessor macros to accessors functions where
1692         needed. Adjusted the array API to allow for pointer-sized lengths and
1693         starting positions, so 64 bit arrays can be optionally provided in an
1694         API compatible way if needed on 64 bit systems.
1695
1696 Tue Mar 16 10:18:07 CET 2010 Paolo Molaro <lupus@ximian.com>
1697
1698         * class-internals.h, class.c, loader.c, marshal.c, metadata.c,
1699         reflection.c: the MonoMethodNormal struct is now unused, so remove it.
1700
1701 Mon Mar 15 18:28:00 CET 2010 Paolo Molaro <lupus@ximian.com>
1702
1703         * class-internals.h: remove the method header from MonoMethod since
1704         from now on it will be transient. We have a header pointer for method
1705         wrappers, since in that case we need to keep track of it. For this
1706         reason, all the Reflection.Emit generated methods use MonoMethodWrapper
1707         structs now. The same happens with MonoMethodInflated.
1708         * class.c: reset the sre_method flag for inflated method structures:
1709         this makes the code that cares look at the header in the MonoMethodInflated
1710         structure.
1711         * loader.c: lookup the method header in the appropriate field now that
1712         it is removed from MonoMethod.
1713         * metadata-internals.h: add a flag to the method header to know if it
1714         can be freed inside mono_metadata_free_mh ().
1715         * method-builder.c: updates after moving the header field from
1716         MonoMethod to MonoMethodWrapper.
1717         * reflection.c: MonoMethods generated from Reflection.Emit use
1718         MonoMethodWrapper structs if they need a method header now (later take
1719         advantage of this and remove all the current unsafe uses of method_aux_hash).
1720         * metadata.c: make method header parsing not leak when verification
1721         fails. Alloc it with g_malloc() and free it in mono_metadata_free_mh().
1722         These changes save a few hundred KB of runtime memory in a mcs
1723         bootstrap or a monodevelop startup.
1724
1725 2010-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1726
1727         * verify.c: Improve error message.
1728
1729 2010-03-12  Jb Evain  <jbevain@novell.com>
1730
1731         * reflection.c (add_exported_type): populate the exported
1732         table with the type's nested type.
1733
1734 2010-03-10  Mark Probst  <mark.probst@gmail.com>
1735
1736         * sgen-gc.c (STRING_SIZE): Semi-revert r153342.  I'm an idiot who
1737         can't read parentheses.
1738
1739 2010-03-10  Mark Probst  <mark.probst@gmail.com>
1740
1741         * threads.c (thread_cleanup): Add a guard to dereferencing
1742         "thread" to avoid an unlikely race condition.
1743
1744 2010-03-09  Sebastien Pouliot  <sebastien@ximian.com>
1745
1746         * assembly.c: Fix crash in moon-unit when aname->culture is NULL
1747         instead of an empty string.
1748
1749 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1750
1751         * object-internals.h (_G_BOOLEAN_EXPR): Fix the definition of this to explicitly
1752         convert to a boolean, recent gcc versions compile this differently.
1753
1754 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1755
1756        * sgen-gc.c (safe_object_get_size): Avoid a function call so this can really be
1757        inlined.
1758
1759 2010-03-09  Mark Probst  <mark.probst@gmail.com>
1760
1761         * sgen-gc.c (STRING_SIZE): Off by one.
1762
1763 2010-03-09  Mark Probst  <mark.probst@gmail.com>
1764
1765         * sgen-archdep.h: Fix the signal context register access for
1766         AMD64.
1767
1768 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1769
1770         * sgen-gray.c: Get rid of the unused 'start' field in GrayQueueSection.
1771
1772 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1773
1774         * verify.c: Store the initial basic block returned by mono_basic_block_split
1775         so we can release the whole list and not just the first one.
1776
1777 Mon Mar 8 17:30:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1778
1779         * verify.c, debug-helpers.c, profiler.c, loader.c,
1780         mono-basic-block.c, mono-debug.c, reflection.c: prepare to make
1781         MonoMethodHeader a transient entity.
1782
1783 2010-03-08  Zoltan Varga  <vargaz@gmail.com>
1784
1785         * sgen-gc.c (scan_needed_big_objects): Call drain_gray_stack () to avoid
1786         uncontrolled growth of the gray stack.
1787
1788         * sgen-gray.c: Rewrite this so it behaves like a stack, not a queue, so recently
1789         added items are removed first, improving cache locality. Avoid freeing queue
1790         segments in the fast path, use the list of segments as the free list, truncate
1791         it to its max size at the start of collection.
1792
1793 Mon Mar 8 10:13:52 CET 2010 Paolo Molaro <lupus@ximian.com>
1794
1795         * metadata-internals.h: more memory savings, both with small config and without.
1796
1797
1798 Sat Mar 6 19:12:12 CET 2010 Paolo Molaro <lupus@ximian.com>
1799
1800         * appdomain.c, domain-internals.h, domain.c, object.c:
1801         make class_vtable_hash into an array to reduce memory usage.
1802
1803 Sat Mar 6 18:16:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1804
1805         * mempool.c, class-internals.h, class.c, icall.c, metadata.c,
1806         object-internals.h, object.c, reflection.c, threadpool.c:
1807         reduce resource usage when the small config is selected.
1808         In particular, up to 64K of methods/fields/properties/events
1809         are allowed and "other" methods in events are ignored.
1810
1811 Fri Mar 5 19:05:47 CET 2010 Paolo Molaro <lupus@ximian.com>
1812
1813         * threads.c: reduce resource usage when compiled for a small config.
1814
1815 2010-03-05  Mark Probst  <mark.probst@gmail.com>
1816
1817         * sgen-gc.c: Also collect number of degraded-alloced objects with
1818         heavy statistics.
1819
1820 2010-03-04  Geoff Norton  <gnorton@novell.com>
1821
1822         * assembly.c: Only support OSX bundling if the bundle is 
1823         actually detectable.
1824
1825 2010-03-04  Geoff Norton  <gnorton@novell.com>
1826
1827         * loader.c: The marshal specs are freed at the end of the call
1828         but it explicitly frees the strings as well as the container,
1829         so we need to dup them too to avoid referencing free'd memory.
1830
1831 2010-03-04  Geoff Norton  <gnorton@novell.com>
1832
1833         * icall-def.h:
1834         * icall.c: Add a new private internal icall to construct
1835         an object from its type without running the ctor.
1836
1837 Thu Mar 4 15:37:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1838
1839         * profiler.c: allow multiple profiler engines to be loaded
1840         at the same time.
1841
1842 Wed Mar 3 20:19:45 CET 2010 Paolo Molaro <lupus@ximian.com>
1843
1844         * profiler-private.h, profiler.c, profiler.h, sgen-gc.c: introduce
1845         profiler event to track object moves.
1846
1847 Wed Mar 3 19:20:39 CET 2010 Paolo Molaro <lupus@ximian.com>
1848
1849         * object.c, profiler.c, profiler.h, string-icalls.c:
1850         remove the reduntant MONO_PROFILE_STRING_ALLOC profiler event.
1851
1852 2010-03-03  Miguel de Icaza  <miguel@novell.com>
1853
1854         * decimal.c (mono_double2decimal): Add support for reducing the
1855         scale of a decimal.  It turns the 0.6000000000000 into 0.6 as
1856         expected.
1857
1858 2010-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1859
1860         * icall-def.h:
1861         * icall.c: Implement System.MonoType::get_core_clr_security_level icall.
1862
1863 2010-03-03  Marek Habersack  <mhabersack@novell.com>
1864
1865         * mono-config.c (mono_config_parse_assembly_bindings): added -
1866         parses assembly binding redirections from appdomain's config
1867         file.
1868
1869         * metadata-internals.h: added definition of a new function -
1870         mono_config_parse_assembly_bindings - to support parsing assembly
1871         binding redirections defined in appdomain's config file.
1872
1873         * domain-internals.h: added two new fields to _MonoDomain - a list
1874         of assembly bindings and a flag to parse the config file only
1875         once.
1876
1877         * assembly.c (assembly_binding_maps_name): empty culture name and
1878         NULL culture name are considered equal.
1879         (mono_assembly_apply_binding): added support for domain specific
1880         assembly binding redirections, read from the appdomain's
1881         configuration file. Fixes bug #580185
1882
1883 Wed Mar 3 11:46:06 CET 2010 Paolo Molaro <lupus@ximian.com>
1884
1885         * appdomain.c, domain.c, icall.c, image.c, marshal.c, object.c,
1886         reflection.c, socket-io.c, threadpool.c, threads.c: removed 1.1/1.0
1887         support.
1888
1889 2010-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1890
1891         * reflection.c (mono_image_get_memberref_token): Extract mono_image_add_memberef_row
1892         from this function. The new function receive the parent token instead of a type.
1893
1894         * reflection.c (mono_image_get_methodref_token_for_methodbuilder):
1895         * reflection.c (mono_image_get_ctorbuilder_token): Use new function to encode
1896         typebuilders. This make it possible to properly encode generic type builders since
1897         their unmanaged type don't have generics data while unfinished.
1898
1899         Fixes #583655.
1900
1901 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1902
1903         * sgen-gc.c, sgen-protocol.c, sgen-protocol.h: New facility for
1904         writing binary log files (can be enabled by #define'ing
1905         BINARY_PROTOCOL) for better debugging of timing-dependent bugs or
1906         bugs in longer running programs.
1907
1908 Mon Mar 1 19:35:32 CET 2010 Paolo Molaro <lupus@ximian.com>
1909
1910         * metadata.c: added some API documentation.
1911
1912 2010-03-01  Robert Jordan  <robertj@gmx.net>
1913
1914         * filewatcher.h: Include glib.h to fix the MSVC build.
1915
1916 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1917
1918         * class-internals.h (MonoClass): Get rid of the reflection_info field, add
1919         a GC handle instead. This is a bit slower to access, but avoids burdening the
1920         GC with 100s of individual roots.
1921
1922         * reflection.c (mono_class_get_ref_info):
1923         (mono_class_set_ref_info):
1924         (mono_class_free_ref_info): New internal helper fuctions.
1925
1926         * reflection.c appdomain.c icall.c class.c: Use the new helper functions instead
1927         of accessing klass->reflection_info directly.
1928
1929         * sgen-gc.c (alloc_complex_descriptor): Fix the computation of the number of
1930         words.
1931
1932         * gc.c (alloc_handle): Create a GC descriptor for the 'entries' array, free
1933         the previous array.
1934
1935 2010-02-28  Zoltan Varga  <vargaz@gmail.com>
1936
1937         * marshal.c (get_runtime_invoke_type): Avoid sharing byref with I, as the latter
1938         needs an indirection.
1939
1940 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1941
1942         * generic-sharing.c: Removed, moved its contents to mini/mini-generic-sharing.c,
1943         so all generic sharing code is in one place.
1944
1945         * class.c (get_implicit_generic_array_interfaces): Fix the last change so
1946         we don't call setup_interface_offsets () for unfinished types.
1947
1948 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1949
1950         * class.c (mono_class_generic_sharing_enabled): Move this to
1951         generic-sharing.c.
1952
1953         * image.c: Add an unload hook which is called before an image is unloaded.
1954
1955         * generic-sharing.c: Use the unload hook to unregister per-image data, to avoid
1956         metadata.c having to depend on generic sharing.
1957
1958 Fri Feb 26 19:23:18 CET 2010 Paolo Molaro <lupus@ximian.com>
1959
1960         * class.c: reduce size of ridiculously large cache.
1961
1962 2010-02-26  Martin Baulig  <martin@ximian.com>
1963
1964         * mono-debug.h
1965         (MONO_DEBUGGER_MINOR_VERSION): Bump to 5.
1966
1967         * threads.c (mono_thread_internal_reset_abort): New method; resets
1968         the abort, but doesn't throw any exception if no abort was requested.
1969
1970 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1971
1972         * class.c (get_implicit_generic_array_interfaces): Call
1973         mono_class_setup_interface_offsets () before accessing
1974         eclass->interface_offsets_count. This only shows up on platforms without IMT for
1975         some reason.
1976
1977 Thu Feb 25 12:12:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1978
1979         * environment.c, environment.h, icall.c: make the GetOSVersionString()
1980         icall internal.
1981
1982 Thu Feb 25 11:37:50 CET 2010 Paolo Molaro <lupus@ximian.com>
1983
1984         * metadata.c, metadata.h: make MONO_TYPE_IS* functional without
1985         direct access to the MonoType fields.
1986
1987 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1988
1989         * threads.h: Move some internal functions which were added to this header by
1990         mistake to threads-types.h.
1991
1992         * class.c (mono_class_init): Get rid of mono_setup_vtable_in_class_init.
1993
1994 Wed Feb 24 17:45:27 CET 2010 Paolo Molaro <lupus@ximian.com>
1995
1996         * class-internals.h, class.h, object.h: make MonoRemoteClass
1997         and mono_remote_class() internal.
1998
1999 Wed Feb 24 17:05:18 CET 2010 Paolo Molaro <lupus@ximian.com>
2000
2001         * metadata-internals.h, class-internals.h, metadata.h: make the
2002         MonoType guts internal as well.
2003
2004 Wed Feb 24 16:02:42 CET 2010 Paolo Molaro <lupus@ximian.com>
2005
2006         * reflection.h: the MonoTypeNameParse guts are internal now.
2007         * assembly.c, assembly.h, image.h: the MonoAssemblyName guts
2008         are internal now, provide accessors as needed.
2009         * metadata.h, metadata-internals.h: the MonoMethodSignature
2010         guts are internal now.
2011         * Makefile.am: mempool.h is an internal header now.
2012         * *.h, *.c: remove glib.h usage from the public headers.
2013
2014 2010-02-24  Atsushi Enomoto  <atsushi@ximian.com>
2015
2016         * culture-info-table.h : regenerated.
2017
2018 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
2019
2020         * metadata.c: Add mono_method_get_header_summary which returns minimal
2021         information about the header of a method. This is the information used
2022         by the inline oracle to reject methods.
2023
2024         This method doesn't decode local variables and doesn't cache it's result,
2025         so it should cause a minimal reduction in memory usage.
2026
2027         * metadata-internals.h: Add MonoMethodHeaderSummary structure and
2028         mono_method_get_header_summary.
2029
2030 2010-02-22  Jeffrey Stedfast  <fejj@novell.com>
2031
2032         * threads.c (mono_thread_exit): Make sure that the main thread is
2033         non-null before dereferencing it.
2034
2035 2010-02-21  Geoff Norton  <gnorton@novell.com>
2036
2037         * Makefile.am: Add CoreFoundation linkage on darwin to properly get the current
2038         locale.
2039         * locaes.c: When running on darwin, try to get the local from CoreFoundation 
2040         before falling back to the posix lookup.
2041
2042 2010-02-19  Zoltan Varga  <vargaz@gmail.com>
2043
2044         * threads.c (mono_thread_suspend_all_other_threads): Ignore threads which have
2045         the DONT_MANAGE flag set.
2046
2047 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
2048
2049         * domain.c: Remove old v1 version strings. Let the runtime
2050         default to 2.0 instead of failing because it can't find a
2051         working 1.0 instalation.
2052
2053 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
2054
2055         * domain.c: Add v4 RC version string.
2056
2057 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
2058
2059         * mono-basic-block.c (mono_opcode_value_and_size): Use pointer variant
2060         of overflow checking function.
2061
2062 2010-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
2063
2064         * reflection.c (mono_reflection_method_on_tb_inst_get_handle): Handle non
2065         generic methods.
2066
2067         * reflection.c (mono_reflection_get_custom_attrs_info): Handle compiler context
2068         cases for ParameterInfo.
2069
2070         Fixes #579493.
2071
2072 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
2073
2074         * class.c (mono_class_get_cctor): Fix support for dynamic classes, which doesn't
2075         have has_cctor set. Fixes #575946.
2076
2077 2010-02-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
2078
2079         * appdomain.c: display a warning if the parsing the config file
2080         produces any error.
2081         Skip the BOM in UTF-8 files.
2082         Copy the AppDomainSetup before setting the privateBinPath so that the
2083         correct configuration file is read.
2084
2085 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
2086
2087         * object.c: Instead of using one vtable trampoline, allow the JIT to use one
2088         vtable trampoline per vtable slot index. Not used yet.
2089
2090 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
2091
2092         * icall-def.h:
2093         * icall.c: add internal call that returns the system page size.
2094
2095 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
2096
2097         * debug-helpers.c (mono_method_desc_search_in_image): Handle short names like
2098         'int' for system classes.
2099
2100 Fri Feb 12 18:36:02 CET 2010 Paolo Molaro <lupus@ximian.com>
2101
2102         * icall.c, icall-def.h: new icall to check for sufficient
2103         stack space.
2104
2105 2010-02-12  Mark Probst  <mark.probst@gmail.com>
2106
2107         * reflection.c (ensure_complete_type): Check that reflection_info
2108         is set, too.  Fixes crash of corlib testsuite with -O=-all.
2109
2110 2010-02-11  Rodrigo Kumpera  <rkumpera@novell.com>
2111
2112         * attrdefs.h:
2113         * tabledefs.h: Add NoOptimization flag.
2114
2115 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2116
2117         * sgen-gc.c: Don't consider it a missing remset if the target
2118         object is pinned - we might have done the store but not added the
2119         remset yet.
2120
2121 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2122
2123         * sgen-gc.c: When checking for missing remsets, don't assert on
2124         the first one, but print them all and then assert.
2125
2126 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2127
2128         * sgen-gc.c (find_in_remset_loc): Handle the small bitmap case.
2129
2130 2010-02-09  Miguel de Icaza  <miguel@novell.com>
2131
2132         * console-unix.c: On OSX Control-Y is assigned to
2133         VDSUSP (non-Posix), the
2134         suspend-program-next-time-it-tries-to-read-input command (this is
2135         different than C-z, which suspends immediately).
2136
2137         Do the same thing that bash does and ignore this setting,
2138         making our repl/getline support pasting.
2139
2140 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2141
2142         * sgen-gc.c: Simple plausibility check for scan_starts.
2143
2144 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2145
2146         * sgen-gc.c: Round up when calculating the number of scan starts.
2147
2148 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2149
2150         * reflection.c: Export mono_get_object_from_blob.
2151
2152         * object-internals.h: Ditto.
2153
2154         * icall.c: New icall property_info_get_default_value to get the default
2155         value of a property. Since using this is not common, no caching is done.
2156
2157         * icall-def.h: Add new icall.
2158
2159 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2160
2161         * class.c: Add mono_class_get_property_default_value.
2162
2163         * class-internal.h: Export mono_class_get_property_default_value.
2164
2165 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2166
2167         * reflection.c (mono_image_get_property_info): Encode the default value of a property.
2168
2169 Wed Feb 10 14:48:45 CET 2010 Paolo Molaro <lupus@ximian.com>
2170
2171         * sgen-gc.c: introduced critical regions to allow some lockless
2172         operations and increase scalability.
2173
2174 2010-02-10  Geoff Norton  <gnorton@novell.com>
2175
2176         * reflection.c: Support building with DISABLE_REFLECTION
2177
2178 2010-02-09 Gonzalo Paniagua Javier <gonzalo@novell.com>
2179
2180         * threadpool.c: Fixes for SetMinThreads and SetMaxThreads.
2181         Closes bug #566057.
2182
2183         * exception.c: fix typo in comment.
2184
2185 2010-02-09  Rodrigo Kumpera  <rkumpera@novell.com>
2186
2187         * icall.c (param_info_get_type_modifiers): Handle the case when the member object is a
2188         property. This happens which instances returned by PropertyInfo::GetIndexParameters ().
2189
2190         * reflection.c (mono_reflection_get_custom_attrs_info): Ditto.
2191
2192         * object-internals.h: Export mono_class_is_reflection_method_or_constructor as part of
2193         the internal API.
2194
2195         Fixes #574434.
2196
2197 2010-02-09  Mark Probst  <mark.probst@gmail.com>
2198
2199         * threads.c: Removed two assertions that were too strict.  Added a
2200         clarifying comment.  Fixes #577090.
2201
2202 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
2203
2204         * domain.c (mono_jit_info_table_find): Avoid looking in the root domain, since
2205         the caller has no way of knowing the domain which owns the returned MonoJitInfo.
2206
2207         * appdomain.c (create_exceptions): Call mono_thread_push/popappdomain_ref ().
2208
2209         * verify.c (mono_type_get_stack_name): Fix a warning.
2210
2211 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
2212
2213         * marshal.c (mono_marshal_get_wrapper_info): Rename from
2214         mono_marshal_wrapper_info_from_wrapper.
2215
2216         * marshal.c (mono_marshal_set_wrapper_info): Rename from
2217         mono_marshal_method_set_wrapper_data, and export.
2218
2219         * boehm-gc.c sgen-gc.c null-gc.c: Get rid of mono_gc_get_allocator_type, store
2220         the allocator type in a AllocatorWrapperInfo structure instead, which is accesible
2221         by calling mono_marshal_get_wrapper_info ().
2222
2223         * sgen-gc.c (mono_gc_get_managed_allocator): Add a specialized allocator for
2224         small objects which does no size checks.
2225
2226 2010-02-05  Rodrigo Kumpera  <rkumpera@novell.com>
2227
2228         * icall-def.h: Rename get_MetadataToken to GetMetadataToken.
2229
2230 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2231
2232         * verify.c (mono_method_verify): Use the new basic block formation pass
2233         to avoid verifying dead basic blocks. This is the same behavior as the
2234         runtime MS verifier.
2235
2236 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2237
2238         * mono-basic-block.c:
2239         * mono-basic-block.h: New implementation of a basic block formation pass.
2240         The formation pass does static liveness analysis as well to detect dead
2241         basic blocks.
2242
2243 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2244
2245         * marshal.c (mono_marshal_get_native_wrapper): Emit a null check for the
2246         'this' argument in icalls.
2247
2248 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2249
2250         * reflection.c (resolve_object): Handle MonoArrayMethod. Fixes #575955.
2251
2252 2010-02-01  Mark Probst  <mark.probst@gmail.com>
2253
2254         * object.c, domain.c: When using SGen, we must register
2255         vtable->type as a root if it's not a MonoType, because then it
2256         wasn't pin-alloced.
2257
2258 2010-02-01  Mark Probst  <mark.probst@gmail.com>
2259
2260         * sgen-gc.c: Reset to_space_bumper to to_space_section->next_data
2261         at the start of nursery collections, because we might have had
2262         degraded allocations which changed next_data.
2263
2264 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2265
2266         * marshal.c (mono_marshal_get_managed_wrapper): Avoid constructing the
2267         custom attr so this function works in cross-compiling mode.
2268
2269 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2270
2271         * class.c (make_generic_param_class): Initialize interface offsets since we
2272         set klass->inited. Fixes #574819.
2273
2274 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2275
2276         * domain.c (mono_domain_free): Send the END_UNLOAD profiler event before
2277         calling the JIT domain cleanup hook.
2278
2279 2010-01-28  Rodrigo Kumpera  <rkumpera@novell.com>
2280
2281         * pedump.c (main): Properly set the verifier mode when running the metadata
2282         verifier.
2283
2284 2010-01-28  Rodrigo Kumpera  <rkumpera@novell.com>
2285
2286         * verify.c (verify_class_for_overlapping_reference_fields): Properly verify
2287         overlapping fields now that we're called before has_references is set.
2288
2289         * pedump.c (dump_verify_info): Clear any loader error before verifying another
2290         method. Otherwise all sort of weird stuff happens.
2291
2292 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2293
2294         * object.c (mono_field_get_value_object): Handle nullable types correctly.
2295         Fixes #572874.
2296
2297 2010-01-25  Zoltan Varga  <vargaz@gmail.com>
2298
2299         * icall.c (ves_icall_System_Array_SetValueImpl): Handle nullable types correctly.
2300         Fixes #573322.
2301
2302 2010-01-23  Mark Probst  <mark.probst@gmail.com>
2303
2304         * sgen-pinning.c (evacuate_pin_staging_area): Don't assume
2305         pin_staging_area_index is greater than 0.
2306
2307 2010-01-22 Miguel de Icaza (miguel@novell.com)
2308
2309         * loader.c: Since we do nothing with the error returned, pass NULL
2310         to ignore the error.
2311
2312 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2313
2314         * reflection.c (typebuilder_setup_fields): Pretend field setup already
2315         happened before starting to encode the actual fields. This avoid ciclic
2316         dependencies and eventual crashes.
2317
2318         Fixes #572660.
2319
2320 2010-01-21  Mark Probst  <mark.probst@gmail.com>
2321
2322         * sgen-gc.c, gc-internal.h, object.c: Make string allocation
2323         atomic and remove the half-constructed hack in SGen.
2324
2325 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2326
2327         * metadata-verify.c (parse_generic_inst): Fail a type signature if it 
2328         has a recursive reference to itself.
2329
2330         Fixes #571863.
2331
2332 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2333
2334         * loader.c (mono_method_signature): Fix error message.
2335
2336 2010-01-21  Mark Probst  <mark.probst@gmail.com>
2337
2338         * sgen-gc.c: Reuse to-space sections between nursery collections.
2339
2340 2010-01-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
2341
2342         * icall.c: don't raise AppDomain.TypeResolve when the type is loaded
2343         from the current assembly or mscorlib. Fixes bug #322957.
2344
2345 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2346
2347         * marshal.c: Calculate the target class of the delegete invoke wrappers using
2348         get_wrapper_target_class.
2349
2350 2010-01-19  Mark Probst  <mark.probst@gmail.com>
2351
2352         * sgen-gc.c: Fix warnings.
2353
2354 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2355
2356         * verify.c (store_local): Better error message.
2357
2358 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2359
2360         * object.c (mono_object_get_virtual_method): Handle generic interfaces with variant
2361         arguments.
2362
2363 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2364
2365         * icall.c (ves_icall_Remoting_RemotingServices_GetVirtualMethod): This
2366         function is generics variance aware.
2367
2368 2010-01-19  Sebastien Pouliot  <sebastien@ximian.com>
2369
2370         * security-core-clr.c (mono_security_core_clr_can_access_internals):
2371         Handle the case where 'basedir' can be NULL (e.g. SRE assemblies)
2372
2373 2010-01-19  Sylvain Dupont <duposyl@gmail.com>
2374
2375         * cominterop.c marshal.c: Added support for marshalling in, in/byref,
2376           in/out, in/out/byref parameters of type SAFEARRAY[VARIANT].
2377
2378         Code is contributed under MIT/X11 license.
2379
2380 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2381
2382         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Handle inflated generic methods
2383         on a GTD.
2384
2385 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2386
2387         * marshal.c (mono_marshal_wrapper_info_from_wrapper): New helper function to
2388         return a point to a wrapper specific info structure describing the wrapper.
2389         (mono_marshal_get_array_address): Store the rank+elem_size in the wrapper info.
2390  
2391 2010-01-18  Mark Probst  <mark.probst@gmail.com>
2392  
2393         * sgen-gc.c: Make minor collection section allowance adaptive,
2394         depending on the amount of memory reclaimed in the last major
2395         collection.  If more memory was reclaimed (i.e. more garbage
2396         produced), do the next collection earlier.
2397
2398 2010-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2399
2400         * metadata-verify.c (parse_type): Fail a type signature if it has a recursive reference
2401         to itself.
2402
2403         * metadata-verify.c (mono_verifier_verify_typespec_signature): Change signature to take
2404         the token as parameter.
2405
2406         * verify-internals.h: Ditto.
2407
2408         * metadata.c (mono_type_create_from_typespec): Pass token to verifier.
2409
2410         Fixes #571460.
2411
2412 2010-01-18  Mark Probst  <mark.probst@gmail.com>
2413
2414         * sgen-gc.c: Make store_remset_buffer_index long.
2415
2416 2010-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2417
2418         * class.c (mono_class_from_typeref): Fail loading of self-referencing typeref tokens.
2419
2420         Fixes #569579.
2421
2422 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2423
2424         * sgen-gc.c (mono_gc_base_init): Add 'conservative_stack_mark' option to turn
2425         off precise marking if it is available.
2426         (mono_gc_get_bitmap_for_descr): Fix the handling of run length descriptors.
2427
2428 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2429
2430         * sgen-gc.c (mono_gc_conservatively_scan_area): Resurrect this.
2431
2432         * sgen-pinning.c (evacuate_pin_staging_area): Don't assert if there are no
2433         pinned objects.
2434
2435         * sgen-gc.c (create_allocator): Add the missing n > MONO_ARRAY_MAX_INDEX check
2436         to the array allocator.
2437
2438 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2439
2440         * generic-sharing.c (instantiate_other_info): Don't create ftnptr's from the
2441         result of mono_compile_method (), it already includes an ftnptr.
2442
2443 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2444
2445         * metadata.c (get_image_set): Remove an assert which can happen in normal use.
2446
2447 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2448
2449         * metadata.c (mono_metadata_str_hash): New helper function to compute a stable
2450         hash value which doesn't depend on glib/eglib versions.
2451         (mono_metadata_type_hash): Use it.
2452
2453         * object.c (mono_method_get_imt_slot): Ditto.
2454
2455 2010-01-14  Rodrigo Kumpera  <rkumpera@novell.com>
2456
2457         * class.c (mono_type_has_exceptions): Check the generic instance. It can fail
2458         independently of the GTD.
2459
2460         * class.c (mono_class_setup_fields): Fail if field has negative offset.
2461
2462         * class.c (mono_class_setup_fields): Fail if valuetype has zero size. Add sizeof(MonoObject)
2463         to the upper limit since instance_size includes this amount.
2464
2465         * class.c (mono_class_layout_fields): Check if the types of the static fields have failed.
2466
2467         Fixes #569544.
2468
2469 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2470
2471         * object.c (build_imt_slots): Compute the vtable slot correctly for interfaces
2472         with static methods.
2473
2474         * object.c (build_imt_slots): Avoid asserting when static methods are
2475         encountered in an interface.
2476
2477 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2478
2479         * sgen-gc.c (to_space_expand): Fix assertion.
2480
2481 Wed Jan 13 15:42:28 CET 2010 Paolo Molaro <lupus@ximian.com>
2482
2483         * string-icalls.c: missing declaration fixes.
2484         * sgen-gc.c: portability fixes.
2485
2486 2010-01-12  Rodrigo Kumpera  <rkumpera@novell.com>
2487
2488         * class.c (mono_class_get_implemented_interfaces): Now take a MonoError argument.
2489
2490         * class.c:
2491         * cominterop.c:
2492         * icall.c:
2493         * object.c: 
2494         * class-internals.h: Adjust for new signature of mono_class_get_implemented_interfaces.
2495
2496 2010-01-12  Rodrigo Kumpera  <rkumpera@novell.com>
2497
2498         * class.c (mono_class_setup_interfaces): Now take a MonoError argument and
2499         it can fail loading the type.
2500
2501         * class.c: Add mono_class_inflate_generic_class_checked.
2502
2503         * class.c:
2504         * verify.c:
2505         * class-internals.h: Adjust for new signature of mono_class_setup_interfaces.
2506
2507 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2508
2509         * loader.c (mono_method_signature_checked): New internal function taking an
2510         MonoError argument.
2511
2512         * socket-io.c (AI_ADDRCONFIG): Applied patch from John Lightsey (jd@cpanel.net).
2513         Fixes build on rh 7.3.
2514
2515 2010-01-10  Aaron Bockover  <abockover@novell.com>
2516
2517         * assembly.c (mono_set_rootdir): Support finding the mono paths on OS X
2518         at runtime in the same way as on Windows, which yields a relocatable
2519         Mono. Uses dyld's _NSGetExecutablePath and realpath to resolve the path
2520         of the running mono process.
2521
2522         On TARGET_ARM, fallback () will always be executed.
2523
2524 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2525
2526         * icall.c (ves_icall_Type_GetInterfaceMapData): This function is generics variance aware.
2527
2528 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2529
2530         * class.c (mono_class_is_assignable_from_slow): Support variant
2531         generic delegates.
2532
2533         * class.c (mono_class_implement_interface_slow): Support types with
2534         variant generic arguments.
2535
2536 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2537
2538         * verify.c: Remove some code duplication.
2539
2540 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2541
2542         * object.c: Update docs.
2543
2544 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2545
2546         * object.c (add_imt_builder_entry): Improve DEBUG_IMT spew.
2547
2548         * object.c (build_imt_slots): Interfaces with variant generic arguments use the
2549         fallback trampoline as well.
2550
2551         * class.c (mono_class_interface_offset_with_variance): Add new non_exact_match
2552         out argument that is set to TRUE if the match was direct. 
2553
2554         * class.c (mono_class_is_assignable_from): Delegates require variance testing as well.
2555
2556         * class-internal.h: Update prototype of mono_class_interface_offset_with_variance.
2557
2558 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2559
2560         * class.c: Add mono_class_interface_offset_with_variance function that does same
2561         as mono_class_interface_offset but takes variance into account.
2562
2563         * class-internal.h: Export mono_class_interface_offset_with_variance.
2564
2565         * object.c: Fix and improve DEBUG_IMT. Added an assert for IMT thunk building.
2566
2567 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2568
2569         * object.c:
2570         * icall.c:
2571         * class.c: Add some FIXME for due to variant generic arguments.
2572
2573         object.c (mono_object_isinst_mbyref): Interfaces with variant generic arguments
2574         can't use the simple bitfield check, so call mono_class_is_assignable_from if
2575         the bitfield check fails.
2576
2577 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2578
2579         * class.c (mono_class_is_assignable_from): Rework the generics variance code
2580         to be easier to read and fix bugs in the case a non generic type implements a variant
2581         interface.
2582
2583         * class.c (mono_class_has_variant_generic_params): Make non static.
2584
2585         * class-internals.h: Export mono_class_has_variant_generic_params as part of
2586         the private API.
2587
2588 2010-01-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2589
2590         * assembly.c: fix MONO_PATH debug output.
2591
2592 2010-01-06  Atsushi Enomoto  <atsushi@ximian.com>
2593
2594         * culture-info-table.h : regenerated.
2595
2596 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2597
2598         * verify.c (mono_verifier_verify_class): Properly check for broken parent. Ignore
2599         types that are meant to not have a parent.
2600
2601 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2602
2603         * marshal.c (mono_marshal_get_runtime_invoke): Make a copy of the signature
2604         from the image mempool, so it is not leaked.
2605
2606 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2607
2608         * metadata-internals.h (_MonoImage): Remove unused generic_class_cache field.
2609
2610 2010-01-04  Sebastien Pouliot  <sebastien@ximian.com>
2611
2612         * verify.c (verify_valuetype_layout_with_target): Fix case
2613         that can lead to infinite recursion. Fix bug #567861
2614
2615 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2616
2617         * pedump.c: Run code verifier even if image verification fails
2618         due to a failed type we. This allows more errors to be shown.
2619
2620 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2621
2622         * class.c (count_virtual_methods): Remove the assert and now
2623         fail properly.
2624         
2625         * class.c (setup_interface_offsets): This can fail now.
2626
2627         * class.c (mono_class_setup_vtable_general): Check for parent vtable
2628         errors. Check setup_interface_offsets errors.
2629
2630         * class.c (setup_interface_offsets): Simplify the return error logic
2631         and remove class_init_ok.
2632
2633         Fixes #560327.
2634
2635 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2636
2637         * class.c (mono_class_init): Do class verification at the beginning. Add
2638         some asserts to avoid tripping into invalid memory.
2639
2640         * object.c (compute_class_bitmap): Replace a g_assert_not_reached with a
2641         g_error and a decent message.
2642
2643         * verify.c (mono_verifier_verify_class): Verify for invalid super type.
2644
2645         Fixes #567548.
2646
2647 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2648
2649         * mempool-internals.h (g_list_prepend_mempool): Define this and related functions
2650         as inline functions instead of defining them in mempool.c.
2651
2652         * metadata-internals.h (MonoImageSet): New structure representing a set of
2653         MonoImages, which own a collection of generic instances.
2654
2655         * metadata.c: Get rid of the global generic caches, instead assign each generic
2656         instance to the image set which consists of all the images referenced by the
2657         instance. This greatly speeds up mono_metadata_clean_for_image (), and allows
2658         the memory used by generic instances to be allocated from a per image-set mempool
2659         later.
2660
2661 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2662
2663         * marshal.c (mono_marshal_get_runtime_invoke): Fix a memory leak.
2664
2665 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2666
2667         * appdomain.c (zero_static_data): Fix a warning.
2668
2669         * locales.c (construct_culture_from_specific_name): Applied patch from
2670         José Antonio Sánchez Lázaro <jasl@darcysoft.es>. Fix a crash if a culture was
2671         not found. Fixes #567900.
2672
2673 2009-12-31  Sebastien Pouliot  <sebastien@ximian.com>
2674
2675         * loader.c (mono_method_get_signature_full): Remove two asserts.
2676         Return NULL instead so that the verifier can handle both cases 
2677         gracefully.
2678
2679 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2680
2681         * class.c (mono_class_setup_methods): Use checked version of mono_class_inflate_generic_method_full
2682         so we can properly fail types instead of crashing.
2683
2684         Fixes #567676.
2685
2686 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2687
2688         * reflection.c (reflection_methodbuilder_to_mono_method): Assert in case of a broken
2689         generic method.
2690
2691 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2692
2693         * marshal.c (mono_mb_emit_restore_result): Properly handle generic enums.
2694
2695 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2696
2697         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait): Don't close the
2698         wait handle if the wait is interrupted, since it is still in mon->wait_list, and
2699         we can't remove it from it since we don't hold the lock.
2700         (mon_new): Free the orphaned events here when a mon structure is added to the
2701         freelist. Fixes #561239. Thanks to Mike Rieker <wmrieker@nii.net> for tracking
2702         this down.
2703
2704 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2705
2706         * verify.c (init_stack_with_value_at_exception_boundary): Do stack overflow checking here
2707         as max stack might be zero.
2708
2709         Fixes #562320.
2710
2711 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2712
2713         Rework all uses of mono_class_setup_methods to accept that it can fail now.
2714
2715         * class.c (mono_class_setup_methods): This function now can fail the class. Do so for generic
2716         instances if the GTD did.
2717
2718         * class.c (mono_class_setup_properties): Ditto.
2719
2720         * class.c (mono_class_setup_events): Ditto.
2721
2722         * class.c (mono_class_setup_vtable): Fail early if the type is already broken.
2723
2724         * class.c (mono_class_setup_vtable_general): Add a few more missing broken type checks. Sanitize
2725         error setting.
2726
2727         * class.c (mono_class_init): Fail if GTD did.
2728
2729         * cominterop.c:
2730         * generic-sharing.c:
2731         * icall.c:
2732         * loader.c:
2733         * object.c:
2734         * verify.c: Properly handle failure of mono_class_setup_methods.
2735
2736 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2737
2738         * class-internals.c: Add mono_class_inflate_generic_method_full_checked and make
2739         mono_class_inflate_generic_method_full internal.
2740
2741         * class.c (inflate_generic_context): Now takes a MonoError argument.
2742
2743         * class.c (mono_class_inflate_generic_method_full): Now calls the _checked and abort on
2744         errors.
2745
2746 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2747
2748         * generic-sharing.c (instantiate_other_info): Avoid creating jump trampolines since
2749         they cannot be patched. Partly fixes #564408.
2750
2751 2009-12-24  Mark Probst  <mark.probst@gmail.com>
2752
2753         * metadata-internals.h, reflection.c: Use the
2754         MonoDynamicImage.handleref hash table only with unmanaged keys,
2755         and add a managed hash table handleref_managed for managed keys.
2756
2757 2009-12-24  Mark Probst  <mark.probst@gmail.com>
2758
2759         * sgen-gc.c: Unset to-space bumper between collections.  It might
2760         become invalid due to degraded allocations.
2761
2762 2009-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
2763
2764         * loader.c (mono_method_get_signature_full): Check if the returned signature is compatible
2765         with the one from the original method.
2766
2767         * metadata-verify.c (mono_verifier_is_sig_compatible): New function to verify signature
2768         compatibility.
2769
2770         * verify-internals.h: Add new function to the internal API.
2771
2772 2009-12-18  Dimitar Dobrev  <dpldobrev@yahoo.com>
2773
2774         * culture-info-tables.h: regenerated it to include the Georgian culture.
2775
2776 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2777
2778         * sgen-gc.c: Include mono/utils/memcheck.h.
2779
2780         * reflection.c (mono_reflection_get_type_internal_dynamic): Use assembly->domain
2781         instead of the current domain, since the two might not match if this is called
2782         from the debugger.
2783
2784         * metadata-internals.h (MonoDynamicAssembly): Add a 'domain' field to specify the
2785         domain which created this assembly.
2786
2787 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2788
2789         * debug-helpers.c (dis_one): Avoid a glib assert on empty strings.
2790
2791 2009-12-17  Mark Probst  <mark.probst@gmail.com>
2792
2793         * sgen-gc.c: Managed implementation of the specialized generic
2794         store write barrier.
2795
2796 2009-12-17  Rodrigo Kumpera  <rkumpera@novell.com>
2797
2798         * icall.c (ves_icall_Type_GetMethodsByName): Don't pin virtual methods if they are newslot.
2799         A private virtual newslot method is used to implement an interface method without exposing
2800         it to users. When querying for public instance methods, such method would hide a public one
2801         on a parent type.
2802
2803         Fixes #564379.
2804
2805 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2806
2807         * reflection.c (resolve_object): Fix the encoding of unmanaged calling
2808         conventions.
2809
2810 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2811
2812         * reflection.c (mono_type_get_object): Guard against NULL generic param owner.
2813
2814 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2815
2816         * class-internals.h (MonoDynamicGenericClass): Kill property and event related fields
2817         as they are no longer used.
2818         
2819          * metadata.c (free_generic_class_dependents): Remove reference to previous fields
2820
2821         * reflection.c (mono_reflection_generic_class_initialize): Ditto.
2822
2823 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2824
2825         * reflection.c (mono_type_get_object): If the type is VAR or MVAR check
2826         if the owner class has not been finished before returning reflection_info.      
2827
2828         Fixes #565127.
2829
2830 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2831
2832         * reflection.c (mono_custom_attrs_from_param): Avoid a crash if a dynamic
2833         param doesn't have custom attributes. Fixes #565117.
2834
2835         * class.c (mono_bounded_array_class_get): Make these classes PUBLIC. Fixes
2836         #565120.
2837
2838 2009-12-15  Rodrigo Kumpera  <rkumpera@novell.com>
2839
2840         * class.c (mono_class_setup_fields): Fail valuetypes that are bigger than 1Mb.
2841
2842 2009-12-15  Rodrigo Kumpera  <rkumpera@novell.com>
2843
2844         * pedump.c: Add partial-md mode that doesn't perform full metadata verification. It does the
2845         same amount done by a core-clr enabled runtime.
2846
2847 2009-12-15  Marek Habersack  <mhabersack@novell.com>
2848
2849         * appdomain.c (mono_make_shadow_copy): make sure access mode of
2850         the target files is reset to writable by owner and readable by
2851         everyone else to prevent problems when updating shadow copies of
2852         files whose source is read-only. Fixes bug #556884
2853
2854 2009-12-15  Mark Probst  <mark.probst@gmail.com>
2855
2856         * class.c (mono_generic_class_get_class): Allocate the generic
2857         class via malloc again, so that it can be freed when any one of
2858         the images of its constituent types is closed.
2859
2860         * metadata.c: When closing an image, don't free generic insts and
2861         generic classes right away, but put them into a list for later
2862         freeing.
2863
2864         * image.c, metadata-internals.h: Store the free list and in the
2865         second pass of closing an image, free it.
2866
2867 2009-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
2868
2869         * reflection.c (mono_generic_class_get_object): Assert if this is ever called.
2870
2871         * reflection.c (mono_reflection_register_with_runtime): Only register dynamic
2872         types in type_hash.
2873
2874         * reflection.c (resolve_object): Call ensure_complete_type on the inflated field.
2875
2876 2009-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
2877
2878         * reflection.c (mono_reflection_type_get_handle): Properly fail in case of a broken
2879         user type.
2880
2881         * reflection.c (mono_reflection_register_with_runtime): Throws in case a bad user type
2882         is used.
2883
2884 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2885
2886         * verify.c (mono_method_verify): The Unused opcodes produce an
2887         InvalidProgramException on .NET
2888
2889 2009-12-14  Sebastien Pouliot  <sebastien@ximian.com>
2890
2891         * loader.c (mono_method_get_header): Move assert after the verifier
2892         has been called on the method header.
2893
2894 2009-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
2895
2896         * object-internals.h: Remove useless field from MonoReflectionGenericClass.
2897
2898         * appdomain.c: Bump corlib version.
2899
2900 2009-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
2901
2902         To properly support user types, MonoGenericClass has to be used for regular, non SRE,
2903         types as well since otherwise generic instances would not return UT as arguments but
2904         their undelying system type.
2905
2906         * object-internals.h: Change field types of MonoGenericClass and *OnTypeBuilderInst
2907         to reflect the fact that they can have now multiple different types.
2908
2909         * reflection.c (mono_image_get_field_on_inst_token): Handle MonoField.
2910
2911         * reflection.c (mono_image_get_ctor_on_inst_token): Handle MonoCMethod.
2912
2913         * reflection.c (mono_image_get_method_on_inst_token): Handle MonoMethod.
2914
2915         * reflection.c (mono_reflection_register_with_runtime): Init super types
2916         if the image is not dynamic.
2917
2918         * reflection.c (mono_reflection_bind_generic_parameters): In case of a MonoGenericClass,
2919         check if the generic type definition is a TypeBuilder.
2920
2921         * reflection.c (mono_reflection_generic_class_initialize): If the generic type definition
2922         doesn't belong to a dynamic image, skip initialization.
2923
2924         * reflection.c (resolve_object): Properly handle *OnTypeBuilderInst types where their
2925         base definition is not a dynamic type.
2926
2927 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2928
2929         * object.c (mono_ldstr, mono_ldstr_metadata_sig): added calls to
2930         mono_profiler_string_allocation
2931
2932         * string-icalls.c (ves_icall_System_String_InternalAllocateStr):
2933         if string profiling is enabled, call
2934         mono_profiler_string_allocation
2935
2936         * profiler.h: added two MonoProfileFlags -
2937         MONO_PROFILE_IOMAP_EVENTS and MONO_PROFILE_STRING_ALLOC as well as
2938         installation functions for the hooks below.
2939
2940         * profiler-private.h, profiler.c: added two hooks:
2941         mono_profiler_string_allocation called whenever a string is
2942         allocated by InternalAllocateStr and mono_profiler_iomap called
2943         whenever IOMAP code performs an adjustement on a file path.
2944
2945 Fri Dec 11 18:24:04 CET 2009 Paolo Molaro <lupus@ximian.com>
2946
2947         * boehm-gc.c: fixed race condition while getting the target of a
2948         disappearing link (bug #522233).
2949
2950 2009-12-10  Rodrigo Kumpera  <rkumpera@novell.com>
2951
2952         * class.c (mono_type_get_full): Produce warning instead of simply swallowing
2953         the error.
2954
2955 2009-12-10  Rodrigo Kumpera  <rkumpera@novell.com>
2956
2957         * reflection.c: Add mono_reflection_register_with_runtime icall to
2958         allow a MonoGenericClass to register itself as the managed mirror of
2959         a given generic instance.
2960         This is a temporary workaround until all MGC instantiation happens in
2961         managed code.
2962
2963         * object-internals.h: Ditto.
2964
2965         * icall-def.h: Ditto.
2966
2967 2009-12-10  Mark Probst  <mark.probst@gmail.com>
2968
2969         * sgen-gc.c (find_in_remsets): Also search the generic store
2970         remsets.
2971
2972 2009-12-10  Mark Probst  <mark.probst@gmail.com>
2973
2974         * sgen-gc.c: Don't access class names in debugging code when
2975         unloading a domain, because they might not be valid anymore.
2976
2977 2009-12-10  Mark Probst  <mark.probst@gmail.com>
2978
2979         * domain.c, domain-internals.h: New function mono_domain_unset().
2980
2981         * appdomain.c (unload_thread_main): Detach the thread again at the
2982         end.
2983
2984         * threads.c: When a thread exists or is detached, unset its domain
2985         so that it's NULL when, for example, a pthread destructor runs.
2986
2987         * sgen-gc.c: Assert that there is no domain set after a thread is
2988         done.
2989
2990 2009-12-10  Mark Probst  <mark.probst@gmail.com>
2991
2992         * class.c (mono_generic_class_get_class),
2993         metadata.c (free_generic_class): Allocate generic MonoClass's from
2994         the image mempool, not via malloc.  The problem with malloc is
2995         that when unloading a domain those classes are freed before
2996         clearing the heap and SGen needs the classes.  Rewriting the
2997         unloading code to do the free later would be more work and there's
2998         no point in using malloc anyway.
2999
3000 2009-12-09  Sebastien Pouliot  <sebastien@ximian.com>
3001
3002         * loader.c (mono_method_signature): Always call mono_loader_unlock 
3003         before returning.
3004
3005 2009-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3006
3007         * metadata-verify.c: Add mono_verifier_verify_string_signature to check
3008         user string blobs.
3009
3010         * verify-internals.h: Add new function to the internal API.
3011
3012         * verify.c (do_ldstr): Call into mono_verifier_verify_string_signature to
3013         check if it's a valid string.
3014
3015         * object.c (mono_ldstr): Ditto.
3016
3017         Fixes #561943.
3018
3019 2009-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3020
3021         * icall.c (ves_icall_GetCurrentMethod): Drop all generic arguments
3022         from a method before returning it. This is the expected behavior.
3023
3024 2009-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3025
3026         * reflection.c (inflate_method): Handle the case of a regular system type.
3027
3028 2009-12-08  Mark Probst  <mark.probst@gmail.com>
3029
3030         * sgen-gc.c, sgen-pinning-stats.c, sgen-gray.c: More statistics
3031         gathering code.
3032
3033         * mempool.c, mempool-internals.h: New function
3034         mono_mempool_get_bytes_allocated().
3035
3036         * Makefile.am: sgen-pinning-stats.c added.
3037
3038 2009-12-08  Mark Probst  <mark.probst@gmail.com>
3039
3040         * sgen-gc.c (create_allocator): Only use the fast path if the
3041         object size is within the small object size limit.
3042
3043 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3044
3045         * sgen-gc.c: Make sure section->data is aligned to 8 bytes by
3046         possibly adding padding to sizeof (GCMemSection).
3047
3048 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3049
3050         * sgen-gc.c (mono_gc_wbarrier_nostore): Skip the remset if the
3051         reference is not in the nursery.
3052
3053 2009-12-07  Rodrigo Kumpera  <rkumpera@novell.com>
3054
3055         * class.c (mono_class_from_typeref): Bounds check idx against the 
3056         assemblyref table.
3057
3058 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3059
3060         * sgen-gc.c, sgen-pinning.c: When pinning, make only one pass
3061         through the potential roots, then sort the results and find the
3062         pinned objects from there.
3063
3064         * Makefile.am: sgen-pinning.c added.
3065
3066 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3067
3068         * sgen-gc.c: Record generic stores in specialized remset buffers.
3069
3070 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3071
3072         * sgen-gc.c: Make pinned chunks the same size as major heap
3073         sections, and align them as well, so that we can check whether an
3074         object is in a pinned chunk or a major section in constant time.
3075
3076 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3077
3078         * sgen-gc.c (build_nursery_fragments): Don't leak fragments.
3079
3080 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3081
3082         * sgen-gc.c: Make all major heap sections the same size (currently
3083         128k) and allocate them on aligned addresses.  Small heap sections
3084         give us better granularity with pinned objects - we can free up
3085         much more memory.
3086
3087 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3088
3089         * string-icalls.c (ves_icall_System_String_GetLOSLimit): Debug
3090         output removed.
3091
3092 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3093
3094         Applied patch from Laurent Etiemble (laurent.etiemble@gmail.com).
3095
3096         * mono/metadata/assembly.c: When opening an assembly image, pass the real
3097         names in addition to the runtime generated one.
3098
3099         * mono/metadata/image.h: Add a function to take the real name of the assembly
3100         image.
3101
3102         * mono/metadata/image.c: If a real name has been passed to load an assembly,
3103         use it instead of the runtime generated one.
3104
3105         Code is contributed under MIT/X11 license.
3106
3107 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3108
3109         * marshal.c (emit_marshal_vtype): Do the klass == date_time_class checks
3110         before the other checks to prevent problems if the DateTime class is blittable.
3111         Hopefully fixes #559600.
3112
3113 2009-12-05  Mark Probst  <mark.probst@gmail.com>
3114
3115         * string-icalls.c, string-icalls.h, icall-def.h: New icall that
3116         returns the largest string length that will not be put into the
3117         LOS.
3118
3119         * sgen-gc.c, gc-internal.h: New function that returns the largest
3120         object size that will not be put into the LOS.
3121
3122         * appdomain.c: Bump corlib version.
3123
3124 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3125
3126         * class-internals.h: Add MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
3127
3128         * generic-sharing.c: Handle MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
3129
3130 2009-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3131
3132         * reflection.c (inflate_method): Fix signature.
3133
3134         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Reflect change
3135         in managed code.
3136
3137 2009-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3138
3139         * reflection.c (inflate_method): Make this method work with TypeBuilder as well.
3140
3141 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3142
3143         * sgen-gc.c: Abstract to-space handling.
3144
3145 2009-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
3146
3147         * loader.c (find_method_in_class): Ignore methods with broken signatures.
3148
3149         Fixes #559906.
3150
3151 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3152
3153         * sgen-gc.c: Only add references from outside the nursery to
3154         within the nursery to the global remset list.
3155
3156 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3157
3158         * appdomain.c (create_exceptions): Set the domain temporarily if
3159         necessary to avoid cross-domain references.
3160
3161 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3162
3163         * verify.c (get_stack_type): Return that the type is invalid instead of
3164         asserting.
3165
3166         * verify.c (mono_method_verify): Verify that all locals and arguments
3167         have valid stack types.
3168
3169         Fixes #559913.
3170
3171 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3172
3173         * verify.c (mono_method_verify): Bounds check the filter offset. Make all
3174         bounds checking overflow aware.
3175
3176         Fixes #559910.
3177
3178 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3179
3180         * verify.c (do_invoke_method): Check for invalid method signatures.
3181
3182         Fixes #553450.
3183
3184 2009-12-02  Jb Evain  <jbevain@novell.com>
3185
3186         * appdomain.c (MONO_CORLIB_VERSION): bump.
3187         * icall-def.h (get_base_definition): renamed to get_base_method
3188         and add a boolean argument indicating we want the original
3189         method definition, or the immediate base method.
3190         * icall.c: apply the get_base_definition to get_base_method change.
3191
3192 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3193
3194         * class.c (mono_class_setup_fields): Fail an enum without an instance field.
3195
3196         Fixes #558042.
3197
3198 Wed Dec 2 16:35:49 CET 2009 Paolo Molaro <lupus@ximian.com>
3199
3200         * class.c: remove asserts for invalid type token in
3201         mono_class_name_from_token(), mono_assembly_name_from_token() and
3202         mono_class_create_from_typedef () (fixes bug #553318).
3203
3204 Wed Dec 2 15:48:19 CET 2009 Paolo Molaro <lupus@ximian.com>
3205
3206         * metadata.c, class.c, loader.c: remove assert after bsearch() for
3207         incorrect assemblies (bug #553322).
3208
3209 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3210
3211         * metadata.c (mono_metadata_inflate_generic_inst): Add MonoError parameter.
3212
3213         * metadata-internals.h: Change signature of mono_metadata_inflate_generic_inst. 
3214
3215         * class.c (inflate_generic_type): Use new version of mono_metadata_inflate_generic_inst.
3216
3217         * class.c (inflate_generic_context): Ditto.
3218
3219         * loader.c (method_from_methodspec): Ditto.
3220
3221         Fixes #558230.
3222
3223 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3224
3225         * class.c (mono_type_retrieve_from_typespec): Use MonoError machinery to report errors.
3226
3227         * class.c (mono_class_create_from_typespec): Ditto.
3228
3229         * class.c (mono_class_get_full): Fix for change on the above 2 functions.
3230
3231         * class.c (mono_type_get_full): Fix for change on the above 2 functions.
3232
3233         Fixes #558184.
3234
3235 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3236
3237         * verify.c (mono_class_has_default_constructor): Check fror broken signatures.
3238
3239         * verify.c (verify_delegate_compatibility): Ditto.
3240
3241         * verify.c (do_newobj): Ditto.
3242
3243         Fixes #558046.
3244
3245 2009-12-02  Mark Probst  <mark.probst@gmail.com>
3246
3247         * sgen-gc.c: Use a gray queue instead of requiring that gray
3248         objects are in a contiguous region.
3249
3250         * sgen-gray.c: The gray queue implementation.
3251
3252         * Makefile.am: sgen-gray.c added.
3253
3254 2009-12-02  Mark Probst  <mark.probst@gmail.com>
3255
3256         * appdomain.c: When unloading a domain, zero its static data and
3257         perform a minor collection when using SGen.  That will get rid of
3258         all the remsets pointing into that domain's static data.
3259
3260         * sgen-gc.c: Allow remsets into static data.  By doing this we
3261         need less checks so we're more efficient.
3262
3263 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3264
3265         * verify.c (mono_method_verify): Check for catch clauses with broken
3266         types.
3267
3268         Fixes #558465.
3269
3270 2009-12-01  Jb Evain  <jbevain@novell.com>
3271
3272         * class.c (make_generic_param_class): set the namespace of
3273         the generic parameter class from its owner, if available.
3274
3275 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3276
3277         * verify.c (code_bounds_check): Do proper overflow checking.
3278
3279         * verify.c (mono_method_verify): The number of switch entries is
3280         an unsigned int. Properly bounds check it.
3281
3282         Fixes #558594.
3283
3284 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3285
3286         * metadata.c: Kill mono_metadata_get_param_attrs_checked. Add
3287         mono_metadata_method_has_param_attrs which only checks if a given param
3288         list has a non zero flags entry.
3289
3290         * metadata.c (mono_metadata_get_param_attrs): Add param_count parameter
3291         to inform how many params should we expect to decode.
3292
3293         * loader.c (mono_method_signature): Use mono_metadata_method_has_param_attrs
3294         as it's faster than mono_metadata_get_param_attrs.
3295
3296         * metadata-internals.h: Fix mono_metadata_get_param_attrs signature and
3297         add mono_metadata_method_has_param_attrs.
3298
3299 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3300
3301         * class.c (mono_class_setup_vtable_general): Check for mono_method_get_vtable_slot
3302         failures.
3303
3304         * class.c (mono_method_get_vtable_slot): Don't assert if the computed method slot
3305         is -1 but its class is broken.
3306
3307         Fixes #558522.
3308
3309 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3310
3311         * metadata.c: Introduce mono_metadata_get_param_attrs_checked which checks
3312         for parameter overflow.
3313
3314         * metadata.c (mono_metadata_parse_method_signature_full): Use checked version
3315         of mono_metadata_get_param_attrs.
3316
3317         * metadata-internals.h: Add mono_metadata_get_param_attrs_checked to the internal
3318         API.
3319
3320         * loader.c (mono_method_signature): Use checked version of mono_metadata_get_param_attrs.
3321
3322 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3323
3324         * class.c (mono_class_setup_fields): Check for fields with broken types.
3325
3326         Fixes #558741.
3327
3328 2009-11-28  Rodrigo Kumpera  <rkumpera@novell.com>
3329
3330         * reflection.c (ensure_generic_class_runtime_vtable): Split this function in 2
3331         so we can avoid calling ensure_runtime_vtable multiple times for the GTD during
3332         its TypeBuilder::CreateType ().
3333
3334         * reflection.c (ensure_generic_class_runtime_vtable): Avoid initializing interfaces
3335         if not needed.
3336
3337         * reflection.c: Every time we change the interface array, set interfaces_packed to NULL
3338         to make setup_interface_offsets happy.
3339
3340         * reflection.c (remove_instantiations_of_and_ensure_contents): Fix instances again as corlib
3341         compilation now works.
3342
3343 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
3344
3345         * appdomain.c (create_exceptions): New helper function extracted from
3346         mono_runtime_init () to precreate objects used during exception handling.
3347         (mono_runtime_init): Call it.
3348         (mono_domain_create_appdomain_internal): Ditto. Fixes #555264.
3349
3350 2009-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3351
3352         * reflection.c (remove_instantiations_of_and_ensure_contents): Temp hack to fix corlib
3353         compilation until the proper one is found.
3354
3355 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
3356
3357         * class.c (mono_class_setup_vtable_general): Cache the result of
3358         get_virtual_methods () since it can be slow because of the metadata
3359         optimization.
3360
3361         * metadata-internals.h (_MonoImage): Change 'method_cache' to a GHashTable
3362         from a MonoValueHashTable for now, since the later is based on an earlier
3363         version of hpj's internal probing code and seems to have serious collision
3364         issues.
3365
3366         * loader.c (mono_get_method_full): Update after the change above.
3367
3368 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3369
3370         * class-internals.h (MonoCachedClassInfo): Add 'is_generic_container' field.
3371
3372 2009-11-26  Rodrigo Kumpera  <rkumpera@novell.com>
3373
3374         * reflection.c (get_field_on_inst_generic_type): Try to fallback using the field from
3375         the GTD instead of the DGC instead of crashing.
3376
3377         * reflection.c (ensure_generic_class_runtime_vtable): Only reinflate stuff that is
3378         required. Inflate fields if needed.
3379
3380         * reflection.c (remove_instantiations_of): Ensure generic instances are properly
3381         finished. Renamed.
3382
3383 2009-11-26  Rodrigo Kumpera  <rkumpera@novell.com>
3384
3385         * class.c (check_interface_method_override): Check for NULL signatures and fail
3386         the type.
3387
3388         * debug-helpers.c (mono_signature_get_desc): Return a fixed string for NULL signatures.
3389
3390         Fixes #553428.
3391
3392 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3393
3394         * class.c (mono_class_get_virtual_methods): Call decode_row_col to obtain
3395         the MONO_METHOD_FLAGS column instead of decoding the whole row.
3396
3397 2009-11-25  Rodrigo Kumpera  <rkumpera@novell.com>
3398
3399         * loader.c (field_from_memberref): Resolve the class first then the field
3400         signature. Remove a lot of duplicated code and make sure we don't pass valid
3401         values to mono_loader_set_error_field_load.
3402
3403         Fixes #553306.
3404
3405 2009-11-25  Rodrigo Kumpera  <rkumpera@novell.com>
3406
3407         * class.c (inflate_generic_type): Change code to use new signature of
3408         mono_error_set_bad_image.
3409
3410         Fixes #558124.
3411
3412 2009-11-25  Sebastien Pouliot  <sebastien@ximian.com> 
3413
3414         * verify.c (mono_method_verify): Don't free ctx.params items if 
3415         we aborted while inflating the ctx.locals. Complete previous fix
3416
3417 2009-11-25  Sebastien Pouliot  <sebastien@ximian.com>
3418
3419         * verify.c (mono_method_verify): Use the uninflated type name, 
3420         when the inflated is null, to report errors. Also take care when
3421         freeing, not to free everything since, in case of an error, some
3422         stuff would be copies (i.e. not allocated by the function itself)
3423         Fix bug #558145
3424
3425 2009-11-24  Rodrigo Kumpera  <rkumpera@novell.com>
3426
3427         * verify.c (stack_push, stack_pop, stack_pop_safe): Assert if we underflow
3428         or overflow. The caller must have done this check explicitly. This guard us
3429         from accessing invalid memory.
3430
3431         * verify.c (do_push_static_field): Check for stack overflow.
3432
3433         Fixes #553333.
3434
3435 2009-11-24  Rodrigo Kumpera  <rkumpera@novell.com>
3436
3437         * loader.c (find_method_in_class): Don't crash if the signature cannot
3438         be resolved.
3439
3440         * metadata.c (mono_metadata_parse_generic_param): Return NULL instead
3441         of asserting for the case of invalid params.
3442
3443         Fixes #553304.
3444
3445 2009-11-24  Sebastien Pouliot  <sebastien@ximian.com>
3446
3447         * image.c (mono_image_load_module): Fix crash when a bad assembly
3448         has no module at all (fix bug #553412) and also replace the 
3449         g_assert with a return NULL (documented return value for failure)
3450
3451 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
3452
3453         * debug-helpers.c (mono_type_get_desc): Handle typedbyref.
3454
3455 2009-11-23  Miguel de Icaza  <miguel@novell.com>
3456
3457         * file-io.c: Change FindFirst/FindNext/FindClose API to return the
3458         file attribute to managed code and avoid doing the mask/attribute
3459         checks here. 
3460
3461 2009-11-22  Miguel de Icaza  <miguel@novell.com>
3462
3463         * file-io.c: Surface a smart FindFirst/FindNext/FindClose API to
3464         the managed world.
3465
3466         * icall-def.h: New entry points.
3467         
3468 2009-11-19  Mark Probst  <mark.probst@gmail.com>
3469
3470         * process.c: Don't put references to managed objects into a
3471         g_ptr_array.
3472
3473 2009-11-18  Sebastien Pouliot  <sebastien@ximian.com>
3474
3475         * class.c (can_access_internals): Allow CoreCLR to participate in
3476         allowing (or not) [InternalsVisibleTo] between assemblies.
3477         * security-core-clr.c|h: Make sure that only trusted code (a 
3478         superset of platform code) can access the internals of platform
3479         code.
3480
3481 Mon Nov 16 16:28:11 CET 2009 Paolo Molaro <lupus@ximian.com>
3482
3483         * reflection.c: use the correct base class to get the virtual method
3484         "get_UnderlyingSystemType" and speed up the icall. Fixes bug #555013.
3485
3486 2009-11-16  Sebastien Pouliot  <sebastien@ximian.com>
3487
3488         * security-core-clr.c (get_caller_no_reflection_related): 
3489         [Mono]Type.InvokeMember is outside System.Reflection[.Emit] but
3490         it's still reflection and must be filtered correctly.
3491
3492 2009-11-16  Mark Probst  <mark.probst@gmail.com>
3493
3494         * object.c (compute_class_bitmap): Fix for large bitmaps.
3495
3496 2009-11-15  Zoltan Varga  <vargaz@gmail.com>
3497
3498         (mono_gc_get_suspend_signal): Fix the build with a system libgc.
3499
3500         * boehm-gc.c (mono_gc_base_init): Applied patch from DKoushik K. Dutta (
3501         koush@koushikdutta.com). Disable GC_no_dls on android.
3502
3503 2009-11-12  Mark Probst  <mark.probst@gmail.com>
3504
3505         * sgen-gc.c (find_tlab_next_from_address): Handle the case where
3506         tlab_next points outside the TLAB because the allocator was
3507         interrupted.
3508
3509 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3510
3511         * reflection.c (mono_image_module_basic_init): Handle exceptions correctly.
3512
3513 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3514
3515         * object-internals.h: Change signature for mono_string_to_utf8_image.
3516
3517         * object.c (mono_string_to_utf8_image): Change signature to take a MonoError
3518         argument.
3519
3520         * reflection.c: Take care of mono_string_to_utf8_image change and avoid raising
3521         exceptions due to mono_string_to_utf8.
3522
3523 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3524
3525         * object-internals.h: Change signature for mono_string_to_utf8_mp.
3526
3527         * object.c (mono_remote_class): Make sure all resources are released before
3528         raising an exception.
3529
3530         * object.c (mono_print_unhandled_exception): Avoid raising an exception.
3531
3532 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3533
3534         * mono-perfcounters.c (network_get_impl): Change variable initialization
3535         ordering to fix potential memory leak in case of exceptions.
3536
3537         * mono-perfcounters.c (mono_perfcounter_create): Properly handle badly
3538         encoded strings.
3539         
3540 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3541
3542         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): Change
3543         variable initialization ordering to fix potential memory leak in case
3544         of exceptions.
3545
3546 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3547
3548         * icall.c (mono_ArgIterator_Setup): Remove the MONO_ARCH_REGPARMS stuff, its not
3549         needed.
3550
3551 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3552
3553         * appdomain.c: Fix shadow path code to better deal with exceptions.
3554
3555 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3556
3557         * appdomain.c: Use checked version of mono_string_to_utf8 to avoid raising an
3558         exception in the middle of the runtime code.
3559
3560 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3561
3562         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): Don't
3563         leak memory with broken envvar value.
3564
3565 2009-11-06  Mark Probst  <mark.probst@gmail.com>
3566
3567         * reflection.c (mono_reflection_setup_internal_class): Because
3568         nested classes are not added to the name cache, we must put them
3569         in the reflection_info_unregister_classes list.
3570
3571 2009-11-05  Sebastien Pouliot  <sebastien@ximian.com>
3572
3573         * class.c: When CoreCLR is enabled don't call mono_init_com_types
3574         if MONO_CLASS_IS_IMPORT return true unless the type reside in 
3575         platform (trusted) code. Instead we return a TypeLoadException to
3576         be thrown later. This is the exception thrown by Silverlight 2 if
3577         a type, inside application (user) code is marked with [ComImport]
3578
3579 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3580
3581         * icall.c (ves_icall_System_Diagnostics_Debugger_IsAttached_internal): Call
3582         mono_is_debugger_attached () too.
3583
3584         * mono-debug.c (mono_is_debugger_attached): New helper function.
3585         (mono_set_is_debugger_attached): Ditto.
3586
3587 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3588
3589         * object-internals.h: Add mono_string_to_utf8_checked.
3590
3591         * object.c: Implement mono_string_to_utf8_checked.
3592
3593 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3594
3595         * class.c: Add missing check for load errors after every
3596         call to mono_class_setup_fields
3597
3598         Fixes #552282.
3599
3600 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3601
3602         metadata-verify.c (verify_tables_schema): Fix the error message.
3603
3604 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3605
3606         * metadata.c: Change event table schema to use TDOR for event type
3607         as this is what it's meant to be.
3608
3609         * metadata.c (mono_metadata_compute_size): Change MONO_TABLE_ASSEMBLYPROCESSOR
3610         to MONO_TABLE_ASSEMBLYREFPROCESSOR, which is table that has a MONO_MT_TABLE_IDX
3611         entry.
3612
3613         * metadata.c (mono_metadata_compute_size): Trim MT_TABLE_IDX of code that no
3614         longer makes sense: remove MONO_TABLE_EVENT and remove checks for non-existent
3615         rows in MONO_TABLE_GENERICPARAM.
3616
3617         Fixes #552289.
3618
3619 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3620
3621         * class.c (mono_image_add_to_name_cache): Assert on duplicate
3622         insertion.
3623
3624         * reflection.c (mono_reflection_setup_internal_class): Avoid
3625         registering a gc root the same MonoClass multiple times.
3626         Don't register nested types on the global scope as they should
3627         not be available there.
3628
3629 2009-11-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3630
3631         * culture-info-tables.h: regenerated.
3632
3633 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3634
3635         * debug-helpers.c: avoid g_strdup() in mono_type_full_name().
3636
3637 2009-11-04  Sebastien Pouliot  <sebastien@ximian.com>
3638
3639         * string-icalls.c|h: Remove string internal calls that are not 
3640         used anymore by the class libraries.
3641         * icall.c: Remove System_Reflection_FieldInfo_internal_from_handle
3642         which is not used in the class librairies.
3643         * icall-def.h: Update tables.
3644
3645 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3646
3647         * class.h: Move mono_class_inflate_generic_type_checked...
3648
3649         * class-internals.h: to here and make it internal. We don't want to
3650         further expose MonoGenericContext. 
3651
3652 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3653
3654         * verify.c (mono_method_verify): Improve error message.
3655
3656 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3657
3658         * reflection.c (fieldref_encode_signature): If field_image is NULL then
3659         the token is already properly encoded. Fixs 4.0 build.
3660
3661 2009-11-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3662
3663         * locales.c (construct_number_format): Check if the number index is
3664         valid before trying to use it, if not, just return.
3665         
3666 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3667
3668         * marshal.c (mono_marshal_get_runtime_invoke): Don't reset abort exceptions,
3669         since that loses the abort state. Fixes #539394.
3670
3671 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3672
3673         * marshal.c (mono_marshal_get_native_wrapper): For icall wrappers, add an
3674         explicit this argument to the call signature.
3675         (mono_marshal_get_icall_wrapper): Ditto.
3676
3677 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3678
3679         * reflection.c (fieldref_encode_signature): Add new field_image parameter
3680         to indicate which assembly to use when resolving a custom-mod.
3681
3682         Fixes handling of volatile fields used across assemblies as reported in #551513.
3683
3684 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3685
3686         * loader.c: Improve error messages.
3687
3688 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3689
3690         * class.c (mono_class_setup_methods): Only give a slot for virtual methods
3691         of interfaces. Fixes IKVM.
3692
3693         * class.c (mono_class_setup_vtable_general): Improve debug spew.
3694
3695 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3696
3697         * verify.c (verifier_inflate_type): Return the inflated type on success.
3698
3699 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3700
3701         * debug-mono-symfile.c (check_line): Fix the handling of IL offset 0.
3702
3703         * threads.c (mono_thread_attach): Call the profiler thread start callback.
3704
3705         * object-internals.h (_MonoThreadInternal): Add a 'flags' field.
3706
3707         * threads.c (build_wait_tids): Ignore threads which have the DONT_MANAGE
3708         flag set.
3709
3710         * profiler.c: Add new profiler callbacks for runtime invoke.
3711
3712         * object.c (mono_runtime_invoke): Call the runtime invoke callbacks.
3713
3714 2009-11-01  Mark Probst  <mark.probst@gmail.com>
3715
3716         * sgen-gc.c: Keep track of the reason for a major collection and
3717         write it to the heap-dump file.
3718
3719 2009-10-31  Miguel de Icaza  <miguel@novell.com>
3720
3721         * threads.c: refactor the code that initializes the
3722         thread_start_args into a reusable function and use this in the two
3723         methods that start up threads.
3724
3725 2009-10-31  Zoltan Varga  <vargaz@gmail.com>
3726
3727         * appdomain.c (mono_domain_try_unload): Applied patch from Romain Tartière.
3728         Fix returning when WaitForSingleObjectEx returns WAIT_IO_COMPLETION.
3729
3730 2009-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3731
3732         * mono-perfcounters.c: add the "_Total" instance for CPU counters.
3733         Until now, we only had the per-cpu(core) counters.
3734
3735 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3736
3737         * gc-internal.h, boehm-gc, sgen-gc.c, null-gc: Add
3738         mono_gc_get_suspend_signal(), which returns the suspend signal
3739         number used by the GC.
3740
3741 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3742
3743         * threads.c (start_wrapper): Avoid an assert if thread_start_args () is NULL.
3744
3745         * threads.c (start_wrapper): Call mono_profiler_thread_start () later after
3746         signalling start_notify.
3747
3748 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
3749
3750         * appdomain.c: do not test the st_mode field for shadow-copies.
3751         Fixes bug #545276.
3752
3753 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
3754
3755         * threadpool.[ch]: added hooks for thread start/finish and item
3756         processing begin/end. For monotouch use only.
3757
3758 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3759
3760         * threads.c (mono_thread_get_name): New helper function.
3761
3762         * reflection.c (resolve_object): Set handle_class for strings too.
3763         (mono_reflection_create_custom_attr_data_args): New helper function to decode
3764         a cattr blob into a set of arrays and structures without creating the custom
3765         attributes themselves.
3766         (create_custom_attr_data): Simplify using create_custom_attr_data_args.
3767
3768         * mono-debug.c (mono_debug_il_offset_from_address): New helper function.
3769
3770         * debug-mono-symfile.c (mono_debug_symfile_get_line_numbers): New helper
3771         function.
3772
3773 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3774
3775         * verify.c: Replace calls to mono_class_inflate_generic_type with
3776         mono_class_inflate_generic_type_checked. Fixes #480005.
3777
3778 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3779
3780         * class.c (mono_class_inflate_generic_type_with_mempool): Clear the error
3781         object since not all paths lead to callees initing it.
3782
3783 2009-10-23  Alp Toker  <alp@nuanti.com>
3784
3785         Fix embedding API breakage from r144688. mono-compiler.h is an internal
3786         header and should not be shipped:
3787
3788         * class.h: Back out MONO_DEPRECATED change. Currently depends on config.h
3789         which is specific to the mono build. Not going to work.
3790
3791 2009-10-23  Sebastien Pouliot  <sebastien@ximian.com>
3792
3793         * security-manager.c: Report if core-clr is active from
3794         ves_icall_System_Security_SecurityManager_get_SecurityEnabled
3795         to allow Moonlight BCL to behave appropriately (both in browser
3796         and outside, e.g. smcs)
3797
3798 2009-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
3799
3800         * mono-config.c: ignore UTF-8 BOM and report parser errors.
3801         Fixes bug #549108.
3802
3803 2009-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3804
3805         * class.c: fix typo.
3806
3807 2009-10-22  Rodrigo Kumpera  <rkumpera@novell.com>
3808
3809         * class-internals.h: Change signature of mono_class_inflate_generic_type_with_mempool to take
3810         a MonoError parameter.
3811
3812         * class.h: Mark mono_class_inflate_generic_type deprecated, add new mono_class_inflate_generic_type_checked
3813         version that can does proper error handling.
3814
3815         * class.c (inflate_generic_type): Add a MonoError parameter. Don't assert on error, use new mono error machinery.
3816
3817         * class.c (mono_class_inflate_generic_type_with_mempool): Add new MonoError parameter.
3818
3819         * class.c, generics-sharing.c: Changes to handle mono_class_inflate_generic_type_with_mempool new signature.
3820
3821 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
3822
3823         * debug-helpers.c (dis_one): Fix the disassembly of empty strings when
3824         NO_UNALIGNED_ACCESS is defined.
3825
3826 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3827
3828         * marshal.c (mono_string_builder_to_utf16): Applied patch from
3829         Hib Eris  <hib@hiberis.nl>. Return empty string for empty string builders.
3830         Fixes #549173.
3831
3832 2009-10-22  Mark Probst  <mark.probst@gmail.com>
3833
3834         * sgen-gc.c: Shorten sections whenever possible.
3835
3836 2009-10-22  Mark Probst  <mark.probst@gmail.com>
3837
3838         * sgen-gc.c: Use our portable semaphore #defines.
3839
3840 2009-10-22  Mark Probst  <mark.probst@gmail.com>
3841
3842         * sgen-gc.c: A debug option for dumping the heap layout to a file
3843         after each collection.
3844
3845 2009-10-21  Mark Probst  <mark.probst@gmail.com>
3846
3847         * sgen-gc.c: Make managed write barriers atomic via
3848         thread-restarts.
3849
3850 2009-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3851
3852         * verify.c (verify_delegate_compatibility): Properly verify delegate creation of static
3853         methods. Fixes #543021.
3854
3855 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
3856
3857         * socket-io.[ch]: fix VS build.
3858
3859 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
3860
3861         * icall-def.h:
3862         * socket-io.[ch]: implemented SendFile.
3863
3864 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
3865
3866         * class.c (mono_class_create_from_typedef): Initialize class->element_class
3867         before the interfaces to avoid crashes later if class initialization fails.
3868         Fixes #548417.
3869
3870         * marshal.c (emit_marshal_vtype): Implement byref marshalling of DateTime.
3871         Fixes #548276.
3872
3873 2009-10-20  Marek Safar  <marek.safar@gmail.com>
3874
3875         * domain.c: Bump 4.0 version.
3876
3877 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3878
3879         * assembly.c (mono_assembly_load_reference): Fix leak when 'status'
3880         code is known. (parse_public_key) Remove duplicate (unneeded) NULL
3881         check since 'pubkey' can't be NULL at this stage
3882         * icall.c (ves_icall_System_Array_FastCopy): Add comment about
3883         the check. (ves_icall_Type_GetInterfaceMapData) Remove duplicate
3884         initialization of 'iter'
3885
3886 2009-10-16  Bill Holmes  <billholmes54@gmail.com>
3887
3888         * cominterop.c : Search the interface parts of vtable to find 
3889           method matches.  Fixes 547030.
3890
3891         Code is contributed under MIT/X11 license.
3892
3893 2009-10-15 Gonzalo Paniagua Javier <gonzalo@novell.com>
3894
3895         * marshal.c: BeginInvoke cannot be called on multicast delegates with
3896         multiple targets. Fixes bug #574426.
3897
3898 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3899
3900         * profiler.h: Put here the definition of
3901         MONO_PROFILER_MAX_STAT_CALL_CHAIN_DEPTH
3902         (and fix the build...).
3903
3904 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3905
3906         * profiler.c, profiler.h, profiler-private.h:
3907         Added support for different ways of getting call chains in stat mode.
3908
3909 2009-10-12  Mark Probst  <mark.probst@gmail.com>
3910
3911         * object.c, object-internals.h: New function for computing the
3912         size of an array, factored out of mono_array_new_full().  Use
3913         SGen's functions for allocating arrays and vectors.
3914
3915         * sgen-gc.c, gc-internal.h: Special functions for allocating
3916         arrays and vectors without race conditions.  A managed array
3917         allocator method.
3918
3919         * boehm-gc.c, null-gc.c: Don't provide a managed array allocator.
3920
3921 2009-10-12  Mark Probst  <mark.probst@gmail.com>
3922
3923         * object.c, object.h, icall.c: Write barriers do the copying now,
3924         as well, so no need for an additional memcpy.
3925
3926         * sgen-gc.c: Lock when storing remsets.  Do the memory
3927         copying/moving in the write barriers.
3928
3929         * null-gc.c, boehm-gc.c: Write barriers must copy here, too.
3930
3931         * reflection.c: Added an assert.
3932
3933 2009-10-12  Mark Probst  <mark.probst@gmail.com>
3934
3935         * threads.c, process.c: A few missing write barriers.
3936
3937 2009-10-12  Joel W. Reed <joelwreed@gmail.com>
3938
3939         * mono-perfcounters.c, mono-perfcounters-def.h: Add
3940         network performance counters for bytes sent per second, bytes
3941         received per second, and bytes total per second.
3942
3943         Code is contributed under MIT/X11 license.
3944
3945 2009-10-09  Mark Probst  <mark.probst@gmail.com>
3946
3947         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
3948         Fix warning.
3949
3950 2009-10-09  Mark Probst  <mark.probst@gmail.com>
3951
3952         * threads.c, object-internals.h, object.c: Move code for
3953         transferring an object to a different domain (via
3954         serialization/remoting) to object.c.
3955
3956         * object.c (call_unhandled_exception_delegate): If the exception
3957         is in a different domain than the delegate, transfer the exception
3958         to that domain.
3959
3960 2009-10-07  Zoltan Varga  <vargaz@gmail.com>
3961
3962         * marshal.c (emit_marshal_vtype): Emit marshalling of DateTime to OLE DATE.
3963         Fixes #322934.
3964
3965 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3966
3967         * domain.c (DEFAULT_RUNTIME_VERSION): Change this to v2.0.
3968
3969 2009-10-06  Mark Probst  <mark.probst@gmail.com>
3970
3971         * object.c (mono_method_return_message_restore): Handle the case
3972         where the argument is an instance of a generic type.  Fixes
3973         #544446.
3974
3975 2009-10-06  Mark Probst  <mark.probst@gmail.com>
3976
3977         * object.c (set_value): Write barrier fix - we must pass the
3978         count, not the size.
3979
3980 2009-10-05  Zoltan Varga  <vargaz@gmail.com>
3981
3982         * domain.c (mono_init_internal): Print a useful error message when encountering
3983         an old mscorlib, instead of crashing. Fixes #544307.
3984
3985 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3986
3987         * appdomain.c (copy_app_domain_setup): Fix a warning.
3988
3989         * debug-helpers.c (dis_one): Ditto.
3990
3991 2009-10-04  Mark Probst  <mark.probst@gmail.com>
3992
3993         * domain-internals.h, appdomain.c: The AppDomainSetup is copied
3994         into the new domain, instead of referencing the original one.
3995
3996         * marshal.c, marshal.h: Make mono_marshal_xdomain_copy_value()
3997         non-static.
3998
3999         * appdomain.c: Corlib version bump.
4000
4001 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
4002
4003         * threadpool.c: one more...
4004
4005 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
4006
4007         * threadpool.c: forgot a LeaveCriticalSection when telling the idle
4008         threads to die because we're shutting down. delgate5.exe works again.
4009
4010 2009-10-01  Bill Holmes  <billholmes54@gmail.com>
4011
4012         * cominterop.c (mono_marshal_free_ccw_entry): Updating the
4013           ccw_interface_hash table when a ccw is finalized.
4014
4015         Code is contributed under MIT/X11 license.
4016
4017 2009-09-30  Mark Probst  <mark.probst@gmail.com>
4018
4019         * assembly.c, domain.c, image.c, metadata-internals.h: Split
4020         domain and image unloading into two steps.  We must do this
4021         because clearing the domain in SGen requires the class metadata to
4022         be intact, but we need to free the mono_g_hash_tables in case a
4023         collection occurs during domain unloading and the roots would trip
4024         up the GC.
4025
4026 2009-09-30  Mark Probst  <mark.probst@gmail.com>
4027
4028         * object-internals.h: Remove serialized culture fields from
4029         MonoInternalThread.
4030
4031         * icall-def.h, thread-types.h, threads.c: Remove serialized
4032         culture icalls.
4033
4034         * appdomain.c: Corlib version bump.
4035
4036 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
4037
4038         * marshal.c (emit_marshal_object): Emit out marshalling of stringbuilders.
4039         Fixes #543133.
4040
4041 2009-09-30  Mark Probst  <mark.probst@gmail.com>
4042
4043         * sgen-gc.c: Try to shorten the new section after a major
4044         allocation to avoid ever-growing sections.
4045
4046 2009-10-13  Martin Baulig  <martin@ximian.com>
4047
4048         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
4049         `MONO_DEBUGGER_EVENT_TRAMPOLINE' into
4050         `MONO_DEBUGGER_EVENT_OLD_TRAMPOLINE' and added a new
4051         `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
4052
4053         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 4.
4054
4055 2009-09-29 Gonzalo Paniagua Javier <gonzalo@novell.com>
4056
4057         * threadpool.c: fixed the order in which 'completed' and the wait
4058         handle, if any, are set.  Fixes bug #542933 and delegate2.exe
4059         No need to use the wait_handle field of ASyncCall. Make sure the
4060         threadpool is active when adding a job or queueing an idle thread.
4061
4062 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
4063
4064         * object.c (mono_unhandled_exception): Fix a crash if there is no main thread.
4065
4066         * threads.c (build_wait_tids): Fix a crash if there is no main thread, like
4067         when using --compile-all.
4068
4069 2009-09-27  Mark Probst  <mark.probst@gmail.com>
4070
4071         * metadata.c (free_generic_class): Unregister the field_objects
4072         roots if we're using SGen.
4073
4074 2009-09-27  Mark Probst  <mark.probst@gmail.com>
4075
4076         * reflection.c (mono_dynamic_image_free): Deregister the GC root
4077         for GenericParamTableEntry.gparam.
4078
4079 2009-09-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
4080
4081         * marshal.c: don't create the handle when calling. It is created later
4082         if needed.
4083
4084 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4085
4086         * sgen-gc.c: Warning fixes.
4087
4088 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4089
4090         * sgen-gc.c: New debug option "xdomain-checks", which scans the
4091         whole heap for cross-domain references before each collection.
4092
4093         * sgen-scan-object.h: The scan action can now use SCAN to scan the
4094         object.
4095
4096         * threadpool-internals.h, threadpool.c: New function
4097         mono_thread_pool_is_queue_array() for checking whether a given
4098         array is used as a (cross-domain) queue by the thread pool code.
4099
4100 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4101
4102         * sgen-gc.c: New function mono_gc_scan_for_specific_ref() which
4103         searches the whole heap for objects containing a specific
4104         reference.  Only for debugging.
4105
4106 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4107
4108         * appdomain.c (MONO_CORLIB_VERSION): Bumped.
4109
4110         * icall-def.h, threads.c, threads-types.h: New icalls for copying
4111         byte arrays between domains.
4112
4113 2009-09-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
4114
4115         * threadpool.c:
4116         * class-internals.h:
4117         * mono-perfcounters-def.h:
4118         * mono-perfcounters.c:
4119         -There is a list of idle threads
4120         -Each of those idle threads wait on their own WaitHandle instead
4121         of all of them using the same semaphore. When a new work item is
4122         added, the job is assigned directly to an idle thread or a newly
4123         created one if possible and then the handle for that thread is
4124         signaled. Compare that to the current approach where all the
4125         threads in the pool compete to dequeue a job from the same
4126         queue.
4127         -New struct ThreadPool that brings together the bunch of static
4128         variable for each threadpool (IO and regular).
4129         -New performance counters: # of items added and its rate per
4130         threadpool. The rate will be used later, perhaps together with
4131         other perf. counters, to decide when idle threads should exit.
4132
4133 2009-09-25  Jonathan Chambers  <joncham@gmail.com>
4134
4135         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal): 
4136         Fix typo on Windows build.      
4137         (ves_icall_System_Net_Sockets_Socket_Accept_internal): Fix typo on Windows build.
4138         
4139         Code is contributed under MIT/X11 license.
4140
4141 2009-09-25  Mark Probst  <mark.probst@gmail.com>
4142
4143         * object-internals.h: The Thread class is split up into Thread and
4144         InternalThread now.  We have exactly one InternalThread per
4145         thread, and at most one Thread per appdomain per thread.  Most
4146         data is stored in InternalThread.  All InternalThread objects live
4147         in the root domain.
4148
4149         * class-internals.h: Add internal_thread_class to MonoDefaults.
4150
4151         * appdomain.c (mono_domain_unload), attach.c (receiver_thread),
4152         domain.c, gc.c, icall-def.h, monitor.c, object.c, sgen-gc.c,
4153         socket-io.c, threadpool.c, thread-types.h, threads.c: Changes
4154         resulting from the split of the Thread class.
4155
4156         * gc-internal.h: Prototype for new function for checking whether a
4157         thread is the finalizer thread.
4158
4159         * appdomain.c: Corlib version bump.
4160
4161 2009-09-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4162
4163         * appdomain.c|h: Add a mono_domain_try_unload method which is
4164         equivalent to mono_domain_unload, except that it returns an exception
4165         instead of throwing it. Make mono_domain_unload use the
4166         mono_domain_try_unload method to avoid code-duplication.
4167
4168 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
4169
4170         * debug-helpers.c (dis_one): Avoid unaligned accesses on platforms where that is
4171         a problem.
4172
4173 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
4174
4175         * marshal.c (emit_ptr_to_object_conv): Generate an exception instead of
4176         aborting when a conversion is not implemented.
4177
4178 2009-09-23  Miguel de Icaza  <miguel@novell.com>
4179
4180         * verify.c: when comparing culture strings, use g_ascii_strcmp
4181
4182         * assembly.c (mono_public_tokens_are_equal): Change g_strcasecmp
4183         when comparing public key tokens to use memcmp on 16 bytes.   I do
4184         not believe this ever worked as advertised in the past.
4185
4186         The standard Public Key is 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00
4187         which would have always failed earlier.
4188
4189 2009-06-25  Miguel de Icaza  <miguel@novell.com>
4190
4191         * gc.c: Raise a NullArgumentException if the object passed is
4192         null.
4193
4194 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
4195
4196         * image.c (mono_image_close): Atomically decrement the reference count and
4197         remove the image from the hash tables, to prevent another thread from seeing a
4198         dying MonoImage. Fixes #541194.
4199
4200 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4201
4202         * threadpool.c: actually use the minimum number of 'completion ports'
4203         (for us is just a potential worker thread).
4204
4205 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4206
4207         * threadpool.c: remove ares_htable. It does not make sense any more
4208         since the same objects are now stored in GC-tracked arrays while they are
4209         in the queue.
4210
4211 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4212
4213         * threadpool.c: increase the minimum length of the queues to 128.
4214         Remove warning.
4215
4216 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
4217
4218         * marshal.c (mono_marshal_get_string_ctor_signature): New internal function to
4219         return the modified signature used by string ctors.
4220
4221 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
4222
4223         * marshal.c (mono_marshal_get_runtime_invoke_dynamic): New internal function
4224         to return a runtime-invoke wrapper which uses DYN_CALL to call the wrapped
4225         method, to be used by full-aot.
4226
4227 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
4228
4229         Since the runtime supports lazy initialization of a type's vtable and this can cause a type
4230         to fail, we need to ensure that the vtable is properly initialized at spots were the type must
4231         be known to be good.
4232
4233         * class.c (mono_class_init): Fail array types if their element type fails initialization
4234         as well.
4235
4236         * object.c (mono_class_create_runtime_vtable): Fail array types if their element type fails
4237         initialization, additionally we request the element_type vtable to be initialized as well.
4238
4239         This is fine and should not increase the working set in any meaningful way since it's reasonable
4240         to assume       that most code will create an array and eventually populate it, which will require the
4241         type's vtable to be initialized.
4242
4243         * loader.c (field_from_memberref): Add a comment for a possibly useless mono_class_init call.
4244
4245 2009-09-17  Atsushi Enomoto  <atsushi@ximian.com>
4246
4247         * normalization-tables.h : regenerated.
4248
4249 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
4250
4251         * mono-debug.c (mono_debug_add_method): Increase the size of the buffer,
4252         a leb128 encoding can take up to 5 bytes.
4253
4254 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
4255
4256         * class.c (verify_class_overrides): Remove useless argument.
4257
4258         * class.c (mono_class_setup_vtable_general): Move the overrides check to happen
4259         before interface enumeration as this is no longer required.
4260
4261 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
4262
4263         * class.c: New function mono_class_is_assignable_from_slow that is safe to be
4264         used under mono_class_init context. This functions avoid any code path that
4265         calls mono_class_init, which leads it to be slow as some things like the interface
4266         bitmap are not available.
4267
4268         * class.c (verify_class_overrides): Use mono_class_is_assignable_from_slow instead
4269         of it's own broken version. Fixes the verifier part of #538588.
4270
4271         * class-internals.h: Export mono_class_is_assignable_from_slow as part of the internal
4272         API.
4273
4274 2009-09-15  Mark Probst  <mark.probst@gmail.com>
4275
4276         * class.c (mono_class_init): Always set an exception in a class if
4277         vtable setup fails.  Fixes #538577.
4278
4279         * generic-sharing.c: Raise an exception if mono_class_vtable()
4280         returns NULL.
4281
4282 2009-09-13  Zoltan Varga  <vargaz@gmail.com>
4283
4284         * marshal.c (mono_marshal_get_runtime_invoke): Don't share instance 
4285         methods of vtypes, as they could be incorrectly shared with static methods
4286         taking an IntPtr argument.
4287
4288 2009-09-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
4289
4290         * domain.c:
4291         * object.c:
4292         * class-internals.h: renamed waithandle_class to
4293         manualresetevent_class.
4294         * marshal.c: propagate the exception if a remoting BeginInvoke call
4295         fails.
4296
4297 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4298
4299         * object.c: Properly handle vtable failures.
4300
4301 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4302
4303         * socket-io.c: Assert on vtable failure.
4304
4305         * mono-mlist.c: Assert on vtable failure.
4306
4307 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4308
4309         * marshal.c: Assert on vtable failure.
4310
4311 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4312
4313         * icall.c: Properly handle vtable failures.
4314
4315 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4316
4317         * debug-helpers.c (mono_class_describe_statics): Properly handle vtable failures.
4318
4319 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4320
4321         * cominterop.c (ves_icall_System_ComObject_CreateRCW): Property handle vtable failures.
4322
4323         * console-unix.c (do_console_cancel_event): Same.
4324
4325 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4326
4327         * class-internals.h: Add mono_class_vtable_full function that allows control
4328         if an exception should be raised or not.
4329
4330         * object.c (mono_class_vtable): Call into mono_class_vtable_full. Fix this function
4331         to do what its documentation say, that is to return NULL and set exception_type on
4332         failure.
4333
4334         * object.c (mono_class_create_runtime_vtable): Add new raise_on_error parameter
4335         and change the code to honor it.
4336
4337 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4338
4339         * verify.c: Fix typo in error message.
4340
4341 2009-09-10  Sebastien Pouliot  <sebastien@ximian.com>
4342
4343         * security-core-clr.c: Fix default_platform_check so it can run
4344         the runtime coreclr tests (without an infinite recursion when
4345         throwing an exception).
4346
4347 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4348
4349         object.c (mono_delegate_ctor_with_method): Guard against null method.
4350
4351 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4352
4353         * marshal.c (mono_marshal_get_xappdomain_dispatch): Add an assert
4354         that should be replaced with error handling later.
4355
4356 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4357
4358         * marshal.c (mono_delegate_end_invoke): Fix warning.
4359
4360 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4361
4362         * loader.c (mono_field_from_token): Properly handle invalid
4363         dynamic tokens.
4364
4365 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4366
4367         * pedump.c (verify_image_file): Skip types that can't be
4368         decoded.
4369
4370 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4371
4372         * verify.c: Look for recursive valuetypes only against the
4373         type been initialized as this is a lot simpler and works.
4374
4375 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4376
4377         * verify.c: Ensure that fields are properly loaded before
4378         checking them.
4379
4380 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
4381
4382         * object.c (mono_object_get_virtual_method) : Call 
4383           mono_cominterop_get_invoke if the object is a COM object.
4384
4385         Code is contributed under MIT/X11 license.
4386
4387 2009-09-09  Rodrigo Kumpera  <rkumpera@novell.com>
4388
4389         * verify.c: Check for recursive valuetype definitions.
4390
4391 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
4392
4393         Use inheritance-aware interface offsets. Inherited types use the same offsets
4394         of their parents. This reduce offset duplication in case more than one type in
4395         the inheritance tree explicitly implements the same interface.
4396
4397         This also removes a source of vtable bubbles found in #532409. An abstract type
4398         isn't required to provide abstract methods to all interfaces it implements, which
4399         resulted in a bubble with the previous scheme as the child would get a non-full
4400         vtable from its parent. We fail all concrete types with vtable bubbles, so this
4401         should be fixed.
4402
4403         This change causes an increase of 1.7% in vtable memory usage for IronPython pystone but
4404         it's expected to not cause any significant increase beyond that.
4405
4406         * class.c (setup_interface_offsets): Compute super class iface offsets
4407         first to force sharing.
4408
4409         * class.c: Add VTABLE_SELECTOR macro to the vtable debug macros to help
4410         dumping only the relevant ones.
4411
4412         * class.c (mono_class_setup_vtable_general): Give newslot, non final, virtual
4413         methods a new slot regardless if they belong to an interface or not. This allows
4414         an inherited type to override the iface method separately from the class one.
4415
4416 2009-09-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
4417
4418         * threadpool.c: make the Sleep() alertable to prevent delays exiting
4419         applications that take less than 2s to execute.
4420         Bug #524984 fixed.
4421
4422 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
4423
4424         * object-internals.h (MonoRuntimeCallbacks): Add a 'get_runtime_build_info' callback.
4425
4426         * object.c (mono_get_runtime_callbacks): New helper function to return
4427         the runtime callbacks.
4428
4429         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Use the result of
4430         mono_get_runtime_build_info () as the display name.
4431         
4432 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4433
4434         * marshal.c (emit_marshal_array): Call conv.ovf.i on the array parameter
4435         argument, since NEWARR expects a native int. Fixes #481559.
4436
4437 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4438
4439         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Guard
4440         against broken SRE methods.
4441
4442 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4443
4444         * class.c (mono_type_get_full): Don't call mono_metadata_free_type on
4445         a NULL variable. Abort early on failure.
4446
4447 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4448
4449         * class.c (can_access_type): Fail visibility test for non nested
4450         types with nested visibility.
4451
4452 2009-09-02  Sebastien Pouliot  <sebastien@ximian.com>
4453
4454         * assembly.c (parse_public_key): Avoid allocating (and not 
4455         freeing) the public key array when it's not requested by the 
4456         caller.
4457         * threads.c (mono_thread_manage, mono_thread_create_internal, 
4458         ves_icall_System_Threading_Thread_Thread_internal): Free 
4459         allocated memory on error.
4460
4461 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4462
4463         * icall.c, icall-def.h: Remove some dead code from early SRE changes.
4464
4465 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4466
4467         * class.c (mono_class_setup_fields): Remove duplicated local variable
4468         named gklass.
4469         Rename gklass to gtd to reflect the fact that it points to the generic
4470         type definition.
4471         Remove the duplicated call to mono_class_setup_fields on gtd and move
4472         the error check to the beginning.
4473
4474 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4475
4476         * marshal.c (mono_array_to_lparray): Do DISABLE_COM properly.
4477         Remove cruft of the previous patch.
4478
4479 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4480
4481         * metadata-verify.c (verify_method_table): Check for abstract + final.
4482         Fixes #534175.
4483
4484 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4485
4486         * verify.c (verify_class_fields): Check for duplicate fields.
4487
4488 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4489
4490         * metadata-verify.c: Verify the typeref table for duplicates.
4491
4492 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4493
4494         This reverts r140936 and properly handles interfaces with static methods. The
4495         right fix is to ensure vtables without bubles which is an easier to verify
4496         constraint. We should avoid such special cases as of the reverted patch as those
4497         only make the runtime more brittle.
4498
4499         * class.c (mono_class_setup_vtable_general): Revert previous change that handle
4500         static methods on interfaces.
4501
4502         * class.c (setup_interface_offsets): Use the number of virtual methods when
4503         calculating interface offsets instead of the number of methods. This way we
4504         avoid bubles on the layout.
4505
4506 2009-08-31  Rodrigo Kumpera  <rkumpera@novell.com>
4507
4508         * metadata-verify.c (verify_metadata_header): Some very smart
4509         obfuscators like to add extra stream headers. Ignore them.
4510
4511 2009-08-30  Zoltan Varga  <vargaz@gmail.com>
4512
4513         * class.c (mono_class_setup_vtable_general): Verify interfaces with static
4514         methods correctly.
4515
4516 2009-08-29  Rodrigo Kumpera  <rkumpera@novell.com>
4517
4518         * metadata-verify.c: Verify for duplicated types.
4519
4520 2009-08-28  Rodrigo Kumpera  <rkumpera@novell.com>
4521
4522         * metadata-verify.c (verify_typedef_table): Verify for nested types
4523         without an entry on the nested class table.
4524
4525 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4526
4527         * cominterop.c (cominterop_get_ccw): Applied patch from tom hindle
4528         <tom_hindle@sil.org>. Add locking around hash table accesses.
4529
4530 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4531
4532         * verify.c (mono_verifier_verify_class): Verify all interface if
4533         really are interfaces. Fixes #534184.
4534
4535 2009-08-27  Rodrigo Kumpera  <rkumpera@novell.com>
4536
4537         * pedump.c: Initialize all types during metadata validation so we report
4538         errors only detected as part of class initialization.
4539
4540 2009-08-26  Rodrigo Kumpera  <rkumpera@novell.com>
4541
4542         * metadata-verify.c (verify_method_table): PInvoke requires method to
4543         be static. Fixes #534189
4544
4545 2009-08-26  Zoltan Varga  <vargaz@gmail.com>
4546
4547         * threads.c (mono_thread_suspend_all_other_threads): Handle 'threads_starting_ip'
4548         being NULL.
4549
4550 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4551
4552         * class.c (mono_class_setup_vtable_general): Verify the resulting vtable
4553         for holes or bad methods. Fixes #525314.
4554
4555 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4556
4557         * class.c (setup_interface_offsets): Don't allocate slot
4558         for the same interface multiple times. This creates bubbles
4559         that waster space and make vtable verification harder.
4560
4561         The same interface get a slot multiple times since we need
4562         to get the closure of all implemented interfaces, which means
4563         the same interface is reported multiple times.
4564
4565 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4566
4567         * verify.c (mono_verifier_verify_class): Don't check the fields
4568         of generic instances since the context on which they got expanded
4569         might lead to false positives.
4570
4571         Such thing happens when a generic type is inflated in the context
4572         of a generic method and the inflated type of a field turns into a
4573         generic method argument, which causes the checking code to think
4574         it's an invalid class when it's not.
4575
4576 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4577
4578         * verify.c (mono_type_is_valid_in_context): Verify if type
4579         is NULL and remove duplicate test.
4580
4581 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4582
4583         * verify.c (mono_verifier_verify_class): Check fields for
4584         invalid generic arguments.
4585
4586 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4587
4588         * class.c (verify_class_overrides): Verify if for static
4589         and non virtual methods.
4590
4591 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4592
4593         * icaa.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor):
4594         Check for errors after retrieving the vtable.
4595
4596 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4597
4598         * class.c (mono_class_setup_vtable_general): Verify
4599         if method overrides are valid before processing them.
4600
4601 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4602
4603         * marshal.c (mono_array_to_lparray): Fix minimal build with
4604         cominterop disabled.
4605
4606         * marshal.c (mono_free_lparray): Same.
4607
4608 2009-08-21  Mark Probst  <mark.probst@gmail.com>
4609
4610         * threadpool.c (mono_thread_pool_init): Use mono_object_hash() as
4611         the hash function for the ares_htable.
4612
4613 2009-08-20  Rodrigo Kumpera  <rkumpera@novell.com>
4614
4615         * metadata-verify.c (verify_assembly_table): Accept 0x10 as a valid
4616         bit for assembly flags. MS is ok with it but there is no spec anywhere
4617         on its mean
4618
4619 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4620
4621         * class.c (mono_class_create_from_typedef): Emit profiler events
4622         in all cases.
4623
4624 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4625
4626         * icall.c (ves_icall_Type_GetMethodsByName): Don't leak loader errors.
4627         Release memory on failure.
4628
4629 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4630
4631         * class-internals.h: Add mono_metadata_load_generic_param_constraints_full
4632         to the internal API.
4633
4634         * metadata.c (get_constraints): Use a single-linked table as we don't
4635         traverse it backward. Fail and return FALSE if only of the contraint types
4636         is not found.
4637
4638         * metadata.c (mono_metadata_load_generic_param_constraints_full): Identical
4639         to mono_metadata_load_generic_param_constraints except for having a return value.
4640         This has to be done since the later is part of the public API.
4641
4642         * class.c (mono_class_create_from_typedef): Properly check the loading of constrains
4643         and fail the type.
4644
4645         * loader.c (mono_get_method_from_token): Properly check the loading of constraints
4646         and fail the method.
4647
4648 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4649
4650         * metadata-verify.c (is_valid_method_header): Add work-around to deal
4651         with MS broken behavior of emmitting EH section sizes without the
4652         header size added.
4653
4654 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4655
4656         * metadata.c (mono_type_create_from_typespec): Don't allocate image
4657         memory until we're sure that we'll need it. This avoids leaking for
4658         broken types or duplicated instantiation.
4659
4660 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4661
4662         * metadata-verify.c (is_valid_method_header): Fix stupid formating
4663         mistake.
4664
4665 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4666
4667         * metadata-verify.c (is_valid_method_header): Fix number of clauses
4668         and expected size calculation.
4669
4670 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4671
4672         * class.c (mono_class_get_field_idx): Add fixme for broken
4673         behavior for types with multiple fields with the same name.
4674         I would rather fix it, but have no idea on how to generate
4675         such artifact for testing.
4676
4677 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4678
4679         * verify.c (verifier_load_field): We should allow references to
4680         fields to be made using the generic type definition. It's up to
4681         the loader system to fail invalid ops.
4682
4683         * verify.c (get_boxable_mono_type): Only uninstantiated GTDs
4684         are invalid.
4685
4686 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4687
4688         * class.c: Fix usage of mono_metadata_interfaces_from_typedef_full.
4689
4690         * metadata-internals.h: Fix declaration of 
4691         mono_metadata_interfaces_from_typedef_full.
4692
4693         * metadata.c (mono_metadata_interfaces_from_typedef_full): Add extra
4694         heap_alloc_result parameter that controls if the result should be
4695         g_malloc'd.
4696
4697         * metadata.c (mono_metadata_interfaces_from_typedef): Let the resulting
4698         array be g_malloc'd and properly document this public API function.
4699
4700 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4701
4702         * cil-coff.h: Fix METHOD_HEADER_FORMAT_MASK to be 2 bits and
4703         remove METHOD_HEADER_TINY_FORMAT1.
4704
4705         * reflection.c: Remove reference to METHOD_HEADER_TINY_FORMAT1.
4706
4707         * metadata.c (mono_metadata_parse_mh_full): Kill tiny format1.
4708
4709         Both spec and MS uses only 2 bits to enumerate the kind of header.
4710         So given that 0x6 and 0x2 are equal under a 2 bits mask, tiny format1
4711         is superfluous, only used for tiny headers with odd code lengths.
4712
4713         This change also make sure that mono doesn't wronly interpret bit 2
4714         of fat header flags, which is currently reserved.
4715
4716 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4717
4718         * metadata.c (do_mono_metadata_parse_type): Do error
4719         checking for element types. Don't abort if presented
4720         with a broken type kind.
4721
4722 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4723
4724         * metadata.c (mono_metadata_parse_method_signature_full):
4725         Gracefully fail bad vararg signatures.
4726
4727 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4728
4729         * profiler.c:
4730         * class.c: Fix warnings for uninitialized variables.
4731
4732 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4733
4734         * icall.c: Fix _NSGetEnviron method declaration warning.
4735
4736 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4737
4738         * icall.c:
4739         * reflection.c: Make bitwise checks explicit.
4740
4741 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4742
4743         * debug-helpers.c:
4744         * marshal.c: Fix printf warnings.
4745
4746 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4747
4748         * reflection.c (encode_cattr_value): Fix a warning.
4749
4750 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4751
4752         * metadata.c (mono_metadata_parse_array_full): Fix memory leak
4753         of array bounds.
4754
4755 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4756
4757         * loader.c (mono_method_signature): Don't assert on broken
4758         signature. Print a more useful error message.
4759
4760 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4761
4762         * loader.c (mono_method_get_marshal_info): Assert if
4763         signature is invalid. Bounds check stores to the
4764         mspecs array;
4765
4766 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4767
4768         * loader.c (field_from_memberref): Fix warning.
4769
4770 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4771
4772         * loader.c (mono_method_get_param_names): Check if signature
4773         is null. Don't store beyond the size of the name array.
4774
4775 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4776
4777         * loader.c (mono_get_method_constrained): Check if signature
4778         is null.
4779
4780 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4781
4782         * loader.c (mono_loader_set_error_bad_image): Improve
4783         error messages.
4784
4785 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4786
4787         * loader.c (mono_get_method_full): Convert an assertion
4788         into a loader error.
4789
4790 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4791
4792         * class-internals.h, class.c: Better naming and documentation.
4793
4794 2009-08-17  Zoltan Varga  <vargaz@gmail.com>
4795
4796         * boehm-gc.c (mono_gc_add_weak_track_handle): Don't do any work if
4797         obj is NULL.
4798
4799 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4800
4801         * loader.c (mono_method_get_signature_full): Fail gracefully if signature
4802         parsing fails.
4803
4804 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4805
4806         * loader.c (mono_loader_error_prepare_exception): Handle missing field
4807         errors with no class set.
4808
4809         * loader.c (field_from_memberref): If the field signature is of the wrong
4810         type fail with a MissingFieldException instead of a BadImageException as
4811         this is the behavior observed on MS. 
4812
4813 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4814
4815         * loader.c (field_from_memberref): Don't crash if either the field
4816         signature or the typespec class are invalid.
4817
4818 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4819
4820         * verify.c (verifier_load_field): Don't allow field related
4821         ops to reference fields on generic type definition.
4822
4823 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4824
4825         * metadata-verify.c: Add new warning level for errors specified
4826         by ECMA 335 but that MS ignores.
4827
4828         * metadata-verify.c (verify_method_table): Make compiler controled
4829         visibility + (rt)specialname error a warning as MS ignores this. Ignoring
4830         this check is safe because the end result will only be some visibility
4831         exceptions been thrown.
4832
4833 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4834
4835         * verify.c (get_boxable_mono_type): Don't allow the
4836         use of the generic type definition on boxed type positions.
4837
4838         Fixes #531237.
4839
4840 2009-08-14  Mark Probst  <mark.probst@gmail.com>
4841
4842         * threadpool.c: Make sure no cross-domain references remain in
4843         ares_htable or the arrays that are thrown away when resizing.
4844
4845 2009-08-14  Mark Probst  <mark.probst@gmail.com>
4846
4847         * appdomain.c, metadata-internals.h, image.c: In MonoImage add a
4848         list of classes for which we have to unregister reflection_info
4849         with the GC and which are not in the namespace cache.
4850
4851         * reflection.c (mono_reflection_initialize_generic_parameter): Add
4852         the class to the list.
4853
4854 2009-08-14  Mark Probst  <mark.probst@gmail.com>
4855
4856         * domain.c (mono_domain_free): Unregister the GC roots in
4857         MonoDomain.
4858
4859 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
4860
4861         * reflection.c (mono_reflection_type_get_handle): Fix typo.
4862
4863 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
4864
4865         * class.c: Add mono_class_get_field_from_name_full which does
4866         the same as mono_class_get_field_from_name but does check field
4867         signature as well.
4868
4869         * class-internals.h: Export mono_class_get_field_from_name_full as
4870         part of the internal API.
4871
4872         * loader.c (field_from_memberref): Search fields by name and signature
4873         as it's valid to have two fields with same name but different types.
4874
4875         Fixes #528055.
4876
4877 2009-08-10  Rodrigo Kumpera  <rkumpera@novell.com>
4878
4879         * icall-def.h: Add a bunch of temporary icalls to MonoGenericClass.
4880
4881         * reflection.c (mono_reflection_type_get_handle): Handle MonoGenericClass.
4882
4883         * reflection.c (encode_cattr_value): Use mono_reflection_type_get_handle to encode
4884         System.Type.
4885
4886 2009-08-13  Zoltan Varga  <vargaz@gmail.com>
4887
4888         * gc.c (GCHandle_CheckCurrentDomain): Moved this here from icall.c.
4889
4890         * boehm-gc.c (mono_gc_add_weak_track_handle): Handle nulls.
4891
4892 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4893
4894         * sgen-gc.c, sgen-scan-object.h: Object scanning code factored out
4895         to sgen-scan-object.h, which can be included and parameterized via
4896         macros.
4897
4898         * Makefile.am: sgen-scan-object.h added.
4899
4900 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4901
4902         * gc.c: #define GC_dont_gc if we're compiling with SGen.
4903
4904 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4905
4906         * domain.c (mono_domain_free): Free a domain's mono_g_hash_tables
4907         before clearing a domain in the GC.
4908
4909 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4910
4911         * exception.c (mono_exception_from_name_domain): Actually create
4912         the exception in the specified domain.
4913
4914         * appdomain.c (mono_domain_create_appdomain_internal): Create the
4915         OutOfMemoryException a bit later so that the domain is inialized
4916         "enough" that it works.
4917
4918 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4919
4920         * threads.c (thread_cleanup): Clean up the cached_culture_info
4921         array to prevent cross-domain references.
4922
4923 Tue Aug 11 14:38:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4924
4925         * metadata.c: more documentation for MonoType accessors.
4926
4927 2009-08-11  Raja R Harinath  <harinath@hurrynot.org>
4928
4929         Fix incorrect size definitions where the tail array isn't a list
4930         of pointers
4931         * class-internals.h (MONO_SIZEOF_MARSHAL_TYPE): Use offsetof to
4932         define size.
4933         * domain-internals.h (MONO_SIZEOF_JIT_INFO): Likewise.
4934         * metadata.h (MONO_SIZEOF_TYPE): Likewise.
4935         * reflection.h (MONO_SIZEOF_CUSTOM_ATTR_INFO): Likewise.
4936
4937 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4938
4939         * reflection.h:
4940         * reflection.c: MONO_SIZEOF_CUSTOM_ATTR_INFO.
4941
4942 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4943
4944         * metadata.c:
4945         * loader.c:
4946         * metadata-internals.h:
4947         * method-builder.c:
4948         * reflection.c: use MONO_SIZEOF_METHOD_HEADER.
4949
4950 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4951
4952         * cominterop.c:
4953         * metadata.c:
4954         * metadata.h:
4955         * loader.c:
4956         * marshal.c:
4957         * reflection.c: #define for sizeof in MonoType and
4958         MonoMethodSignature.
4959
4960 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4961
4962         * domain.c:
4963         * domain-internals.h: add and use #define's instead of sizeof()
4964         for MonoJitInfo and MonoJitInfoTable.
4965
4966 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4967
4968         * object.c:
4969         * class.h: use #define instead of sizeof() for MonoRemoteClass.
4970
4971 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4972
4973         * metadata.c:
4974         * metadata.h:
4975         * object.c:
4976         * class-internals.h:
4977         * generic-sharing.c:
4978         * marshal.c: use a #define instead of sizeof() for a few
4979         structures that use a zero-length array.
4980
4981 2009-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
4982
4983         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Add new fields
4984         to handle inflated generic methods.
4985
4986         * appdomain.c: Bump corlib version.
4987
4988         * reflection.c (mono_image_get_method_on_inst_token): Handle generic method
4989         instances.
4990
4991         * reflection.c (fixup_method): Same
4992
4993         * reflection.c (resolve_object): Same.
4994
4995         * reflection.c (inflate_method): Replace a g_assert_not_reached with a
4996         g_error and a decent message.
4997
4998 2009-08-06  Massimiliano Mantione  <massi@ximian.com>
4999
5000         * bohem-gc.c (mono_gc_add_weak_track_handle): Get the domain
5001         from the object because it could not yet be available globally
5002         (it happens if the profiler tries to create a gchandle on the
5003         MonoThread object of a thread that is still registering itself
5004         with the runtime).
5005
5006 2009-08-04  Rodrigo Kumpera  <rkumpera@novell.com>
5007
5008         * reflection.c (mono_generic_class_get_object): Initialized the
5009         managed type arguments array.
5010
5011         * object-internals.h (MonoReflectionGenericClass): Add type_arguments field.
5012
5013         * appdomain.c: Bump corlib version.
5014
5015 2009-08-04  Zoltan Varga  <vargaz@gmail.com>
5016
5017         * threads.c (thread_cleanup): Free serialized_ui_culture_info. Fixes
5018         #527902.
5019
5020 2009-08-03  Zoltan Varga  <vargaz@gmail.com>
5021
5022         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
5023         Avoid a crash if synch_cs is not set.
5024         
5025         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
5026         Handle the case when the handle is 0.
5027
5028         * appdomain.c: Bump corlib version.
5029
5030 2009-08-02  Zoltan Varga  <vargaz@gmail.com>
5031
5032         * reflection.c (mono_type_get_object): Fix a warning.
5033
5034 2009-08-01  Mark Probst  <mark.probst@gmail.com>
5035
5036         * sgen-gc.c (mono_gc_wbarrier_value_copy): Don't compute the GC
5037         descriptor here.  We assume it's already been computed.
5038
5039         * generic-sharing.c (instantiate_other_info): Compute the GC
5040         descriptor for info type MONO_RGCTX_INFO_KLASS.
5041
5042 2009-08-01  Mark Probst  <mark.probst@gmail.com>
5043
5044         * reflection.c (mono_type_get_object): MonoDomain is an unmanaged
5045         type, so don't use MONO_OBJECT_SETREF to set a field.
5046
5047 2009-08-01  Mark Probst  <mark.probst@gmail.com>
5048
5049         * gc.c: We were missing one case where invoking a finalizer would
5050         not reset the domain.  Also, in the finalizer thread loop, assert
5051         that we're in the root domain.
5052
5053 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
5054
5055         * icall.c (ves_icall_MonoType_GetArrayRank): Throw ArgumentException
5056         if the type is not an array.
5057
5058 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
5059
5060         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Return the
5061         method bound to the declaring type of the method. Raise an exception
5062         if the type is not a generic param.
5063
5064 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
5065
5066         * class.c (print_unimplemented_interface_method_info): Print the
5067         full type name.
5068
5069         * class.c (mono_class_setup_vtable_general): When dealing with a
5070         generic instance first check if the generic type definition is
5071         not broken.
5072
5073 2009-02-11 Tom Hindke <tom_hindle@sil.org>
5074
5075         * marshal.c (mono_array_to_lparray): Implemented so managed object types are converted to native types.
5076
5077         * marshal.c: Added new method mono_free_lparray to free memory allocated by mono_array_to_lparray
5078
5079         * marshal.c (emit_marshal_array): call emit mono_free_lparray where approprate.
5080
5081         * marshal.c (conv_to_icall): added MONO_MARSHAL_FREE_LPARRAY case
5082
5083         * metadata.h (MonoMarshalConv enum): added MONO_MARSHAL_FREE_LPARRAY
5084
5085         Code is contributed under MIT/X11 license
5086
5087 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
5088
5089         * verify.c: Fix naming of stelem and ldelem.
5090
5091 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5092
5093         * generic-sharing.c: Replace the templates lock with the loader
5094         lock because of very hard to resolve deadlock issues.
5095
5096 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
5097
5098         * icall.c (ves_icall_Type_GetMethodsByName): Use 
5099         mono_class_get_vtable_size () instead of accessing klass->vtable_size
5100         directly. Fixes #525338.
5101
5102         * class.c (mono_class_get_vtable_size): New helper function.
5103
5104         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle_type): Fix the second argument, its a MonoType* not a MonoClass*. Check whenever
5105         the field belongs to the type. Fixes #525733.
5106
5107 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5108
5109         * sgen-gc.c: When we stop a thread and its stack top is not within
5110         its allocated stack (because it's in an altstack signal handler),
5111         restart it and stop it again, until it is.
5112
5113 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5114
5115         * sgen-gc.c: Take a thread's stack top and registers from the
5116         sigcontext in the suspend signal handler.
5117
5118         * sgen-gc.h, sgen-archdep.h, Makefile.am: Move arch-dependent
5119         stuff to sgen-archdep.h.
5120
5121         * gc.c, gc-internal.h: Remove the get_ip_from_sigctx installer and
5122         caller, because have code in sgen-archdep.h to acquire that data.
5123
5124 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
5125
5126         * profiler.c, profiler.h, profiler-private.h:
5127         Added support for keeping track of code chunks and buffers.
5128
5129 2009-07-29 Rodrigo Kumpera  <rkumpera@novell.com>
5130
5131         * metadata-verify.c: Fix endianness problems on decoding functions.
5132         Based on a patch by Ulrich Weigand <uweigand@de.ibm.com>
5133
5134 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
5135
5136         * icall.c (ves_icall_Type_make_array_type): Handle the new encoding
5137         schema for vectors and one dimension SZARRAY.
5138
5139 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
5140
5141         * reflection.c (mono_reflection_type_get_handle): Handle the new encoding
5142         schema for vectors and one dimension SZARRAY.
5143
5144 2009-07-27  Mark Probst  <mark.probst@gmail.com>
5145
5146         * icall-def.h, thread-types.h, threads.c: New separate icalls for
5147         Interlocked.(Compare)Exchange with object arguments, which invoke
5148         write barriers.
5149
5150 2009-07-26  Miguel de Icaza  <miguel@novell.com>
5151
5152         * icall.c (ves_icall_Type_GetNestedType): Throw an exception when
5153         passed invalid arguments.   Fixes another crasher in the
5154         Silverlight test suite.
5155
5156         * class.c (mono_class_array_element_size): Return 0 for the size
5157         of the class;  This fixes the crasher exposed by :
5158
5159         typeof (void).MakeArrayType ();
5160
5161         * icall.c (ves_icall_MonoType_GetEvent): Do not dereference method
5162         if there is no method to dereference.    Put all the code that
5163         depends on this inside the if (method) block.
5164
5165         This fixes the crasher exposed by Microsoft's Silvelright CLR test
5166         suite  ./Reflection/Emit/TypeBuilder/TypeBuilderGetEvent.exe
5167
5168         With this change, we pass the test.
5169         
5170         * reflection.c (mono_reflection_sighelper_get_signature_local):
5171         Only dereference the assembly if it has been set.    Fixes a
5172         crasher exposed by #525328
5173
5174 2009-07-25  Mark Probst  <mark.probst@gmail.com>
5175
5176         * sgen-gc.c, object.h, null-gc.c, boehm-gc.c, marshal.c: Really
5177         don't perform the store in mono_gc_wbarrier_generic_nostore().
5178         Remove the second argument (value), which is not needed.
5179
5180 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
5181
5182         * null-gc.c (mono_gc_wbarrier_generic_nostore): Define this to fix
5183         the build.
5184
5185         * boehm-gc.c: Ditto.
5186         
5187 2009-07-24  Mark Probst  <mark.probst@gmail.com>
5188
5189         * sgen-gc.c, marshal.c, object.h: Make the managed write barrier
5190         not perform the store itself.  Introduce
5191         mono_gc_wbarrier_generic_nostore(), which is the same as
5192         mono_gc_wbarrier_generic_store(), except it doesn't perform the
5193         store.
5194
5195 2009-07-24  Mark Probst  <mark.probst@gmail.com>
5196
5197         * icall.c (ves_icall_System_Array_SetGenericValueImpl):
5198         mono_gc_wbarrier_value_copy() doesn't perform the copy itself, so
5199         we still need the memcpy().
5200
5201 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5202
5203         * sgen-gc.c: Align array bounds calculation to mono_array_size_t
5204         so that big arrays are handled correctly.  Always use
5205         safe_object_get_size() to calculate array object sizes, which
5206         takes bounds into account.
5207
5208 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5209
5210         * sgen-gc.c (mono_gc_wbarrier_value_copy): Make sure the class's
5211         GC descriptor is computed before we use it.
5212
5213 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5214
5215         * icall.c (ves_icall_System_Array_SetGenericValueImpl): Use a
5216         write barrier if necessary.
5217
5218 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5219
5220         * icall-def.h, icall.c, thread-types.h: New separate icall for
5221         VolatileWrite(object&,object) that uses a write barrier.
5222
5223         * console-unix.c, file-io.c, icall.c, threads.c: Use write
5224         barriers in icalls which write to "ref" or "out" arguments.
5225
5226 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
5227
5228         * marshal.c (mono_marshal_get_runtime_invoke): Do the work done in the exception
5229         handler in a separate icall, to reduce the size of the wrappers.
5230
5231 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5232
5233         * metadata-verify.c (is_valid_typespec_blob): Fix error message.
5234
5235 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5236
5237         * metadata-verify.c (parse_field): Allow byref field.
5238
5239         * metadata-verify.c (parse_locals_signature): Allow byref locals.
5240
5241         * metadata-verify.c (is_valid_typespec_blob): Allow byref typespec.
5242
5243 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5244
5245         * verify.c (do_cast): Fail for any non reference type that isn't boxed.
5246         Fixes #522784.
5247
5248 2009-07-20  Robert Jordan  <robertj@gmx.net>
5249
5250         * cominterop.c (cominterop_get_managed_wrapper_adjusted):
5251         Fix invalid IL in valuetype handling (STOBJ must push the
5252         corresponding class). Fixes bug #523149.
5253
5254         Code is contributed under MIT/X11 license.
5255
5256 2009-07-20  Geoff Norton  <gnorton@novell.com>
5257
5258         * gc.c: Use proper semaphores where available on posix and darwin.
5259
5260 2009-07-19  Geoff Norton  <gnorton@novell.com>
5261
5262         * gc.c: Unnamed posix semaphores are broken on darwin-arm too.
5263
5264 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
5265
5266         * refletion.c (is_sre_usertype): Change name to is_usertype and
5267         invert it's result so it returns true if the type is an user type
5268         and not the opposite.
5269
5270         * reflection.c (is_*_type): Change all of those to use new macro
5271         check_corlib_type_cached that cached the type lookup so we don't
5272         need to do string comparisons all the type. Changed the signature
5273         to take a MonoClass instead.
5274
5275         * reflection.c: Change mono_image_create_token and resolve_object
5276         to use is_sre_* functions.
5277
5278 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5279
5280         * sgen-gc.c: Check for writes to the stack in the managed
5281         wbarrier as well.
5282
5283 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5284
5285         * sgen-gc.c: When a thread is unregistered, don't free its remsets
5286         but put them on a list which is processed with the other thread's
5287         remsets.
5288
5289 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5290
5291         * sgen-gc.c: Fix and enable the internal allocator instead of
5292         using malloc/free (which causes deadlocks).
5293
5294 2009-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
5295
5296         * refletion.c: Fix builds with SRE disabled by adding a minimal
5297         implementation of mono_reflection_type_get_handle.
5298
5299 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
5300
5301         * refletion.c: Make mono_reflection_type_get_handle non static.
5302
5303         * object-internals.h: Export mono_reflection_type_get_handle.
5304
5305         * icall.c (ves_icall_MonoGenericClass_InflateType): Resolve the
5306         unmanaged handle using mono_reflection_type_get_handle.
5307
5308 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
5309
5310         * refletion.c: Replace all reads of MonoReflectionType::type with
5311         calls to mono_reflection_type_get_handle. Only the functions that
5312         deal with constructing TypeBuilder::type have not been changed
5313         because they have to deal with NULL values.
5314
5315         This is a first step into supporting reflection types that don't
5316         map directly into their unmanaged counterpart.
5317
5318 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
5319
5320         * metadata-verify.c (parse_locals_signature): Don't complain
5321         on signature with zero locals since MS generates it and doesn't
5322         bother with.
5323
5324 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
5325
5326         * reflection.c (mono_image_get_array_token): Resolve return
5327         type using mono_reflection_type_get_handle.
5328
5329         * reflection.c (mono_image_get_array_token): Resolve array method
5330         parent type using mono_reflection_type_get_handle.
5331
5332 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
5333
5334         * reflection.c (mono_image_basic_init): Applied patch from
5335         <Dax@daxxfiles.net>. Set the public key token from the assembly
5336         builder. Fixes #518909.
5337
5338         * appdomain.c: Bump corlib version.
5339
5340 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
5341
5342         * class.c (mono_class_needs_cctor_run): Make this return false if
5343         the class has no cctor.
5344
5345 2009-07-13  Mark Probst  <mark.probst@gmail.com>
5346
5347         * sgen-gc.c: When the minor GC needs to allocate a new section,
5348         invoke the major GC afterwards.
5349
5350 2009-07-14  Bill Holmes  <billholmes54@gmail.com>
5351
5352         * process.c  (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal) :
5353           Applying the window_style field to the SHELLEXECUTEINFO struct.
5354
5355         Code is contributed under MIT/X11 license.
5356
5357 2009-07-13  Mark Probst  <mark.probst@gmail.com>
5358
5359         * sgen-gc.c: Fix the race condition in the unmanaged allocator by
5360         locking earlier.  Fix it in the managed allocator by making sure
5361         that no thread is stopped there before the GC runs.  If we do stop
5362         a thread there, we restart it and let it run a but, until it stops
5363         somewhere else.
5364
5365         * gc-internal.h, gc.c: Function for getting the IP from a signal
5366         context via a function registered by mini.
5367
5368 2009-07-11  Zoltan Varga  <vargaz@gmail.com>
5369
5370         * object-internals.h (MonoIntPtr): New structure describing a boxed
5371         IntPtr.
5372
5373         * object.c (mono_runtime_invoke_array): Handle ptr arguments and
5374         returns. Fixes #519953.
5375
5376         * marshal.c (mono_marshal_get_runtime_invoke): Handle pointer returns.
5377
5378 2009-07-09  Mark Probst  <mark.probst@gmail.com>
5379
5380         * class-internals.h, generic-sharing.c: New RGCTX info type for
5381         getting a remoting invoke with check wrapper.
5382
5383 2009-07-07  Geoff Norton  <gnorton@novell.com>
5384
5385         * icall-def.h: Fix the enable-minimal build.
5386
5387 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5388
5389         * object-internals.h: Add MonoReflectionDerivedType.
5390
5391         * reflection.c: Implement support for PointerType.
5392         Fixed tons of warnings.
5393
5394 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5395
5396         * object-internals.h: Add MonoReflectionByRefType.
5397
5398         * reflection.c: Implement support for ByRefType.
5399
5400 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5401
5402         * icall-def.h: Add System.Reflection.Emit.DerivedType::create_unmanaged_type.
5403
5404         * object-internals.h: Add MonoReflectionArrayType and
5405         mono_reflection_create_unmanaged_type.
5406
5407         * reflection.c: Implement support for ArrayType.
5408
5409 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5410
5411         * metadata-verify.c (is_valid_method_header): Parse EH block
5412         flags correctly.
5413
5414 2009-07-03  Mark Probst  <mark.probst@gmail.com>
5415
5416         * sgen-gc.c (finish_gray_stack): Set the to_space pointer after
5417         processing the disappearing links, and process disappearing links
5418         in a loop until no new objects are copied.
5419
5420 2009-07-03  Mark Probst  <mark.probst@gmail.com>
5421
5422         * object.c (handle_enum): Invoke the write barrier when copying
5423         value type instances.
5424
5425         * sgen-gc.c: Register remsets for unmanaged write barriers only
5426         when the address written to is actually on the heap.  This makes
5427         set_value() in object.c work without requiring that the result be
5428         on the heap.
5429
5430 2009-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
5431
5432         The runtime wrappers are all bound to a given type that must
5433         exist in the same image. For regular images we use the <Module>
5434         type, which is required to exist for all images.
5435
5436         The <Module> type can't be used for dynamic images because it
5437         might not exist at the time the wrapper is required, so we create
5438         a synthetic type to use instead.
5439
5440         The current code works because of the 2 stage setup of MonoClass,
5441         but once this is gone it will no longer work.
5442
5443         * icall-def.h: Add ModuleBuilder::set_wrappers_type.
5444
5445         * metadata-internals.h (MonoDynamicImage): Add wrappers_type.
5446
5447         * object-internals.h: Export mono_image_set_wrappers_type icall
5448         as part of the internal API.
5449
5450         * marshal.c (get_wrapper_target_class): If the image is dynamic,
5451         use MonoDynamicImage::wrappers_type instead of the <Module> type.
5452
5453         reflection.c: Add mono_image_set_wrappers_type qhixh sets the dynamic
5454         image wrappers_type to the provided value.
5455
5456 2009-07-01 Rodrigo Kumpera  <rkumpera@novell.com>
5457
5458         * appdomain.c (deregister_reflection_info_roots): No need
5459         to use the image lock here.
5460
5461 2009-07-02  Mark Probst  <mark.probst@gmail.com>
5462
5463         * sgen-gc.c (collect_nursery): Also scan from write-barrier roots.
5464
5465 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
5466
5467         * threads.c: Store the thread start argument in a hash table instead of
5468         registering it as a root, as libgc doesn't support unregistering roots
5469         under windows, leading to 'too many root sets' errors when many threads
5470         are created.
5471
5472         * gc.c (mono_gc_run_finalize): Avoid finalizing dynamic methods during
5473         shutdown, they can still be referenced by the other dying objects.
5474         Fixes #514506.
5475
5476 2009-06-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
5477
5478         * socket-io.c: DontLinger does not allow LingerOptions.
5479
5480 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5481
5482         * metadata-verify.c: The spec doesn't mention that it's possible to add
5483         custom attribute to a generic parameter. Fixed.
5484
5485 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5486
5487         * class.c (inflate_generic_type): Don't crash while trying to output a message
5488         on why we're aborting.
5489
5490 2009-06-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
5491
5492         * socket-io.c: DontLinger can take an int or a boolean too.
5493
5494 Fri Jun 26 17:00:04 CEST 2009 Paolo Molaro <lupus@ximian.com>
5495
5496         * gc.c: check for a null argument to SuppressFinalize () and
5497         ReRegisterForFinalize ().
5498
5499 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5500
5501         * loader.c (method_from_methodspec): Call into the verifier to check
5502         the signature.
5503
5504         * metadata-verify.c: Addmono_verifier_verify_methodspec_signature.
5505
5506         * verify-internals.h: Export mono_verifier_verify_methodspec_signature as
5507         part of the internal API.
5508
5509 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5510
5511         * metadata.c (mono_type_create_from_typespec): Call into the verifier to check
5512         the signature.
5513
5514         * metadata-verify.c: Add mono_verifier_verify_typespec_signature.
5515
5516         * verify-internals.h: Export mono_verifier_verify_typespec_signature as
5517         part of the internal API.
5518
5519 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5520
5521         * metadata.c (mono_metadata_parse_mh_full): Call into the verifier to check
5522         the signature.
5523
5524         * metadata-verify.c: Add mono_verifier_verify_standalone_signature. Fix
5525         blob verification.
5526
5527         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
5528         part of the internal API.
5529
5530 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5531
5532         * metadata-verify.c: Use is_valid_blob_object to verify blob validity
5533         when doing basic verification. 
5534
5535         This check must be done since the runtime peeks into signatures in much
5536         more places than it does decoding so it makes sense to ensure that all
5537         pointers to blob objects are well formed.
5538
5539 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5540
5541         * metadata-verify.c (is_valid_blob_object): Add extra minsize argument.
5542         Use proper overflow dectection. Fix usage of it.
5543
5544 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5545
5546         * loader.c (field_from_memberref): Call into the verifier to check
5547         the signature.
5548
5549         * loader.c (mono_method_get_signature_full): Same.
5550
5551         * loader.c (method_from_memberref): Same.
5552
5553         * metadata-verify.c: Add mono_verifier_verify_memberref_signature.
5554
5555         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
5556         part of the internal API.
5557
5558 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5559
5560         * threadpool.c (mono_thread_pool_add): If the domain is unloading
5561         or unloaded, still return an AsyncResult, but don't add it to the
5562         threadpool.
5563
5564 2009-06-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
5565
5566         * threads.c: fix missing colon when DEBUG is defined.
5567
5568 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5569
5570         * threadpool.c: Don't add new calls to a threadpool if the domain
5571         of the call is unloading or unloaded.  When dequeuing a job, null
5572         the reference in the queue.
5573
5574 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5575
5576         * sgen-gc.c (null_link_in_range): Add the dislink for the old
5577         generation if an object was moved.
5578
5579 2009-06-25  Sylvain Dupont <duposyl@gmail.com>
5580
5581         * cominterop.h cominterop.c marshal.c: Added support for marshalling out 
5582           parameters of type SAFEARRAY[VARIANT].
5583
5584         * reflection.c (encode_marshal_blob): Properly generate element type
5585           (SafeArraySubType marshal attribute option).
5586
5587         Code is contributed under MIT/X11 license.
5588
5589 Thu Jun 25 15:48:09 CEST 2009 Paolo Molaro <lupus@ximian.com>
5590
5591         * reflection.c: in mono_method_clear_object () really ensure all the
5592         objects are removed.
5593
5594 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5595
5596         * loader.c (mono_method_signature): Call into the verifier to check
5597         the method signature.
5598
5599         * metadata-verify.c (verify_method_table): Move signature verification
5600         to verify_method_table_full.
5601
5602         * metadata-verify.c: Add mono_verifier_verify_method_signature.
5603
5604         * verify-internals.h: Export mono_verifier_verify_method_signature as
5605         part of the internal API.
5606
5607 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5608
5609         * loader.c (mono_method_get_header): Call into the verifier to
5610         check the method header.
5611
5612         * metadata-verify.c: Add mono_verifier_verify_method_header.
5613
5614         * verify-internals.h: Export mono_verifier_verify_method_header as
5615         part of the internal API.
5616
5617 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5618
5619         * class.c (mono_class_find_enum_basetype): Call into the verifier to
5620         check the field signature. Replace an assert with an explicit check.
5621
5622         * class.c (mono_class_setup_fields): Call into the verifier to check
5623         the field signature.
5624
5625         * metadata-verify.c: Add mono_verifier_verify_field_signature.
5626
5627         * verify-internals.h: Export mono_verifier_verify_field_signature as
5628         part of the internal API.
5629
5630 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5631
5632         * class.c (mono_class_find_enum_basetype): Simplify this function
5633         by moving code outside of the loop and not decoding static fields.
5634
5635 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5636
5637         * metadata-verify.c (verify_typedef_table): Check the extends
5638         token here. Move to here a flags check from verify_typedef_table_full.
5639
5640 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
5641
5642         * metadata-verify.c (is_valid_method_header): Fix a warning.
5643
5644         * metadata-internals.h (MonoImage): Remove the unused 
5645         static_rgctx_invoke_wrapper_cache.
5646
5647         * image.c marshal.c: Ditto.
5648
5649 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5650
5651         * image.c (do_mono_image_load): Enable table data verification.
5652
5653 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5654
5655         * metadata-verify.c (is_valid_constant): Fix nullref check.
5656
5657 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5658
5659         * metadata-verify.c (is_valid_constant): Fix string bounds check.
5660
5661 2009-06-22  Mark Probst  <mark.probst@gmail.com>
5662
5663         * sgen-gc.c: Managed allocation with pthreads TLS.
5664
5665         * threads.c, threads-types.h: Functions for the JIT to tell the
5666         runtime whether it supports the MONO_TLS opcode.
5667
5668 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5669
5670         * metadata-verify.c (verify_param_table): Fix a crash for assemblies
5671         without methods.
5672
5673 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5674
5675         * metadata-verify.c (is_valid_constant): Fix the string length check.
5676         Use safe overflow checking. Add decent error messages.
5677
5678 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5679
5680         * metadata-verify.c: Move remaininh blob checks to the offline
5681         verification path.
5682
5683 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5684
5685         * metadata-verify.c: Move more blob checks to the offline verification
5686         path.
5687
5688 2009-06-22  Bill Holmes  <billholmes54@gmail.com>
5689
5690         * object-internals.h : Adding interrupt_on_stop field.
5691
5692         * threads.c (mono_thread_request_interruption) : On Windows exit the
5693           thread if interrupt_on_stop is set.
5694
5695         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
5696          Removing old interrupt logic and setting the interrupt_on_stop for the
5697          thread when calling accept.
5698
5699         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal) :
5700          setting the interrupt_on_stop for the thread when calling accept.
5701
5702         Contributed under MIT/X11 license.
5703
5704 2009-06-20  Martin Baulig  <martin@ximian.com>
5705
5706         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 3.
5707
5708 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
5709
5710         * appdomain.c (mono_try_assembly_resolve): Don't call managed code when
5711         running in no-exec mode.
5712
5713 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5714
5715         * metadata-verify.c (verify_method_table): Move header
5716         checking to verify_method_table_full.
5717
5718         * metata-verify.c (mono_verifier_verify_full_table_data):
5719         Call verify_method_table_full.
5720
5721 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5722
5723         * metadata-verify.c (verify_field_table): Move signature
5724         checking to verify_field_table_full.
5725
5726         * metata-verify.c (mono_verifier_verify_full_table_data):
5727         Call verify_field_table_full.
5728
5729 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5730
5731         * metadata-verify.c (verify_typedef_table): Move remaining
5732         stuff to verify_typedef_table_full.
5733
5734 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5735
5736         * metadata-verify.c: Kill is_corlib from VerifyContext.
5737         It is only used by the offline mode.
5738         So we better remove it from the runtime path.
5739
5740 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5741
5742         * metadata-verify.c: Add new mono_verifier_verify_full_table_data
5743         function that perform the offline metadata verification steps.
5744
5745         * metadata-verify.c (verify_typedef_table): Move some checks to
5746         verify_typedef_table_full and make it been called by new function
5747         mono_verifier_verify_full_table_data.
5748
5749         * pedump.c: Call mono_verifier_verify_full_table_data.
5750
5751         * verify-internals.h: Export mono_verifier_verify_full_table_data as
5752         part of the internal API.
5753
5754 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5755
5756         * metadata-verify.c (typedef_is_system_object): Fix System.Object
5757         check.
5758
5759         * metadata-verify.c (verify_implmap_table): Fix implmap invalid
5760         flags bits. SupportLastError was confused as bit 7 instead of 6.
5761
5762         * metadata-verify.c (verify_implmap_table): Fix import scope verification
5763         to check against the module ref table instead of module.
5764
5765         * metadata-verify.c (verify_implmap_table): Fix corlib check.
5766
5767         * pedump.c: Call mono_image_load_names.
5768
5769 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5770
5771         * image.c: Extract mono_image_load_names from do_mono_image_load.
5772
5773         * metadata-internals.h: Export mono_image_load_names as part of
5774         the internal API.
5775         
5776 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
5777
5778         * metadata.c (mono_metadata_cleanup): Free the generic method cache
5779         first, as it could reference data in the other caches.
5780
5781 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
5782
5783         * metadata-verify.c: Finished with method header verification.
5784
5785 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
5786
5787         * metadata-verify.c: Added more header verification code.
5788         Now only EH clauses are missing.
5789
5790 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
5791
5792         * marshal.c (get_runtime_invoke_type): Don't share primitive types
5793         for return values.
5794
5795 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
5796
5797         * metadata-verify.c: Initial method header verification.
5798
5799 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
5800
5801         * metadata-verify.c (verify_import_table): The IAT contents
5802         might end been patched by the windows DL when running with
5803         coree enabled.
5804
5805 2009-06-15 Rodrigo Kumpera  <rkumpera@novell.com>
5806
5807         * class.c (mono_class_from_typeref): If the enclosing type is not
5808         found return null instead of crashing. Fixes #508487.
5809
5810 2009-06-15  Atsushi Enomoto  <atsushi@ximian.com>
5811
5812         * normalization-tables.h : updated to the latest unicode charcter
5813           data.
5814         * appdomain.c : bump corlib version.
5815
5816 2009-06-14  Zoltan Varga  <vargaz@gmail.com>
5817
5818         * class.c (mono_class_from_name): Fix support for assembly references
5819         in the EXPORTEDTYPE table. Fixes #511704.
5820
5821 2009-06-13  Geoff Norton  <gnorton@novell.com>
5822
5823         * domain.c: Ensure that mono_domain_assembly_open actually opens the
5824         assembly in the target domain.
5825
5826 2009-06-12  Robert Jordan  <robertj@gmx.net>
5827
5828         * cominterop.c (cominterop_get_ccw): Increment mspec's SizeParamIndex
5829         because "this" of the managed signature has become an
5830         ordinary parameter in the unmanaged signature.
5831
5832 2009-06-12  Zoltan Varga  <vargaz@gmail.com>
5833
5834         * class-internals.h (struct _MonoGenericContainer): Add an 'image'
5835         field for owner-less generic containers.
5836
5837         * reflection.c (mono_reflection_initialize_generic_parameter): Set the
5838         image field of the owner-less generic containers created here.
5839
5840         * metadata.c (mono_metadata_load_generic_params): Ditto, the
5841         contain is ownerless until the caller sets its owner.
5842
5843         * metadata.c (type_in_image): Handle owner-less generic containers
5844         correctly.
5845         
5846 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
5847
5848         * image.c (mono_image_close): Support debug_assembly_unload for
5849         dynamic images too.
5850
5851 2009-06-11 Andrés G. Aragoneses  <aaragoneses@novell.com>
5852
5853         * class.c: Fix some typos in comments.
5854
5855 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
5856
5857         * reflection.c (add_custom_modifiers): Avoid reading invalid memory.
5858
5859         * threads.c (mono_thread_execute_interruption): Avoid creating the
5860         abort exception object while holding the synch_cs lock.
5861
5862 2009-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5863
5864         * metadata-verify.c: Verify basic cattr content.
5865
5866 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
5867
5868         * reflection.c (add_exported_type): Don't set the FORWARDER flag on
5869         nested types.
5870         
5871         * reflection.c (mono_image_fill_export_table_from_type_forwarders): Add
5872         support for nested types. Fixes #511704.
5873
5874 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5875
5876         * metadata-verify.c: Verify methodspec signatures.
5877
5878 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5879
5880         * metadata-verify.c: Verify typespec signatures.
5881
5882 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
5883
5884         * metadata.c (free_inflated_method): Call 
5885         mono_marshal_free_inflated_wrappers (), which was missed earlier.
5886
5887 2009-06-08  Miguel de Icaza  <miguel@novell.com>
5888
5889         * mono-config.c: Small change to report the PPC64/ILP32 model.
5890
5891 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5892
5893         * metadata-verify.c (parse_type): Check szarray.
5894
5895 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5896
5897         * metadata-verify.c (parse_type): Check fnptr.
5898
5899 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5900
5901         * metadata-verify.c (parse_type): Check generic instances.
5902
5903 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5904
5905         * metadata-verify.c (parse_type): Check array shape.
5906
5907 2009-06-05  Robert Jordan  <robertj@gmx.net>
5908
5909         * class.c (mono_class_create_from_typedef): Check only for
5910         mscorlib's System.Array.
5911
5912 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5913
5914         * metadata-verify.c (parse_type): Check pointer, class/valuetype
5915         and generic params. 
5916
5917         * metadata-verify.c (parse_field): Check the signature.
5918
5919 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5920
5921         * metadata-verify.c: Implement locals signature check.
5922
5923 2009-06-04  Marek Safar  <marek.safar@gmail.com>
5924
5925         * domain.c: Add .NET 4.0 Beta 1 version.
5926
5927 2009-06-04  Bill Holmes  <billholmes54@gmail.com>
5928
5929         * cominterop.c (cominterop_ccw_queryinterface): Fix for bug 499566.
5930           For QueryInterface on CCWs consider the base class
5931           interfaces as well.
5932
5933         Code is contributed under MIT/X11 license.
5934
5935 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
5936
5937         * wrapper-types.h: Delete STATIC_RGCTX_INVOKE.
5938
5939         * marshal.c (mono_marshal_ret_static_rgctx_invoke): Remove, no longer
5940         used.
5941
5942         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
5943         adding a static-rgctx invoke wrapper, it is done by the runtime trampolines.
5944
5945         * generic-sharing.c (inflate_other_data): Ditto.
5946         
5947 2009-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5948
5949         * metadata-verify.c: Implement property signature check.
5950
5951 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5952
5953         * sgen-gc.h: Register saving support for PPC.
5954
5955 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5956
5957         * sgen-gc.c: Fixed a pthread TLS screwup.
5958
5959 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5960
5961         * sgen-gc.c: Do TLS using pthread API if __thread keyword is not
5962         supported.
5963
5964 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5965
5966         * sgen-gc.c: Disable TLA and managed allocation if the __thread
5967         keyword is not supported.
5968
5969 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
5970
5971         * marshal.c metadata.c: Applied patch from Ulrich Weigand 
5972         <uweigand@de.ibm.com>: Free the wrappers of inflated generic methods when
5973         the inflated method is freed. Fixes #508389.
5974
5975         The code is contributed under the MIT/X11 license.
5976         
5977 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
5978
5979         * marshal.c (get_wrapper_target_class): New helper function.
5980         (mono_marshal_get_runtime_invoke): Place runtime-invoke wrappers into
5981         the <Module> class of the image. Fixes #509049.
5982
5983 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5984
5985         * threads.c (ves_icall_System_Threading_Thread_Sleep_internal):
5986         Check if the thread was interrupted and proccess it straight away.
5987         Makes abortion much more responsive.
5988
5989 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5990
5991         * threads.c (mono_thread_execute_interruption): Use atomic cas with
5992         MonoThread::interruption_requested to match it's counterpart.
5993
5994         Fixes a hang in abort-stress-1 on a 2 core x86.
5995
5996         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
5997         Fix warning.
5998
5999 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6000
6001         Change MonoImage::name_cache to be protected by the image lock
6002         instead of the loader lock.
6003
6004         * appdomain.c (deregister_reflection_info_roots): Protect access
6005         to name_cache.
6006
6007         * class.c (mono_image_init_name_cache): Change from the loader lock
6008         to the image lock. Check if the cache wasn't already created.
6009
6010         * class.c: Change from the loader to the image lock.
6011
6012         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Fix
6013         the code to hold the image lock while iterating over name_cache and
6014         not go into mono_array_new holding it.
6015
6016         * metadata-internals.h: Add a comment about this change.
6017
6018 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6019
6020         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
6021         Under the 2.0 profile raise the loader error.
6022
6023         Fixes #508532.
6024
6025 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6026
6027         * marshal.c (mono_marshal_get_runtime_invoke): Emit the right kind
6028         of ldind opcode for generic instances so we don't fail for direct wrappers.
6029         This only affect direct calls.
6030
6031 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
6032
6033         * reflection.c (create_dynamic_mono_image): Fix warnings.
6034
6035         * generic-sharing.c (other_info_equal): Ditto.
6036         
6037 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
6038
6039         * metadata-verify.c: Implement field signature check.
6040
6041 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
6042
6043         * metadata-verify.c: Implement standalone signature check.
6044
6045 2009-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
6046
6047         * metadata-verify.c: Implement methodref signature check.
6048
6049 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
6050
6051         * object-internals.h (MonoRuntimeCallbacks): New structure containing
6052         callbacks supplied by the runtime.
6053
6054         * object.c (mono_install_callbacks): New internal function to install
6055         the callbacks.
6056
6057         * object.c (mono_create_ftnptr): Move the implementation of this to
6058         mini/.
6059
6060         * object.c (mono_get_addr_from_ftnptr): Ditto.  
6061
6062 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
6063
6064         * metadata-verify.c (parse_return_type): Proper byref check.
6065         * metadata-verify.c (is_valid_method_signature): Check for zero arity
6066         generic signatures and method params.
6067
6068 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
6069
6070         * metadata-verify.c (decode_signature_header): Fix bounds check.
6071
6072         * metadata-verify.c (parse_custom_mods): Check custom mods.
6073
6074         * metadata-verify.c (parse_type): Do initial basic verification
6075         of valid values.
6076         
6077         * metadata-verify.c (is_valid_method_signature): Parse the generic
6078         param count.
6079
6080 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
6081
6082         * icall.c (ves_icall_Type_GetMethodsByName): Virtual methods should be
6083         discarded based on their most specific definition so we set the method_slots
6084         array before checking if the method is acceptable or not.
6085
6086         Fixes #506757.
6087
6088 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6089
6090         * icall.c: Free the old array when resizing a mono_ptr_array.
6091
6092 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6093
6094         * reflection.c (create_dynamic_mono_image): Use mono_object_hash()
6095         for the hashes whose keys are managed objects.
6096
6097 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6098
6099         * object-internals.h, threads.c: Set the execution context on
6100         thread start here, not in corlib.
6101
6102         * appdomain.c: Bump corlib version.
6103
6104 2009-05-27  Martin Baulig  <martin@ximian.com>
6105
6106         * mono-debug.c (mono_debug_init): Use `MONO_DEBUG_FORMAT_DEBUGGER'
6107         if `_mono_debug_using_mono_debugger' is set to make things work
6108         properly when embedding Mono.
6109
6110 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
6111
6112         * class.c (mono_class_setup_fields): Don't mark simd types as having
6113         16 bytes alignment as the whole runtime doesn't support.
6114
6115 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
6116
6117         * metadata-verify.c (safe_read): Use endian safe read macros.
6118
6119 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
6120
6121         * object.c (mono_create_ftnptr): Don't allocate from the code mempool since
6122         it is read-only when using full aot.
6123
6124 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6125
6126         * metadata-verify.c (is_valid_method_signature): Verify parts
6127         of the return type. Provide an error message in case of failure.
6128
6129 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6130
6131         * metadata-verify.c (is_valid_method_signature): Verify the call conv.
6132
6133 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6134
6135         * metadata-verify.c: Include the size prefix in the bounds check.
6136
6137 2009-05-22  Miguel de Icaza  <miguel@novell.com>
6138
6139         * icall.c: Remove warnings.
6140
6141         * mono-config.c: Allow for CONFIG_CPU to be set in config.h and
6142         prevent auto-detection based on GCC defines.
6143
6144         Add PS3
6145
6146         * metadata-verify.c: Do not include signal.h
6147
6148         * generic-sharing.c, marshal.c: Add returns to avoid some warning
6149         messages.  Not sure why the g_assert_not_reached is not enough to
6150         quiet the compiler.
6151         
6152
6153         * appdomain.c: Remove code that is not used when
6154         DISABLE_SHADOW_COPY is set.
6155
6156         * image.c: use g_getenv
6157
6158 2009-05-21  Miguel de Icaza  <miguel@novell.com>
6159
6160         * reflection.c: Remove code that it not used with
6161         DISABLE_REFLECTION_EMIT is defined.
6162
6163 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
6164
6165         * marshal.c (mono_marshal_get_runtime_invoke): Share more runtime
6166         invoke wrappers.
6167
6168 2009-05-20  Miguel de Icaza  <miguel@novell.com>
6169
6170         * socket-io.c
6171         (ves_icall_System_Net_Sockets_Socket_Available_internal): Remove
6172         the ifdef here and instead put that on io-layer
6173
6174 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6175
6176         * metadata-verify.c: Verify the generic param constraint table.
6177
6178 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6179
6180         * metadata-verify.c (verify_generic_param_table): Fix
6181         thinko on the valid flags bits for generic params.
6182
6183 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6184
6185         * metadata-verify.c: Verify the methodspec table.
6186
6187 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6188
6189         * metadata-verify.c: Verify the generic param table.
6190
6191 2009-05-19  Mark Probst  <mark.probst@gmail.com>
6192
6193         * sgen-gc.c: Store and use the count with REMSET_VTYPE.
6194
6195 2009-05-19  Mark Probst  <mark.probst@gmail.com>
6196
6197         * sgen-gc.c: Use generation enum more consistently and use the
6198         correct generation in mono_gc_register_for_finalization().
6199
6200 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
6201
6202         * metadata-verify.c: Verify the nested class table.
6203
6204 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
6205
6206         * metadata-verify.c: Verify the manifest resource table.
6207
6208 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
6209
6210         * debug-helpers.c (dis_one): Add little-endian support for ldstr.
6211
6212 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
6213
6214         * class.c (mono_class_get_vtable_entry): Avoid adding static-rgctx
6215         wrappers, this is now done in the JIT.
6216         
6217         * class.c (mono_set_generic_sharing_supported): New internal function.
6218         (mono_class_generic_sharing_enabled): Move the #ifdef stuff to the JIT.
6219
6220 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6221
6222         * metadata-verify.c: Verify the exported type table.
6223
6224 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6225
6226         * pedump.c (main): Fake an assembly for netmodules to make the verifier happy.
6227
6228 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6229
6230         * metadata-verify.c: Verify the file table.
6231
6232 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6233
6234         * metadata-verify.c (verify_assembly_table): Fix an error message.
6235
6236         * metadata-verify.c: Verify the assemblyref table.
6237
6238 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6239
6240         * metadata-verify.c (verify_assembly_table): Fix the valid
6241         bits mask for flags.
6242
6243 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
6244
6245         * debug-helpers.c (mono_method_full_name): Print generic parameters of
6246         generic methods as well.
6247
6248 2009-05-15  Geoff Norton  <gnorton@novell.com>
6249
6250         * gc.c: MachO/Darwin supports and uses semaphores fine for this 
6251         use-case and is significantly more performant than the wapi layer.
6252
6253 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6254
6255         * metadata-verify.c: Verify the assembly table.
6256
6257 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6258
6259         * metadata-verify.c: Fix rows limit check.
6260
6261 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6262
6263         * metadata-verify.c: Verify the fieldrva table.
6264
6265 2009-05-13  Mark Probst  <mark.probst@gmail.com>
6266
6267         * sgen.c: Speed up weak links and finalizers by grouping them by
6268         generation.
6269
6270 2009-05-13  Mark Probst  <mark.probst@gmail.com>
6271
6272         * marshal.c (delegate_hash_table_add): When overwriting an entry,
6273         free the old GCHandle (only applies to SGen).
6274
6275 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
6276
6277         * loader.c (mono_get_method_from_token): Avoid the expensive call to
6278         mono_metadata_load_generic_params () for non-generic methods.
6279
6280 2009-05-12  Mark Probst  <mark.probst@gmail.com>
6281
6282         * monitor.c, monitor.h (mono_monitor_get_object_monitor_weak_link):
6283         New function for returning a monitor's weak link if it has one.
6284
6285         * sgen-gc.c: Remove an object's monitor's weak link (if it has
6286         one) when clearing a domain.  These can still be around because
6287         the object might not have been collected.
6288
6289 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
6290
6291         * gc.c: Fix a warning.
6292
6293 2009-05-12  Kornél Pál  <kornelpal@gmail.com>
6294
6295         * gc.c (mono_gc_init): Set gc_thread on creation. This avoids the
6296         prevous wait that resulted in a deadlock on Windows when initializing
6297         the runtime form DllMain. Also results in improved startup time.
6298         (finalizer_thread): Get rid of thread_started_event.
6299         * threads.c, threads-types.h (mono_thread_create_internal): Return the
6300         resulting MonoThread.
6301
6302         Contributed under MIT/X11 license.
6303
6304 2009-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
6305
6306         * metadata-verify.c: Verify the implmap table.
6307         Don't require that #US and #Strings be present.
6308
6309 2009-05-11  Sebastien Pouliot  <sebastien@ximian.com>
6310
6311         * security-core-clr.c: Delegate checks are done at creation time,
6312         not a invocation time. Fix exception for Telerik Silverlight demo
6313
6314 2009-05-11  Mark Probst  <mark.probst@gmail.com>
6315
6316         * sgen-gc.c (need_remove_object_for_domain): Remove the special
6317         case for the Thread class.
6318
6319         * threads.c: Do clean-up of abort exception/state in
6320         thread_cleanup() instead of Thread.free_internal().  Also clean up
6321         current_appcontext.  The reason we have to do that is because
6322         those references might point into another domain and if that
6323         domain is unloaded before the thread is finalized, they point to
6324         invalid data.
6325
6326 2009-05-10  Andreas Faerber  <andreas.faerber@web.de>
6327
6328         * null-gc.c (mono_gc_weak_link_add, mono_gc_clear_domain): Fix
6329         stub signatures.
6330         
6331         Contributed unter MIT/X11 license.
6332
6333 2009-05-09  Miguel de Icaza  <miguel@novell.com>
6334
6335         * verify.c, metadata-verifier.c: Add support for disabling the
6336         verifier in some builds.
6337
6338         [ Sorry, my previous commit accidentally commited some work in
6339         progress ]
6340
6341 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
6342
6343         * class.c (mono_class_setup_fields): Set class->field.first for
6344         generic instances.
6345
6346 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
6347
6348         * metadata-verify.c: Verify the typespec table.
6349
6350 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
6351
6352         * metadata-verify.c: Verify the module table.
6353
6354 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6355
6356         * metadata-verify.c: Verify the methodimpl table.
6357
6358 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6359
6360         * metadata-verify.c: Verify the property table.
6361
6362 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
6363
6364         * debug-helpers.c (mono_method_desc_match): Add support for generic
6365         glob patterns.
6366
6367 2009-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
6368
6369         * metadata-verify.c: Verify the propertymap table.
6370
6371 2009-05-04 Rodrigo Kumpera  <rkumpera@novell.com>
6372
6373         * metadata-verify.c: Verify the event table.
6374
6375         * metadata-verify.c (search_sorted_table): Fix offset
6376         calculation.
6377
6378 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
6379
6380         * domain-internals.h (struct _MonoJitInfo): Add a 'from_llvm' flag.
6381
6382 2009-05-01  Mark Probst  <mark.probst@gmail.com>
6383
6384         * gc.c (mono_gc_run_finalize): Don't set the domain too late,
6385         because mono_delegate_free_ftnptr() needs it.
6386
6387 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6388
6389         * metadata-verify.c: Verify the eventmap table.
6390
6391 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6392
6393         * metadata-verify.c: Verify the standalonesig table.
6394
6395 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6396
6397         * metadata-verify.c: Verify the field layout table.
6398
6399 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6400
6401         * class.c (mono_type_get_name_recurse): Don't crash
6402         for ownerless generic params.
6403
6404         * debug-helpers.c (mono_type_get_desc): Correct the format
6405         for ownerless generic params.
6406
6407 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6408
6409         * metadata-verify.c: Verify the class layout table.
6410
6411 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6412
6413         * metadata-verify.c: Verify the decl security table.
6414
6415 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6416
6417         * domain.c (mono_domain_set_internal_with_options): Don't do
6418         anything if the old domain is the same as the old one.  Fixes
6419         #499326.
6420
6421 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6422
6423         * appdomain.c: Deregister the reflection_info roots when unloading
6424         a domain.
6425
6426         * sgen-gc.c, domain.c, gc-internal.h: mono_gc_clear_domain() nulls
6427         memory allocated by a domain and frees its disappearing links.
6428
6429         * boehm-gc.c, null-gc.c: Empty implementation of
6430         mono_gc_clear_domain().
6431
6432 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6433
6434         * appdomain.c (clear_cached_vtable): Free the static fields memory
6435         block.
6436
6437 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6438
6439         * gc.c: Set the correct domain when invoking finalizers.
6440
6441         * appdomain.c: Set the correct domain when creating threads.
6442
6443 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6444
6445         * sgen-gc.c: Fix skip size for vectors.
6446
6447 2009-05-03  Martin Baulig  <martin@ximian.com>
6448
6449         * mono-debug-debugger.c
6450         (mono_debugger_check_breakpoints): Check class init handlers even
6451         if we don't have any method load handers.
6452
6453 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
6454
6455         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid 
6456         returning refonly assemblies if refonly is FALSE. Fixes #499013.
6457
6458 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
6459
6460         * metadata-verify.c: Verify the field marshal table.
6461
6462 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
6463
6464         * metadata-verify.c: Verify the custom attribute table.
6465
6466 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6467
6468         * metadata-verify.c: Verify the constant table.
6469
6470 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6471
6472         * metadata-verify.c: Verify the memberef table.
6473
6474 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6475
6476         * metadata-verify.c (get_coded_index_token): Remove
6477         dead argument.
6478
6479 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6480
6481         * metadata-verify.c: Verify the interfaceimpl table.
6482
6483 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6484
6485         * verify.c: Improve error message.
6486
6487         * debug-helpers.c (mono_type_get_desc): Harden the code that
6488         deals with VAR and MVAR.
6489
6490 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
6491
6492         * image.c (mono_image_fixup_vtable): Avoid casting an lvalue. Fixes 
6493         part of #498692.
6494
6495 2009-04-23 Tom Hindle <tom_hindle@sil.org>
6496
6497         * cominterop.c (ves_icall_System_Runtime_InteropServices_Marshal_ReleaseComObjectInternal):
6498         changed to match .Net behaviour of not aborting on additional calls to ReleaseComObject.
6499
6500 2009-04-28  Sebastien Pouliot  <sebastien@ximian.com>
6501
6502         * security-core-clr.c: Avoid redundant checks for platform code, 
6503         e.g. check for method and for class (very common) and check
6504         for class and outer class (less common)...
6505
6506 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
6507
6508         * reflection.c: Avoid returning random cattrs for synthetic methods.
6509         Fixes #498545.
6510
6511 2009-04-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
6512
6513         * assembly.c: assemblies in the GAC should never be shadow-copied.
6514
6515 2009-04-26  Mark Probst  <mark.probst@gmail.com>
6516
6517         * domain.c, domain-internals.h: Disable
6518         track_resurrection_{objects,handles}_hash in MonoDomain if using
6519         SGen.
6520
6521 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6522
6523         * metadata-verify.c: Verify the param table.
6524
6525 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6526
6527         * metadata-verify.c (verify_typedef_table): Range check FieldList and
6528         MethodList.
6529
6530         * metadata-verify.c (verify_method_table): Proper check the ParamList
6531         field.
6532
6533 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6534
6535         * metadata-verify.c (verify_method_table): Check for runtime
6536         implemented functions such as delegate .ctors. Remove spurious
6537         printf.
6538         
6539 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6540
6541         * pedump.c: Proper initialize the runtime forcing the 2.0 profile.
6542
6543 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6544
6545         Don't allocate MonoGenericInfo for ownerless generic params.
6546         * class-internals.h (MonoGenericParam::info): Move field to ...
6547         (MonoGenericParamFull): ... this.  New struct.
6548         (MonoGenericContainer::type_params): Change type to
6549         MonoGenericParamFull.
6550         (MonoGenericParam, MonoGenericContainer): Update accessors.
6551         * metadata.c (mono_metadata_parse_generic_param): Don't initialize
6552         'info' field for ownerless generic param.
6553         (mono_metadata_load_generic_params): Update to changes.
6554         * reflection.c (mono_reflection_create_generic_class): Likewise.
6555         (reflection_methodbuilder_to_mono_method): Likewise.
6556         (mono_reflection_initialize_generic_parameter): Likewise.
6557
6558 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6559
6560         Don't use MonoGenericParamInfo for ownerless generic params.
6561         * class.c (get_anon_gparam_class, set_anon_gparam_class): New.  Don't
6562         use ParamInfo class at all.
6563         (mono_class_from_generic_parameter): Use them.
6564         (make_generic_param_class): Fix a couple of instances where 'pinfo
6565         == NULL' wasn't handle.
6566
6567 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6568
6569         * class.c (make_generic_param_class): Carve out of ...
6570         (mono_class_from_generic_parameter): ... here.
6571
6572 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6573
6574         Simplify mono_class_from_generic_parameter
6575         * class-internals.h (MonoGenericParamInfo::token): New field.
6576         * metadata.c (mono_metadata_load_generic_params): Initialize it
6577         from metadata.
6578         * class.c (mono_class_from_generic_parameter): Use it instead of
6579         searching through metadata.
6580
6581 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6582
6583         * metadata-verify.c: Add verification of the method table.
6584
6585 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6586
6587         * icall.c (ves_icall_Type_GetMethodsByName): Fix memleak for the
6588         Delegate::Invoke optimization.
6589
6590 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6591
6592         * appdomain.c (mono_domain_create_appdomain_internal): Free the
6593         string returned by get_shadow_assembly_location_base.
6594
6595         * appdomain.c (get_shadow_assembly_location_base): Add a comment
6596         about caller's ownership.
6597
6598 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6599
6600         * reflection.c: Add mono_reflection_cleanup_domain to cleanup
6601         reflection memory on domain unload.
6602
6603         * domain.c (mono_domain_free): Don't free refobject_hash, let the
6604         reflection cleanup code do it.
6605
6606         * domain-internals.h: Add mono_reflection_cleanup_domain.
6607
6608         This fixes a memory leak for managed mirrors of reflection objects
6609         on domain unload. 
6610
6611 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
6612
6613         * metadata-verify.c: Implement more verification of the field table.
6614
6615 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
6616
6617         * pedump.c (main): Init mono with mscorlib so it defaults to 2.0 and
6618         doesn't try to parse the input assembly, which can be broken.
6619
6620 2009-04-23  Mark Probst  <mark.probst@gmail.com>
6621
6622         * boehm-gc.c, gc-internal.h, gc.c, monitor.c, null-gc.c,
6623         sgen-gc.c: Implement track resurrection in weak GC handles in SGen
6624         by using the lowest bit in the link to store whether the link is
6625         tracked.  Move the track_resurrection hashes into boehm-gc.c.
6626
6627 2009-04-22  Miguel de Icaza  <miguel@novell.com>
6628
6629         * Makefile.am: Split the console support in platform specific code
6630         and put together a framework for making this easy in the future so
6631         that we can start splitting code instead of having a mess of PLATFORM_WIN32
6632
6633 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6634
6635         * pedump.c: Fix a warning.
6636
6637 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6638
6639         * verify.c (mono_delegate_type_equal): Compare valuetypes using
6640         mono_class_from_mono_type to avoid bad interactions with the dual representation
6641         of the generic type definition.
6642
6643 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6644
6645         * verify.c (do_invoke_method): Use mono_class_from_mono_type to
6646         get the MonoClass for the call context type as it might be a generic
6647         instance.
6648
6649         Fixes #491483.
6650
6651 2009-04-21  Mark Probst  <mark.probst@gmail.com>
6652
6653         * object-internals.h: The Thread object has no execution_context
6654         member anymore.
6655
6656         * threads.c, threadpool.c, threads-types.h: Accessor functions for
6657         the execution context.
6658
6659         * appdomain.c: Bump corlib version.
6660
6661 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6662
6663         * verify.c (do_newobj): Improve error message.
6664
6665 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6666
6667         * verify.c (verify_clause_relationship): Only mask as an error if the exception clause
6668         is nested in the filter block.
6669
6670         * verify.c (verify_clause_relationship): The disjoint check must verify if the exception
6671         block is not fully nested.
6672
6673         Fixes #495656.
6674
6675 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6676
6677         * verify.c (verify_type_compatibility_full): Compare MonoClass and
6678         not MonoType to check for equality of valuetypes as the generic type
6679         definition allows for two different encodings: the generic type definition
6680         class or a generic instance over the GTD arguments.
6681
6682         Fixes #496175.
6683
6684 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6685
6686         * verify.c (dump_stack_value): Fix compilation with extra debug turned on.
6687
6688         * verify.c (do_initobj): Improve error message.
6689
6690 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6691
6692         * metadata-verify.c: Enable pe verification as the issue with #496453
6693         is that the authenticode data directory have a different unspecified
6694         format. Ignore it for now.
6695
6696         * pedump.c: Run the metadata verifier together with the IL verifier.
6697
6698         Fixes ##496453.
6699
6700 2009-04-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6701
6702         * metadata-verify.c: Temporarily disable pe verification due to #496453.
6703
6704 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6705
6706         * class.c (can_access_type): Check visibility against
6707         the element type for pointers and arrays.
6708
6709         Fixes #496150.
6710
6711 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6712
6713         * metadata-verify.c: Fix cli and table verification to use information
6714         from the MonoImage. A lot of duplicated code got killed.
6715
6716 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6717
6718
6719         This patch starts to integrate the metadata verifier with the runtime code.
6720
6721         This patch causes major regression in functionality for the metadata verifier
6722         as cli and table verification are disabled since they require to be ported to
6723         use MonoImage information.
6724
6725         * image.c (do_mono_image_load): Split the code in this function
6726         into mono_image_load_pe_data and mono_image_load_cli_data.
6727         Add     care_about_pecoff parameter to not load pecoff data.
6728         Call into the metadata verifier for pecoff and cli verification.
6729
6730         * image.c (mono_image_open_raw): New function that doesn't perform
6731         any parsing of the image contents.
6732         
6733         The reason for the 3 new functions is to give pedump better control
6734         into the interaction with the verifier.
6735
6736         * metadata-internals.h: Add new functions from image.c as part of the
6737         internal mono API.
6738
6739         * metadata-verify.c: Split mono_image_verify into mono_verifier_verify_pe_data,
6740         mono_verifier_verify_cli_data and mono_verifier_verify_table_data. Prepare
6741         to make those functions work together with the runtime.
6742
6743         * verify.c: Add mono_verifier_is_enabled_for_image function that returns
6744         true if the image needs to be verified.
6745
6746         * verify-internals.h: Export new functions from metadata-verify.c and verify.c.
6747
6748         * pedump.c: Use new metadata verifier API.
6749
6750 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
6751
6752         * object.c (mono_install_vtable_trampoline): Make this receive a
6753         trampoline creation function instead of trampoline, allowing the JIT
6754         to use a different trampoline for each vtable.
6755
6756 2009-04-18  Mark Probst  <mark.probst@gmail.com>
6757
6758         * object.c (mono_raise_exception): Don't reset the thread abort
6759         exception state here.
6760
6761 2009-04-18  Mark Probst  <mark.probst@gmail.com>
6762
6763         * icall-def.h: New icall for getting the thread abort exception
6764         state for a thread.
6765
6766         * object.c, thread.c, object-internals.h: A thread's abort
6767         exception state is now a GC handle.  To get the object it stands
6768         for, we must move it into the current app domain, if it's
6769         different than the one where it originated from.
6770
6771         * appdomain.c: Bump corlib version.
6772
6773         * domain.c, domain-internals.h: New function for setting the
6774         domain and migrate the thread abort exception or not.
6775
6776 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6777
6778         * metadata-verify.c: Add initial verification of the
6779         field table.
6780
6781 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6782
6783         * metadata-verify.c: Add a macro to conditionally enable
6784         dumping of verification information. Add  make_coded_token
6785         and search_sorted_table to enable search sorted tables
6786         by a given coded token.
6787
6788 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6789
6790         * metadata-verify.c: Add array mapping from table index
6791         to description offset. Add get_col_offset and get_col_size
6792         functions.
6793
6794 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6795
6796         * metadata-verify.c: Add remaining table descriptions offsets.
6797         Add remaining coded index descriptions.
6798
6799 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6800
6801         * metadata-verify.c: Fixed constant table description.
6802         Fixed calculation of HasCustomAttribute coded index size.
6803         Fixed calculation of size for many table indexes. 
6804
6805 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6806
6807         * pedump.c (dump_metadata): Dump table offset instead
6808         of useless pointer in memory.
6809
6810 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6811
6812         * metadata-verify.c (verify_typedef_table): Add tests for MethodList.
6813
6814 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6815
6816         * metadata-verify.c (verify_typedef_table): Add tests for FieldList and
6817         a missing of for interface types.
6818
6819 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6820
6821         * metadata-verify.c (verify_pe_optional_header): Add comment of why
6822         the code is commented.
6823
6824         * metadata-verify.c (verify_resources_table): Remove spurious printf
6825         and don't fail if there are unmanaged resources. Gmcs generates a useless
6826         one     for all assemblies - I bet it's some MS compatibility junk.
6827
6828 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6829
6830         * metadata-verify.c (verify_typedef_table): Verify the extends field.
6831
6832         * metadata-verify.c (mono_image_verify): Add a is_corlib.
6833
6834         * verify-internals.h: Same.
6835
6836         * pedump.c: Fix for mono_image_verify new signature.
6837
6838 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6839
6840         * metadata-verify.c (verify_typedef_table): Verify for some invalid
6841         flags combinations.
6842
6843 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6844
6845         * metadata-verify.c (verify_module_table): Ignore the generation field.
6846
6847 2009-04-15  Martin Baulig  <martin@ximian.com>
6848
6849         * debug-mono-symfile.c
6850         (mono_debug_symfile_lookup_location): Don't print a warning for
6851         unknown extended opcodes if they're within 0x40 and 0x7f.
6852
6853 2009-04-15  Zoltan Varga  <vargaz@gmail.com>
6854
6855         * marshal.c (mono_marshal_get_runtime_invoke_sig): Don't share runtime
6856         invoke signatures returning an enum. Fixes #494847.
6857
6858 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6859
6860         * metadata-verify.c: Initial code to verify the typedef table.
6861
6862 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6863
6864         * verify.c (mono_method_verify): Don't fail if an unconditional branch
6865         with non empty stack happens before the beginning of a try block.
6866
6867         Fixes #494812.
6868
6869 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6870
6871         * metadata-verify.c: Verify typename and typenamespace fields of
6872         the typeref table.
6873
6874 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
6875
6876         * metadata-verify.c: Initial code to verify the typeref table.
6877
6878 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
6879
6880         * verify.c (verify_delegate_compatibility): Fix error message.
6881
6882 2009-04-14  Sebastien Pouliot  <sebastien@ximian.com>
6883
6884         * security-core-clr.c: Fix typo
6885
6886 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
6887
6888         * marshal.c (delegate_hash_table_add): Make delegate_target_locations 
6889         a MonoGHashTable to keep its values alive.
6890         (emit_marshal_boolean): Fix a warning.
6891
6892 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
6893
6894         * socket-io.c: don't return IPv4/IPv6 addresses if the machine does
6895         not have any interface configured for IPv4/IPv6.
6896
6897 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
6898
6899         * assembly.c: fix typo in error message.
6900
6901 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
6902
6903         * marshal.c (mono_delegate_to_ftnptr): Use mono_gc_alloc_fixed () for
6904         allocating the location holding the this argument to prevent
6905         'too many root sets' errors.
6906
6907         * object.c (mono_class_create_runtime_vtable): Set field->offset to -1
6908         to mark fields as special static.
6909         (mono_field_static_get_value): Handle special static fields.
6910         (mono_field_static_set_value): Ditto.
6911
6912         * class-internals.h (struct _MonoClassField): Document this.
6913
6914 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
6915
6916         * cominterop.c (mono_cominterop_emit_marshal_com_interface): Assigning
6917           the argument a value of null for the MARSHAL_ACTION_MANAGED_CONV_OUT
6918           case.  This will handle when managed code returns null to native code.
6919
6920         Code is contributed under MIT/X11 license.
6921
6922 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
6923
6924         * object.c (build_imt_slots): Changing a free to a g_free to match
6925           the g_malloc0 in add_imt_builder_entry that allocated this memory.
6926
6927         Code is contributed under MIT/X11 license.
6928
6929 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
6930
6931         * marshal.c (emit_marshal_boolean): Adding code to ensure that
6932           the correct TRUE value is passed through the marshaling layer.
6933
6934         Code is contributed under MIT/X11 license.
6935
6936 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
6937
6938         * marshal.c (mono_marshal_emit_managed_wrapper): Handle closed delegates
6939         correctly. Fixes #492330.
6940         
6941         * marshal.c: Fix the embedding of object pointers into JITted code in
6942         the native-to-managed wrappers by allocating some GC tracked memory, and
6943         embedding the address of that.
6944
6945 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
6946
6947         * object.c (mono_class_create_runtime_vtable): Avoid putting MonoMethod
6948         pointers into the vtable.
6949
6950 2009-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
6951
6952         * verify.c (mono_delegate_type_equal): Proper check MONO_TYPE_CLASS.
6953
6954         * verify.c (verify_ldftn_delegate): Improve error message.
6955
6956 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
6957
6958         * reflection.c (my_mono_class_from_mono_type): Remove.
6959
6960 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
6961
6962         Prepare to reduce memory usage of owner-less generic parameters (1/n)
6963         * class-internals.h (MonoGenericParam): Carve out pklass, name, flags
6964         and constraints fields into ...
6965         (MonoGenericParamInfo): ... this.
6966         (mono_generic_param_info, mono_generic_container_get_param_info):
6967         New accessors.
6968         * class.c, debug-helpers.c, icall.c: Update to changes.
6969         * metadata.c, reflection.c, verify.c: Likewise.
6970
6971 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
6972
6973         * debug-helpers.c (dis_one): Fix decoding of strings in dynamic images.
6974
6975         * marshal.c (get_runtime_invoke_type): Share enums with their base types.
6976         
6977         * marshal.c (get_runtime_invoke_type): Share pointers with ints and
6978         booleans with sbytes.
6979
6980 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6981
6982         * class.c (can_access_instantiation): Verify accesibility of element types
6983         for arrays and pointers.
6984
6985         * class.c (can_access_type): Return true if the target class is VAR or MVAR.
6986
6987         * class.c (mono_method_can_access_method_full): Fix typos in the documentation.
6988
6989         Fixes #493068.
6990
6991 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6992
6993         * verify.c (do_invoke_method): Improve error messages.
6994
6995 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
6996
6997         * verify.c:  Fixing the MSVC build.
6998
6999         Code is contributed under MIT/X11 license.
7000
7001 2009-04-08  Sebastien Pouliot  <sebastien@ximian.com>
7002
7003         * security-core-clr.c: Simplify get_reflection_caller not to call
7004         mono_method_get_last_managed (another stack walk) and adjust the
7005         callers to handle a (should not happen) NULL return value.
7006
7007 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
7008
7009         Add accessors to some MonoGenericParam fields
7010         * class-internals.h (mono_generic_param_owner): New accessor.
7011         (mono_generic_param_num): Likewise.
7012         (mono_type_get_generic_param_owner): New helper.
7013         (mono_type_get_generic_param_num): New helper.
7014         * class.c, icall.c, metadata.c, reflection.c, verify.c: Use them.
7015
7016 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
7017
7018         * class-internals.h (mono_generic_container_get_param): New wrapper.
7019         * class.c, icall.c, metadata.c, verify.c: Use it.
7020
7021 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
7022
7023         Fix gtest-252.cs
7024         * verify.c (mono_type_is_valid_type_in_context): Rewrite to use
7025         the standard case/loop.  In particular, don't complain about
7026         references to generic type definitions.
7027
7028 2009-04-07  Zoltan Varga  <vargaz@gmail.com>
7029
7030         * debug-helpers.c (dis_one): Decode string arguments.
7031
7032 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
7033
7034         * pedump.c (dump_verify_info): Dump type name correctly.
7035
7036 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
7037
7038         * verify.c (mono_method_verify): Don't init code slots for exception boundaries if they
7039         are larger than code size.
7040
7041         This can happen in valid code if the try/catch block is not followed by any instruction
7042         and do a backward branch on the leave instruction.
7043
7044         Fixes #492494.
7045
7046 2009-04-06  Sebastien Pouliot  <sebastien@ximian.com>
7047
7048         * security-core-clr.c: Fix typo while comparing second method names
7049         in can_avoid_corlib_reflection_delegate_optimization
7050
7051 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
7052
7053         * verify.c (do_throw): Don't allow an unboxed generic param ar argument.
7054
7055         Fixes #487738.
7056
7057 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
7058
7059         * metadata.c (do_mono_metadata_parse_type): Fail if we are decoding
7060         a MVAR using a class context.
7061
7062         Fixes #490335.
7063
7064 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
7065
7066         * object.c (mono_class_compute_gc_descriptor): Make this non-static.
7067
7068         * domain-internals.h (struct _MonoJitInfo): Add a 'gc_info' field.
7069
7070         * gc-internal.h (MonoGCCallbacks): New stucture containing the callback
7071         functions supplied by the JIT for the SGEN GC.
7072
7073         * sgen-gc.c: Call the callbacks supplied by the JIT to do stack marking.
7074         
7075 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
7076
7077         monitor.c (mono_monitor_try_enter_internal):
7078         Added calls to profile monitor contentions.
7079         Also duplicated a small piece of code (the "get the monitor" logic)
7080         from the fast path to the slow path, and changed the relevant goto
7081         statements, so that monitor acquisition events can be emitted from the
7082         slow path (this is by Paolo Molaro).
7083
7084 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
7085
7086         * profiler.c, profiler.h, profiler-private.h:
7087         Added support for profiling monitor contentions.
7088
7089 2009-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
7090
7091         * metadata-verify.c: Verify the modules table.
7092
7093 2009-04-02 Rodrigo Kumpera  <rkumpera@novell.com>
7094
7095         * verify.c (mono_generic_param_is_constraint_compatible): Inflate the candidate
7096         using the context of the method been verifier and not of the method been called.
7097
7098         * verify.c: Add verifier_inflate_type and mono_type_is_valid_type_in_context to
7099         safely inflate generic types. 
7100
7101 2009-04-02  Sebastien Pouliot  <sebastien@ximian.com>
7102
7103         * security-core-clr.c: Change the strategy for checking the 
7104         "reflection using delegates optimization" to avoid unneeded 
7105         attributes in multiple class libraries.
7106
7107 2009-04-02  Mark Probst  <mark.probst@gmail.com>
7108
7109         * sgen-gc.c: Remove object element in the disappearing link struct
7110         by storing the object pointer in the link.
7111
7112 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7113
7114         * pedump.c (dump_verify_info): Don't crash if signature decoding fails.
7115
7116 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7117
7118         * verify.c (verifier_load_field): Fail if the field parent could not be loaded.
7119
7120         * verify.c (mono_method_verify): Do proper bounds checking of exception
7121         clause ranges.
7122
7123 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7124
7125         * loader.c (mono_field_from_token): Don't crash if the field parent could
7126         not be decoded.
7127
7128 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7129
7130         * sgen-gc.c: Execute critical finalizers after ordinary
7131         finalizers.
7132
7133         * class-internals.h, domain.c: Add CriticalFinalizerObject to
7134         mono_defaults.
7135
7136 2009-03-31 Jb Evain <jbevain@novell.com>
7137
7138         * verify.c (do_ldstr): don't check if a string is in the user strings
7139         heap if the current image is dynamic.
7140
7141 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7142
7143         * sgen-gc.c: Wait until the last finalizer has executed when
7144         returning from WaitForPendingFinalizers.
7145
7146 2009-03-31  Martin Baulig  <martin@ximian.com>
7147
7148         * mono-debug-debugger.h (MonoDebuggerEvent): Add
7149         `MONO_DEBUGGER_EVENT_CREATE_APPDOMAIN' and
7150         `MONO_DEBUGGER_EVENT_UNLOAD_APPDOMAIN'.
7151         (mono_debugger_event_create_appdomain): New function.
7152         (mono_debugger_event_unload_appdomain): New function.
7153
7154         * appdomain.c (mono_domain_create_appdomain_internal): Call
7155         mono_debugger_event_create_appdomain().
7156
7157 2009-03-31  Martin Baulig  <martin@ximian.com>
7158
7159         * mono-debug-debugger.c
7160         (mono_debugger_register_class_init_callback): Also register the
7161         class init callback if the class is already initialized to make
7162         things work with shadow copied assemblies.
7163
7164 2009-03-31  Sebastien Pouliot  <sebastien@ximian.com>
7165
7166         * security-core-clr.c
7167         (mono_security_core_clr_ensure_reflection_access_field): Let 
7168         critical code access the field (just like we do for methods). Use
7169         check_field_access helper.
7170         (mono_security_core_clr_ensure_reflection_access_method): Use 
7171         check_field_access helper.
7172
7173 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7174
7175         * sgen-gc.c: Remove data (callback) element from FinalizeEntry and
7176         call the run-finalize function directly.
7177
7178         * gc.c, gc-internal.h: Make run_finalize() non-static.
7179
7180 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7181
7182         * sgen-gc.c: Use a separate struct for disappearing links.
7183
7184 2009-03-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
7185
7186         * socket-io.c: don't fail if the SocketOptionsFlag has Partial or
7187         * MaxIOVectorLength enabled, just ignore them.
7188         Fixes bug #349688.
7189
7190 2009-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
7191
7192         * metadata-verify.c: Fix eglib build.
7193
7194 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
7195
7196         * threads-types.h: Fix the win32 build.
7197
7198 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
7199
7200         * class.c: move coreclr inheritance/override checks to 
7201         security-core.clr.c
7202         * security-core.clr.c|h: add code from class.c with additional
7203         documentation. Fix override check when the method is not critical.
7204
7205 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
7206
7207         * debug-helpers.c (mono_method_desc_match): Make '*' match anything.
7208         (match_class): Ditto.
7209
7210 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
7211
7212         * metadata-verify.c: Rename bounds_check_offset to bounds_check_datadir.
7213
7214         * metadata-verify.c: Implement table layout row size calculation. Verify
7215         the total size of the tables.
7216
7217 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
7218
7219         * metadata-verify.c: Verify heap sizes and size to decode row counts. 
7220
7221 2009-03-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
7222
7223         * appdomain.c:
7224         * console-io.[ch]: added new mono_console_init() to make sure that
7225         file descriptors 0, 1 and 2 are opened.
7226         Bug #489019 fixed.
7227
7228 2009-03-27  Sebastien Pouliot  <sebastien@ximian.com> 
7229
7230         * appdomain.h: Export a new callback type and a new function to
7231         set this callback. This allow a mono host to provide it's own
7232         definition for "platform code".
7233         * metadata-internals.h: Add a core_clr_platform_code flag on 
7234         _MonoImage to (cache and) know if it is representing platform 
7235         code.
7236         * image.c (do_mono_image_open): Set core_clr_platform_code flag 
7237         on platform code images.
7238         * security-core-clr.c|h 
7239         (mono_security_set_core_clr_platform_callback): Allow the host
7240         to provide it's own platform check definition.
7241         (mono_security_core_clr_determine_platform_image): Detect if an 
7242         image is platform code (using the specified callback).
7243         (mono_security_core_clr_is_platform_image): Return cached value 
7244         for platform code.
7245
7246 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
7247
7248         * threads.c (mono_create_thread): New helper function to wrap CreateThread
7249         which has different parameter types for the 'tid' argument in windows and
7250         the io-layer.
7251
7252         * appdomain.c attach.c threads.c: Use the new helper.
7253
7254 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
7255
7256         * metadata-verify.c: Verify valid table bits.
7257
7258 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
7259
7260         * metadata-verify.c (verify_metadata_header): Store size in the size field.
7261
7262         * metadata-verify.c: Add initial table schema verification.
7263
7264 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
7265
7266         * icall.c (ves_icall_get_parameter_info): Add a 'member' argument, used to
7267         obtain the refclass argument needed by mono_param_get_objects (). Fixes
7268         #488383.
7269
7270         * reflection.c (mono_param_get_objects_internal): Add a 'refclass' argument.
7271
7272         * appdomain.c (MONO_CORLIB_VERSION): Bump this.
7273
7274 2009-03-26  Sebastien Pouliot  <sebastien@ximian.com>
7275
7276         * security-core-clr.c: Add/update documentation
7277
7278 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
7279
7280         * marshal.c (emit_marshal_object): Generate code to throw an exception
7281         instead of throwing it. Fixes #488670.
7282
7283 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com>
7284
7285         * appdomain.c: Bump MONO_CORLIB_VERSION to 73.
7286         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Add
7287         an extra 'throwOnBindFailure' parameter to the icall. Remove FIXME
7288         and add a call to mono_security_core_clr_ensure_delegate_creation
7289         to do the extra checks required by CoreCLR.
7290         * security-core-clr.c|h: Add function to check delegate creation,
7291         both in the binding and accessibility, under CoreCLR.
7292
7293 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com> 
7294
7295         * reflection.c (mono_reflection_create_dynamic_method): when 
7296         coreclr is enabled make sure that every resolved object are
7297         checked (e.g. field and method access).
7298         * security-core-clr.c|h: Add function to check objects resolved
7299         when a dynamic method is created.
7300
7301 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
7302
7303         * metadata-verify.c: Cache directory rva translations.
7304
7305         * metadata-verify.c: Add cli-header and streams verification.
7306
7307 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
7308
7309         * image.c (load_metadata_ptrs): We decode MonoImage::md_version_minor at
7310         the wrong offset (8 instead of 6).
7311
7312 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
7313
7314         * marshal.c (mono_delegate_to_ftnptr): For delegates wrapping pinvoke
7315         methods, return the native function address itself. Fixes
7316         #487758.
7317
7318 2009-03-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
7319
7320         * console-io.c: some of the values for control characters might not be
7321         present.
7322
7323 2009-03-21  Sebastien Pouliot  <sebastien@ximian.com>
7324
7325         * exception.c|h: Add helpers to create [Field|Method]AccessException
7326         * icall.c: Add required coreclr check calls for field reflection.
7327         Move the existing (method) check logic into security-core-clr.c
7328         * security-core-clr.c: Add functions to check if the access of a
7329         field or method is allowed when reflecting under coreclr. This is
7330         mostly done using a stack walk to find the "real" caller: i.e. the
7331         code that is calling the reflection
7332
7333 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
7334
7335         * gc-internal.h: Change location of gc_wrapper.h
7336
7337 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com> 
7338
7339         * class.c: Simplification to coreclr checks for overrides that
7340         makes it easier to set breakpoints.
7341
7342 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com>
7343
7344         * security-core-clr.c|h: (mono_security_core_clr_class_level, 
7345         mono_security_core_clr_method_level): Avoid potential 
7346         MonoCustomAttrInfo allocation for transparent assemblies (e.g. 
7347         user/application code) and make it easier to set breakpoints
7348
7349 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7350
7351         * metadata-verify.c: Reject cli header tables that mono don't handle.
7352
7353 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7354
7355         * pedump.c: Fix CLI header dumping.
7356
7357 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7358
7359         * metadata-verify.c: More CLI header verification.
7360
7361 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
7362
7363         * locales.c (get_current_locale_name): Use g_malloc instead of malloc.
7364
7365 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
7366
7367         * metadata-verify.c: Initial verification of the CLI header.
7368
7369 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
7370
7371         * metadata-verify.c (verify_resources_table): Fix verification of zero
7372         sized resource section and id entries count.
7373
7374 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
7375
7376         * icall.c: Handle user types in many Type icalls. Fixes #486303.
7377
7378 2009-03-17  Jb Evain  <jbevain@novell.com>
7379
7380         * profiler.c: call mono_gc_base_init from mono_profiler_load.
7381
7382 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
7383
7384         * sgen-gc.c (mono_gc_make_descr_for_object): Fix 64 bit support.
7385         (mono_gc_make_descr_for_array): Ditto.
7386
7387 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
7388
7389         * verify.c (mono_verifier_is_class_full_trust): Add support for
7390         CoreCLR security mode where trusted assemblies are defined as
7391         "platform code".
7392
7393 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7394
7395         * metadata-verify.c: Add minimal PECOFF resource verification.
7396
7397 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7398
7399         * metadata-verify.c: Be less restrictive with some coff fields.
7400
7401 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7402
7403         * verify.c (init_stack_with_value_at_exception_boundary): Init generic
7404         params as boxed values on stack. Fixes #485706.
7405
7406 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
7407
7408         * console-io.c: the termios values may vary in different flavors of unix.
7409
7410 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
7411
7412         * console-io.[ch]: return the entire set of control characters when
7413         initializing the terminal.
7414         * appdomain.c: bump corlib version.
7415
7416 Mon Mar 16 11:11:26 CET 2009 Paolo Molaro <lupus@ximian.com>
7417
7418         * mono-perfcounters.c: added support for in-process custom
7419         performance counters.
7420
7421 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7422
7423         * metadata-verify.c: Small cleanup and add comment for IAT directory entry. 
7424
7425 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7426
7427         * metadata-verify.c: Verify the data pointed by the import table. 
7428
7429 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7430
7431         * metadata-verify.c (load_data_directories): Store data
7432         directory contents.
7433
7434         * metadata-verify.c: Verify the import table. 
7435
7436 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7437
7438         * metadata-verify.c: Verify data directories.
7439
7440 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7441
7442         * metadata-verify.c: Check section header flags.
7443
7444 2009-03-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
7445
7446         * appdomain.c: if the assembly name is a shadow-copied file, return
7447         TRUE from mono_is_shadow_copy_enabled but don't actually do anything
7448         in mono_make_shadow_copy.
7449         * icall.c: if the assembly name is a shadow-copied file, replace it
7450         with the original assembly path.
7451
7452         Bug #484244 fixed. NUnit tests for corlib can be run without
7453         --noshadow now.
7454
7455 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
7456
7457         * sgen-gc.c (add_to_global_remset): Fix the handling of root global remset
7458         entries when the table is reallocated.
7459
7460         * icall.c: Allocate the memory used by the mono_ptr_array macros using
7461         mono_gc_alloc_fixed () since it contains GC refs.
7462
7463 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
7464
7465         * reflection.c (ensure_complete_type): New helper function to call
7466         type resolve handlers for unfinished dynamic types.
7467         (resolve_object): Call it for MonoClassFields. Fixes #483852.
7468
7469 2009-03-09  Zoltan Varga  <vargaz@gmail.com>
7470
7471         * reflection.c (mono_custom_attrs_has_attr): Handle interfaces. Fixes
7472         #483247.
7473
7474 2009-03-08 Rodrigo Kumpera  <rkumpera@novell.com>
7475
7476         * appdomain.c (get_shadow_assembly_location): Fix memleak.
7477
7478 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
7479
7480         * domain-internals.h (struct _MonoDomain): Add new hash tables mapping
7481         between GCHandles of type WeakTrackResurrection and the objects they
7482         point to.
7483
7484         * gc.c: Partly implement the sematics of GCHandles of type 
7485         WeakTrackResurrection: these handles should only be cleared after the
7486         finalizer of the object they are pointing to has ran.
7487
7488 2009-03-06  Mark Probst  <mark.probst@gmail.com>
7489
7490         * icall.c: Partially revert r126631 because using the jump
7491         trampolines for generic shared methods makes it superfluous.
7492
7493 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
7494
7495         * threads.c (handle_store): Create the 'threads' hash table with the proper
7496         MONO_HASH_VALUE_GC type.
7497
7498 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
7499
7500         * domain-internals.h (struct _MonoDomain): Move 'typeof_void' before
7501         FIRST_GC_TRACKED.
7502
7503         * domain.c (mono_domain_create): Register the fields between FIRST_GC_TRACKED
7504         and LAST_GC_TRACKED as a GC root.
7505
7506         * gc-internal.h: Fix the comment of mono_gc_alloc_fixed.
7507
7508         * object.c (mono_class_create_runtime_vtable): Create a GC descriptor for
7509         the static data even if it consists of 1 reference.
7510
7511         * boehm-gc.c (mono_gc_alloc_fixed): Allocate using GC_MALLOC_EXPLICITLY_TYPED
7512         if there is a GC descriptor.
7513
7514         * reflection.c (ALLOC_REFENTRY): Allocate ReflectedEntry-es using malloc
7515         instead of through the GC since they contain no object references.
7516
7517 2009-03-05  Mark Probst  <mark.probst@gmail.com>
7518
7519         * generic-sharing.c (instantiate_other_info): Always return a jump
7520         trampoline for method code.
7521
7522 2009-03-05  Marek Habersack  <mhabersack@novell.com>
7523
7524         * culture-info-tables.h: generated to include the en-tt culture.
7525
7526 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
7527
7528         * domain-internals.h (MonoDomain): Add two fields to cache invoke wrappers to
7529         capture the thread context.
7530
7531         * object.c (mono_async_result_new): Cache the invoke wrappers to
7532         ExecutionContext::Capture.
7533
7534 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
7535
7536         * marshal.h: Add a prototype for what mono_compile_method returns
7537         for invoke wrappers.
7538
7539         * gc.c: Use the new prototype declaration.
7540
7541 2009-03-04  Geoff Norton  <gnorton@novell.com>
7542
7543         * boehm-gc.c: Add some MONO_LOG tracing for the GC
7544         * gc-internal.h:
7545         * mono-gc.h: Expose mono_gc_invoke_finalizers in the embedding api.
7546
7547 2009-03-04  Martin Baulig  <martin@ximian.com>
7548
7549         * mono-debug.h
7550         (mono_debugger_runtime_invoke): Removed.
7551
7552         * mono-debug-debugger.c
7553         (mono_runtime_invoke): Moved into ../mini/debug-mini.c.
7554
7555 2009-03-02  Martin Baulig  <martin@ximian.com>
7556
7557         * mono-debug.h
7558         (mono_debugger_unhandled_exception): Removed.
7559         (mono_debugger_handle_exception): Removed.
7560         (mono_debugger_throw_exception): Removed.
7561
7562         * mono-debug.c
7563         (mono_debug_debugger_version): Bump to 5.
7564
7565         * mono-debug-debugger.c: Moved the exception handling code to
7566         ../mini/debug-mini.c
7567
7568 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
7569
7570         * domain-internals.h (struct _MonoDomain): Add a separate lock for the
7571         finalize_objects_hash.
7572
7573         * gc.c: Use the separate lock to access the finalize_objects_hash field.
7574         
7575         * domain-internals.h (struct _MonoDomain): Add finalize_runtime_invoke
7576         field.
7577
7578         * metadata-internals.h (struct _MonoImage): Add runtime_invoke_vcall_cache
7579         cache.
7580
7581         * image.c (mono_image_close): Free it.
7582         
7583         * marshal.c (mono_marshal_get_runtime_invoke): Add a 'virtual' argument
7584         allowing a creation of a wrapper which invokes its method using a CALLVIRT
7585         on the this argument.
7586
7587         * gc.c (run_finalize): Optimize the calling of the finalizers.
7588
7589 2009-03-03  Martin Baulig  <martin@ximian.com>
7590
7591         * mono-debug.h (MONO_DEBUGGER_MAJOR_VERSION): Bump to 81 because
7592         of the `MonoGenericInst' changes.
7593
7594 2009-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7595
7596         * icall.c (ves_icall_MonoType_GetGenericArguments): Use
7597         mono_array_class_get_cached to reduce locking contention. Extract
7598         a domain var.
7599
7600         * icall.c (ves_icall_Type_GetFields_internal): Avoid allocating
7601         intermediary managed arrays. Use caching version of mono_array_new
7602         to allocate the result array.
7603
7604         * icall.c (ves_icall_Type_GetEvents_internal): Same.    
7605
7606         * icall.c (ves_icall_Type_GetNestedTypes): Same.        
7607
7608         * locales.c (create_names_array_idx):  Use mono_array_new_cached
7609         to reduce locking contention.
7610
7611 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
7612                 
7613         * object.c (mono_method_add_generic_virtual_invocation): Put back the
7614         thunk builder code for the non-interface case.
7615
7616 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
7617
7618         * object.c (get_generic_virtual_entries): New helper function to collect
7619         the virtual generic method instances which need to be added to an IMT
7620         thunk.
7621         (mono_method_add_generic_virtual_invocation): Add a 'vtable' argument.
7622         Instead of creating a new IMT thunk, reset the vtable slot to the
7623         trampoline, the thunk will be created the next time the trampoline is called.
7624         (build_imt_slots): Add support for virtual generic methods in interfaces by
7625         adding to the IMT thunk all the methods registered using 
7626         mono_method_add_generic_virtual_invocation ().
7627
7628         * object-internals.h (_MonoImtBuilderEntry): Add a 'has_target_code' field.
7629         (struct _MonoIMTCheckItem): Ditto.
7630
7631         * object.c (mono_method_add_generic_virtual_invocation): Take a
7632         MonoMethod argument instead of a MonoGenericInst. Fix the construction of
7633         the IMT thunk to include all items.
7634         
7635         * object.c (mono_class_create_runtime_vtable): Add a missing
7636         mono_loader_unlock ().
7637
7638 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7639
7640         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7641
7642         * object-internals.h (MonoReflectionEvent): Add cached_add_event.
7643
7644 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7645
7646         * object-internals.h: Rename _MonoReflectionEvent to
7647         MonoReflectionMonoEvent so it reflects the right managed type.
7648         Add a MonoReflectionEvent that correctly represents System.EventInfo.
7649
7650         * icall.c:
7651         * reflection.c: Adjust code to use the new MonoReflectionMonoEvent
7652         type.
7653
7654 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7655
7656         * icall.c (ves_icall_Type_GetMethodsByName): Avoid allocating
7657         intermediary managed arrays. Use caching version of mono_array_new
7658         to allocate the result array.
7659
7660 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7661
7662         * reflection.c: Use cached version of mono_array_new alongside
7663         the mono_reflection_get_custom_attrs_by_type call path.
7664
7665 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7666
7667         * icall.c (ves_icall_Type_GetInterfaces): Avoid allocating
7668         intermediary managed arrays. Use caching version of mono_array_new
7669         to allocate the result array.
7670
7671         * icall.c (ves_icall_Type_GetConstructors_internal): Same.
7672
7673 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7674
7675         * icall.c: Add small implementation of a growable stack bound array.
7676
7677         * icall.c (ves_icall_System_Enum_get_hashcode): Fix warning.
7678
7679         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid allocating
7680         intermediary managed arrays. Use caching version of mono_array_new
7681         to allocate the result array.
7682
7683 2009-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
7684
7685         * icall.c: New icall ves_icall_System_Enum_compare_value_to that
7686         helps Enum::CompareTo to be implemented without reboxing all enums
7687         to their underlying type.
7688 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
7689
7690         * domain.c (SET_APPDOMAIN): Avoid calling TlsSetValue () on some platforms,
7691         since it acquires a global lock leading to scalability problems.
7692
7693         * profiler.c: Make the stat profiler work with multiple appdomains, this
7694         currently only works when no appdomains are unloaded.
7695
7696 2009-02-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
7697
7698         * appdomain.c: make the check to avoid copying when the assembly is
7699         already shadow copied actually work.
7700
7701 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
7702
7703         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7704
7705         * object-internals.h (struct _MonoReflectionGenericClass): Sync with
7706         changes to the managed side.
7707
7708 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
7709
7710         * metadata-internals.h (struct _MonoImage): Add a new cache for szarray
7711         classes + a separate lock for it, as it is used frequently at runtime, not
7712         just during metadata loading/JIT compilation.
7713
7714         * class.c (mono_bounded_array_class_get): Use the separate cache + lock
7715         for szarrays.
7716         
7717         * object-internals.h (mono_class_from_name_cached): New macro to cache
7718         the results of the lookup locally without having to declare a static
7719         variable to hold it.
7720         (mono_class_get_field_from_name_cached): Ditto.
7721         (mono_array_class_get_cached): Ditto.
7722
7723         * threadpool.c threads.c locales.c icall.c reflection.c socket-io.c: Use
7724         the new macros.
7725         
7726         * object.c (mono_get_delegate_invoke): Call setup_methods () to avoid the
7727         slower search in metadata.
7728
7729         * pedump.c: Fix a warning.
7730
7731 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
7732
7733         * reflection.c (encode_locals): Add checks for user types.
7734         (method_encode_clauses): Ditto.
7735         (method_encode_code): Ditto.
7736         (mono_image_create_token): Ditto.
7737
7738         * object-internals.h: Change the type of more fields from MonoReflectionType*
7739         to MonoObject*.
7740
7741 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
7742
7743         * threads.c (mono_thread_suspend_all_other_threads): Handle the case when
7744         the a thread does not suspend within 100ms.
7745
7746         * monitor.c (mono_monitor_try_enter_internal): Handle SuspendRequested
7747         in addition to StopRequested as well.
7748
7749         * mono-debug.c: Call _mono_debug_get_image () while holding the debug lock.
7750
7751         * debug-mono-symfile.c (mono_debug_symfile_lookup_method): Actually
7752         search the method_hash before inserting a new entry, to avoid crashes when
7753         the same method is inserted multiple times, causing the old 
7754         MonoDebugMethodInfo structure to be freed by the value dtor function.
7755
7756 2009-02-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
7757
7758         * socket-io.c: support SO_MAXCONN, SO_USELOOPBACK and
7759         SO_EXLUSIVEADDRUSE where available.
7760
7761 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
7762
7763         * marshal.c (mono_marshal_get_runtime_invoke): Fix _another_ bug sharing
7764         runtime invoke wrappers, this time it is string ctor wrappers, which
7765         pass a dummy string as 'this' instead of their obj argument. Fixes
7766         #478473.
7767
7768 2009-02-21  Jb Evain  <jbevain@novell.com>
7769
7770         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
7771         only get create_culture once.
7772
7773 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
7774
7775         * reflection.c (mono_reflection_setup_internal_class): Move the user type
7776         check before the locking.
7777         
7778         * reflection.c (mono_reflection_setup_internal_class): Check for user types.
7779         (mono_reflection_create_runtime_class): Ditto.
7780         (mono_reflection_sighelper_get_signature_local): Ditto.
7781         (mono_reflection_sighelper_get_signature_field): Ditto.
7782
7783         * object-internals.h (CHECK_MONOTYPE): New macro to check that a Type object
7784         is a System.MonoType object or similar.
7785         (monotype_cast): New helper function to cast a MonoObject to a 
7786         MonoReflectionType object.
7787
7788         * object-internals.h: Change MonoReflectionType* members in structures to
7789         MonoObject* members to force the usage of the monotype_cast () function.
7790
7791         * reflection.c icall.c: Use monotype_cast () for accessing Type members of
7792         structures/arrays. This causes us to assert instead of crashing when 
7793         instances of user defined subclasses of System.Type are encountered.
7794
7795 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
7796
7797         * cil-coff.h:
7798         * icall-def.h:
7799         * icall.c: add new GetUnmanagedResourcePtr that returns a pointer to a
7800         win32 resource loaded from a PE file.
7801
7802         * image.c: fix mono_image_lookup_resource.
7803
7804 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
7805
7806         * icall-def.h:
7807         * threads-types.h:
7808         * threads.c: added internal call for WaitHandle.SignalAndWait.
7809
7810 2009-02-19  Bill Holmes  <billholmes54@gmail.com>
7811
7812         * cominterop.c : Adding cominterop_type_from_handle and 
7813           registering it as an icall.  Replacing all references
7814           to type_from_handle.
7815
7816         Code is contributed under MIT/X11 license.
7817
7818 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
7819
7820         * Makefile.am: Add lock-tracer.h and lock-trace.c.
7821
7822         * appdomain.c: Call the tracer init function.
7823
7824         * domain-internals.h: Enable the tracer for the domain locks.
7825
7826         * image.c: Enable the tracer for image locks.
7827
7828         * loader.c: Enable the trace for the loader lock.
7829
7830         * lock-tracer.h:
7831         * lock-tracer.c: Initial implementation of the lock trace utility.
7832         The tracer requires a compile time define to be enabled and a env var
7833         to be enabled at runtime.
7834
7835 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
7836
7837         * domain.c (mono_domain_code_foreach): Improve documentation.
7838
7839 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
7840
7841         * appdomain.c:
7842         * generic-sharing.c:
7843         * object.c:
7844         * reflection.c:  Adjust locking order to the new semantics where the loader lock
7845         comes first.
7846
7847 2009-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
7848
7849         * domain.c: Add mono_domain_code_* functions that perform locking
7850         around the domain codeman.
7851
7852         * domain-internals.h: Export those functions.
7853
7854         * object.c: Use new functions instead of acquiring the domain lock.
7855
7856 2009-02-19  Zoltan Varga  <vargaz@gmail.com>
7857
7858         * marshal.c (mono_ftnptr_to_delegate): Convert a NULL ftnptr to a null
7859         delegate. Fixes #477396.
7860
7861 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
7862
7863         * reflection.c (create_custom_attr): Get rid of alloca.
7864
7865 2009-02-18  Bill Holmes  <billholmes54@gmail.com>
7866
7867         * cominterop.c (cominterop_get_managed_wrapper_adjusted) :
7868           Adding exception handling for all CCW calls.
7869
7870         Code is contributed under MIT/X11 license.
7871
7872 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
7873
7874         * reflection.c (mono_reflection_init): Remove the unused reflection mutex.
7875
7876         * marshal.c (emit_marshal_boolean): Add null checks to the new 
7877         native->managed marshalling code. Fixes #476247.
7878
7879 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
7880
7881         * class.c (mono_class_get_vtable_entry): Move the addition of
7882         static rgctx invoke wrappers for vtable methods here, this simplifies
7883         a lot of code and causes fewer rgctx wrappers to be created.
7884
7885         * marshal.c (mono_marshal_get_static_rgctx_invoke): Change the
7886         name of the statistics to begin with an uppercase.
7887
7888 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
7889
7890         * reflection.c: Revert previous change as it breaks the build.
7891         
7892 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
7893
7894         * verify.c: Properly handle SZARRAY element type.
7895
7896         Fixes #474271.
7897
7898 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
7899
7900         * reflection.c (mono_image_create_method_token): Correctly encode
7901         MethodDef MemberRefParent token.
7902
7903         Fixes #472845.
7904
7905 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
7906
7907         * image.c (mono_image_close): Delete the critical section before
7908         freeing the memory holding it.
7909
7910 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7911
7912         * verify.c (mono_method_verify): rethrow opcode doesn not fall through.
7913         Fixes #476257.
7914
7915 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7916
7917         * pedump.c (main): Call mono_marshal_init so pedump
7918         doesn't crash.
7919
7920 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7921
7922         * loader.c (method_from_memberref): Properly fix #474271 and
7923         don't break the runtime bad.
7924
7925 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
7926
7927         * domain.c (mono_domain_alloc): Add locking so the caller doesn't have to.
7928         (mono_domain_alloc0): Ditto.
7929
7930 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7931
7932         * loader.c (method_from_memberref): Don't abort if the array
7933         method is not found. A regular loader failure is more informative
7934         and correct.
7935
7936         Fixes #474271.
7937
7938 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7939
7940         *loader.c: Guard MonoImage::method_cache/methodref_cache
7941         using the image lock instead of the loader lock.
7942
7943         * metadata.h: Add comments about which fields are protected by
7944         the image lock.
7945
7946 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
7947
7948         * appdomain.c (mono_set_private_bin_path_from_config): Fix a warning.
7949
7950         * generic-sharing.c (mono_method_construct_object_context): Remove the
7951         wrapper_type == NONE assert, it is not needed.
7952
7953 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
7954
7955         * reflection.c (clear_cached_object): New helper function.
7956         (mono_method_clear_object): New function to clear the cached reflection
7957         objects for a dynamic method.
7958
7959         * object.c (mono_runtime_free_method): Call mono_method_clear_object ().
7960         Partly fixes # 463323.
7961         
7962 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
7963
7964         * class.c:
7965         * loader.c:
7966         * reflection.c: Remove all explicit uses of MonoImage::property_hash.
7967
7968 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
7969
7970         * image.c: Add mono_image_property_(lookup,insert,remove) functions that
7971         take the image lock instead of the loader lock.
7972
7973         * metadata-internals.h: Export new functions.
7974
7975 2009-02-12  Miguel de Icaza  <miguel@novell.com>
7976
7977         * domain.c (app_config_parse): Remove another use of stat that is
7978         not necessary as g_file_get_contents already does the presence
7979         check. 
7980
7981 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
7982
7983         * cominterop.c icall-def.h: Fix the DISABLE_COM build.
7984
7985         * marshal.c: Move the bstr handling code to cominterop.c.
7986
7987         * marshal.c: Remove some COM interop code missed previously.
7988
7989 2009-02-12  Miguel de Icaza  <miguel@novell.com>
7990
7991         More Paolo patches from the Wii port:
7992         
7993         * security.c: Remove ves_icall_System_Environment_get_UserName
7994         from here.
7995
7996         * icall.c: And put ves_icall_System_Environment_get_UserName
7997         here. 
7998
7999         * appdomain.c (mono_set_private_bin_path_from_config): Remove
8000         redundant call to stat that was only used to test for the file
8001         existence.   Patch from Paolo.
8002
8003         * gc.c (run_finalize): If COM is disabled, do not link in
8004         mono_marshal_free_ccw.
8005
8006         * generic-sharing.c: Use alloca.h here as well.
8007
8008 2009-02-13 Rodrigo Kumpera  <rkumpera@novell.com>
8009
8010         * reflection.c (mono_reflection_lookup_dynamic_token): Do the locking properly.
8011
8012 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
8013
8014         * cominterop.c cominterop.h: New files.
8015
8016         * marshal.c: Move the COM interop related code to cominterop.c. Make a few
8017         function/typedefs which are needed by cominterop.c global.
8018
8019 2009-02-12  Mark Probst  <mark.probst@gmail.com>
8020
8021         * generic-sharing.c: Don't take the loader lock to guard image
8022         mempool allocs.
8023
8024 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8025
8026         * reflection.c (mono_reflection_lookup_dynamic_token): This function might be
8027         called without the loader lock which is required to guard MonoImage:tokens.
8028
8029 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8030
8031         * class.c:
8032         * metadata.c:
8033         * method-builder.c:
8034         * marshal.c:
8035         * reflection.c: Don't take the loader lock to alloc memory from the image mempool.
8036
8037 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8038
8039         * metadata.c: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
8040         Rework the code to use regular mono_image_alloc/0.
8041
8042         * loader.c: Rework the code to use regular mono_image_alloc/0.
8043
8044         * metadata-internals.h: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
8045
8046 2009-02-12  Bill Holmes  <billholmes54@gmail.com>
8047
8048         * object-internals.h : Fixing a typo in the 
8049           MonoReflectionComVisibleAttribute struct.
8050
8051         * marshal.c (cominterop_com_visible): Check the implemented 
8052           interfaces for ComImport.
8053
8054         * marshal.c (cominterop_get_native_wrapper_adjusted): For COM calls 
8055           assume that bools should be treated as VARIANTBOOLs.
8056
8057         * marshal.c (emit_marshal_boolean): Adding cases for 
8058           MARSHAL_ACTION_MANAGED_CONV_IN and MARSHAL_ACTION_MANAGED_CONV_OUT.
8059
8060         * marshal.c (mono_marshal_emit_managed_wrapper): Adding calls to 
8061           emit_marshal MARSHAL_ACTION_MANAGED_CONV_IN and OUT for bools.
8062
8063         * marshal.c (cominterop_get_ccw): For COM calls assume that bools
8064           should be treated as VARIANTBOOLs.    
8065
8066         Code is contributed under MIT/X11 license.
8067
8068 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8069
8070         * image.c (mono_image_alloc, mono_image_alloc0, mono_image_strdup): Guard mempool
8071         allocation with the image lock.
8072
8073 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8074
8075         This patch is the last of a series to remove explicit reference of MonoImage::mempool
8076         and use mono_image_alloc set of functions instead. This time we finish with reflection.c
8077
8078         * object.c: Add mono_string_to_utf8_image.
8079
8080         * object-internals.h: Export mono_string_to_utf8_image.
8081
8082         * reflection.c: Rework all explicit references to the the image mempool to go thought
8083         the mono_image_alloc set of functions.
8084
8085 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8086
8087         This patch is the third of a series to remove explicit reference of MonoImage::mempool
8088         and use mono_image_alloc set of functions instead. This time we finish with marshal.c
8089         and generics-sharing.c.
8090
8091         * generics-sharing.c (set_other_info_templates): Take a MonoImage instead of a MonoMemPool
8092         as first argument. Note that this function remains broken as it doesn't perform locking around the
8093         mempool allocation.
8094
8095         * generics-sharing.c (rgctx_template_set_other_slot): Pass the image and not the mempool.
8096
8097         * image.c: Add g_slist_append_image.
8098
8099         * metadata.c (mono_metadata_field_info_with_mempool): Remove the mempool argument and use
8100         the supplied image for allocation. Move code into mono_metadata_field_info_full.
8101
8102         * metadata.c (mono_metadata_parse_marshal_spec_full): Take a MonoImage instead of a MonoMemPool.
8103         Fix all related code to do the same.
8104
8105         * marshal.c (mono_marshal_load_type_info): Pass the image instead of the mempool.
8106
8107         * metadata-internals.h: Fix the signatures.
8108
8109 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8110
8111         This patch is the second of a series to remove explicit reference of MonoImage::mempool
8112         and use mono_image_alloc set of functions instead. This time we rework mono_metadata_type_dup
8113         and similar to work using MonoImage.
8114
8115         * class.c (mono_mempool_dup): Rename to mono_image_memdup and take a MonoImage instead of a
8116         MonoMemPool.
8117
8118         * class.c (mono_dup_array_type): Take a MonoImage instead of a MonoMemPool as first argument.
8119
8120         * class.c (mono_metadata_signature_deep_dup): Same.
8121
8122         * class.c (inflate_generic_type): Same.
8123
8124         * class.c (mono_class_inflate_generic_type_with_mempool): Same.
8125
8126         * metadata.c (mono_metadata_signature_dup_full): Same.
8127
8128         * metadata.c: Add mono_metadata_signature_dup_mempool and extract common functionality from 
8129         mono_metadata_signature_dup_full.
8130
8131         * metadata.c (mono_metadata_type_dup): Same.
8132
8133         * marshal.c: Pass the image to calls to mono_metadata_type_dup.
8134
8135         * reflection.c: Same.
8136
8137         * generic-sharing.c: Pass the image to calls to mono_class_inflate_generic_type_with_mempool.
8138
8139         * metadata-internals.h: Fix the signatures.
8140
8141         * class-internals.h: Same.
8142
8143 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8144
8145         This patch is the first of a series to remove explicit reference of MonoImage::mempool
8146         and use mono_image_alloc set of functions instead. 
8147
8148         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy):
8149         Rename to mono_class_inflate_generic_type_no_copy and take a MonoImage instead
8150         of a MonoMemPool.
8151
8152         * class.c (mono_class_setup_fields): Adapt to mono_class_inflate_generic_type_no_copy.
8153
8154         * class.c (g_list_prepend_mempool): Removed.
8155
8156         * class.c (mono_class_get_nested_types): Use g_list_prepend_image instead of g_list_prepend_mempool.
8157
8158         * image.c: Add g_list_prepend_image.
8159
8160         * metadata-internals.h (struct MonoImage): Fix comment. Export g_list_prepend_image as internal.
8161
8162         * reflection.c (mono_reflection_create_runtime_class): Use g_list_prepend_image instead of g_list_prepend_mempool.
8163
8164
8165 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8166
8167         * metadata-internals.h (struct MonoImage): Add lock field. Export mono_image_lock and
8168         mono_image_unlock.
8169
8170         * image.c (mono_image_init): Init the lock field.
8171  
8172         * image.c (mono_image_init): Cleanup the lock field.
8173
8174         * image.c: Add mono_image_(un)lock functions.
8175
8176 2009-02-11  Mark Probst  <mark.probst@gmail.com>
8177
8178         * class.c, class-internals.h: mono_method_get_context_general()
8179         combines the functionality of mono_method_get_context() and
8180         mini_method_get_context().
8181
8182         * generic-sharing.c, domain-internals.h:
8183         mono_method_construct_object_context() and
8184         mono_domain_lookup_shared_generic() moved from mini.
8185
8186         * icall.c (ves_icall_InternalInvoke): Handle the case where the
8187         method doesn't have the correct instantiation because it's shared
8188         generic code.  Fixes #473999.
8189
8190 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
8191
8192         * loader.c (mono_method_get_wrapper_data): Handle inflated methods as well.
8193
8194         * loader.c (mono_loader_lock): Add a comment pointing to the locking document.
8195         
8196 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8197
8198         * metadata.c: Make mono_image_alloc_lock and mono_image_alloc0_lock non static.
8199
8200         * metadata-internals.h: Export mono_image_alloc_lock and mono_image_alloc0_lock.
8201
8202         * loader.c (mono_get_method_full): Drop the loader lock while constructing the method
8203         and recheck the cache for dups after it.
8204
8205         * loader.c (mono_get_method_from_token): Use _lock version of mono_image_alloc0.
8206
8207         Fixes one of the deadlocks found in #473150.
8208
8209 2009-02-11  Bill Holmes  <billholmes54@gmail.com>
8210
8211         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
8212           For Win32, add additional break conditions for accept.
8213
8214         Code is contributed under MIT/X11 license.
8215
8216 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
8217
8218         * marshal.c (mono_marshal_get_native_func_wrapper): Use get_cache to
8219         lazily initialize the native wrapper cache.
8220         (mono_marshal_get_native_wrapper): Put aot-ed native wrappers into a separate
8221         cache, since they are different from the normal wrappers.
8222
8223         * image.c (mono_image_init): Initialize native_wrapper_cache lazily as well.
8224
8225         * metadata-internals.h (struct _MonoImage): Add a new wrapper for
8226         AOT compiled native wrappers.
8227
8228 2009-02-09  Geoff Norton  <gnorton@novell.com>
8229
8230         * appdomain.h:
8231         * security-core-clr.c: Allow enabling core-clr from the embedding
8232         API.
8233
8234 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8235
8236         * socket-io.c: when requesting all the local ips, if there are no
8237         interfaces up and running, MS returns 127.0.0.1.
8238
8239 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8240
8241         * mono-perfcounters-def.h: processor time is an inverse time.
8242         Fixes bug #468625.
8243
8244 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8245
8246         * socket-io.c: an empty host name returns the list of local IPs.
8247         Fixes bug #386637 part 1/2.
8248
8249 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
8250
8251         * verify.c (mono_class_interface_implements_interface): Call
8252         mono_class_setup_interfaces ().
8253         (merge_stacks): Ditto.
8254
8255 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
8256
8257         * class.c (mono_class_setup_interfaces): New function to lazily initalize
8258         klass->interfaces.
8259         (mono_generic_class_get_class): Don't initalize klass->interfaces.
8260         (mono_generic_class_get_class): Ditto.
8261
8262 2009-02-06  U-QUACK\miguel  <miguel@quack>
8263
8264         * icall-defs.h: Include also the Encrypt/Decrypt string methods as
8265         they live in security.c
8266
8267         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Integrated
8268         another bit from Paolo's code.
8269
8270 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
8271
8272         * object.c (build_imt_slots): Add a small optimization to avoid inflating
8273         methods which will be discarded by add_imt_builder_entry ().
8274
8275         * marshal.c (get_runtime_invoke_type): Avoid sharing enum types since they
8276         need to be boxed.
8277
8278         * loader.c: Add a statistics for the size of the memberref signature cache.
8279         
8280         * loader.c (find_cached_memberref_sig): New helper function.
8281         (cache_memberref_sig): Ditto.
8282
8283         * loader.c: Cache the result of parsing memberref signatures, since otherwise
8284         they will be parsed again for every generic instantiation, leading to unbounded
8285         memory growth.
8286
8287 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8288
8289         * loader.c (mono_get_method_from_token): Avoid creating class for the generic
8290         parameters of generic methods.
8291
8292         * class.c (mono_class_inflate_generic_method_full): Set is_mb_open again
8293         after the original method is copied to the inflated method.
8294         (mono_class_get_vtable_entry): Handle rgctx invoke wrappers more efficiently.
8295
8296         * class-internals.h (struct _MonoMethodInflated): Move the is_mb_open
8297         field to MonoMethod since it only consumes 1 bit there, and 4/8 bytes here.
8298
8299         * class.c metadata.c: Update after the changes above.
8300
8301 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
8302
8303         * metadata-verify.c: Simplified error handling and added
8304         section table validation.
8305
8306 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8307
8308         * class-internals.h (MonoClassExt): New structure containing rarely used
8309         fields of MonoClass.
8310         (struct _MonoClass): Move rarely used fields to MonoClassExt, accessed
8311         through a new 'ext' field.
8312
8313         * class.c (mono_class_alloc_ext): New helper function to allocate 
8314         class->ext.
8315
8316         * class.c metadata.c reflection.c: Update after MonoClass structure changes.
8317
8318 2009-02-05  Mark Probst  <mark.probst@gmail.com>
8319
8320         * object.c (mono_object_get_virtual_method): Properly inflate
8321         generic methods.  Fixes #472692.
8322
8323 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
8324
8325         * class.c (mono_class_create_from_typedef): The CLR supports SystemF
8326         recursive types such as List<T>:Cons<T,List<T>> so when doing the lookup
8327         for the parent type, the created type must be ready to be used on a generic
8328         instantiation.
8329         We fill this_arg/byval_arg if the parent is a generic instance to make sure
8330         we won't have duplicated entries in generic_inst_cache.
8331
8332         Fixes #469553.
8333
8334 2009-02-05  Miguel De Icaza  <miguel@novell.com>
8335
8336         * threadpool.c (socket_io_add_poll): Remove the BSD6 define and
8337         replace with plain BSD per the comments on the bug MONO77637.
8338
8339 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8340
8341         * class.c (mono_class_get_generic_class): New accessor function.
8342         (mono_class_get_generic_container): Ditto.
8343
8344         * class-internals.h (struct _MonoClass): Add 'is_generic' and 'is_inflated'
8345         fields, similar to the ones in MonoMethod.
8346
8347         * class.c (mono_generic_class_get_class): Set klass->is_inflated.
8348         (mono_class_create_from_typedef): Set klass->is_generic if needed.
8349
8350         * reflection.c (mono_reflection_create_generic_class): Set klass->is_generic.
8351         
8352         * class-internals.h (struct _MonoClass): Remove enum_basetype, it contains
8353         the same information as element_class->byval_arg.
8354
8355         * class.c reflection.c: Remove references to class->byval_arg.
8356
8357         * class.c marshal.c: Use mono_class_enum_basetype () instead of accessing 
8358         klass->enum_basetype directly.
8359
8360         * verify.c metadata.c object.c icall.c reflection.c: Use 
8361         mono_class_enum_basetype () instead of accessing klass->enum_basetype 
8362         directly.
8363
8364 2009-02-04  Miguel de Icaza  <miguel@novell.com>
8365
8366         * icall-def.h: Remove internal calls for sockets when
8367         DISABLE_SOCKET is defined, file system writing features when the
8368         OS only support reading and not writing data and Policy support if
8369         the Policy is disabled.
8370         
8371         * image.c (do_mono_image_open): Apply Paolo's patches for using
8372         mono_file_map_ APIs here.
8373
8374         * assembly.c: Add support for platforms to avoid prefix
8375         auto-detection. 
8376
8377 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
8378
8379         * generic-sharing.c (mono_method_fill_runtime_generic_context): Fix a
8380         warning.
8381
8382         * class.c (mono_class_inflate_generic_class): New helper function.
8383
8384         * class.c: Use mono_class_inflate_generic_class in a few places. Add
8385         statistics for inflated methods/classes.
8386
8387         * loader.c (inflate_generic_header): Use mono_class_inflate_generic_class.
8388
8389         * icall.c (ves_icall_Type_GetMethodsByName): Optimize the case when
8390         the call is made from Delegate.CreateDelegate () for the invoke method of
8391         a delegate.
8392
8393         * loader.c: Add a statistics for the memory occupied by inflated signatures.
8394
8395         * metadata.c (mono_metadata_signature_size): New helper function.
8396
8397         * class.c (mono_class_get_method_from_name_flags): Add an optimization for
8398         generic instances.
8399
8400         * metadata.c (inflated_method_in_image): Avoid calling 
8401         mono_method_signature () if the method does not already have a signature.
8402
8403 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8404
8405         * verify.c (is_compatible_boxed_valuetype): When checking if the boxed 
8406         valuetype is compatible with target type, check by inheritance as a
8407         VT is not really compatible with System.ValueType, for example.
8408
8409         * verify.c (do_invoke_method): Improve error message.
8410
8411         * verify.c (do_box_value): If boxing a nullable, use the type argument
8412         on stack instead.
8413
8414         * verify.c (do_newobj): Improve error message.  
8415
8416         Fixes #469549.
8417
8418 2009-02-03  Miguel de Icaza  <miguel@novell.com>
8419
8420         * appdomain.c: Add support for DISABLE_SOCKETS and DISABLE_SHADOW_COPY
8421
8422 2009-02-03  Mark Probst  <mark.probst@gmail.com>
8423
8424         * generic-sharing.c: Don't hold domain lock when calling
8425         instantiate_other_info().  Fixes #471958.
8426
8427         * domain-internals.h, loader.c: Describe locking policy of domain
8428         lock vs loader lock.
8429
8430 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8431
8432         * verify.c (mono_delegate_signature_equal): Make it possible to check
8433         first-arg-bound delegates to static method.
8434
8435         * verify.c (verify_delegate_compatibility): Correctly verify delegates to
8436         static methods with the first arg bound.
8437
8438         Fixes #469529.
8439
8440 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8441
8442         * verify.c: Added stack_slot_full_name to provide decent and more meanfull
8443         errors.
8444
8445         * verify.c (is_compatible_boxed_valuetype): Be less restrictive when not
8446         under strict mode. Any type, when boxed can be seen as a reference type.
8447
8448         Fixes #469528.
8449
8450 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8451
8452         * object.h: The lower bound of an array is a signed integer value.
8453         Introduce mono_array_lower_bound_t typedef. It should be used instead of
8454         gint32 as under MONO_BIG_ARRAYS it will be a gint64.
8455
8456         * icall.c: Cast MonoArrayBounds::length to a signed value so correctly
8457         calculate the upper bound.
8458         
8459         Fixes #471252.
8460
8461 2009-02-02  Miguel de Icaza  <miguel@novell.com>
8462
8463         From Paolo's work, refactored, cleared up:
8464         
8465         * threadpool.c, icall.c: ifdef code that requires a working socket
8466         stack.
8467
8468         * metadata.c (mono_metadata_field_info): Do not attempt to return
8469         a value from a function declared as void.
8470
8471         * console-io.c: Use MONO_NULL_TTYDRIVER to remove the tty driver
8472         from the console stack.
8473
8474         * assembly.c: use strrchr instead of rindex.
8475
8476         * class.c, object.c, marshal.c, icall.c, reflection.c: include
8477         alloca.h on systems that have it.
8478
8479         * environment.c: Avoid code that uses stuff from
8480         HAVE_SYS_UTSNAME_H
8481         
8482         * appdomain.c: Include sys/time.h.
8483
8484         * console-io.c: include sys/ioctl.h if it is available.
8485
8486 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
8487
8488         * method-builder.h (_MonoMethodBuilder): Add a 'skip_visibility' flag.
8489
8490         * method-builder.c (mono_mb_create_method): Set method->skip_visibility from
8491         the method builder.
8492
8493         * marshal.c: Set mb->skip_visibility instead of setting it on the method
8494         after it was created and cached, as the later is not thread safe.
8495         
8496 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
8497
8498         * mono-debug.c (mono_debug_print_stack_frame): Avoid crashes when this is
8499         called while the debugging module is not initialized. Fixes #471669.
8500
8501 2009-02-02 Rodrigo Kumpera  <rkumpera@novell.com>
8502
8503         * icall.c (type_from_name): Ignore reflection frames to find out the real caller.
8504
8505         Fixes #471255.
8506
8507 2009-02-02  Mark Probst  <mark.probst@gmail.com>
8508
8509         * generic-sharing.c (lookup_or_register_other_info): Make sure the
8510         loader lock is not taken while the templates lock is held.  Fixes
8511         #471089.
8512
8513 2009-02-02  Mark Probst  <mark.probst@gmail.com>
8514
8515         * metadata.c (type_in_image): Added a check to fix a monodis
8516         crash.
8517
8518 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
8519
8520         * marshal.c (mono_marshal_get_runtime_invoke): Add support for byref
8521         nullable arguments.
8522
8523         * object.c (mono_runtime_invoke_array): Ditto.
8524         
8525         * marshal.c (mono_marshal_free_dynamic_wrappers): New function for
8526         freeing wrappers of dynamic methods.
8527
8528         * loader.c (mono_free_method): Call it. Fixes #463323.
8529         
8530         * marshal.c (mono_marshal_get_runtime_invoke): Disable sharing for
8531         methods taking vtype/byref arguments, to fix yet another bug caused by
8532         the sharing of runtime invoke wrappers. Partly fixes #471259.
8533
8534 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
8535
8536         * debug-mono-symfile.c (check_line): Return NULL instead of returning
8537         <first file in file table>:1 when the IL offset does not have an associated
8538         line number.
8539
8540 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
8541
8542         * mono-debug.c (mono_debug_lookup_locals): New function to return local
8543         variable info for a method.
8544
8545         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Ditto.
8546         
8547 2009-01-30  Jb Evain  <jbevain@novell.com>
8548
8549         * pedump.c: reuse code from monodis to make sure pedump honors
8550         MONO_PATH, which is needed to verify net_2_1 assemblies.
8551
8552 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
8553
8554         * mono-debug.c (mono_debug_print_stack_frame): Print the IL offset even when
8555         there is no line number info.
8556
8557 2009-01-29  Raja R Harinath  <harinath@hurrynot.org>
8558
8559         Avoid some MonoType allocations
8560         * reflection.c (mono_reflection_initialize_generic_parameter):
8561         Reuse MonoType from param->pklass rather than allocating one.
8562         (mono_dynamic_image_free): Update to changes.
8563
8564 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
8565
8566         Rearrange some code to improve consistency
8567         * reflection.c (mono_reflection_setup_generic_class): Move body ...
8568         (mono_reflection_initialize_generic_parameter): ... here.
8569
8570 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
8571
8572         * generic-sharing.c (has_constraints): Enable gshared for methods/classes
8573         with type constraints as an experiment.
8574
8575         * boehm-gc.c (on_gc_notification): Update mono_stats.
8576
8577 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
8578
8579         Avoid some allocations
8580         * class-internals.h (_MonoGenericInst::type_argv): Convert from
8581         pointer to tail array to avoid extra allocation.
8582         * metadata.c (free_generic_inst): Update to changes.
8583         (mono_metadata_get_generic_inst): Likewise.  Use alloca instead of
8584         on-stack struct.
8585
8586 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
8587
8588         * icall.c (ves_icall_System_Type_EqualsInternal): For user-defined types,
8589         return TRUE if the two type objects are the same.
8590
8591 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
8592
8593         * marshal.c (mono_marshal_load_type_info): Fill out info->min_align.
8594         (mono_class_native_size): Use klass->marshal_info->min_align instead of
8595         klass->min_align, since klass->min_align contains the managed alignment,
8596         while the native alignment can be different, like for longs on x86.
8597         Fixes #469135.
8598
8599         * class-internals.h (MonoMarshalType): Add a min_align field.
8600
8601 2009-01-26 Rodrigo Kumpera  <rkumpera@novell.com>
8602
8603         * assembly.c (mono_assembly_try_decode_skip_verification): Add a hack to check
8604         the 1.0 format.
8605
8606 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
8607
8608         * domain-internals.h (struct _MonoJitInfo): Add a 'from_aot' field plus
8609         some comments about the usage of the used_regs field.
8610
8611         * marshal.c (emit_marshal_ptr): Allow pointers to blittable structures.
8612         Fixes #469217.
8613
8614 2009-01-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
8615
8616         * appdomain.c: return NULL instead of throwing FileNotFoundException
8617         when LoadAssembly() fails.
8618
8619 2009-01-23  Mark Probst  <mark.probst@gmail.com>
8620
8621         * metadata.c (mono_metadata_generic_param_equal): Only compare the
8622         image if the owner is NULL.  Fixes the AOT failures.
8623
8624 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
8625
8626         * metadata.c (mono_metadata_load_generic_params): Initialize the 
8627         MonoGenericParam structure using memset so the image field is initialized
8628         as well.
8629
8630 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8631
8632         * appdomain.c (mono_domain_unload): Change the InterlockedIncrement to
8633         a plain store.
8634
8635 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
8636
8637         * class.c (mono_class_setup_vtable_general): In the generic instance
8638         optimization, set method->slot for abstract virtual methods. Fixes part of
8639         #467834.
8640
8641 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8642
8643         * domain-internals.h: Add new appdomain state MONO_APPDOMAIN_UNLOADING_START
8644         which signals that the unloading has started but all appdomain services must
8645         remain operational.
8646
8647         * appdomain.c (mono_domain_unload): The initial state for unloading now
8648         is unloading_start and we switch to unloading after the managed call to
8649         AppDomain::DomainUnload has finished.
8650
8651         The new unloading state has to be created because managed code in the
8652         DomainUnload event can depend on things like the threadpool still working.
8653         The domain must remain fully functional while the event executes.
8654
8655         This shown as an issue due to Process::WaitForExit, which waits for
8656         async reads of stdout and stderr to complete. Since those are processed
8657         in the threadpool the code deadlocks because the DomainUnload callback 
8658         waits for the async read finished event, which should have been set by a
8659         threadpool job but has been discarded due to the domain been in unload
8660         state.
8661
8662 2009-01-21  Mark Probst  <mark.probst@gmail.com>
8663
8664         * metadata.c (mono_metadata_generic_param_equal): Owner as well as
8665         image must match.
8666
8667 2009-01-21  Mark Probst  <mark.probst@gmail.com>
8668
8669         * reflection.c (resolve_object): For fields, inflate the class and
8670         then get the field in the inflated class.
8671
8672 2009-01-20  Mark Probst  <mark.probst@gmail.com>
8673
8674         * object-internals.h (struct _MonoException): Added a comment
8675         explaining the new use of trace_ips.
8676
8677 2009-01-20  Mark Probst  <mark.probst@gmail.com>
8678
8679         * generic-sharing.c (inflate_other_data): Inflate array methods
8680         correctly.
8681
8682         * loader.c, class-internals.h: Rename search_in_array_class() to
8683         mono_method_search_in_array_class() and make it non-static.
8684
8685 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
8686
8687         * metadata.c (inflated_signature_in_image): Call signature_in_image as well.
8688         Hopefully fixes #458168.
8689
8690 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
8691
8692         * object.c (mono_raise_exception): Remove call to InterlockedIncrement
8693         as it is performed elsewhere.
8694
8695         Code is contributed under MIT/X11 license
8696
8697 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
8698
8699         * mono-perfcounters-def.h: Add counters for asp.net requests total and
8700         requests queued.
8701         * object.c (mono_raise_exception): Increment the exceptions total
8702         counter when an exception is thrown.
8703         * class-internals.h: Add a location for storing the total number of
8704         asp.net requests served.
8705         * mono-perfcounters.c: Implement update support for asp.net counters
8706         from the class libraries. Implement read support for asp.net counters
8707         and exceptions total counter.
8708
8709 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
8710
8711         * loader.c (search_in_array_class): Call mono_class_setup_methods () before
8712         accessing klass->methods. Fixes #467385.
8713
8714 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
8715
8716         * marshal.c (emit_marshal_custom): Avoid calling MarshalNativeToManaged
8717         for byval arguments without an [Out] attribute. Fixes #467212.
8718
8719         * attach.c: Applied patch from Koushik Dutta (koush@koushikdutta.com). 
8720         Fix compilation under android.
8721         
8722         * sgen-gc.c: Instead of scanning gray objects after all roots have been 
8723         processed, scan them directly after they are copied, to achieve better locality
8724         and cache usage.
8725
8726         * socket-io.c: Applied patch from Koushik Dutta
8727         (koush@koushikdutta.com). Disable IPV6 when running under android.
8728
8729 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
8730
8731         * icall.c (ves_icall_InternalExecute): Add write barriers.
8732
8733         * marshal.c (mono_marshal_get_write_barrier): Remove, this is now done in
8734         the GC code.
8735
8736         * sgen-gc.c: Implement write barriers in IL code.
8737
8738 2009-01-17  Geoff Norton  <gnorton@novell.com>
8739
8740         * image.c: Avoid trying to walk the reference table of dynamic assemblies.
8741
8742 2009-01-17  Geoff Norton  <gnorton@novell.com>
8743
8744         * image.c: When unloading the image->references table, there can be gaps
8745         in it.  Ensure that we iterate every entry to avoid leaking assembly references
8746         when unloading an appdomain.
8747
8748 2009-01-16  Zoltan Varga  <vargaz@gmail.com>
8749
8750         * sgen-gc.c: Add support for allocating a nursery at an aligned address, to
8751         speed up ptr-in-nursery checks.
8752
8753         * threads.c (mono_threads_abort_appdomain_threads): Abort threads outside the
8754         threads_lock () to prevent deadlocks.
8755
8756         * sgen-gc.c gc-internal.h: Add a new root type root-with-wbarrier, which
8757         does not need to be scanned during minor collections, since writes to it
8758         must use write barriers.
8759
8760 2009-01-15 Rodrigo Kumpera  <rkumpera@novell.com>
8761
8762         * metadata-verify.c: Add pe nt header verification.
8763         
8764 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
8765
8766         * gc.c: Fix a few warnings when using SGEN.
8767
8768 2009-01-14 Rodrigo Kumpera  <rkumpera@novell.com>
8769
8770         * metadata-verify.c: Add pe optional header verification.
8771
8772 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
8773
8774         * sgen-gc.c: Add support for user defined marker functions, used by
8775         MonoGHashTable to avoid registering a GC root for every hash node.
8776
8777 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
8778
8779         * sgen-gc.c: Fix warnings. Optimize copy_object () a bit. Split pinned/
8780         non-pinned roots into separate hashes to avoid having to traverse them
8781         in functions which are only interested in one kind.
8782
8783 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
8784
8785         * metadata-verify.c: Add pe header machine field verification.
8786         
8787 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
8788
8789         * metadata-verify.c: Add pe header size verification.
8790
8791 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
8792
8793         * reflection.c (ALLOC_REFENTRY): Don't allocate the ReflectionEntry structures
8794         using the GC, they don't contain references.
8795
8796         * domain.c (mono_domain_create): Create ldstr_table using MONO_HASH_KEY_VALUE_GC.
8797
8798 2009-01-13  Geoff Norton  <gnorton@novell.com>
8799
8800         * appdomain.c|h: Expose mono_domain_unload to the embedding api so that 
8801         AppDomains created on the native side can be cleaned up on the native side.
8802
8803 2009-01-13  Geoff Norton  <gnorton@novell.com>
8804
8805         * appdomain.c: Ensure that we call mono_context_init for the embedding api
8806         as well as the managed api.
8807
8808 2009-01-13  Geoff Norton  <gnorton@novell.com>
8809
8810         * appdomain.h|c: New API for creating a MonoDomain in the embedding api
8811         with a MonoAppDomain initialized against it.
8812
8813 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
8814
8815         * reflection.c (MOVING_GC_REGISTER): Fix a warning.
8816         
8817         * reflection.c (mono_image_get_generic_param_info): Use MOVING_GC_REGISTER.
8818
8819         * marshal.c: Avoid setting the exception clauses after a method has been entered 
8820         into the wrapper caches. Fixes #465700.
8821
8822         * method-builder.c (mono_mb_set_clauses): New function to set the clauses of the
8823         method builder.
8824         (mono_mb_create_method): Set the clauses from the method builder.
8825
8826 2009-01-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
8827
8828         * threadpool.c: include sys/socket.h. Fixes compilation on FreeBSD.
8829         Patch from Makoto Kishimoto.
8830
8831 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
8832
8833         * sgen-gc.c (mono_gc_make_descr_from_bitmap): Handle large bitmaps by 
8834         encoding them as ROOT_DESC_COMPLEX.
8835         (precisely_scan_objects_from): Implement support for ROOT_DESC_COMPLEX.
8836
8837 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
8838
8839         * sgen-gc.c (scan_from_remsets): Clear the global remset of pointers which
8840         no longer point to the nursery.
8841
8842         * sgen-gc.c: Add a few comments/FIXMEs.
8843         
8844         * sgen-gc.c: Implement scanning of the alloc_pinned objects.
8845
8846         * marshal.c (mono_marshal_get_synchronized_wrapper): Make the 
8847         initialization of the various _method variables thread safe. Fixes
8848         #465377.
8849
8850 2009-01-12  Mark Probst  <mark.probst@gmail.com>
8851
8852         * domain.c, domain-internals.h: Remove the shared_generics_hash
8853         and its lookup functions.
8854
8855 2009-01-12  Bill Holmes  <billholmes54@gmail.com>
8856
8857         * socket-io.c:  Fixing the MSVC build. 
8858
8859         Code is contributed under MIT/X11 license.
8860
8861 2009-01-12 Rodrigo Kumpera  <rkumpera@novell.com>
8862
8863         * metadata-verify.c: Add pe header watermark verification.
8864
8865 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
8866
8867         * metadata-verify.c: Add lfanew verification.
8868
8869 2009-01-12  Jb Evain  <jbevain@novell.com>
8870
8871         * tabldefs.h: rename METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE to
8872         METHOD_ATTRIBUTE_STRICT to match the ECMA terminology.
8873
8874 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
8875
8876         * socket-io.c: Fix the build.
8877
8878         * environment.c: Fix an #ifdef.
8879
8880 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
8881
8882         * threadpool.c (async_invoke_thread): Handle the wait function returning
8883         WAIT_IO_COMPLETION as well.
8884         (async_invoke_io_thread): Ditto.
8885
8886 2009-01-09  Bill Holmes  <billholmes54@gmail.com>
8887
8888         * threads.c: Fixing the Windows build.
8889
8890         Code is contributed under MIT/X11 license.
8891
8892 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
8893  
8894         * threads.c (signal_thread_state_change): Call wapi_interrupt_thread () to
8895         interrupt a wait.
8896         (mono_thread_execute_interruption): Call wapi_clear_interruption () to enable
8897         the thread to wait again.
8898
8899 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
8900
8901         * metadata-verify.c: Initial skeleton of the metadata verifier.
8902
8903         * pedump.c: Add support for the metadata verifier.
8904
8905         * verify-internal.h: Export the whole assembly metadata verifier function.
8906
8907 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
8908
8909         * gc.c (mono_gc_init): Fix the comments about deadlock on windows.
8910
8911 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
8912
8913         * Makefile.am: Upgrade dtrace-prelink.sh location.
8914
8915 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
8916
8917         * gc.c (mono_gc_init): Wait for finalizer thread to init on windows as
8918         well. Otherwise the shutdown deadlock that happens on unix will can happen
8919         as well.
8920         If the main thread code finishes too fast it's possible that the finalizer
8921         thread won't have executed yet, won't record itself as the finalizer thread
8922         and the shutdown sequence will wait on it forever.
8923
8924 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
8925
8926         * threads.c (mono_thread_current): Make THREAD_DEBUG work on windows
8927         with MSVC.
8928
8929 2009-01-08  Miguel de Icaza  <miguel@novell.com>
8930
8931         * appdomain.c: Initialize the mono_strtod_mutex here, thanks to
8932         Robert Jordan for pointing this out.
8933
8934 2009-01-08  Christian Prochnow  <cproch@seculogix.de>
8935
8936         * icall.c
8937         * icall-def.h: added internal calls ves_icall_System_IO_DriveInfo_GetDiskFreeSpace,
8938         ves_icall_System_IO_DriveInfo_GetDriveType.
8939
8940 2009-01-07  Miguel de Icaza  <miguel@novell.com>
8941
8942         * icall.c: Wrap calls to mono_strtod in CriticalSection
8943         invocations when using eglib, to work around #464316.
8944
8945 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
8946
8947         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Double check the
8948         return value of GetCurrentDirectory to never access unitialized memory.
8949
8950 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
8951
8952         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Properly check the
8953         return value of GetCurrentDirectory and expand the buffer if needed.
8954
8955         Fixes #459094.
8956
8957 2009-10-07 Tom Hindle  <tom_hindle@sil.org>
8958
8959         * marshal.c (GetIUnknownForObjectInternal, GetIUnknownForObjectInternal) : 
8960           Adding a call to mono_init_com_types.
8961
8962         Code is contributed under MIT/X11 license.
8963
8964 2009-01-07  Geoff Norton  <gnorton@novell.com>
8965
8966         * socket-io.c: ioctlsocket(FIONREAD) returns the size of the UDP header as well on 
8967         darwin.  Use getsockopt SO_NREAD instead to get the right values for TCP and UDP.
8968         ai_canonname can be null in some cases on darwin, where the runtime assumes it will 
8969         be the value of the ip buffer.
8970
8971 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
8972
8973         * verify.c (mono_class_interface_implements_interface): Verify parents as we can't rely on
8974         interfaces_packed here.
8975
8976         Fixes part of #463294.
8977
8978 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
8979
8980         * verify.c (is_array_type_compatible): Ignore bounds and sizes when checking array compatibility.
8981
8982         Fixes part of #463294.
8983
8984 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
8985
8986         * verify.c (stack_slot_is_complex_type_not_reference_type): Check if the type
8987         is a boxed complex as well.
8988
8989         Fixes part of #463294.
8990
8991 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
8992
8993         * reflection.c (mono_image_get_methodref_token): Add an extra create_typespec parameter to
8994         control if a methodspec should be created for the generic method definition from external assemblies.
8995         Caching of methodspec is done using the handleref hash table.
8996
8997         Fixes #462592.
8998
8999 2009-01-05 Rodrigo Kumpera  <rkumpera@novell.com>
9000
9001         * loader.c (find_method): When searching the interfaces of a class
9002         check the transitive closure of implemented interfaces.
9003
9004         Fixes #463303.
9005
9006 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
9007
9008         * class.c (get_implicit_generic_array_interfaces): Improve debugging code.
9009         
9010 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
9011
9012         * class.c (get_implicit_generic_array_interfaces): Extract valuetype
9013         interfaces calculation to fill_valuetype_array_derived_types.
9014
9015         * class.c (get_implicit_generic_array_interfaces): Valuetypes need IList /
9016         ICollection / IEnumerator interfaces for their extra twin type - sbyte for byte
9017         for example.
9018
9019         * class.c (get_implicit_generic_array_interfaces): InternalEnumerator gets
9020         interfaces for valuetypes if needed.    
9021
9022         * class.c (fill_valuetype_array_derived_types): Enums should have interfaces
9023         for their basetype as well. Types are array expanded if rank is > 0.
9024
9025         Fixes #400716.
9026
9027 2008-12-30  Bill Holmes  <billholmes54@gmail.com>
9028
9029         * socket-io.h : Changing the signature of
9030           ves_icall_System_Net_Sockets_Socket_Accept_internal to pass
9031           the blocking state.
9032
9033         * icall-def.h :  Changing the signature of
9034           System.Net.Sockets.Socket.Accept_internal to pass the blocking state.
9035
9036         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
9037           For Windows only.  Avoid blocking when calling accept by
9038           querying for a connection via select.  The loop also queries
9039           the thread state every 1000 micro seconds for the thread
9040           stop state.  This will avoid the process hanging on shutdown
9041           when using a TcpChannel that is never connected to.
9042
9043         Code is contributed under MIT/X11 license.
9044
9045 2008-12-30  Marek Safar  <marek.safar@gmail.com>
9046
9047         * tabledefs.h: Add METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE.
9048
9049 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
9050
9051         * class.c (get_implicit_generic_array_interfaces): Extract common
9052         code to a helper function making it a lot easier on the eyes.
9053
9054 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
9055
9056         * class.c (get_implicit_generic_array_interfaces): If the internal
9057         enumerator is an interface inflate System.Object instead of itself.
9058
9059         Fixes #461261.
9060
9061 2008-12-24 Rodrigo Kumpera  <rkumpera@novell.com>
9062
9063         * object.c (mono_runtime_invoke_array): Don't assert with
9064         byref nullable types.
9065
9066         * marshal.c (mono_marshal_get_runtime_invoke): To handle
9067         byref nullables we unbox the object and store it on the
9068         stack. 
9069         We can't use the boxed object since it is the T of Nullable<T>
9070         and the boxed representation of a nullable it's underlying type
9071         or null.
9072         We could cheat and create a boxed nullable and use the same
9073         machinery of other byref VTs but this feels like a hack and
9074         using the stack has the bonus of reducing heap pressure.
9075
9076         Fixes #461941.
9077
9078 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
9079
9080         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
9081         return value.
9082
9083         Fixes #461867.
9084
9085 2008-12-19  Bill Holmes  <billholmes54@gmail.com>
9086
9087         * icall-def.h : Adding an internal call definition for 
9088           System.Environment.internalBroadcastSettingChange.
9089
9090         * icall.c : Adding a Windows only implementation to broadcast a 
9091           WM_SETTINGCHANGE when an environment variable has changed.
9092
9093         Code is contributed under MIT/X11 license.
9094
9095 2008-12-19  Mark Probst  <mark.probst@gmail.com>
9096
9097         * class.c, class-internals.h: Made
9098         mono_class_has_parent_and_ignore_generics() non-static.
9099
9100 Thu Dec 18 16:35:22 CET 2008 Paolo Molaro <lupus@ximian.com>
9101
9102         * image.c: deal with the mmap failing when loading an image.
9103
9104 2008-12-17  Geoff Norton  <gnorton@novell.com>
9105
9106         * threadpool.c: Ensure that the io_queue_lock is initialized
9107         in all circumstances, as we always attempt to cleanup against it.
9108
9109 2008-12-17  Miguel de Icaza  <miguel@novell.com>
9110
9111         * icall.c (ves_icall_System_Environment_get_Platform): For
9112         compatibility reasons for existing client code we will keep
9113         returning 4 for a while.   
9114
9115         For how long will depend on the documentation being updated, and
9116         for us to give client code a chance to be updated.
9117
9118         This reverts the original decison on #433108 since we did not
9119         catch roughly 33 instances of the broken code in our own source
9120         code base, we did not catch failures on the buildbots, and QA did
9121         not bring this as a problem.
9122
9123         Only today I found some customer's code breaking due to our own
9124         class libraries not being fully updated and tracked it down to
9125         this change.  I am reverting it because if we could not even get
9126         our story straight in our own code base, how can we hope that our
9127         end user code be fixed?
9128
9129         As of this morning, our Wiki page that documents how to detect
9130         Unix had not been fixed.    
9131
9132 2008-12-16  Zoltan Varga  <vargaz@gmail.com>
9133
9134         * metadata.c (inflated_method_in_image): Add a workaround for #458168.
9135
9136         * class.c (mono_class_get_fields): Handle loading errors.
9137
9138 2008-12-12 Mark Mason <mmason@upwardaccess.com>
9139
9140         * 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.
9141         
9142 2008-12-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
9143
9144         * mono-perfcounters.c: avoid warning.
9145
9146 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9147
9148         * reflection.c (ensure_runtime_vtable): Work on generic instances and
9149         make sure all interfaces have MonoClass::interface_id set.
9150
9151         * reflection.c (ensure_generic_class_runtime_vtable): Ensure the
9152         method table is property set.
9153
9154 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9155
9156         * class.c: New function mono_class_setup_interface_id that setup
9157         MonoClass::interface_id if needed.
9158
9159         * class-internals.h: Export new function.
9160
9161 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9162
9163         * class.c: Add code to sanity check the vtable after setup_vtable_general
9164         has done it's work.
9165
9166 2008-12-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
9167
9168         * icall.c: make Assembly.GetExecutingAssembly work properly when
9169         reflection is used to invoke the method.
9170         Bug #321781 fixed.
9171
9172 2008-12-11  Mark Probst  <mark.probst@gmail.com>
9173
9174         * metadata/generic-sharing.c: Look for constraints in all type
9175         arguments, not just the first one.
9176
9177 2008-12-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
9178
9179         * appdomain.c: return the correct CodeBase for an Assembly instance
9180         that was loaded from the shadow-copy directories.
9181         Bug #458190 fixed.
9182
9183 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
9184
9185         * sgen-gc.c (build_nursery_fragments): Clear nursery_next/nursery_frag_real_end.
9186
9187         * sgen-gc.c (check_object): New debugging helper function.
9188
9189         * object.c: Fix calls to mono_value_copy_array ().
9190
9191 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9192
9193         * class.c (mono_class_setup_fields): If working on an inflated class
9194         first check if the generic definition did init with success.
9195
9196         Fixes #445361.
9197
9198 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9199
9200         pedump.c (main): Fix a warning.
9201
9202 2008-12-10  Bill Holmes  <billholmes54@gmail.com>
9203
9204         * object-internals.h : Adding a definition for 
9205           MonoReflectionComVisibleAttribute.
9206
9207         * marshal.c (cominterop_com_visible) :  Method added to check the 
9208           ComVisible attribute of a class.
9209
9210         * marshal.c (cominterop_raise_hr_exception, cominterop_get_interface) :  
9211           cominterop_raise_hr_exception added to consolidate common code 
9212           to raise hr exceptions.
9213
9214         * marshal.c (cominterop_can_support_dispatch) :  Method added to determine 
9215           if a managed class should support IDispatch.
9216
9217         * marshal.c 
9218           (cominterop_get_idispatch_for_objec, cominterop_ccw_queryinterfacet) :  
9219           Added additional checks for managed object when getting 
9220           an IDispatch interface.
9221
9222         Code is contributed under MIT/X11 license.
9223
9224 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9225
9226         pedump.c (main): Handle mono_get_method () returning NULL. 
9227
9228 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
9229
9230         * marshal.h: Fix a warning.
9231
9232 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
9233
9234         * marshal.c : Adding cominterop_release_all_rcws to release all
9235           runtime callable wrappers held by the runtime.
9236
9237         * marshal.h : Adding declaration for cominterop_release_all_rcws.
9238           
9239         Code is contributed under MIT/X11 license.
9240
9241 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
9242
9243         * metadata.c (mono_image_alloc_lock): New helper function.
9244         (mono_image_alloc0_lock): Ditto.
9245
9246         * metadata.c: Use the alloc_lock () helper functions for allocating
9247         memory from the image mempool.
9248
9249 2008-12-08 Rodrigo Kumpera  <rkumpera@novell.com>
9250
9251         * class.c (mono_class_from_generic_parameter): Document it's
9252         locking behavior. Fix double checked locking here, we stored in
9253         param->pklass a partially initialized MonoClass and no membar was used.
9254
9255 2008-12-05  Marek Habersack  <mhabersack@novell.com>
9256
9257         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
9258         (3) functions are present in the C library use them to do the
9259         job. If they are absent, make sure that the sum of int_part and
9260         dec_part is rounded before returning. This is necessary due to the
9261         division of dec_part by the power of 10 before the final addition
9262         is performed - if the result is not rounded in some cases it will
9263         yield invalid results.
9264
9265 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
9266
9267         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
9268         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
9269         instruction instead of a pointer constant.
9270
9271 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
9272
9273         * loader.c (mono_method_get_header): Do most of the work outside the
9274         loader lock, to avoid assembly load hook deadlocks.
9275
9276         * metadata.c (mono_metadata_parse_mh_full): Use finer-grained locking.
9277         (mono_metadata_parse_type_full): Ditto.
9278
9279 2008-12-02 Rodrigo Kumpera  <rkumpera@novell.com>
9280
9281         * mempool.c (mono_backtrace): Take the number of allocated bytes as argument.
9282         Make the stack depth fixed. Ensure proper argument passing to the backtrace
9283         funtions. Finally, use a lock to produce well ordered output.
9284
9285         The lock looks silly, as all calls to the corlib mempool should be guarded
9286         with the loader lock, but for some reason this fact doesn't help. 
9287
9288         * mempool.c (mono_mempool_alloc0): Add support for TRACE_ALLOCATIONS.
9289
9290 2008-12-02  Mark Probst  <mark.probst@gmail.com>
9291
9292         * socket-io.c: 64 bit big-endian fixes.
9293
9294 2008-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
9295
9296         * verify.c (is_compatible_boxed_valuetype): Rewrite function to work properly with
9297         targets that require strict compatibility between the types.
9298
9299         * verify.c (verify_stack_type_compatibility_full): Boxed values are not compatible
9300         to unboxed types. All cases that this is true are checked by is_compatible_boxed_valuetype.
9301         Kill the strict argument and create a new one valuetype_must_be_boxed.
9302
9303         * verify.c (verify_delegate_compatibility): Use verify_stack_type_compatibility_full to
9304         state that all valuetypes must be boxed.
9305
9306         Fixes #448560.
9307
9308 2008-11-29  Kornél Pál  <kornelpal@gmail.com>
9309
9310         * coree.c (MonoFixupExe): Use sizeof(IMAGE_BASE_RELOCATION) instead of
9311         IMAGE_SIZEOF_BASE_RELOCATION as newer Vista SDKs no longer define the latter.
9312
9313         Contributed under MIT/X11 license.
9314
9315 2008-11-28 Rodrigo Kumpera  <rkumpera@novell.com>
9316
9317         * class.c (mono_class_setup_fields): Don't copy MonoType::attrs as
9318         the inflate_generic_type machinery should handle it.
9319
9320         This avoids a crash when the field's flags is zero and it's type is
9321         a primitive.
9322         What happens is that mono_metadata_parse_type_full will see that opt_attrs
9323         is zero and will return one of the cached built-in primitive types. Since
9324         those types live in read-only memory, the code that copies it crashes.  
9325
9326 2008-11-28  Mark Probst  <mark.probst@gmail.com>
9327
9328         * object.c: Don't put function descriptors into generalized IMT
9329         thunks.
9330
9331 2008-11-28  Mark Probst  <mark.probst@gmail.com>
9332
9333         * class.c: Enable generic code sharing on PPC64.
9334
9335 2008-11-27  Mark Probst  <mark.probst@gmail.com>
9336
9337         * mempool.c, mempool-internals.h: Added g_slist_append_mempool()
9338         from mini/mini.c.
9339
9340         * generic-sharing.c: Allocate the method template slists from the
9341         image mempool so it doesn't leak.
9342
9343 2008-11-27 Rodrigo Kumpera  <rkumpera@novell.com>
9344
9345         * class.c (generic_array_methods): Release the linked list.
9346
9347 2008-11-27  Mark Probst  <mark.probst@gmail.com>
9348
9349         * marshal.c (mono_string_builder_to_utf8): Fixed a wrong
9350         invocation to g_utf16_to_utf8().
9351
9352 2008-11-26  Mark Probst  <mark.probst@gmail.com>
9353
9354         * icall.c (mono_ArgIterator_IntGetNextArg): Handle sub-word sized
9355         arguments on big endian archs.
9356
9357 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
9358
9359         * reflection.c: (_mono_reflection_parse_type) skip leading spaces in
9360         the type name (test added in corlib).
9361
9362 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
9363
9364         * pedump.c: initialize perf. counters. Fixes a segv.
9365
9366 2008-11-25  Martin Baulig  <martin@ximian.com>
9367
9368         * mono-debug-debugger.c
9369         (mono_debugger_runtime_invoke): Return the exception object if an
9370         exception was thrown.  Visual Studio displays the exception object
9371         in the locals window.
9372
9373 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9374
9375         * mini-trampolines.c (mono_delegate_trampoline): Don't return a
9376         ftnptr.
9377
9378 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9379
9380         * marshal.c (mono_type_native_stack_size): MONO_TYPE_I and
9381         MONO_TYPE_U are sizeof (gpointer), too.
9382
9383 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9384
9385         * marshal.c (mono_type_native_stack_size): Fixed size and
9386         alignment for reference types.
9387
9388 2008-11-23  Mark Probst  <mark.probst@gmail.com>
9389
9390         * class.c (mono_class_generic_sharing_enabled): Disable generic
9391         code sharing for PPC64.
9392
9393 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
9394
9395         * icall.c (mono_method_get_equivalent_method): Make sure
9396         method->klass->methods is inited before looping over it.
9397
9398 2008-11-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
9399
9400         * object.c: when calling ExecuteAssembly in a newly created domain,
9401         the configuration file and application base are already set up.
9402         Bug #446353 take 2 fixed.
9403
9404 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
9405
9406         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
9407         Fixes #444715. Fix a warning.
9408
9409 2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
9410
9411         * appdomain.c: write the full path of the assembly to the .ini file
9412         created when "shadow-copying"
9413         Bug #446353 fixed.
9414
9415 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
9416
9417         * debug-helpers.c (mono_method_full_name): Stringify wrapper types even
9418         if signature==FALSE.
9419
9420 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
9421
9422         * marshal.h : Fix the cygwin build.
9423            marshal.c:12442: undefined reference to `_IID_IMarshal'
9424           
9425         Code is contributed under MIT/X11 license.
9426
9427 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
9428
9429         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
9430           free threaded marshaler when QueryInterface is called on a COM callable
9431           wrapper requesting the IMarshal interface.
9432           
9433         Code is contributed under MIT/X11 license.
9434
9435 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
9436
9437         * domain-internals.h (MonoDomain): Update MONO_DOMAIN_LAST_GC_TRACKED.
9438
9439         * reflection.c (mono_type_get_object): Special case the very common
9440         void type.
9441
9442         * domain-internals.h (struct _MonoDomain): Add 'typeof_void' field to
9443         hold typeof(void).
9444
9445 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
9446
9447         * process.h : Adding method declaration for
9448           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9449           
9450         * process.c : Adding implementation for
9451           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9452           
9453         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
9454           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9455
9456         Code is contributed under MIT/X11 license.
9457
9458 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
9459
9460         * appdomain.c (unload_thread_main): Clean up threadpool by
9461         calling mono_thread_pool_remove_domain_jobs.
9462
9463         * domain-internals.h (struct _MonoDomain): Add new fields to
9464         help coordinate the cleanup of the threadpool.
9465
9466         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
9467         that cleans up the threadpool of all jobs associated with an appdomain.
9468         It does that by cleaning up the queues and making sure all active
9469         threads are accounted.
9470
9471         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
9472         unloaded or in the process of. Take this is such way that there is
9473         no race condition between another thread starting the unload and the
9474         current thread acknowledging it.
9475
9476         * threadpool.c (async_invoke_thread): Same.
9477
9478         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
9479         firing the new thread.
9480
9481         * threadpool.c (start_tpthread): Same.
9482
9483         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
9484
9485         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
9486
9487 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
9488
9489         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9490         Add support for DuplicateHandle.
9491         
9492         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9493         Add support for DuplicateHandle.
9494         
9495         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9496         Add support for DuplicateHandle.
9497
9498         Code is contributed under MIT/X11 license.
9499
9500 2008-11-06  Mark Probst  <mark.probst@gmail.com>
9501
9502         * class-internals.h: Make min_align into a whole byte.
9503
9504         * class.c: Set min_align for SIMD types to 16.
9505
9506 2008-11-05  Geoff Norton  <gnorton@novell.com>
9507
9508         * attach.c: Default the attacher to enabled for all cases including
9509         embedded.
9510
9511 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
9512
9513         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
9514         change r117650.
9515
9516 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9517
9518         * monitor.c, monitor.h: New function for querying offsets of
9519         members of MonoThreadsSync.
9520
9521 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9522
9523         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
9524         to speed up this function and to avoid the boundless memory growth caused by
9525         the signature_dup () calls.
9526
9527 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9528
9529         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
9530         wrapper.
9531
9532         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
9533         by 1 bit.
9534
9535         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
9536
9537 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
9538
9539         * appdomain.c:
9540         * domain-internals.h: made mono_set_private_bin_path_from_config()
9541         "internal".
9542         * object.c: call the above function after setting the configuration
9543         file path for the root domain.
9544         Fixes bug #314478.
9545
9546 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
9547
9548         * assembly.c: when the assembly is loaded from an absolute path, end
9549         basedir with a directory separator.
9550         Bug #440781 fixed.
9551
9552 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9553
9554         * monitor.c (mono_monitor_get_fast_enter_method): If
9555         CompareExchange is not available, don't create the fastpath
9556         instead of asserting.  (The method is missing in the 1.1 profile.)
9557
9558 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9559
9560         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
9561
9562         * monitor.c, monitor.h: Code for generating Monitor.Enter and
9563         Monitor.Exit IL fastpaths.
9564
9565 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9566
9567         * class.c (mono_class_create_from_typedef): Added Vector2ul.
9568
9569 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9570
9571         * class.c (mono_class_create_from_typedef): Added Vector2l.
9572
9573 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9574
9575         * class.c (mono_class_create_from_typedef): Added Vector2d.
9576
9577 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
9578
9579         * appdomain.c: translate \ into / for cache_path.
9580         * domain-internals.h: new mono_is_shadow_copy_enabled().
9581         * icall.c: (fill_reflection_assembly_name) do the same path
9582         manipulations that get_code_base does.
9583         (get_code_base) use mono_is_shadow_copy_enabled.
9584
9585 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
9586
9587         * appdomain.c: shadow-copied assemblies go to CachePath +
9588         ApplicationName when both are set. DynamicBase has nothing to do with
9589         shadow copies.
9590         Bug #406877 fixed.
9591
9592 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9593
9594         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
9595         STANDALONESIG table.
9596
9597         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
9598         standalone signatures.
9599
9600         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
9601         comparison code: instead of comparing the signatures using a custom
9602         equals function, transform them to a common signature and compare that. This
9603         works better with AOT.
9604
9605 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
9606
9607         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
9608
9609         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
9610         call for generic instances.
9611         (mono_class_setup_properties): Call setup_properties () before accessing
9612         gklass->properties.
9613
9614         * class.c (mono_class_get_virtual_methods): New helper function to iterate
9615         over the virtual methods of a class using metadata if possible, avoiding the
9616         creation of MonoMethod's for non-virtual methods.
9617         
9618         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
9619         get_virtual_methods () to iterate over the virtual methods of classes.
9620
9621 2008-10-25  Martin Baulig  <martin@ximian.com>
9622
9623         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
9624
9625 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9626
9627         * class.c (mono_class_create_from_typedef): Added Vector4i.
9628
9629 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9630
9631         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
9632         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
9633         special-casing applies to eliminate the call completely.
9634
9635 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9636
9637         * class.c (mono_class_create_from_typedef): Added Vector8s.
9638
9639 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9640
9641         * class.c (mono_class_create_from_typedef): Added Vector16sb.
9642
9643 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
9644
9645         * icall.c: get rid of annoying warning.
9646
9647 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
9648
9649         * threadpool.c: in 1.x, if you change the background status of the
9650         threadpool thread, it's not reset.
9651         Remove unnecessary calls to SetState.
9652
9653 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9654
9655         * threadpool.c: asynchronously create a set of idle threads upon first
9656         use of the threadpool. SetMinThreads will now start the appropriate
9657         number of idle threads if they are not already running. The default is
9658         1 threadpool thread per CPU. Increased the maximum number of threads
9659         per CPU to 10.
9660
9661 2008-10-22  Martin Baulig  <martin@ximian.com>
9662
9663         Revert r116521 from Zoltan, it breaks the debugger:
9664
9665         * class.c (mono_class_get_virtual_methods): New helper function to iterate
9666         over the virtual methods of a class using metadata if possible, avoiding the
9667         creation of MonoMethod's for non-virtual methods.
9668         
9669         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
9670         get_virtual_methods () to iterate over the virtual methods of classes.
9671
9672 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9673
9674         * threads.c: when creating a threadpool thread, set its state to
9675         'background'.
9676         * threadpool.c: reset the background state of a threadpool thread
9677         after finishing each work item
9678         Bug #437888 fixed.
9679
9680 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
9681
9682         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
9683         
9684         * class.c (mono_class_setup_vtable_general): Add an optimized version for
9685         generic instances which works by inflating the methods in the container
9686         class's vtable.
9687
9688         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
9689         variant which doesn't make a copy if no inflation was done.
9690         (mono_class_setup_fields): Use it.
9691
9692         * metadata.c (mono_metadata_get_shared_type): New helper function to
9693         return a shared instance of a given MonoType.
9694
9695         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
9696         a copy of most non-generic types.
9697
9698 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
9699
9700         * threadpool.c: remove one more GetSystemInfo () call.
9701
9702 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
9703
9704         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
9705         use the code in mono-proclib.h to get processor information.
9706
9707 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9708
9709         * appdomain.c: fixed the logic that determines whether assemblies in a
9710         directory are "shadow-copied" or not. Bug #433483 fixed.
9711
9712 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
9713
9714         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
9715         warning.
9716
9717 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9718
9719         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
9720         returning a vtype.
9721
9722         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
9723         reflection.c: Use mono_field_get_name () for accessing a field's name.
9724
9725         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
9726         class.c
9727
9728         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
9729         field.
9730
9731         * loader.c (find_method_in_class): Reenable the metadata optimization by
9732         not using it for generic instances.
9733
9734         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
9735         data/def_type fields from MonoClassField into a separate structure.
9736         (struct MonoClassField): Remove data/def_type fields.
9737         (struct _MonoClass): Add a 'field_def_values' array to store the default
9738         values/RVA for fields.
9739
9740         * class.c reflection.c: Update after the changes.
9741         
9742         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
9743         for accessing field->data.
9744
9745         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
9746
9747         * loader.c (find_method_in_class): Revert the last change for now as
9748         it breaks Mono.C5 unit tests.
9749
9750         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
9751         'field_generic_types' and 'field_objects' which contain the information
9752         previously stored in MonoInflatedField.
9753         (MonoInflatedField): Delete.
9754         (struct _MonoClassField): Delete 'generic_info' field.
9755
9756         * reflection.c: Store the information which was previously in 
9757         field->generic_info in MonoDynamicGenericClass instead.
9758
9759         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
9760         MonoClassField changes.
9761
9762 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
9763
9764         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
9765         store the value inside the data array of the MonoMethodWrapper.
9766         This saves memory, is faster and fixes the lifetime issues (methods
9767         were never removed from the hash previously). May also fix bug#436996.
9768
9769 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9770
9771         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
9772         generic instances, compute the type from the generic definition instead of
9773         looking in field->generic_info.
9774
9775         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
9776         for inflated fields, the only user was get_fieldref_token () which no
9777         longer needs it.
9778
9779         * class.c (mono_class_init): Revert the last change as it seems to cause
9780         crashes.
9781
9782         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
9783         bytes on 64 bit platforms.
9784
9785         * object.c (mono_class_create_runtime_vtable): Fix a warning.
9786         
9787         * object.c (mono_class_create_runtime_vtable): Don't initalize
9788         field->data/field->def_type here, it is done lazily by 
9789         mono_class_get_field_default_value ().
9790
9791         * icall.c (ves_icall_get_enum_info): Call 
9792         mono_class_get_field_default_value () instead of directly accessing
9793         field->data and field->def_type.
9794
9795         * object.c (get_default_field_value): Ditto.
9796
9797         * class.c (mono_field_get_data): Ditto.
9798         
9799         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
9800         call for generic instances.
9801
9802         * loader.c (find_method_in_class): If klass != from_class, then inflate
9803         the method with the context of from_class, since the caller assumes this.
9804
9805 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
9806
9807         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
9808         for accessing method->slot.
9809
9810 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
9811
9812         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
9813
9814 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9815
9816         * class.c (mono_method_get_vtable_index): Use
9817         mono_method_get_vtable_slot () for accessing method->slot.
9818
9819         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
9820         accessing klass->methods.
9821
9822         * class.c (mono_method_get_vtable_slot): New helper function.
9823         (mono_class_get_vtable_entry): Ditto.
9824         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
9825         accessing method->slot.
9826
9827         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
9828         method to get_inflated_method ().
9829
9830         * class.c (mono_class_get_inflated_method): New helper method to obtain
9831         a method of an inflated class without calling setup_methods ().
9832         (mono_class_get_cctor): Use get_inflated_method.
9833
9834         * generic-sharing.c (mono_class_get_method_generic): Ditto.
9835         
9836         * marshal.c image.c: Lazily create all the marshal caches.
9837
9838         * image.c (mono_image_init): Move initialization of runtime_invoke
9839         caches to marshal.c.
9840
9841         * marshal.c (get_cache): New helper function to lazily initialize a 
9842         wrapper cache.
9843         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
9844
9845         * debug-helpers.c (mono_method_full_name): Include generic arguments.
9846
9847 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
9848
9849         * loader.c: fixed check for interface type.
9850
9851 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
9852
9853         * appdomain.c: check for NULL setup before it's referenced.
9854
9855 p
9856 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
9857
9858         * class.c: remove the unused old vtable setup code.
9859
9860 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
9861
9862         * class.c: don't depend on interface order in
9863         setup_interface_offsets (bug #435777).
9864         * reflection.c: sort the InterfaceImpl table (patch from
9865         Jb Evain  <jbevain@novell.com>).
9866
9867 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9868
9869         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
9870         the low level assemblies lock.
9871
9872 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
9873
9874         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
9875         object.c, reflection.c, socket-io.c, threads.c: introduced
9876         mono_framework_version () to return the major framewrok version,
9877         changed the code that was using more complex patterns to use it.
9878         Return the correct value for PlatformID for OSX.
9879
9880 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
9881
9882         * icall-def.h, process.h, process.c: added an icall to get info about
9883         processes using mono-proclib.
9884
9885 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
9886
9887         * mono-perfcounters.c: use the mono-proclib functions to
9888         access process information.
9889
9890 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
9891
9892         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
9893         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
9894         reflection.c: remove rawbuffer usage: mmap support is more sanely
9895         provided by utils/mono-mmap.
9896
9897 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
9898
9899         * gc.c: use posix semaphores when possible so that
9900         mono_gc_finalize_notify() is signal safe.
9901
9902 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
9903
9904         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
9905         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
9906         be #ifdef-ed out, the linker will remove the rest.
9907
9908         * marshal.c: Implement DISABLE_COM.
9909
9910         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
9911
9912 2008-10-11  Miguel de Icaza  <miguel@novell.com>
9913
9914         * locales.c (string_invariant_compare_char): Optimization: do not
9915         call g_unichar_type unless we actually need the information.
9916
9917 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9918
9919         * object.c, class-internals.h: Also create remoting trampolines
9920         for generic methods.  Pass the domain to the remoting trampoline
9921         creation function, too.
9922
9923 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9924
9925         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
9926
9927 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9928
9929         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
9930         Vector4ui.
9931
9932 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
9933
9934         * assembly.c:
9935         * locales.c: remove the use of g_strdown. Fixes bug #322313.
9936
9937 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
9938
9939         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
9940         for the least possible amount of time (extending the fix in r113458).
9941
9942 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9943
9944         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
9945
9946 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9947
9948         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
9949         as possible simd intrinsic types.
9950         Optimized the test to check for the common prefix first.
9951
9952 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
9953
9954         * class.c: back out part of a broken optimization committed on
9955         May 23th (bug #433908).
9956
9957 2008-10-09  Mark Probst  <mark.probst@gmail.com>
9958
9959         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
9960         Win32.  Should fix #432388 for most cases until we have the new
9961         profiler on Win32.
9962
9963 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9964
9965         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
9966         instead of using inst->id so the hash is stable for AOT.
9967
9968 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
9969
9970         * appdomain.c:
9971         * icall.c: create a .ini file for shadow-copied assemblies that
9972         contains the location of the original assembly. Use this to return the
9973         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
9974         Also fix the number of '/' for windows when returning the CodeBase.
9975         Fixes bug #430920.
9976
9977 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9978
9979         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
9980
9981         Code is contributed under MIT/X11 license.
9982
9983 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9984
9985         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
9986           if if the class vtable needs initialized.
9987
9988         Code is contributed under MIT/X11 license.
9989
9990 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9991
9992         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
9993           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
9994           STRING->BSTR, and CLASS->INTERFACE.
9995
9996         Code is contributed under MIT/X11 license.
9997
9998 2008-10-07  Marek Habersack  <mhabersack@novell.com>
9999
10000         * sysmath.h: changed the declaration of the
10001         ves_icall_System_Math_Round2 icall by adding an extra
10002         away_from_zero parameter.
10003
10004         * sysmath.c (ves_icall_System_Math_Round2): added support for
10005         away from zero rounding. The icall now takes an extra boolean
10006         parameter to signal that away from zero operation is requested.
10007
10008 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
10009
10010         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
10011         the delegate klass so it can work with full-aot.
10012         (mono_marshal_get_delegate_end_invoke): Ditto.
10013         (mono_marshal_get_delegate_invoke): Ditto.
10014
10015 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
10016
10017         * gc.c, attach.h, attach.c: remove a bad pattern:
10018         add_finalizer_callback () is not implemented correctly, it can't
10019         without adding more overhead to the finalizer loop and it's not
10020         even needed, since we know exactly what we need to call, so there is
10021         no need to do so through an expensive function pointer.
10022
10023 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
10024
10025         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
10026         for the no-gc case.
10027         * attach.c (mono_attach_init): Remove the #ifdef.
10028
10029 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
10030
10031         * attach.c (mono_attach_init): Don't use
10032         mono_gc_add_finalizer_thread_callback when compiling without GC.
10033         Fixes #432306.
10034         
10035         Code is contributed under MIT/X11 license.
10036
10037 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10038
10039         * class.c (mono_class_create_from_typedef): Remove the 
10040         #ifndef DISABLE_SIMD stuff.
10041
10042 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
10043
10044         * class-internals.h (MonoClass): Added simd_type bit field.
10045
10046         * class.c (mono_class_create_from_typedef): Check if type is a simd
10047         intrinsic.
10048
10049 2008-10-03  Mark Probst  <mark.probst@gmail.com>
10050
10051         * object.c (mono_method_add_generic_virtual_invocation): Only add
10052         instantiations to the thunk whose count is at least as large as
10053         the threshold.
10054
10055 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
10056
10057         * icall.c: changed the Type of the exception thrown when trying to
10058         invoke a constructor on an abstract class. Part of the fix for bug
10059         #324185.
10060
10061 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10062
10063         * class.c, class-internals.h (mono_method_get_vtable_index): New
10064         function which returns the index into the vtable and properly
10065         handles inflated virtual generic methods.
10066
10067 2008-10-01  Mark Probst  <mark.probst@gmail.com>
10068
10069         * object.c, domain.c, object-internals.h, domain-internals.h:
10070         Generalize IMT thunk machinery to also handle thunks for virtual
10071         generic method invokes.  When a virtual generic method is invoked
10072         more than a number of times we insert it into the thunk so that it
10073         can be called without lookup in unmanaged code.
10074
10075         * generic-sharing.c, class-internals.h: Fetching a
10076         MonoGenericInst* for a method from an (M)RGCTX.
10077
10078 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10079
10080         * marshal.c (emit_marshal_string): Applied a variant of a patch by
10081         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
10082         marshalling. Fixes #431304.
10083
10084 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
10085
10086         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
10087           handle when ref is specified without In or Out.
10088
10089         Code is contributed under MIT/X11 license.
10090
10091 2008-09-30  Mark Probst  <mark.probst@gmail.com>
10092
10093         * loader.c (mono_get_method_constrained): Don't expand method with
10094         the class's context, because it's already a method of that class.
10095
10096 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
10097
10098         * attach.c : should be correct build fix.
10099
10100 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10101
10102         * attach.c: Fix the previous change.
10103
10104 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
10105
10106         * attach.c : quick w32 build fix.
10107
10108 2008-09-27  Miguel de Icaza  <miguel@novell.com>
10109
10110         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
10111         crashes MonoDevelop: #430455.
10112
10113 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10114
10115         * domain-internals.h (struct _MonoDomain): Move most fields used only by
10116         the JIT do MonoJitDomainInfo in ../mini/mini.h.
10117
10118         * domain.c: Remove initialization/cleanup of the removed fields.
10119
10120 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10121
10122         * class.c (mono_class_generic_sharing_enabled): Enable generic
10123         code sharing for PPC.
10124
10125 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
10126
10127         * attach.c : Fixing the Windows builds.
10128
10129         Code is contributed under MIT/X11 license.
10130
10131 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10132
10133         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
10134         the default generic sharing mode to 'all'.
10135
10136 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10137
10138         * generic-sharing.c, class-internals.h: New function for checking
10139         whether a method needs a static RGCTX invoke wrapper.  A few
10140         funtions moved from mini/generic-sharing.c.
10141
10142         * icall.c: New function used.
10143
10144 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10145
10146         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
10147         Static RGCTX invoke wrapping applies to value type methods, too.
10148
10149         * class.c (mono_class_setup_vtable_general): In generic-shared
10150         value types, wrap methods with a static RGCTX invoke wrapper.
10151
10152 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10153
10154         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
10155         osx build.
10156
10157 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10158
10159         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
10160         register a callback which is called when the finalizer thread is woken
10161         up.
10162         (finalizer_thread): Call the callback if it exists.
10163
10164         * attach.h attach.c: New files, implementing the attach mechanism.
10165
10166         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
10167         
10168         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
10169         by the previous change.
10170
10171 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
10172
10173         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
10174         loader.c, marshal.c, metadata-internals.h, metadata.c,
10175         method-builder.c, object.c, reflection.c: introduced specific functions
10176         to allocate from the domain and image mempools and cleaned up most of
10177         the code to use them (still missing a few in reflection.c).
10178         Keep the loader bytes counter updated.
10179
10180 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
10181
10182         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
10183         loader-related counters.
10184
10185 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
10186
10187         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
10188         added more MS-compatible counters.
10189
10190 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10191
10192         * class.c (mono_class_setup_fields): Call setup_fields before accessing
10193         class->blittable. Fixes #428217.
10194
10195 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
10196
10197         * reflection.c (mono_image_get_field_on_inst_token): Call 
10198         field_encode_signature () since that handles custom modifiers too.
10199         Fixes #424663.
10200
10201 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
10202
10203         * reflection.c (add_custom_modifiers): New helper function to merge custom
10204         modifiers stored in objects to a MonoType.
10205         (fieldref_encode_signature): Encode custom modifiers.
10206         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
10207         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
10208
10209 2008-09-19  Kornél Pál  <kornelpal@gmail.com>
10210
10211         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
10212         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
10213         64-bit IL only images because imports are not resolved for IL only images.
10214         Special thanks to Bill Holmes for finding this bug and testing the patch.
10215         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
10216
10217         Contributed under MIT/X11 license.
10218
10219 2008-09-19  Miguel de Icaza  <miguel@novell.com>
10220
10221         * mono-config.c (dllmap_start): Add support for the bits keyword
10222         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
10223
10224 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10225
10226         * reflection.c (inflate_mono_method): When the class the method is
10227         to be inflated for is itself not inflated, just return the method.
10228
10229 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
10230
10231         * mono-perfcounters.c: use more user friendly process instance names.
10232
10233 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
10234
10235         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
10236           handle "[in] ref" and "[in][out] ref" cases.
10237
10238         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
10239           to mono_mb_create_method.  This was causing problems calling native to
10240           managed passing Variants by value.
10241
10242         Code is contributed under MIT/X11 license.
10243
10244 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
10245
10246         * class.c (can_access_internals): Call mono_assembly_load_friends ()
10247         before accessing the friend_assembly_names field.
10248
10249         * assembly.c (mono_assembly_load_friends): Make this callable multiple
10250         times.
10251         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
10252         called lazily when it is needed.
10253
10254         * metadata-internals.h (struct _MonoAssembly): Add 
10255         'friend_assembly_names_inited' flag.
10256
10257 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
10258
10259         * mono-perfcounters-def.h: fix the types of a few counters.
10260         * mono-perfcounters.c: implemented the instance names getter
10261         and a few bugfixes.
10262
10263 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
10264
10265         * culture-info-table.h : regenerated.
10266
10267 2008-09-17  Robert Jordan  <robertj@gmx.net>
10268
10269         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
10270         context bound objects. Fixes #415577.
10271
10272         Code is contributed under MIT/X11 license.
10273
10274 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
10275
10276         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
10277         implementation (bug #423582).
10278
10279 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
10280
10281         * object.c (mono_object_get_virtual_method): Handle the case method->slot
10282         is not set. Fixes #426309.
10283
10284 2008-09-16  Jb Evain  <jbevain@novell.com>
10285
10286         * class.c (mono_class_from_name): fix the exported type look up
10287         when the type is defined in a referenced assembly.
10288
10289 2008-09-16  Jb Evain  <jbevain@novell.com>
10290
10291         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
10292         increment the next index counter on each iteration to make that work
10293         for more than one type forwarder. Unmanaged part to fix #422929.
10294
10295 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10296
10297         * object-internals.h: enum ComInterfaceType in
10298         MonoInterfaceTypeAttribute is guint32, not guint16.
10299
10300 2008-09-12  Mark Probst  <mark.probst@gmail.com>
10301
10302         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
10303         writing code.
10304
10305 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10306
10307         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
10308         not gboolean.
10309
10310 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10311
10312         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
10313         Endianness fixes for MonoSymbolFileOffsetTable.
10314
10315 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
10316
10317         * process.c (complete_path) : Removing quotes from the 
10318           input path.  The glib file routines do not handle file paths
10319           that have quotes around them.
10320
10321         Code is contributed under MIT/X11 license.
10322
10323 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
10324
10325         * socket-io.h : Adding a comment to provide locations where 
10326           changes to MonoSocketAsyncResult need to be synced.
10327
10328         Code is contributed under MIT/X11 license.
10329
10330 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
10331
10332         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
10333         parameters as well. Fixes #425001.
10334
10335 2008-09-08  Miguel de Icaza  <miguel@novell.com>
10336
10337         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
10338         windows build.
10339
10340 2008-09-07  Miguel de Icaza  <miguel@novell.com>
10341
10342         * console-io.c: Add support for tracking the window size if it
10343         changes.
10344
10345         The setup is very simple: the TtySetup function will now return a
10346         pointer to a location in memory that tracks the current console
10347         size.  The managed code checks its current value every time its
10348         queried against the last value set, and updates accordingly.
10349
10350         With this setup we can work with multiple consoles, and we do not
10351         require to poke into managed code from a signal handler.
10352
10353         Additionally, the environment for COLUMNS and LINES is now handled
10354         in unmanaged code.
10355
10356         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
10357
10358 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10359
10360         * marshal.c (mono_type_native_stack_size): Treat
10361         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
10362
10363 2008-09-04  Jb Evain  <jbevain@novell.com>
10364
10365         * class.c (mono_class_is_assignable_from): fix assignability of nullables
10366         to nullables.
10367
10368 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
10369
10370         * verify.c (verify_type_compatibility_full): Revert change
10371         to allow converting a native int to unmanaged pointer be verifiable
10372         under non-strict mode.
10373         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
10374
10375         * verify.c: Added some TODOs.
10376
10377 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
10378
10379         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
10380           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
10381           Changed to use GlobalAlloc for the memory returned on Windows platforms.
10382
10383         Code is contributed under MIT/X11 license.
10384
10385 2008-09-02  Jb Evain  <jbevain@novell.com>
10386
10387         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
10388
10389 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
10390
10391         reflection.c (typebuilder_setup_fields): Handle classes with
10392         explicit size.
10393
10394 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
10395
10396         class.c (mono_class_setup_events): Add memory barrier due to
10397         double checked locking.
10398         
10399         class.c (mono_class_setup_properties): Same.
10400
10401 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10402
10403         * class.c (mono_class_is_assignable_from): Fix the build.
10404         
10405         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
10406         before accessing klass->interface_bitmap. Fixes #421744.
10407
10408 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10409
10410         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
10411         the runtime into no-exec mode, useful when running the AOT compiler.
10412
10413         * appdomain.c gc.c object.c: Avoid executing managed code when running
10414         in no-exec mode.
10415         
10416         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
10417
10418         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
10419         special case when the mono_assembly_loaded () returns NULL because the 
10420         search hook is not installed.
10421
10422 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10423
10424         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
10425         crashes in bstr marshalling on linux.
10426
10427 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10428
10429         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
10430         with more than one parameter.
10431
10432 2008-08-24  Miguel de Icaza  <miguel@novell.com>
10433
10434         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
10435         start/stop flow control as well when turning off ICANON (allows
10436         C-s and C-q to be read by Console.ReadKey).
10437
10438 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10439
10440         * class.c (mono_class_init): Move the initialization of nested classes
10441         into mono_class_get_nested_types (). Fixes #418433.
10442
10443         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
10444         flag.
10445
10446         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
10447         iterating tough the nested classes of a class.
10448
10449 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10450
10451         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
10452         on arm.
10453
10454 2008-08-22  Miguel de Icaza  <miguel@novell.com>
10455
10456         * console-io.c (sigcont_handler): Support signal chaining for
10457         SIGCONT.
10458
10459         (console_set_signal_handlers): Use best practices with sigaction,
10460         clear the structure before using it. 
10461
10462 2008-08-22  Robert Jordan  <robertj@gmx.net>
10463
10464         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
10465         Fix the Windows build.
10466
10467 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10468
10469         * class.c (mono_class_generic_sharing_enabled): Make the default
10470         sharing mode 'corlib'.
10471
10472 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10473
10474         * console-io.c (console_set_signal_handlers): Fix a warning.
10475
10476         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
10477         method normally, the JIT will take care of avoiding recursion.
10478
10479 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10480
10481         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
10482
10483         Code is contributed under MIT/X11 license.
10484
10485 2008-08-20  Miguel de Icaza  <miguel@novell.com>
10486
10487         * console-io.c (sigcont_handler): We need to restore the entire
10488         termios state, not only the original settings, as things like echo
10489         can be controlled after this (Booish exposes this issue with its
10490         own ReadLine implementation).
10491
10492         Additionally, we need to set the terminal back into keypad_xmit
10493         mode.
10494         
10495         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
10496         string as a paramter as well.   Otherwise we get different
10497         keyboard sequences.
10498
10499 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10500
10501         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
10502         delegates with byref out parameter passing. Fixes #351520.
10503
10504         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
10505         a generic context.
10506         (mono_type_get_desc): Add the type arguments for GENERICINST.
10507         (mono_method_full_name): Stringify the class name using mono_type_full_name
10508         so it picks up generic arguments.
10509
10510 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
10511
10512         * console-io.c: Removed debug output.
10513
10514 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
10515
10516         reflection.c (mono_reflection_create_runtime_class): Alloc
10517         the nested classes linked list using the dynamic image mempool.
10518         Fixes leak in corlib compilation.
10519
10520 2008-08-19  Miguel de Icaza  <miguel@novell.com>
10521
10522         * console-io.c: Fix incredibly annoying behavior on the console
10523         after resuming execution after control-z.   This affected every
10524         console application.
10525
10526 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
10527
10528         * mempool-internals.h: Header for mono private mempool functions. The first
10529         two function are for allocating glib linked lists using pools.
10530
10531         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
10532
10533         * Makefile.am: Added mempool-internals.h.
10534
10535 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10536
10537         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
10538         (mono_domain_free): Ditto.
10539
10540         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
10541         be used by the JIT to store its domain-specific information, instead of putting
10542         it directly into MonoDomain.
10543
10544         * domain.c (mono_install_create_domain_hook): New helper function to install
10545         a hook which initializes domain->runtime_info.
10546
10547         * domain.c (mono_install_free_domain_hook): Ditto.
10548         
10549 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10550
10551         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
10552         asserting if the ares parameter is null.
10553
10554         * mono-perfcounters.c: Fix warnings.
10555
10556         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
10557         is not needed, don't check for interruptions either.
10558         (mono_marshal_get_delegate_end_invoke): Ditto.
10559
10560 2008-08-15  Marek Habersack  <mhabersack@novell.com>
10561
10562         * mono-perfcounters.c (predef_readonly_counter): added support for
10563         reading the ASP.NET Requests Queued counter from another process.
10564
10565 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10566
10567         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
10568         MonoImage to simplify the AOT code.
10569
10570 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
10571
10572         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
10573         marshalling. Fixes #416078.
10574
10575 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10576         
10577         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
10578         it is set, looking up the icall address is deferred to the JIT, since 
10579         in embedded scenarios, the icall might not be registered in the runtime
10580         doing the AOT compilation. Backported from the 2.0 branch.
10581
10582 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10583
10584         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
10585         Fixes #415621.
10586
10587 2008-08-05  Marek Habersack  <mhabersack@novell.com>
10588
10589         * Makefile.am: added support for cross-compilation.
10590
10591 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
10592
10593         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
10594
10595 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
10596
10597         * mono-perfcounters.c: jitted methods and jitted bytes counters.
10598
10599 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
10600
10601         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
10602         mono-perfcounters.c: performance counters implementation.
10603
10604 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
10605
10606         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
10607         to gpointer, letting the AOT code decide what to store in it.
10608
10609 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
10610
10611         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
10612           mono_class_setup_methods if the methods are not initialized.
10613
10614         Code is contributed under MIT/X11 license.
10615
10616 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10617
10618         * verify.c: Remove some debug code I commited by accident.
10619
10620         * verify.c (mono_method_is_valid_in_context): Change the return value
10621         to make possible to distinguish between invalid and unverifiable.
10622
10623         * verify.c (verifier_load_method): Don't return NULL for unverifiable
10624         methods.
10625
10626 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10627
10628         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
10629         constraints. Fixes regression in gtest-253.
10630
10631 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10632
10633         * verify.c (mono_verifier_verify_class): Don't allow generic types
10634         with explicit layout.
10635
10636         * verify.c (mono_method_verify): Check locals and argument types.
10637
10638 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
10639
10640         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
10641         wait if the thread is in StopRequested state.
10642
10643         * class.c (mono_class_from_name): Refactor the module searching code into
10644         a separate function so it can be reused in the AOT case too.
10645
10646 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
10647
10648         * verify.c (mono_type_is_valid_in_context): Improve the error message.
10649         Check both the type and it's generic type definition for loader errors.
10650         
10651         * verify.c (mono_method_is_valid_in_context): Don't generate another
10652         error when a type errors occur, this leads to the wrong exception been
10653         thrown.
10654
10655 2008-07-28  Dick Porter  <dick@ximian.com>
10656
10657         * icall-def.h
10658         * process.c
10659         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
10660         New internal calls to duplicate and close a process handle.
10661
10662 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
10663
10664         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
10665
10666 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10667
10668         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
10669
10670 2008-07-27  Robert Jordan  <robertj@gmx.net>
10671
10672         * class.c (mono_class_init): Don't compute class.has_finalize for
10673         valuetypes. Fixes #412477.
10674
10675 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
10676
10677         * verify.c: Implement constraint equivalence checking.
10678         This is required when a generic parameter is used as
10679         argument to a constrained one.
10680
10681         Fixes #410637.
10682
10683 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10684
10685         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10686
10687         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
10688
10689         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
10690         synch with managed object layout.
10691
10692 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
10693
10694         * verify.c (do_branch_op): Handle valuetypes and generic
10695         arguments properly.
10696
10697         * verify.c (do_cmp_op): Same.
10698
10699         Fixes #410383.
10700
10701 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10702
10703         * generic-sharing.c: Fix memory leaks.
10704
10705         * class.c, class-internals.h: Make
10706         mono_class_inflate_generic_type_with_mempool() non-static.
10707
10708 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
10709
10710         * pedump.c (dump_verify_info): Dump full class name.
10711
10712 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10713
10714         * generic-sharing.c: Removed some old code that didn't do anything.
10715
10716 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
10717         * profiler.c: Added runtime_initialized_event,
10718         mono_profiler_install_runtime_initialized and
10719         mono_profiler_runtime_initialized. This new hook tells the profiler
10720         when the runtime is sufficiently initialized to be able to call
10721         mono_thread_attach on the root appdomain.
10722         * profiler.h, profiler-private.h: Likewise.
10723
10724 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
10725
10726         * verify.c (do_cast): Do boxing for generic arguments as well.
10727
10728         * class.c (is_nesting_type): Drop generic instantiations before
10729         checking for nesting.
10730
10731         * class.c (can_access_instantiation): Allow access to generic
10732         arguments.
10733
10734 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
10735
10736         * verify.c (verify_class_for_overlapping_reference_fields):
10737         On some cases, the field size might be zero, guard against that.
10738         Fix the explicit layout check to work as expected.
10739
10740 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
10741
10742         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
10743         mono_thread_resume () during shutdown, since the thread we want to abort
10744         might be suspended.
10745
10746 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
10747
10748         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
10749         warning.
10750
10751         * debug-mono-symfile.c: Fix a warning.
10752
10753         * mono-perfcounters.c (get_cpu_times): Fix a warning.
10754
10755         * object.c (mono_class_vtable): Check if exception_type is set, and return
10756         NULL as defined by the function comments.
10757
10758 2008-07-22  Mark Probst  <mark.probst@gmail.com>
10759
10760         * mempool.c: Use malloc for every single mempool allocation if the
10761         configure option is set.  This makes it easier to track mempool
10762         allocations with tools like Valgrind.
10763
10764 2008-07-22  Jb Evain  <jbevain@novell.com>
10765
10766         * reflection.c (create_dynamic_mono_image): emit the same
10767         metadata version that SL2 does when creating a SL2 image.
10768
10769 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
10770
10771         * icall-def.h:
10772         * icall.c: New icall System.Enum:get_hashcode. This function
10773         avoids the overhead of boxing the enum to the underlying type.
10774
10775 2008-07-21  Mark Probst  <mark.probst@gmail.com>
10776
10777         * reflection.c (mono_method_get_object): Don't let static RGCTX
10778         invoke wrappers get into MonoReflectionMethods.
10779
10780 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
10781
10782         * object-internals.h:
10783         * object.c: New mono_runtime_class_init_full function
10784         that makes throwing the exception optinal.
10785
10786         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
10787         for the case where the exception object is supplied.
10788
10789 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
10790
10791         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
10792         old ld versions.
10793
10794         Contributed under MIT/X11 license.
10795
10796 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
10797
10798         * string-icalls.c (ves_icall_System_String_InternalSplit):
10799         Optimize array allocation by caching the MonoClass of the
10800         array type.
10801
10802         * icall.c (ves_icall_Type_GetMethodsByName): Same.
10803
10804         * reflection.c (mono_param_get_objects): Same.
10805
10806 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
10807
10808         * icall-def.h:
10809         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
10810         It inflates the given type using the class context.
10811
10812 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
10813
10814         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
10815         the vtable if it already exists.
10816
10817         * object-internals.h: Add mono_class_try_get_vtable as part of the
10818         internal API.
10819
10820         * reflection.c (mono_type_get_object): Use the MonoObject from the
10821         vtable when possible. Reduces locking contention on reflection heavy
10822         code.
10823
10824 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
10825
10826         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
10827         g_bit_nth_msf () since that macro is not implemented in eglib.
10828
10829 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
10830
10831         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
10832         on platforms which do not support it.
10833
10834 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
10835
10836         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
10837
10838 2008-07-11  Martin Baulig  <martin@ximian.com>
10839
10840         * mono-debug-debugger.h
10841         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
10842
10843         * mono-debug-debugger.c
10844         (_mono_debugger_interruption_request): New global volatile variable.
10845         (mono_debugger_check_interruption): New public function.
10846
10847         * threads.c
10848         (mono_thread_current_check_pending_interrupt): Call
10849         mono_debugger_check_interruption().
10850         (mono_thread_interruption_checkpoint_request): Likewise.
10851
10852 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10853
10854         * verify.c: Add more type checks for loaded types. Verify the result
10855         handle from ldtoken.
10856
10857 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10858
10859         * loader.c (field_from_memberref): Don't crash if the field
10860         wasn't found.
10861
10862 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10863
10864         * verify.c: Verify if type and method instantiations
10865         don't have invalid VAR or MVAR arguments.
10866
10867 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10868
10869         * verify.c: Fix double free of function pointer list.
10870
10871 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10872
10873         * object.c (mono_string_to_utf8): Comment the new code as it
10874         breaks under eglib.
10875
10876 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
10877
10878         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
10879
10880 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
10881
10882         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
10883           is not throw too many times.
10884
10885         Code is contributed under MIT/X11 license.
10886
10887 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
10888
10889         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
10890         debugging is turned off.
10891
10892 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
10893
10894         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
10895
10896 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10897
10898         * class-internals.h, class.c: Added new generic sharing option:
10899         Share only stuff in System.Collections.Generic, which is now the
10900         default.
10901
10902 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10903
10904         * generic-sharing.c, class-internals.h: New function for getting a
10905         generic method in a generic class given the corresponding method
10906         for a different instantiation of the class.  Partly refactored
10907         from mini-trampolines.c.
10908
10909         * class.c: Make sure generic methods have a class_inst if they are
10910         part of a generic class.
10911
10912         * metadata.c (mono_type_stack_size_internal): Handle type
10913         variables.
10914
10915 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10916
10917         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
10918         Signifies whether information on the this/vtable/mrgctx variable
10919         is available.
10920
10921 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10922
10923         * object.c, object-internals.h, icall.c: New function
10924         mono_delegate_ctor_with_method(), which does the same as
10925         mono_delegate_ctor(), but takes an explicit method argument
10926         instead of taking the method from the jit info.
10927
10928         * marshal.c: When creating a delegate with an inflated method take
10929         the "this" argument as the target class for the castclass.
10930
10931 2008-07-03  Mark Probst  <mark.probst@gmail.com>
10932
10933         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
10934         mono_jit_info_table_find() to perform very badly in some cases.
10935
10936 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
10937
10938         * icall.c (type_from_typename): Handle 'string'.
10939
10940         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
10941         wrappers into the wrapper_hash, since the key is not a MonoMethod.
10942
10943 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
10944
10945         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
10946
10947         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
10948         number of available managed allocator types.
10949
10950         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
10951         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
10952
10953 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
10954
10955         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
10956         which is a low level lock protecting just the 'jit_code_hash' hash table.
10957
10958         * domain.c: Initialize+cleanup jit_code_hash_lock.
10959         
10960 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
10961
10962         * coree.c (mono_load_coree): Set coree_module_handle global variable only
10963         after initialization.
10964
10965         * coree.h: Make MonoFixupExe internal.
10966
10967         Contributed under MIT/X11 license.
10968
10969 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
10970
10971         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
10972         because that is platform independent. Check NumberOfRvaAndSizes in PE32
10973         as well.
10974         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
10975         image being loaded is a CLI image and _CorValidateImage gets called.
10976
10977         * coree.h: Add MonoLoadImage.
10978
10979         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
10980         instead of LoadLibrary.
10981
10982         Contributed under MIT/X11 license.
10983
10984 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
10985
10986         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
10987         for any primitive type.
10988
10989 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
10990
10991         * object.c (mono_array_new_specific): Optimize this and the other allocation
10992         functions a bit.
10993         
10994         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
10995         domains too if mono_dont_free_domains is set.
10996
10997         * domain-internals.h (mono_dont_free_domains): New internal option controlling
10998         whenever to free appdomain data after it has been unloaded.
10999
11000         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
11001         
11002 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
11003
11004         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
11005         (mono_method_get_equivalent_method): Fix a warning.
11006
11007         * object.c (mono_message_init): Avoid looking up array types for each call.
11008
11009 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11010
11011         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
11012         call.
11013
11014         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
11015         even more.
11016
11017         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
11018         each iteration.
11019
11020         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
11021         fields of an enum.
11022
11023 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
11024
11025         * object.c (mono_value_box): Fix boxing of nullables.
11026
11027 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
11028
11029         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
11030         mono_module_handle that is defined by the linker; no initialization required.
11031         * coree.h: Remove mono_module_handle, add __ImageBase, update
11032         mono_image_open_from_module_handle.
11033         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
11034         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
11035         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
11036         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
11037         to 4 GB away from image base address. IA64 version is not tested but was very
11038         easy to implement and should work if we ever need it.
11039         * domain.c (mono_init_internal): Avoid system error message boxes.
11040         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
11041         with has_entry_point. Handle do_mono_image_load fauilre correctly.
11042         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
11043         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
11044         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
11045
11046         Contributed under MIT/X11 license.
11047
11048 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11049
11050         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
11051         as part of the private mono API.
11052         
11053         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
11054         Do proper argument checking for methods that belong to generic classes.
11055         Do proper type resolution for GMFH/2.
11056         Fixes #377324.
11057         
11058 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11059
11060         * verify.c (do_switch): Fix a memory corruption bug with
11061         the jump index is out of bound.
11062
11063 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11064
11065         * verify.c: Disable debug code.
11066
11067 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11068
11069         * reflection.c (mono_image_get_methodbuilder_token): Use
11070         mono_image_get_methodspec_token_for_generic_method_definition
11071         instead of mono_image_get_memberref_token. We cache more memberef
11072         entries now.
11073
11074 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11075
11076         * verify.c: Inflate exception clause types.
11077         Fixes #402606.
11078         
11079 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11080
11081         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
11082         name.
11083
11084         * reflection.c (mono_image_get_ctorbuilder_token): Same.
11085
11086         * reflection.c (mono_image_create_method_token): Same.
11087
11088 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11089
11090         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
11091         It does the same as mono_image_get_methodref_token but works on
11092         MethodBuilder.
11093
11094         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
11095         and always generate a methodspec. This follows the old behavior and fixes
11096         the regressions in System.Core. 
11097
11098 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11099
11100         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
11101         don't event mono_class_get () succeeds. Fixes #402182.
11102
11103 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
11104
11105         * metadata-internals.h: Added MonoDynamicImage::methodspec
11106         hashtable to store methodspec tokens created for MethodBuilders.
11107
11108         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
11109         MethodBuilders as open instantiations if a methodspec was requested.
11110
11111         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
11112
11113         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
11114
11115         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
11116
11117         Fixes bug #349190.
11118
11119 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
11120
11121         * loader.c (method_from_methodspec): Avoid crashing if the
11122         method lookup fails.
11123
11124 2008-06-20  Dick Porter  <dick@ximian.com>
11125
11126         * socket-io.c (get_socket_assembly): Cope with Moonlight network
11127         classes being in a different assembly.  Fixes bug 399184.
11128
11129 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
11130
11131         * loader.c (mono_loader_init): Make this callable multiple times.
11132         (mono_dllmap_insert): Call mono_loader_init () so this works even before
11133         the runtime is initialized. Fixes #401755.
11134
11135 2008-06-19  Dick Porter  <dick@ximian.com>
11136
11137         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
11138         Fixes bug 349688.
11139
11140 2008-06-19  Dick Porter  <dick@ximian.com>
11141
11142         * socket-io.c:
11143         * icall-def.h: Implement Socket generic Send() and Receive()
11144         methods.  Fixes bug 395168.
11145
11146 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
11147
11148         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
11149
11150         Contributed under MIT/X11 license.
11151
11152 2008-06-18  Martin Baulig  <martin@ximian.com>
11153
11154         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
11155         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
11156         set to 80.0.  The debugger <-> runtime interface is now frozen as
11157         well.   
11158
11159         * mono-debug.c
11160         (mono_debug_debugger_version): Bump to 4.
11161
11162 2008-06-18  Martin Baulig  <martin@ximian.com>
11163
11164         * debug-mono-symfile.c
11165         (load_symfile): Don't check the minor version.
11166
11167         * debug-mono-symfile.h: Bump the version number to 50.0.
11168
11169 2008-06-18  Martin Baulig  <martin@ximian.com>
11170
11171         * debug-mono-symfile.c
11172         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
11173         minimum required version.
11174
11175 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
11176
11177         * reflection.c (mono_custom_attrs_from_property): Fix support for
11178         retriveving cattrs of dynamic inflated generic types.
11179
11180         * reflection.c (mono_custom_attrs_from_event): Same.
11181
11182         * reflection.c (mono_custom_attrs_from_field): Same;
11183
11184         * reflection.c (typebuilder_setup_events): Same cattrs of events.
11185
11186         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
11187         Moved to metadata.c.
11188
11189         * metadata.c: New functions to retrive the equivalent field, event
11190         of property from the generic type definition.
11191
11192         * metadata-internals.h: Added new functions from metadata.c.
11193
11194 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
11195
11196         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
11197         to cached in a mempool is used.
11198
11199         * metadata.c (free_generic_class): In some situations field generic_info type
11200         is not properly dup'ed and leads to double free'ing.
11201
11202         Fixes #400643.
11203
11204 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11205
11206         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
11207         this arguments (will be needed later for generic methods).
11208         Collect stats.
11209
11210 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11211
11212         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
11213         Create a static RGCTX invoke wrapper for methods which require it.
11214
11215 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11216
11217         * object.c, class-internals.h: New function for checking whether
11218         an individual field is special static.
11219
11220 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
11221
11222         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
11223         linear search since the table is sorted.
11224
11225         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
11226         Fixes #324180.
11227
11228 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
11229
11230         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
11231         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
11232
11233         * gc.c (mono_domain_finalize): Allow an infinite timeout.
11234
11235         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
11236         
11237         * threads.c (mono_thread_request_interruption): Get rid of locking, use
11238         InterlockedCompareExchange to query and modify 
11239         thread->interruption_requested.
11240
11241         * object-internals.h (struct _MonoThread): Change interruption_requested
11242         to a gint32 so it can be modified by atomic operations. Add 
11243         'critical_region_level' from the managed side, change small_id to a guint32,
11244         add new set of 'unused' fields.
11245
11246         * appdomain.c: Bump corlib version.
11247
11248 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11249
11250         * class.c (mono_class_from_name): Search modules as well. Fixes
11251         #322332.
11252
11253 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11254
11255         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
11256         templates.  Templates are generalized with an additional type_argc
11257         argument.  RGCTX templates have type_argc==0, MRGCTX templates
11258         have type_argc>0.
11259
11260         * domain-internals.h, domain.c: New hash table for looking up
11261         MRGCTXs.
11262
11263         * metadata.c, metadata-internals.h: Rename hash and equal
11264         functions for MonoGenericInst's and make them public.
11265
11266         * class-internals.h: New data structures for the MRGCTX.  Macros
11267         for distinguishing slots in the RGCTX and the MRGCTX.
11268
11269 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11270
11271         * object.c (mono_method_get_imt_slot): Put the same methods of
11272         different instantiations of the same generic interface in the same
11273         IMT slots, to make generic sharing simpler.
11274
11275 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11276
11277         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
11278
11279         * metadata.c (mono_metadata_field_info_with_mempool): Added.
11280         This function works just like mono_metadata_field_info, but
11281         accept a mempool as argument to be used allocating memory.
11282
11283         * marshal.c (mono_marshal_load_type_info): Use new function
11284         to load marshal data into image mempool.
11285
11286 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11287
11288         * class.c (mono_class_inflate_generic_type_with_mempool):
11289         This function allows to inflate a generic type using
11290         a mempool.
11291
11292         * class.c (inflate_generic_type): Take a mempool as argument
11293         and use it to do type dup'ing.
11294
11295         * class.c (mono_class_setup_fields): Field type for generic
11296         generic classes are allocated from the image mempool.
11297
11298         * metadata.c (free_generic_class): Inflated field type is
11299         now allocated in the image mempool.
11300
11301 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11302
11303         * threads.c (thread_cleanup): Free MonoThread::name.
11304
11305 2008-06-12  Marek Habersack  <mhabersack@novell.com>
11306
11307         * appdomain.c (ensure_directory_exists): avoid unnecessary
11308         mkdir(2) calls when the shadow directory already exists.
11309         (mono_make_shadow_copy): copy also satellite assemblies from the
11310         private bin directories.
11311
11312 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
11313
11314         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
11315         
11316         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
11317         a page boundary. Fixes #396219.
11318
11319 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11320
11321         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
11322         due to double-checked locking.
11323
11324 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11325
11326         * assembly.c (build_assembly_name): Release memory on failure.
11327
11328         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
11329
11330 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11331
11332         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
11333         memory on failure.
11334
11335 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11336
11337         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
11338         memory on failure.
11339
11340 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11341
11342         * loader.c (field_from_memberref): Check if field signature type is equal
11343         to the non-inflated type of the field. Fixes #398980.
11344
11345 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
11346
11347         * assembly.c (mono_assembly_load_from_full): Call 
11348         mono_assembly_load_friends () outside the assemblies lock, since it can
11349         acquire the loader lock. Fixes #323696.
11350
11351         * reflection.c (resolve_object): Inflate the inst with the context for
11352         FieldOnTypeBuilderInst. Fixes #399010.
11353
11354 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11355
11356         * reflection.c (mono_image_get_field_on_inst_token): Don't
11357         inflate the field to encode it's signature. If it's a
11358         VAR or MVAR it should stay that way in the signature.
11359         Fixes #399047.
11360
11361 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11362
11363         * reflection.c (resolve_object): Release memory of inflated types.
11364
11365 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11366
11367         * loader.c (mono_method_get_signature_full): Remove assert about
11368         loading a methodspec to a generic method. We have such methods, such as
11369         System.Threading.Interlocked::CompareExchange<T>.
11370         This assert was removed since it crashes the verifier when it checks
11371         methods calling CompareExchange<T>.
11372
11373 2008-06-10  Marek Safar  <marek.safar@gmail.com>
11374
11375         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
11376         of Type array and not MonoType.
11377
11378 2008-06-10  Marek Habersack  <mhabersack@novell.com>
11379
11380         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
11381         <lupus@ximian.com>
11382
11383 2008-06-10  Martin Baulig  <martin@ximian.com>
11384
11385         * debug-mono-symfile.h
11386         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
11387         changes to the file format, but we were generating incorrect
11388         source file indices in the line number table due to a bug, which
11389         made backtraces report an incorrect source file.
11390
11391 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11392
11393         * mono-debug.c: Moved mono_debug_free_method_jit_info from
11394         mini/debug-mini.c to here.
11395
11396         * mono-debug.c (il_offset_from_address): Free memory from find_method.
11397
11398         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
11399         use it to release structs returned by mono_debug_find_method.
11400
11401 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
11402
11403         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
11404         since it needs to set method->slot for all interface methods.
11405
11406 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11407
11408         * class-internals.h: Forgot to add.
11409
11410 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11411
11412         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
11413
11414         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
11415         Lookup the custom attributes from property_hash.
11416
11417         * reflection.c (mono_save_custom_attrs): Save the custom attributes
11418         in property_hash. Allocate all data using the image mempool.
11419
11420         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
11421         for dynamic_custom_attrs to checks if the image is dynamic.
11422
11423 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11424
11425         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
11426         assemblies array.
11427         
11428         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
11429         runtime functions while holding the domain assemblies lock.
11430
11431 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11432
11433         * verify.c: Reapplied the last bit of the reverted changes.
11434
11435 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11436
11437         * verify.c: Reapplied more of the reverted changes.
11438
11439 2008-06-09  Martin Baulig  <martin@ximian.com>
11440
11441         * debug-mono-symfile.c (load_symfile): Check the major version
11442         first; if it's wrong, don't print the minor version in the error message.
11443
11444 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11445
11446         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
11447         lock instead of the domain lock to avoid deadlocks, since the thread might
11448         already hold the loader lock.
11449
11450         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
11451         (mono_thread_attach): Ditto.
11452
11453         * monitor.c: Use a TLS variable for holding the current thread id instead
11454         of calling pthread_self ().
11455         (mono_monitor_init_tls): New internal function to initialize the TLS
11456         variable.
11457         (mono_monitor_try_enter_internal): Put the owner == id check after the
11458         owner == 0 check.
11459
11460         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
11461         missed optimizations when using gcc-4.3.
11462
11463 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
11464
11465         * reflection.c (mono_dynamic_image_free): Free the memory
11466         used by MonoGenericParam in MonoDynamicImage::gen_param.
11467
11468         * reflection.c (mono_reflection_setup_generic_class): Allocate
11469         container from mempool.
11470
11471         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
11472         container from mempool.
11473
11474 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11475
11476         * threads.c (mono_set_pending_exception): New internal function to set the
11477         pending exception of the current thread.
11478         (mono_thread_get_and_clear_pending_exception): Check for 
11479         thread->pending_exception as well.
11480
11481         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
11482
11483         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
11484         it can trigger a collection.
11485
11486 2008-06-06  Martin Baulig  <martin@ximian.com>
11487
11488         Merged the `debugger-kahalo' branch.
11489
11490         * mono-debug.h
11491         (MONO_DEBUGGER_VERSION): Bumped to 72.
11492
11493         * debug-mono-symfile.h
11494         (MonoSymbolFileMethodIndexEntry): Removed.
11495         (MonoSymbolFileMethodEntry): New public typedef.
11496         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
11497         (MonoSymbolFileSourceEntry): Remove everything except `index' and
11498         `data_offset'.
11499         (MonoSymbolFileMethodEntry): Removed.
11500         (MonoSymbolFileLexicalBlockEntry): Removed.
11501         (MonoSymbolFileLineNumberEntry): Removed.
11502         (MonoDebugLexicalBlockEntry): Removed.
11503         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
11504         removed `num_il_offsets' and `il_offsets'.
11505         (MonoSymbolFile): Replace `version' with `major_version' and
11506         `minor_version'.
11507         (MONO_SYMBOL_FILE_VERSION): Replace with
11508         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
11509         `MONO_SYMBOL_FILE_MINOR_VERSION'.
11510
11511         * debug-mono-symfile.c
11512         (mono_debug_symfile_lookup_location): Add support for the new line
11513         number table format.
11514
11515 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11516
11517         * metadata.c (free_generic_class): Release the inflated
11518         MonoClass of dynamic generic classes if it's not a generic
11519         type definition.
11520
11521 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11522
11523         * verify.c: Reapplied more of the reverted changes.
11524
11525 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11526
11527         * reflection.c (lookup_custom_attr): Clean the cached flag or
11528         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
11529         for SRE types.
11530
11531 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11532
11533         * verify.c: Reapplied a small part of the reverted changes.
11534
11535 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11536
11537         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
11538
11539         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
11540         previously in managed code.
11541         (mono_monitor_exit): Ditto.
11542         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
11543
11544         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
11545         the managed definition.
11546
11547 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
11548
11549         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
11550
11551 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11552
11553         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
11554         
11555         * monitor.c: Add some micro optimizations.
11556
11557         * icall.c (type_from_typename): Handle 'bool'.
11558
11559 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
11560
11561         * verify.c: Implement constructor verification per P III 1.8.1.4.
11562         Fixes #396716.
11563
11564 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11565
11566         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
11567         holding the assemblies lock here too.
11568
11569 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11570
11571         * verify.c: Kill stack_top function.
11572
11573 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11574
11575         * verify.c: Kill stack_get function.
11576
11577 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11578
11579         * verify.c (mono_method_verify): Last change broke the build. Fixed.
11580
11581 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11582
11583         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
11584         more reliable.
11585
11586         * verify.c (mono_method_verify): Inflate params and locals to avoid
11587         mismatch when checking for compatibility.
11588
11589 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
11590
11591         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
11592         Length prefix should be size in bytes. Fix bug #339530.
11593         
11594         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
11595         Length prefix should be size in bytes. Fix bug #339530.
11596
11597         Code is contributed under MIT/X11 license.
11598
11599 2008-06-05  Bill Holmes <billholmes54@gmail.com>
11600
11601         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
11602
11603         Contributed under MIT/X11 license.
11604
11605 2008-06-05  Martin Baulig  <martin@ximian.com>
11606
11607         * mono-debug-debugger.c
11608         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
11609
11610 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
11611
11612         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
11613         while holding the assemblies lock to prevent deadlocks. Handle the case
11614         where the search hook returns NULL but the assembly was still loaded.
11615         Fixes #323696.
11616
11617         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
11618         modify domain state.
11619
11620 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
11621
11622         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
11623         * Makefile.am (pedump_LDADD): Post-process object files and
11624         add dtrace-generated object file, if necessary.
11625
11626         Code is contributed under MIT/X11 license.
11627
11628 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11629
11630         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
11631
11632 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11633
11634         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
11635
11636 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11637
11638         * threads.c: Try to free everything from the delayed free table
11639         when shutting down threads, and set the variable to NULL after the
11640         table is freed so that calling
11641         mono_thread_hazardous_try_free_all() when shutting down the root
11642         domain doesn't crash.
11643
11644 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11645
11646         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
11647         the caller if resulting type was inflated.
11648
11649         * class.c (mono_class_create_from_typespec): Free the MonoType if it
11650         was inflated.
11651
11652         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
11653
11654
11655 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
11656
11657         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
11658         class library tests.
11659
11660         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
11661         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
11662         #396989.
11663
11664 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11665
11666         * domain.c, domain-internals.h: The JIT infos are now freed by the
11667         JIT info table code.  They are freed immediately if there only a
11668         single JIT info table in circulation.  If there is more, the free
11669         is delayed via a queue.
11670
11671         * threads.c, threads-types.h: New hazard pointer function for
11672         freeing all freeable delayed items in one sitting.
11673
11674 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11675
11676         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
11677
11678         * reflection.c (typebuilder_setup_properties): Same.
11679
11680         * reflection.c (typebuilder_setup_events): Same.
11681
11682 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11683
11684         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
11685         and use it for allocating memory.
11686
11687         * reflection.c (mono_marshal_spec_from_builder): Same.
11688
11689         * reflection.c: Change code to use new signatures.
11690
11691         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
11692
11693 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11694
11695         * decimal.c (rescale128): Put back one line which was accidently commented
11696         out.
11697         
11698         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
11699         to cause crashes.
11700
11701 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11702
11703         * reflection.c (mono_reflection_generic_class_initialize): Name must
11704         be always malloc'ed so we can free it later on. Do this for field, property
11705         and event.
11706
11707         * metadata.c (free_generic_class): Free field, property and event names.
11708
11709 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11710
11711         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
11712         instead of g_memdup.
11713
11714         * reflection.c (typebuilder_setup_fields): Same.
11715
11716 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11717
11718         * decimal.c (rescale128): Optimize this function a bit more.
11719
11720 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11721
11722         * metadata.c (free_generic_class): Release some memory from
11723         SRE generic classes.
11724
11725 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11726
11727         * reflection.c (mono_image_get_generic_field_token): No reference
11728         to name is kept, free it.
11729
11730         * reflection.c (mono_reflection_generic_class_initialize): Free
11731         more memory of the inflated field.
11732
11733 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11734
11735         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
11736         code.
11737
11738 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
11739
11740         * reflection.c (mono_dynamic_image_free): Release memory used by
11741         MonoDynamicImage::array_methods elements.
11742
11743         * reflection.c (assembly_add_win32_resources): Release memory after
11744         encoding.
11745
11746 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
11747
11748         * decimal.c (log2_32): Use an optimized version for this function too.
11749         
11750         * decimal.c (log2_64): Fix this on 32 bit machines.
11751
11752 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
11753
11754         * class.c (mono_dup_array_type): Implement allocation using a mempool.
11755
11756         * class.c (mono_metadata_signature_deep_dup): Same.
11757
11758         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
11759         a mempool.
11760
11761         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
11762
11763         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
11764
11765         * metadata-internals.h: Added mono_metadata_signature_dup_full.
11766
11767         * class-internals.h: Update signatures to take a MonoMemPool.
11768
11769 2008-06-02  Dick Porter  <dick@ximian.com>
11770
11771         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
11772         * icall-def.h: Add
11773         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
11774         FormatMessage API to get the error text.  Fixes bug 321827.
11775
11776 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
11777
11778         * decimal.c: Add some micro optimizations to make decimal operations faster.
11779
11780 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
11781
11782         * reflection.c (method_encode_clauses): Take a mempool
11783         as parameter and use it to allocate the clause array.
11784
11785         * reflection.c (mono_image_get_field_on_inst_token): Free
11786         the inflated type after encoding it.
11787
11788         * reflection.c (mono_dynamic_image_free): Free each element
11789         of MonoDynamicImage::gen_params.
11790
11791         * reflection.c (reflection_methodbuilder_to_mono_method):
11792         Allocate the generic param array from the mempool.
11793         Allocate signature params from the mempool.
11794
11795         * reflection.c (mono_reflection_generic_class_initialize):
11796         Free inflated fields after been used.
11797
11798 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
11799
11800         * icall.c: Reapply the memory leak fixes as they no
11801         longer make mono crash.
11802
11803 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
11804
11805         * reflection.c (mono_type_get_object): Don't store the suplied
11806         MonoType with type_hash. A caller which pass a type that
11807         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
11808         might end with a pointer to freed memory.
11809         The solution is to use byval_arg or this_arg from the associated
11810         MonoClass of the supplied type.
11811
11812 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
11813
11814         * icall.c: Revert the rest of the last change as it breaks the build too.
11815
11816 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11817
11818         * icall.c: Revert a leak fix as it's breaking the build.
11819
11820 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11821
11822         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
11823
11824 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11825
11826         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
11827
11828 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11829
11830         * icall.c: Fix some memory leaks.
11831
11832 2008-05-29  Dick Porter  <dick@ximian.com>
11833
11834         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
11835         async socket operations from the pending list when a socket
11836         closes.  Leaving it until the threadpool services the event
11837         exposes a race condition when a socket descriptor is reused.
11838         Fixes bug 377589.
11839
11840 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11841
11842         * object.c: Fix negative index check for array alocation.
11843
11844 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11845
11846         * icall.c, marshal.c: Delegate wrappers should skip visibility.
11847         This check is performed by the verifier for IL created delegates
11848         and by Delegate::CreateDelegate for programatically created ones.
11849         Fixes #372406.
11850
11851 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11852
11853         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
11854         Fix code to use mono_array_size_t instead of int.
11855
11856         Based on patch by Luis F. Ortiz.
11857         Contributed under X11 license.
11858         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11859
11860 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11861
11862         * icall.c: Added ves_icall_System_Array_GetLongLength and
11863         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
11864         arrays.
11865
11866         * icall.h: Export both new functions.
11867
11868         Based on patch by Luis F. Ortiz.
11869         Contributed under X11 license.
11870         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11871
11872 2008-05-28  Martin Baulig  <martin@ximian.com>
11873
11874         The debugger now requires exactly r103463.
11875
11876         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
11877         This version is not supported by the debugger, wait for 72.
11878
11879 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11880
11881         * object.h: Changed array related functions to use
11882         mono_array_size_t instead of guint32. Forgot to commit this file.
11883
11884         Patch by Luis F. Ortiz.
11885         Contributed under X11 license.
11886         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11887
11888
11889 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11890
11891         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
11892         don't define it. Use the number literal instead.
11893
11894 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11895
11896         * icall.c: Changed array related functions to use
11897         mono_array_size_t instead of guint32.
11898
11899         * icall.c (ves_icall_System_Array_GetLength): Check for length
11900         overflow under MONO_BIG_ARRAYS.
11901
11902         Based on patch by Luis F. Ortiz.
11903         Contributed under X11 license.
11904         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11905
11906 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11907
11908         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
11909
11910         Based on patch by Luis F. Ortiz.
11911         Contributed under X11 license.
11912         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11913
11914 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11915
11916         * object.c, object.h: Changed array related functions to use
11917         mono_array_size_t instead of guint32.
11918
11919         Patch by Luis F. Ortiz.
11920         Contributed under X11 license.
11921         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11922
11923 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11924
11925         * object.h: Introduced mono_array_size_t typedef. This must be used
11926         in all places an array length is expected. This is 64bits wide if
11927         MONO_BIG_ARRAYS is enabled.
11928
11929         Patch by Luis F. Ortiz.
11930         Contributed under X11 license.
11931         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11932
11933 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
11934
11935         * security-manager.c class.c: Set the class exception info by calling
11936         mono_class_set_failure ().
11937
11938         * class.c (mono_class_get_exception_data): New accessor function.
11939         (mono_class_set_failure): Store exception_data in the property hash.
11940
11941         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
11942         the struct as a property.
11943
11944         * loader.c (mono_get_method_full): Store the lookup result for method
11945         tokens in method_cache, the others in methodref_cache to decrease the memory
11946         usage of hash tables.
11947
11948         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
11949         (mono_image_init): method_cache is lazy inited now.
11950
11951         * metadata-internals.h (struct _MonoImage): Change method_cache to
11952         a MonoValueHashTable, add a separate methodref_cache.
11953
11954 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
11955
11956         * number-formatter.h: Fix tables to avoid arithemtic overflow in
11957           Double.ToString as exposed by Bug #383531.
11958
11959 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
11960
11961         * number-formatter.h: Make some tables static.
11962
11963         * class.c (mono_method_set_generic_container): New accessor function.
11964         (mono_method_get_generic_container): Ditto.
11965
11966         * class-internals.h (struct _MonoMethod): Remove rarely used 
11967         'generic_container' field, store it in the property hash instead. Add 
11968         'is_generic' boolean field instead.
11969
11970         * image.c (mono_image_init): Initialize property_hash.
11971         (mono_image_close): Destroy property_hash.
11972
11973         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
11974         hold rarely used fields of runtime structures belonging to this image.
11975
11976         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
11977         to get/set method->generic_container.
11978
11979         * loader.c (mono_get_method_from_token): Avoid loading the method header for
11980         generic methods.
11981
11982 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
11983
11984         * class.c (mono_class_inflate_generic_method_full): Don't increase
11985         mono_stats.inflated_method_count for methods found in the cache.
11986
11987         * threads.c (mono_thread_request_interruption): Add a comment about 
11988         QueueUserAPC ().
11989
11990 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
11991
11992         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
11993         interface_offsets_packed table.
11994         
11995         * class.c (mono_class_init): Remove some dead code.
11996
11997         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
11998         mono_class_setup_vtable () when CAS is active to detect security problems.
11999
12000 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
12001
12002         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
12003
12004         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
12005         parameters as it's irrelevant for delegate checking.
12006
12007 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12008
12009         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
12010
12011         * class.c (mono_class_init): Control the creation of a generic vtable using
12012         a global which is true by default, but set to false by the runtime startup code.
12013         
12014         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
12015         Disabled for now since it breaks the embedding API.
12016         Move the setup of class->methods for arrays to mono_class_setup_methods ().
12017         (mono_class_setup_methods): Add a memory barrier.
12018
12019         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
12020         when mono_class_init () doesn't compute the generic vtable.
12021         
12022 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12023         * profiler.c: Added mono_profiler_install_statistical_call_chain,
12024         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
12025         to support call chains (backtrace) in the stat profiler.
12026         * profiler.c, profiler-private.h: Likewise.
12027
12028 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12029
12030         * generic-sharing.c: Init generic class when a method of it is
12031         requested via a runtime generic context.
12032
12033 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12034
12035         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
12036
12037         * reflection.c (mono_type_get_object): Add a FIXME.
12038
12039         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
12040
12041         * class.c (mono_class_get_method_by_index): New helper function, returning an
12042         entry in the class->methods array.
12043
12044 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12045
12046         * class.c (mono_class_init): Only do the array optimization for szarrays. 
12047         Avoid creating a generic vtable for generic instances as well.
12048         (mono_class_get_method_from_name_flags): Don't search in the metadata for
12049         generic instances.
12050
12051 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
12052
12053         * loader.c (mono_get_method_constrained): Inflate the signature
12054         with class context. Fix #325283.
12055
12056 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12057
12058         * object.c (mono_class_create_runtime_vtable): Add a comment.
12059
12060         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
12061         where needed.
12062         (setup_interface_offsets): Handle the case when this is called twice for arrays.
12063         (mono_class_setup_vtable_general): Add an assert.
12064         (mono_class_init): Avoid creating a generic vtable for arrays.
12065
12066         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
12067         here, let mono_class_init () do that.
12068
12069         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
12070         interfaces in mscorlib.
12071
12072         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
12073         interfaces. Add some comments.
12074         (mono_class_init): Call mono_class_setup_methods () here since it is no
12075         longer called by mono_class_setup_vtable ().
12076
12077         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
12078         not set in class->vtable.
12079         (mono_class_create_runtime_vtable): Reenable the disabled code.
12080
12081         * object.c (mono_class_create_runtime_vtable): Disable the last change for
12082         now as it causes some test failures.
12083
12084         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
12085         if using the vtable trampoline. Also remove some strange code which put the
12086         generic methods themselves into the vtable slots. Remove the AOT init_vtable
12087         stuff as it is no longer needed.
12088
12089 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
12090
12091         * pedump.c: Give make --verify all option check code as well.
12092         Using --verify code won't check for metadata now.
12093
12094 2008-05-19  Martin Baulig  <martin@ximian.com>
12095
12096         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
12097
12098         * mono-debug.c
12099         (_mono_debug_using_mono_debugger): New global variable; it's set
12100         directly by the debugger, so mono_debug_using_mono_debugger() also
12101         works after attaching.
12102
12103 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
12104
12105         * object.c (mono_class_create_runtime_vtable): Use memory barriers
12106         as we do double checked locking on MonoClass::runtime_info and
12107         MonoClassRuntimeInfo::domain_vtables.
12108
12109 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
12110
12111         * debug-helpers.c (print_field_value): Fix a warning.
12112
12113 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
12114
12115         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
12116         set in the AOT case.
12117
12118 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
12119
12120         * class.c (mono_class_setup_vtable_general): Use memory barriers
12121         as we do double checked locking on MonoClass::vtable.
12122
12123 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
12124
12125         * reflection.c (resolve_object): Inflate only if the generic context
12126         is not null. Fixes #389886.
12127
12128 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
12129
12130         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
12131         instead of g_free.
12132
12133         Code is contributed under MIT/X11 license.
12134
12135 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12136
12137         * class.c: Revert unrelated change.
12138
12139 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12140
12141         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
12142         a generic instantiation, use mono_class_from_mono_type instead of playing
12143         with MonoType directly.
12144
12145 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12146
12147         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
12148         checks must ignore generic instantiations, so mono_class_has_parent is not
12149         suitable. Fixes #390128.
12150
12151 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
12152
12153         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
12154         it to avoid registering tokens during metadata generation. Fixes #390023.
12155
12156 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
12157
12158         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
12159         consistent.
12160
12161         Contributed under MIT/X11 license.
12162
12163 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
12164
12165         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
12166         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
12167         to fixup the EXE image.
12168         (mono_cleanup): Use mono_close_exe_image.
12169         (mono_close_exe_image): New function.
12170         * image.c: Include "marshal.h".
12171         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
12172         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
12173         counting when the image is loaded outside of mono_image_open_full. Set status
12174         based on GetLastError.
12175         * coree.c: Include required headers. Add init_from_coree.
12176         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
12177         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
12178         (_CorExeMain): Set init_from_coree.
12179         (CorExitProcess): Only call ExitProcess for now.
12180         (CorBindToRuntimeEx): New stub implementation.
12181         (CorBindToRuntime): New function.
12182         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
12183         (MonoFixupExe): ILONLY executables require no fixups.
12184         (mono_set_act_ctx): New function to set activation context.
12185         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
12186         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
12187         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
12188         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
12189         as MONO_INTERNAL.
12190         * domain-internals.h: Add mono_close_exe_image.
12191
12192         Contributed under MIT/X11 license.
12193
12194 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
12195
12196         * metadata.c (mono_metadata_compute_size): Correctly calculate field
12197         size for generic param and event tables. Fixes #388977.
12198
12199 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
12200
12201         * loader.c (mono_method_signature): Use memory barriers because of the double
12202         checked locking pattern.
12203
12204         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
12205         aborting or aborted as well. Fixes #376391.
12206         
12207         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
12208         existing runtime state in the Suspend handler during shutdown.
12209
12210 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
12211
12212         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
12213
12214         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
12215         which are starting up or shutting down.
12216
12217         * threads.c (mono_threads_set_shutting_down): Don't return a value since
12218         this function never returns if the runtime is already shutting down.
12219
12220         * icall.c (ves_icall_System_Environment_Exit): Update after 
12221         mono_threads_set_shutting_down () signature change.
12222         
12223 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
12224
12225         * class.c: Added can_access_instantiation to verify if the instantiation
12226         is visible. Fix access check for nested types as they returned TRUE
12227         before doing type and generic instantiation visibility checks.
12228
12229 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
12230
12231         * reflection.c (mono_reflection_create_generic_class): The created type
12232         must have a different container from its TypeBuilder. Otherwise they
12233         will end sharing generic arguments, which is wrong.
12234
12235         Due to the sharing, making a generic instance of the created type using
12236         the TypeBuider generic arguments resulted in the generic type definition
12237         been returned, which is wrong as well.
12238
12239         As a bonus the code was leaking the type_params array. This memory should
12240         be allocated from the image mempool.
12241
12242         This fixes bug #354047.
12243
12244 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
12245
12246         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
12247         to here         as they are now used in assembly.c new code.
12248         Added a skipverification flag to MonoAssembly.
12249         New internal function mono_assembly_has_skip_verification.
12250
12251         * assembly.c: New function mono_assembly_has_skip_verification. It checks
12252         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
12253         part of #387274.
12254
12255 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12256
12257         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
12258         needed. Fixes #387034.
12259
12260         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
12261
12262 2008-05-06  Miguel de Icaza  <miguel@novell.com>
12263
12264         * assembly.c (mono_assembly_load_reference): Prevent crash while
12265         disassembling Silverlight 2.0 executables while we still do not
12266         have GACed libraries.
12267
12268 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12269
12270         * reflection.c: Special case generic type definitions as well. Fixes #383444.
12271
12272 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
12273
12274         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
12275         of the dynamic case. Fixes #387404.
12276
12277 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12278
12279         *verify.c (mono_verifier_is_class_full_trust): If under
12280         verify_all and the verifier mode was not set, only
12281         gac and corlib types are fulltrust. This makes --verify-all
12282         usable to detect unverifiable code, which is the expected
12283         use case.
12284
12285 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12286
12287         * verify.h: Ops, commited the header with debug
12288         enabled.
12289
12290 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12291
12292         * verify.c (merge_stack): Use the new value on unverifiable
12293         stack merges.
12294
12295         * verify.c (verify_type_compatibility_full): Comparison
12296         of nullable types can't use mono_class_is_assignable_from.
12297
12298         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
12299         that makes all verification errors be reported.
12300
12301         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
12302         mono_method_verify.
12303
12304 2008-05-05  Robert Jordan  <robertj@gmx.net>
12305
12306         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
12307         support for value types. See #386415.
12308
12309         * object.c: comments.
12310
12311         Code is contributed under MIT/X11 license.
12312
12313 2008-05-05  Martin Baulig  <martin@ximian.com>
12314
12315         * debug-mono-symfile.h
12316         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
12317         for old pre-terrania symbol files.
12318
12319 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
12320
12321         * mono-config.c: Add ppc64 architecture.
12322
12323         Code is contributed under MIT/X11 license.
12324
12325 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
12326
12327         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
12328           PPC64 uses function descriptors as well.
12329
12330         Code is contributed under MIT/X11 license.
12331
12332 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
12333
12334         * object.c (compute_class_bitmap): Ignore literal static fields.
12335
12336         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
12337         var has an invalid format.
12338         (describe_ptr): Add some sanity checks for the vtable.
12339         (add_nursery_frag): Clear unused nursery fragments.
12340         (major_collection): Clear all remaining nursery fragments.
12341
12342 2008-05-03  Robert Jordan  <robertj@gmx.net>
12343
12344         * image.c, metadata-internals.h: add thunk_invoke_cache.
12345
12346         * marshal.c, marshal.h: implement
12347         mono_marshal_get_thunk_invoke_wrapper ().
12348
12349         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
12350
12351         Code is contributed under MIT/X11 license.
12352
12353 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
12354
12355         * verify.c (do_leave): Empty the stack.
12356
12357 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
12358
12359         * class.c (mono_class_is_assignable_from): Variance
12360         doesn't work between reference and value types. For example,
12361         given type C<T+>, C<int32> is not assignable to C<object>.
12362         Break the argument checking loop on first error. 
12363
12364 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
12365
12366         * icall.c : base64_to_byte_array() needs some more strict
12367           check for sequence of '=' characters. Patch by Santa
12368           Marta (http://deee.g.hatena.ne.jp/santamarta).
12369
12370           Contributed under MIT/X11 license.
12371           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
12372
12373 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
12374
12375         * domain.c: Disable LoadLibrary support to fix Win32 build.
12376
12377         Code is contributed under MIT/X11 license.
12378
12379 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
12380
12381         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
12382         to help with cache behaviour.
12383
12384 2008-05-01  Miguel de Icaza  <miguel@novell.com>
12385
12386         * appdomain.c (mono_domain_from_appdomain): Add new accessor
12387         method. 
12388
12389 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
12390
12391         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
12392
12393 2008-05-01  Dick Porter  <dick@ximian.com>
12394
12395         * process.c (process_get_fileversion): Only pass 16 bits of
12396         language ID to VerLanguageName.  Fixes bug 381204.
12397
12398 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
12399
12400         * verify.c (mono_method_verify): Fix the comparison
12401         operator for code bounds check.
12402
12403 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
12404
12405         * verify.c (mono_method_verify): Check the bounds of
12406         all access of the code array.
12407
12408 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
12409
12410         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
12411
12412 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
12413
12414         * image.c (mono_image_strong_name_position): Fix return value when the rva is
12415         not valid.
12416
12417 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
12418
12419         * loader.c (mono_get_method_from_token, mono_method_signature): Add
12420         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
12421         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
12422         fixup main EXE images when using mono.exe for mixed-mode assembly support.
12423         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
12424         mono_runtime_load.
12425         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
12426         runtime initialization from metadata.
12427         * assembly.c: Remove obsolete ceGetModuleFileNameA.
12428         (mono_set_rootdir): Use mono_get_module_file_name.
12429         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
12430         handles.
12431         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
12432         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
12433         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
12434         MonoCLIImageInfo. Add support for module handles.
12435         (load_cli_header): Update mono_cli_rva_image_map signature.
12436         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
12437         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
12438         (mono_image_rva_map): Add support for module handles.
12439         (mono_image_ensure_section_idx): Add support for module handles.
12440         (mono_image_close): Add support for module handles.
12441         (do_load_header): Add support for module handles.
12442         (mono_image_open_from_module_handle): New function for internal use.
12443         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
12444         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
12445         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
12446         handles.
12447         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
12448         * image.h: Add mono_image_fixup_vtable.
12449         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
12450         support.
12451         * coree.h: New file.
12452         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
12453         unsupported native code.
12454         (mono_marshal_set_callconv_from_modopt): New function splitted from
12455         mono_marshal_get_managed_wrapper.
12456         (mono_marshal_get_managed_wrapper): Use
12457         mono_marshal_set_callconv_from_modopt.
12458         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
12459         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
12460         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
12461         that results in a deadlock when the runtime is loaded in _CorDllMain.
12462         * Makefile.am: Add coree.c and coree.h.
12463
12464         Contributed under MIT/X11 license.
12465
12466 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12467
12468         * generic-sharing.c: Search for type arguments in array element
12469         types as well.
12470
12471 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12472
12473         * class-internals.h, generic-sharing.c: New, small runtime generic context.
12474
12475         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
12476
12477         * object.c: Don't setup the RGCTX when the vtable is created,
12478         because we're setting it up lazily now.
12479
12480 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
12481
12482         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
12483         64 bit support.
12484
12485 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
12486
12487         * verify.c (verify_class_for_overlapping_reference_fields): 
12488         If class is under fulltrust allow reference types to overllap
12489         if they have the same RVA.
12490
12491 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
12492
12493         * pedump.c: Added new flag valid-only, that makes the verifier
12494         behaves just like --security=validil. It won't fail type load
12495         due to unverifiable restrictions.
12496
12497 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
12498
12499         * class-internals.h (struct MonoMethod): Added a verification_success
12500         field to cache verifier executions. Reduced MonoMethod:slot size by
12501         one bit.
12502
12503 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12504
12505         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
12506         instead of a 'vt' argument to save an indirection and to allow these to be used
12507         for valuetypes.
12508         (scan_vtype): New helper function to scan an area using a gc descriptor.
12509         (mono_gc_wbarrier_value_copy): Implement this.
12510         (handle_remset): Add support for REMSET_VTYPE.
12511         (find_in_remset_loc): Ditto.
12512         (mono_gc_base_init): Allow some debugging options to be controlled through the
12513         use of the MONO_GC_DEBUG env variable.
12514         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
12515         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
12516
12517 2008-04-23  Martin Baulig  <martin@ximian.com>
12518
12519         * domain.c (mono_domain_create): Move the call to
12520         mono_debug_domain_create() down, after allocating the domain id.
12521
12522 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
12523
12524         verify.c (verify_class_for_overlapping_reference_fields): Skip
12525         static fields while verifying for overlapping fields as they
12526         don't matter at all.
12527
12528 2008-04-23  Marek Habersack  <mhabersack@novell.com>
12529
12530         * domain-internals.h: added a declaration of
12531         mono_make_shadow_copy.
12532
12533         * assembly.c (mono_assembly_open_full): shadow copying of
12534         assemblies moved to here, so that all the assemblies within the
12535         application domain's private binary directories can be
12536         processed. Fixes bug #380546
12537
12538         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
12539         mono_make_shadow_copy and made non-static. The decision whether
12540         to shadow-copy an assembly is made based on its location - it's
12541         copied if it's in one of the private application domain binary
12542         directories and its different to the target file in the shadow
12543         directory. Fixes bug #380546
12544
12545 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12546
12547         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
12548
12549         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
12550         types.
12551
12552         * reflection.c (mono_image_create_token): Handle 
12553         Method/ConstructorOnTypeBuilderInst.
12554         (resolve_object): Ditto.
12555         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
12556         so it can be called from resolve_object. Also handle the case when the inflated
12557         class already has its methods setup.
12558
12559 2008-04-21  Martin Baulig  <martin@ximian.com>
12560
12561         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
12562
12563 2008-04-20  Geoff Norton  <gnorton@novell.com>
12564
12565         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
12566         pointer dereference.
12567
12568 2008-04-15  Marek Habersack  <mhabersack@novell.com>
12569
12570         * appdomain.c (try_load_from): if IOMAP is in effect, call the
12571         portability API to look up the assembly file. Fixes behavior in
12572         situations when the application has a bin/ directory, but the
12573         assembly search patch refers to Bin/ (and thus the requested file
12574         name is Bin/SomeLibrary.dll). Fixes bug #379888
12575
12576 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
12577
12578         verify.c (mono_type_is_generic_argument): Extracted this check
12579         from a dozen places to here.
12580
12581         verify.c: Fixed all issues related to boxing generic arguments
12582         and their constraints.
12583
12584 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
12585
12586         verify.c (mono_class_interface_implements_interface): Fix win32 build.
12587
12588 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12589
12590         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
12591         isn't finished yet. Fixes #363447.
12592
12593 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
12594
12595         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
12596         Fixes #346419.
12597
12598 2008-04-13  Jb Evain  <jbevain@novell.com>
12599
12600         * domain.c: update the 2.1 profile versions.
12601         Merged from the Moonlight 2 branch.
12602
12603 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
12604
12605         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
12606         mscorlibs for the non-refonly case as well.
12607
12608         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
12609         in mono_assembly_load_from_full (). Fixes #378924.
12610
12611 2008-04-11  Geoff Norton  <gnorton@novell.com>
12612
12613         * icall.c: The global extern environ doesn't exist on Mac.  We
12614         need to call NSGetEnviron instead.
12615
12616 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12617
12618         verify.c: Add generic method constraint verification.
12619
12620 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12621
12622         class.c (mono_class_inflate_generic_method_full): Add a long
12623         explanation to the is_mb_open hack. Remove the FIXME.
12624
12625 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12626
12627         * verify.c (mono_method_verify): Mark all unknown opcodes
12628         as invalid. Mark jmp as unverifiable.
12629
12630 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12631
12632         * verify.c: Add code to do type constraint verification on class instances.
12633
12634         * verify.c (mono_verifier_verify_class): Use the type constraint 
12635         verification code.
12636
12637 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12638
12639         * class.c (mono_class_get_field_default_value): Don't pass cindex
12640         as hint to mono_metadata_get_constant_index. The local is not initialized
12641         and should contain garbage most of the time. This could only work
12642         with a lot of luck.
12643
12644 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
12645
12646         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
12647
12648 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
12649
12650         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
12651
12652         * class.c (mono_class_from_generic_parameter): Save the token of the
12653         generic param in MonoClass::sizes.generic_param_token.
12654
12655         * reflection.c (mono_custom_attrs_from_class): If the class type is
12656         VAR or MVAR retrieve the attributes of the generic param.
12657
12658 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12659
12660         * class.c (mono_class_init): Do class verification if the verifier
12661         is enabled.
12662
12663 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12664
12665         * verify-internal.h: Added mono_verifier_verify_class.
12666
12667         * verify.c: Added mono_verifier_verify_class. It checks for
12668         classes with explicit layout that have overlapping reference fields.
12669
12670         * pedump.c: Init the verifier state prior to verification. Fixed
12671         command line arguments.
12672
12673 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12674
12675         * Makefile.am: Added verify-internals.h, hopefully fix the build.
12676
12677 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12678
12679         * verify-internals.h: Fix a warning.
12680
12681 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
12682
12683         * verify-internals.h: New header with the verifier configuration
12684         extracted from mini.c.
12685
12686         * verify.c: Implemented the new functions exported by verify-internals.h.
12687
12688 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
12689
12690         * verify.c: Add proper verification of ckfinite.
12691
12692 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12693
12694         * verify.c (do_conversion): Improved error message to something
12695         more meanfull.
12696
12697         * verify.c (check_is_valid_type_for_field_ops): Fix to work
12698         with primitive types.
12699
12700 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12701
12702         * verify.c: Added tail prefix checking. Marked icall
12703         as unverifible.
12704
12705 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12706
12707         * verify.c: Fix the detection of branches to the middle
12708         of an instruction.
12709
12710 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
12711
12712         * verify.c: Implemented verification of volatile. and
12713         unaligned. prefix. Check if a type is valid after retrieving it.
12714
12715 2008-04-01  Dick Porter  <dick@ximian.com>
12716
12717         * process.c (process_get_fileversion): If there's no string block,
12718         set the file language to en_US.  Fixes the other new part of bug
12719         374600.
12720
12721 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
12722
12723         * class.c: New functions mono_method_can_access_field_full and
12724         mono_method_can_access_method_full. They perform type visibility
12725         and type site check.
12726
12727         * class-internal.h: Added exported functions.
12728
12729         * verify.c: Use new functions to implement proper visibility checks.
12730
12731 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
12732
12733         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
12734
12735 2008-03-28  Dick Porter  <dick@ximian.com>
12736
12737         * process.c (process_get_fileversion): Use the first language ID
12738         we see, rather than insisting on an invariant language.  Fixes bug
12739         374600.
12740
12741 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
12742
12743         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
12744         the streams to fix reading of invalid memory later.
12745
12746         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
12747         to ease debugging.
12748
12749 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12750
12751         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
12752         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
12753
12754 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
12755         * threads.h: Added MonoThreadManageCallback type and
12756         mono_thread_set_manage_callback prototype
12757         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
12758         (used to store the mono_thread_manage callback).
12759         * threads.c: Added mono_thread_set_manage_callback, and handle
12760         "MonoThread->manage_callback" in build_wait_tids.
12761
12762 2008-03-26  Dick Porter  <dick@ximian.com>
12763
12764         * process.c (process_get_fileversion): Set FileVersionInfo strings
12765         to Empty when the resource doesn't have the particular info.
12766         Fixes bug 355717.
12767
12768 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
12769
12770         * verify.c (mono_method_verify): Proper prefix validation.
12771
12772 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12773
12774         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
12775         itself in a separate argument instead of throwing them. Fixes #373448.
12776
12777         * appdomain.c: Bump corlib version.
12778
12779 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
12780
12781         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
12782
12783 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
12784
12785         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
12786         version macros.
12787
12788 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12789
12790         * generic-sharing.c, class-internals.h: Code for putting
12791         reflection types into the runtime generic context.
12792
12793 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
12794
12795         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
12796         Fixes #340662. 
12797
12798
12799 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
12800
12801         * verify.c (VerifyContext): Added instruction prefix data to the struct.
12802
12803         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
12804
12805         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
12806
12807         * verify.c (do_cast): Let the result value keep the boxed status.
12808
12809         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
12810
12811 2008-03-17  Jb Evain  <jbevain@novell.com>
12812
12813         * reflection.c: when running on a 2.0 runtime, emit
12814         unconditionally the #~ header version as 2.0, and the
12815         CLI header version as 2.5, for symmetry's sake with csc.
12816
12817 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
12818
12819         * class.c: Remove the unused cache_interface_offsets stuff.
12820
12821         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
12822         profiler.c: Fix warnings.
12823
12824 2008-03-16  Mark Probst  <mark.probst@gmail.com>
12825
12826         * generic-sharing.c, class-internals.h: Support for putting
12827         methods into the runtime generic context.
12828
12829 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
12830
12831         * class.c (mono_class_setup_fields): Ignore calls made to this function for
12832         classes which are generic instances of not-yet finished typebuilders. Fixes
12833         #351172.
12834
12835         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
12836
12837 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
12838
12839         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
12840
12841         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
12842         field, replace it with a hash table in MonoDynamicImage.
12843
12844         * reflection.c (inflate_mono_method): Access the generic definition object from
12845         image->generic_def_objects instead of imethod->reflection_info.
12846
12847         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
12848
12849         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
12850         
12851         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
12852         function in reflection.c so it is easier to keep in sync with the dynamic image
12853         creation code.
12854
12855         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
12856         mono_image_close ().
12857
12858 2008-03-15  Mark Probst  <mark.probst@gmail.com>
12859
12860         * class.c (mono_class_generic_sharing_enabled): Disable generic
12861         sharing for all architectures except AMD64 and x86 to fix build.
12862
12863 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
12864
12865         * verify.c: Use the generic definition MonoGenericContext when available.
12866         Remove code for checking generics instance compatibility in favor of
12867         mono_class_is_assignable_from.
12868
12869 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12870
12871         * marshal.c, marshal.h, metadata-internals.h, image.c,
12872         wrapper-types.h: New wrapper for invoking a shared static method
12873         without having to pass the runtime generic context argument.
12874
12875 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
12876
12877         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
12878
12879 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12880
12881         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
12882         
12883         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
12884         create a token from a FieldOnTypeBuilderInst.
12885         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
12886         (resolve_object): Ditto.
12887
12888         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
12889         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
12890
12891 2008-03-14  Martin Baulig  <martin@ximian.com>
12892
12893         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
12894
12895         * debug-mono-symfile.h
12896         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
12897         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
12898
12899 2008-03-10  Martin Baulig  <martin@ximian.com>
12900
12901         * debug-mono-symfile.h
12902         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
12903         `lexical_block_table_offset'.
12904         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
12905         `lexical_blocks'.
12906         (MonoSymbolFile): Added `version'.
12907
12908         * mono-debug.h
12909         (MonoDebugLexicalBlockEntry): Removed.
12910         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
12911         `lexical_blocks'.
12912
12913         * mono-debug.c (mono_debug_add_method): Don't compute lexical
12914         blocks here; the debugger now does this internally.
12915
12916 2008-02-27  Martin Baulig  <martin@ximian.com>
12917
12918         * object.c (mono_runtime_exec_main): Call
12919         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
12920         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
12921
12922 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
12923
12924         * verify.c (verify_type_compatibility_full): Allow native int to be converted
12925         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
12926
12927 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
12928
12929         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
12930         ldftn with a virtual method.
12931
12932 2008-03-13  Geoff Norton  <gnorton@novell.com>
12933
12934         * decimal.c:  Only include memory.h if the platform has it.
12935
12936 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
12937
12938         * assembly.c, class.c, metadata-internals.h: make sure public key
12939         tokesns are compared in a case-insensitive way. Also, all
12940         the lookups in the GAC use a lowercase public key token
12941         (gaacutil already does the lowercasing on install). Fixes
12942         bug #369541.
12943
12944 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
12945
12946         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
12947         and return value.
12948
12949 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
12950
12951         * image.c: when someone loads a mscorlib from a file, return the
12952         currently loaded mscorlib (fixes bug #369253).
12953
12954 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
12955
12956         * class.c: handle types with no parents by forcing them to have
12957         System.Object as a parent and marking them as broken (this currently
12958         allows the first part of bug #369173 to work as well, likely because
12959         we don't check for typeload exceptions everywhere yet).
12960
12961 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
12962
12963         * class.c: more complete check that types belong to corlib
12964         (fixes second part of bug #369173).
12965
12966 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
12967
12968         * generic-sharing.c:  Including glib.h for the MSVC builds to define
12969           "inline" to "__inline" before including mono-membar.h.
12970           
12971         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
12972           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
12973           MSVC builds.
12974
12975         Contributed under MIT/X11 license.
12976
12977 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
12978
12979         * verify.c (do_invoke_method): Remove return type validation.
12980
12981         * verify.c (do_ret): Do return type validation at return site instead of
12982         call site.
12983
12984 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
12985
12986         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
12987
12988         * verify.c: Some todos cleaned and improved a few error messages.
12989
12990 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
12991
12992         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
12993
12994 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12995
12996         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
12997         system types correctly.
12998
12999         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
13000         function.
13001
13002 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13003
13004         * assembly.c (build_assembly_name): Fix a warning.
13005
13006 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
13007
13008         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
13009         the called function takes an object type argument. Fixes storing or
13010         valuetypes across remoting as well as reducing memory usage.
13011         * image.c, metadata-internals.h: remove now unused ldfld_remote and
13012         stfld_remote wrapper caches.
13013
13014 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13015
13016         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
13017         is not found.
13018
13019         * reflection.c (mono_image_register_token): New helper function to save
13020         a token->object mapping.        
13021
13022         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
13023         managed code.
13024
13025         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
13026         one dimension arrays. Fixes #367670.
13027         (mono_reflection_get_type_internal): Ditto.
13028
13029 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
13030
13031         * marshal.c: mono_load_remote_field_new() always returns object.
13032         so use the proper signature (fixes bug #366445).
13033
13034 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13035         
13036         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
13037         add an 'inline_failure' flag instead.
13038
13039 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13040
13041         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
13042         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
13043         contains the location of "this", used for exception handling.
13044
13045 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13046
13047         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
13048         their size on all platforms for perf reasons.
13049
13050 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13051
13052         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
13053         object-internal.h
13054
13055         * object-internal.h: Same.
13056
13057 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13058
13059         * reflection.h: Fix the build I just broke.
13060
13061 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13062
13063         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
13064         Test if a token is valid, this remove explicit usage of 
13065         MonoDynamicImage::tokens from the verifier code.
13066
13067         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
13068
13069         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
13070         instead of direct access to MonoDynamicImage::tokens.
13071
13072 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13073
13074         * verify.c (token_bounds_check): Fix the build I just broke.
13075
13076 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13077
13078         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
13079
13080         * verify.c (verifier_load_method): Fixed the errors message.
13081
13082         * verify.c (mono_method_verify): Fixed a debug message.
13083
13084 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
13085
13086         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
13087         mono-perfcounters.h, class-internals.h: support for predefined
13088         writable counters, query of categories and counters, bugfixes.
13089
13090 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
13091
13092         * verify.c (do_refanytype): Verify the refanytype opcode.
13093
13094         * verify.c (mono_method_verify): Use do_refanytype.
13095
13096 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
13097
13098         * verify.c (do_mkrefany): Verify the mkrefany opcode.
13099
13100         * verify.c (mono_method_verify): Use do_mkrefany.
13101
13102 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
13103
13104         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
13105         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
13106         implementation.
13107
13108 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13109
13110         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
13111         the type load exception.
13112
13113 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
13114
13115         * verify.c: Added a few FIXME for method signatures
13116
13117         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
13118         of mono_method_get_signature and get vararg call working. Removed unused
13119         checks for return value.
13120
13121         * verify.c (do_refanyval): Verify the refanyval opcode.
13122
13123         * verify.c (mono_method_verify): Implemented verification of arglist and
13124         use do_refanyval.
13125
13126 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13127
13128         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
13129         vtypes to marshal.c.
13130
13131         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
13132         it works for AOT as well.
13133
13134 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
13135
13136         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
13137         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
13138         the system time is adjusted.
13139
13140 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
13141
13142         * icall.c, icall-def.h: use the new time functions (fixes the
13143         non-monotonic behaviour of TickCount).
13144
13145 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13146
13147         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
13148         it breaks the build.
13149         
13150         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
13151         cattr is not finished yet.
13152
13153 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
13154
13155         * verify.c: Proper token validation for field, method and type.
13156
13157 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
13158
13159         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
13160
13161         * loader.c (method_from_memberref): Generate type load error instead of method missing
13162         if the type is not found.
13163
13164 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13165
13166         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
13167         some of the conversions caused the generation of a marshal directive exception.
13168
13169 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
13170
13171         verify.c: Report which exception should be thrown by the JIT.
13172         Added a lot of FIXME notes.
13173
13174 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13175
13176         * generic-sharing.c: Runtime generic context slots are not
13177         instantiated on init anymore.  Instead, provide function to do the
13178         instantiating on demand.
13179
13180         * class-internals.h: Added vtable to runtime generic context.
13181         Macros for encoding direct and indirect slot offsets in one
13182         guint32.
13183
13184 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13185
13186         * object.c, generic-sharing.c: Moved some generic sharing code
13187         from object.c to generic-sharing.c.
13188
13189         * generic-sharing.c: Added support for extensible runtime generic
13190         context.
13191
13192         * metadata-internals.h: Two new hash tables in MonoImage for
13193         extensible runtime generic context support.
13194
13195         * domain.c: Unregister generic vtables upon domain unloading.
13196
13197         * image.c: Destroy new hash tables upon image unloading.
13198
13199         * metadata.c: Unregister generic subclasses upon image unloading.
13200
13201         * class-internals.h: New data structure for runtime generic
13202         context template.  New fields in the runtime generic context for
13203         extensible part.
13204
13205         * Makefile.am: Added generic-sharing.c.
13206
13207 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
13208
13209         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
13210         there is a pending loader exception, raise it.
13211
13212         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
13213         same.
13214
13215         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
13216         same.
13217
13218         Fixes #363450.
13219
13220 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13221
13222         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
13223
13224         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
13225         
13226         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
13227         ref-only requests for compatibility with MS.
13228
13229 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
13230
13231         * reflection.c (mono_custom_attrs_from_method): Don't silently
13232         return an empty list for generic method instances.
13233         (mono_custom_attrs_from_param): Likewise.
13234
13235 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
13236             Raja R Harinath  <harinath@hurrynot.org>
13237
13238         Fix #354757
13239         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
13240         * class.c (mono_class_inflate_generic_method_full): Initialize it
13241         when a fully-open method is instantiated.
13242         * metadata.c (inflated_method_equal, inflated_method_hash): Update
13243         to new field.
13244         * reflection.c (inflate_mono_method): Don't create a temporary context.
13245
13246 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
13247
13248         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
13249         Compute correct value, to prepare for imethod->reflection_info going away.
13250
13251 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13252
13253         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
13254
13255 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
13256
13257         * verify.c: Implement skip visibility flag.
13258
13259 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
13260
13261         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
13262         which contains an extra field to tell the kind of exception that should be thrown.
13263
13264         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
13265
13266 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
13267
13268         * loader.c (mono_method_get_param_names): Initialize 'klass' after
13269         'method' is updated.
13270
13271 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
13272
13273         * class.c (mono_class_layout_fields): Set class->min_align for classes using
13274         explicit layout as well. Fixes #360375.
13275
13276 2008-02-11  Geoff Norton  <gnorton@novell.com>
13277
13278         * loader.c: Guard and dereference against inflated generic methods
13279
13280 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
13281
13282         * class.c: Include Retargetable spec in assembly name.
13283         * assembly.c: Always include PublicKeyToken spec in assembly name
13284         (with value "null" if assembly is not signed), and include
13285         Retargetable spec.
13286         * icall-def.h: Added icall for Assembly.get_fullname.
13287         * icall.c: Added icall returning the fullname of an assembly.
13288
13289 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13290
13291         * class.c (mono_class_setup_vtable_general): Add a missing call to
13292         mono_class_setup_methods () which is needed in the AOT case.
13293
13294 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
13295
13296         * verify.c (mono_type_get_stack_name): Added. Return the name for the
13297         stack type of the given MonoType.
13298
13299         * verify.c (verify_type_compatibility_full): Handle the void type.
13300
13301         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
13302         way stack merging works.
13303
13304         * verify.c (store_local): Improved verification message.
13305
13306         * verify.c (do_branch_op): If the merging is invalid, the method
13307         is unverifiable and not invalid. Improved error message.
13308
13309         * verify.c (merge_stacks): Properly merge a boxed valuetype and
13310         a reference type diferent than System.Object. Improved error
13311         message.
13312
13313 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
13314
13315         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
13316
13317         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
13318         type of an enum even if the argument is byref.
13319
13320         * verify.c: Replace all explicit uses of enumtype and enum_basetype
13321         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
13322
13323         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
13324
13325         *verify.c (verify_type_compatibility_full): Make enum types
13326         compatible with their base types.
13327
13328         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
13329         types are compatible for the special case of a boxed valuetype and
13330         System.Object.
13331
13332         * verify.c (verify_stack_type_compatibility): The function
13333         is_compatible_boxed_valuetype was extracted from here.
13334
13335         * verify.c (push_arg): Only set ctx->has_this_store if the method
13336         is not static.
13337
13338         * verify.c (do_ldelem): Fixed a typo in an error message and added
13339         strict check for mixing int32 and native int as the array type
13340         and ldelem type.
13341
13342         * verify.c (merge_stacks): Consider boxed valuetypes in the
13343         compatibility checks.
13344
13345 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
13346         * profiler.h: (MonoGCEvent): Added start-stop the world events.
13347
13348 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
13349         *class.c: use_new_interface_vtable_code: renamed the env var to have
13350         a "MONO_" prefix, and fix the logic to enable it by default.
13351
13352 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
13353         *class.c:
13354         mono_class_setup_vtable_general: rewrote the way in which interface
13355         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
13356         makes the code more maintainable.
13357         For now the old code is still there, and can be activated setting
13358         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
13359
13360 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
13361
13362         * verify.c: guarded some debug functions around and #ifdef.
13363
13364         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
13365
13366 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13367
13368         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
13369         changes for now since they seem to break too many things.
13370
13371 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13372
13373         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
13374         mono_marshal_find_nonzero_bit_offset): Added macro and function
13375         for finding the byte- and bit-offset of a bitfield within a
13376         struct.
13377
13378 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13379
13380         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
13381         (mono_marshal_get_struct_to_ptr): Ditto.
13382
13383         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
13384         cctor_signature.
13385
13386 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13387
13388         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
13389         between methods for non-corlib types.
13390
13391 2008-02-02  Geoff Norton  <gnorton@novell.com>
13392
13393         * loader.c (mono_method_get_param_names): Populate the parameter name for 
13394         generic parameters as well. (Fixes #342536)
13395
13396 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
13397
13398         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
13399
13400         * verify.c (do_invoke_method): Fix for calling with byref structs.
13401
13402         * verify.c (do_cast): push a boxed value type based on the type token and not
13403         the type of stack.
13404
13405 2008-01-31  William Holmes  <billholmes54@gmail.com>
13406
13407         * process.c (process_module_string_read): Check the size returned form 
13408           VerQueryValue to avoid out of memory exception. 
13409
13410 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13411
13412         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
13413         Handle properly modules which are not in the moduleref table. Fixes
13414         #356938.
13415
13416 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13417
13418         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
13419         the dynamic case which is now in managed code.
13420         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
13421
13422         * marshal.c (mono_string_to_bstr): Fix a warning.
13423         (init_com_provider_ms): Ditto.
13424
13425         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
13426
13427         * exception.c (mono_get_exception_out_of_memory): New helper function.
13428
13429 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
13430
13431         * marshal.c: Add support for BSTR marshalling
13432         using other COM systems.
13433
13434         Code is contributed under MIT/X11 license.
13435
13436 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13437
13438         * object.c (mono_runtime_invoke_array): reverted previous
13439         commit as it breaks the build.
13440
13441 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13442
13443         * object.c (mono_runtime_invoke_array): Verify arguments for
13444         invalid types. Fixes #348522.
13445
13446 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13447
13448         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
13449         non-final virtual calls using call. 
13450
13451         * verify.c (do_invoke): fixed some TODOs.
13452
13453         * verify.c (push_arg): set has_this_store for "ldarga 0".
13454
13455 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13456
13457         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
13458         which belong to an inflated class. Fixes #356531.
13459
13460 2008-01-26  Robert Jordan  <robertj@gmx.net>
13461
13462         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
13463         which resort to FindFirstFile when a certain error condition
13464         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
13465         Code is contributed under MIT/X11 license.
13466
13467 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
13468
13469         * marshal.c (emit_marshal_string): Fix out string marshalling
13470         to use specified encoding. Fixes #323900.
13471
13472         Code is contributed under MIT/X11 license.
13473
13474 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
13475
13476         * class.c (mono_class_inflate_generic_method_full): Don't modify
13477         iresult->context after cache check.
13478
13479 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
13480
13481         * class.c (mono_class_inflate_generic_method_full): Change the
13482         struct assignments to memcpy for better visibility and add some comments.
13483
13484 2008-01-23  Dick Porter  <dick@ximian.com>
13485
13486         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
13487         procedure, and make it work on windows.
13488
13489 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
13490
13491         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
13492         a MonoReflectionTypeBuilder since it is always of that type.
13493
13494         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
13495
13496         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
13497
13498         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
13499         
13500         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
13501
13502         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
13503
13504         * reflection.c (mono_reflection_create_runtime_class): Remove already created
13505         instantiations from the type cache.
13506
13507 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13508
13509         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
13510
13511         * verify.c (do_unbox_value): push a controled mutability managed pointer.
13512
13513 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13514
13515         * verify.c (do_ldstr): added, verifies if the #US token is valid.
13516
13517         * verify.c (mono_method_verify): removed old TODO
13518
13519 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13520
13521         * verify.c (do_newobj): add visibility check.
13522
13523 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13524
13525         * verify.c (do_load_function_ptr): add visibility check.
13526
13527 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
13528         *class.c:
13529         mono_generic_class_get_class: hook profiler events.
13530         mono_field_get_offset: added to support heap-shot in the new profiler.
13531         *class.h: exported mono_field_get_offset.
13532         * reflection.c:
13533         mono_reflection_setup_internal_class: hook profiler events.
13534
13535 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13536
13537         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
13538         argument here too and use it to avoid checking for pending exceptions if 
13539         possible.
13540
13541 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
13542
13543         * assembly.c (build_assembly_name): add arg for passing the assembly
13544         flags. Do not consider a PublicKey with value "null" valid.
13545         (mono_assembly_name_parse_full): added boolean argument that will be
13546         set if the assembly name contains a PublicKeyToken spec. Added support
13547         for the Retargetable spec for which only Yes or No are allowed as valid
13548         value. Consider assembly name invalid if Retargetable spec is set, but
13549         either version, culture or public key (token) are not specified.
13550         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
13551         with implementation in assembly.c.
13552         * icall.c (fill_reflection_assembly_name): also copy assembly flags
13553         from MonoAssemblyName.
13554         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
13555         introduced argument for mono_assembly_name_parse_full to know if the
13556         assembly name has a PublicKeyToken spec, and if it has instruct
13557         fill_reflection_assembly_name to use default value for keyToken (if
13558         PublicKeyToken is null).
13559
13560 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
13561
13562         * verify.c (mono_method_verify): fixed ovf ops with
13563         float values. They are unverifiable now.
13564
13565 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
13566
13567         * class.c (set_failure_from_loader_error): add BadImageException to the
13568         list of exceptions that can cause a type to fail to load.
13569
13570         * class.c (mono_class_get_exception_for_failure): same.
13571
13572 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
13573
13574         * verify.c (in_any_exception_block): added, check if offset
13575         is part of any exception handling clause.
13576
13577         * verify.c (get_stack_type): added VAR and MVAR types.
13578
13579         * verify.c (do_stobj): better error messages.
13580
13581         * verify.c (do_cpobj): added, check cpobj.
13582
13583         * verify.c (do_initobj): added, check initobj.
13584
13585         * verify.c (do_sizeof): added, check sizeof.
13586
13587         * verify.c (do_localloc): added, check localloc.
13588
13589         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
13590
13591 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13592
13593         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
13594         save_lmf/restore_lmf opcodes.
13595
13596         * threads.c (mono_threads_install_notify_pending_exc): New function to
13597         install a callback notifying the JIT there is a pending exception on a thread.
13598         (mono_thread_request_interruption): Call the new callback.
13599         (mono_thread_get_and_clear_pending_exception): New function to return the
13600         exception pending on a thread.
13601
13602         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
13603         to turn off checking for pending exceptions.
13604         (mono_marshal_get_native_wrapper): Ditto.
13605
13606 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13607
13608         * threads-types.h: Get rid of the unnecessary extern declarations.
13609
13610 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
13611
13612         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
13613         return field from parent class if not private.
13614         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
13615         returns fields from parent class if they are not private.
13616         (method_nonpublic): added function to determine if a given method
13617         should be considered non-public. Returns false for private methods
13618         on parent class, and internal methods from parent on the 1.0 profile.
13619         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
13620         use method_nonpublic function to determine whether method should be
13621         returned.
13622         (property_accessor_public): use newly introduced method_nonpublic
13623         function to determine whether accessor is non-public. 
13624         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
13625         event from parent class if not private. Only return static event if
13626         Static flag is set, and only return static event from parent class if
13627         FlattenHierarchy flag is set.
13628         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
13629         include non-private events from parent class.
13630
13631 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13632
13633         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
13634         warning.
13635
13636 2008-01-16  Wade Berrier <wberrier@novell.com>
13637
13638         * security.c: Add assembly.h header to appease some warnings
13639
13640 2008-01-16  Dick Porter  <dick@ximian.com>
13641
13642         * process.c (process_module_string_read): Remove trailing null
13643         when saving string.
13644
13645 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13646
13647         * class-internals.h: A new data structure describing the layout of
13648         a runtime generic context (MonoRuntimeGenericContextTemplate).
13649
13650         * metadata-internals.h: Added a hash table to MonoDomain that maps
13651         from open generic classes to their runtime generic context
13652         templates.
13653
13654         * object.c: Building of the runtime generic context, including
13655         proper handling of generic type arguments of superclasses.
13656         Building of the runtime generic context according to the template.
13657
13658 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13659
13660         * class.c (mono_class_setup_fields): Set field.count for generic instances.
13661         Fixes #350856.
13662
13663         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
13664         mono_portability_find_file (). Fixes #325466.
13665         (mono_image_get_public_key): Fix a warning.
13666
13667 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13668
13669         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
13670         Fixes #353550.
13671         (mono_class_from_name_case): Ditto.
13672
13673 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
13674
13675         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
13676           common storage for the tables used in the System/NumberFormatter class.
13677
13678 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
13679
13680         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
13681
13682 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
13683
13684         * verify.c (get_boxable_mono_type): check if the token is valid.
13685
13686         * verify.c (set_stack_value): changed to add an error if an
13687         invalid type is set on stack. Changed all callers due to signature change.
13688
13689         * verify.c (do_stobj): implement stobj validation.
13690
13691 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13692
13693         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
13694         set container->is_method, it was set earlier.
13695
13696         * metadata.c (type_in_image): Handle MVARs which belong to not finished
13697         generic methods.
13698
13699         * reflection.c (mono_reflection_initialize_generic_parameter): Set
13700         is_method of the generic container to TRUE for methods.
13701
13702 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13703
13704         * metadata.c (type_in_image): Handle type parameters properly.
13705
13706         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
13707         memory ownership of this structure.
13708
13709 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
13710
13711         * verify.c (get_boxable_mono_type): make typedref types been just
13712         unverifiable. check for void type.
13713
13714         * verify.c (do_unbox_any): added, verify opcode unbox.any.
13715
13716         * verify.c (do_load_function_ptr): accept method spec tokens.
13717
13718 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13719
13720         * marshal.c (mono_class_native_size): Always set *align even if this is called
13721         recursively.
13722
13723 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
13724
13725         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
13726         out-of-date.
13727
13728 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
13729
13730         * verify.c: removed some old unused tables. A huge bunch of small fixes
13731         to things found while testing the verifier with mono basic.
13732
13733         * verify.c (dump_stack_value): dump null literal flag to.
13734
13735         * verify.c (verify_type_compatibility_full): fix comparison
13736         for types that have a generic super type.
13737
13738         * verify.c (verify_stack_type_compatibility): fix compatibility
13739         between null literals and reference types. fix compatibility between
13740         boxed valuetypes and object. fix corner case test for enums.
13741
13742         * verify.c (do_cmp_op): proper verification of cgt.un in case
13743         of reference types.
13744
13745         * verify.c (do_invoke_method): fix error message.
13746
13747         * verify.c (do_store_indirect
13748
13749         * verify.c (check_is_valid_type_for_field_ops): proper verification
13750         of managed pointers to valuetypes and boxed valuetypes. proper verification
13751         of null literals.
13752
13753         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
13754         allow token to be a reference type.
13755
13756         * verify.c (do_cast): proper handling of boxes valuetypes.
13757
13758         * verify.c (do_stelem): proper handling of storing a boxed valuetype
13759         in object[].
13760
13761         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
13762         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
13763         fixed the decoding of unbox_any
13764
13765 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13766
13767         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
13768
13769 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
13770
13771         * verify.c (do_newobj): do delegate verification.
13772
13773         * verify.c (verify_delegate_compatibility): perform delegate
13774         verification.
13775
13776         * verify.c (verify_ldftn_delegate): perform tests related to
13777         ldftn delegates.
13778
13779         * verify.c (mono_delegate_signature_equal): perform the
13780         slightly diferent signature comparison required by delegates.
13781
13782         * metadata.c (mono_metadata_type_equal_full): added and exported
13783         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
13784         allows signature only comparison.
13785
13786         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
13787         as MONO_INTERNAL.
13788
13789 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
13790
13791         * verify.c: added a bunch of stack_slot_* functions to
13792         make access to stack slot type easier. This is required to
13793         allow optional flags, like null literal, boxed value and
13794         this pointer.
13795         All access paths to IlStackDesc::stype have been changed 
13796         to use these new funcions.
13797         Removed a bunch of unused functions and cleared all warnings.
13798         This patch introduces the usage of the this pointer and 
13799         boxed value flags.
13800
13801 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
13802
13803         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
13804
13805 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13806
13807         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
13808         match managed version.
13809
13810         * appdomain.c: Bump corlib version.
13811         
13812         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
13813         argument.
13814
13815 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
13816
13817         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
13818         Set public key token to zero-length byte array if assembly is not
13819         strongnamed.
13820
13821 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13822
13823         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
13824         writing a vtype array elem.
13825
13826 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
13827
13828         * assembly.c (build_assembly_name): return FALSE if length of token is
13829         not 16 (if not "null").
13830         (mono_assembly_name_parse_full): return FALSE if value of version,
13831         culture, token or key is 0.
13832         * icall.c (fill_reflection_assembly_name): add boolean arguments to
13833         specify whether public key and public key token must be set to default
13834         value (zero-length byte array) if not available. Set versioncompat to
13835         SameMachine. If public key is available or the default is set, then
13836         set PublicKey flag.
13837         (ves_icall_System_Reflection_Assembly_FillName): if no public key
13838         is available, use empty byte array as default value. On the 2.0
13839         profile, use default value for public key token if not set.
13840         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
13841         profile, use default value for public key if not set. On the 2.0
13842         profile, use default value for public key token if not set.
13843         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
13844         default values for public key and public key token.
13845
13846 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13847
13848         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
13849         field to keep it in synch with the managed object.
13850
13851         * marshal.c (emit_marshal_object): Add support for byref marshalling of
13852         delegates. Fixes #351520.
13853
13854         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
13855         contains defined memory.
13856         
13857         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
13858
13859         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
13860         
13861         * sgen-gc.c (check_consistency): New helper function to do a consistency check
13862         of the GC data structures.
13863
13864         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
13865
13866         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
13867         
13868         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
13869         barrier.
13870         (mono_array_clone_in_domain): Ditto.
13871         (mono_array_clone_in_domain): Ditto.
13872
13873         * threads.c (start_wrapper): Register the thread start argument as a GC root.
13874         (cache_culture): Use a write barrier.
13875
13876         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
13877         (ves_icall_get_property_info): Ditto.
13878
13879         * object.h (MONO_STRUCT_SETREF): New macro.
13880
13881         * class-internals.h (MonoStats): Add some GC statistics.
13882
13883         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
13884
13885 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
13886
13887         * exception.c (mono_exception_from_name_two_strings):
13888         Break from loop after method is found.
13889
13890 2008-01-04  Dick Porter  <dick@ximian.com>
13891
13892         * process.c (process_module_string_read): Rename variable to
13893         reflect correct usage, after fixing bug 345972.
13894
13895 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
13896
13897         * verify.c (mono_type_create_fnptr_from_mono_method): 
13898         created a MonoType function pointer instance to be used during
13899         verification. The verifier releases this memory at end.
13900
13901         * verify.c (mono_method_is_constructor): extracted repeated
13902         checks for constructor into a single class.
13903
13904         * verify.c (do_push_field): use new extracted method
13905         for constructor check.
13906
13907         * verify.c (do_newobj): same.
13908
13909         * verify.c (do_ldftn): renamed to do_load_function_ptr
13910         and make it verify ldvirtftn too.
13911
13912         * verify.c (mono_method_verify: proper verification
13913         of ldvirtftn. release created MonoMethod instances.
13914
13915 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
13916
13917         * verify.c (token_bounds_check): added.
13918
13919         * verify.c (do_ldftn): added.
13920
13921         * verify.c (mono_method_verify): proper verificartion of ldftn.
13922
13923 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
13924
13925         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
13926         than the table row count. It's the resposibility of the caller to
13927         make the bounds check and raise the correct error.
13928
13929         * metadata.c (mono_metadata_decode_row_col): Same.
13930
13931         * loader.c (mono_get_method_from_token): perform bounds check
13932         on token for methoddef table.
13933
13934 2007-12-29  Miguel de Icaza  <miguel@novell.com>
13935
13936         * icall.c
13937         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
13938         assert into a negative result, the managed code already coped with
13939         that.
13940
13941         Some folks on Windows reported this error. 
13942
13943 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
13944
13945         * appdomain.c: Bump corlib version.
13946         * icall.c:
13947         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
13948         CultureInfo.CreateCulture to create CultureInfo for name.
13949         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
13950         create CultureInfo for name. Fixes bug #347174.
13951
13952 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
13953
13954         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
13955         flags.
13956
13957         * verify.c (is_valid_branch_instruction): allow branching to the
13958         first instruction of the protected block.
13959
13960         * verify.c (is_valid_cmp_branch_instruction): same.
13961
13962         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
13963         avoid double initialization.
13964
13965         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
13966         detect which cases the eval stack should just be copied.
13967
13968         * verify.c (mono_method_verify): check if the eval stack
13969         is empty when entering a protected block.
13970
13971 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
13972
13973         * verify.c: added is_clause_in_range, is_clause_inside_range,
13974         is_clause_nested and verify_clause_relationship. They perform
13975         the verifications stated in P1 12.4.2.7.
13976
13977         * verify.c (mono_method_verify): remove some unused variables,
13978         add the new exception clause checks, add instruction border
13979         checks for protected block start/end, improved some error 
13980         messages and fixed a bug in the way invalid instruction access
13981         is detected.
13982
13983 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
13984
13985         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
13986         from GC 7.0 if available.
13987
13988         * object.c: Remove an unused define.
13989         
13990         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
13991
13992         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
13993
13994         * null-gc.c (mono_gc_make_descr_for_array): Implement.
13995
13996         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
13997
13998         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
13999         to take the same arguments as the other make_descr functions.
14000
14001         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
14002
14003         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
14004         directly.
14005
14006         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
14007         mini.c.
14008
14009         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
14010         call to boehm-gc.c.
14011
14012         * boehm-gc.c (mono_gc_register_root): Fix a warning.
14013
14014         * null-gc.c (mono_gc_register_root): Fix a warning.
14015
14016         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
14017
14018         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
14019         (mono_gc_base_init): Call GC_init ().
14020
14021         * null-gc.c: Define mono_gc_register_root () as a no-op.
14022
14023         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
14024
14025 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
14026
14027         * verify.c: add prototype for merge_stacks at top
14028
14029         * verify.c (do_switch): added.
14030
14031         * verify.c (merge_stacks): on some cases the stack merging
14032         was not happening properly. Unequal stack sizes at merge
14033         points should be invalid.
14034
14035         * verify.c (mono_method_verify): added more debug info on stack state.
14036         verify switch properly.
14037
14038 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
14039
14040         * method-builder.h: New file, moved the mono_mb_ declarations here from 
14041         marshal.h.
14042
14043         * boehm-gc.c marshal.c: Include method-builder.h.
14044
14045         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
14046
14047         * marshal.c: Remove some code which is now in method-builder.c.
14048
14049 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
14050
14051         * method-builder.c: New file, extraction of the method builder functionality 
14052         from marshal.c.
14053
14054         * marshal.c: Move the mb functions into method-builder.c.
14055
14056         * marshal.h marshal.c: Export some mono_mb_... functions.
14057
14058         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
14059
14060         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
14061         the caller.
14062
14063         * class.c (mono_class_get_full): Check the token type in the dynamic case.
14064
14065         * loader.c (mono_field_from_token): Ditto.      
14066
14067         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
14068         type as well.
14069         
14070         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
14071         Fixes #342565.
14072
14073         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
14074         a helper function for setting it.
14075
14076         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
14077
14078         
14079         * assembly.c: Significally simplify code now that referenced assemblies are 
14080         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
14081
14082         * threads.h: Don't include  the internal threads-types.h header file. Fixes
14083         #349952.
14084
14085 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
14086
14087         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
14088         instructions that were target of branches or are at protected block boundaries.
14089
14090         * verify.c (in_same_block): handle filter clauses.
14091
14092         * verify.c (is_valid_branch_instruction): added. checks the target of
14093         instructions br or brtrue/false.
14094
14095         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
14096         binary branch instructions such as beq and bge.
14097
14098         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
14099         and made it pin the instruction as been part of the exception block.
14100
14101         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
14102         of in_same_block.
14103
14104         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
14105         of in_same_block.
14106
14107         * verify.c (do_ret): ret from a protected block is unverifiable and
14108         not invalid.
14109
14110         * verify.c (do_static_branch): verify br and br.s instructions.
14111
14112         * verify.c (merge_stacks): add extra param to support detection
14113         of branches in the middle of instructions.
14114         
14115         * verify.c (mono_method_verify): verify branches and exception blocks
14116         that target the middle of instructions. Proper verification of br and br.s.
14117
14118 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
14119
14120         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
14121         skip_visibility field.
14122         (reflection_methodbuilder_from_dynamic_method): Ditto.
14123
14124         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
14125         registrations. Fixes #348193.
14126
14127         * threads.h: Move the internal mono_thread_get_pending_exception () to
14128         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
14129
14130 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14131
14132         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
14133         icall registration. Fixes #348193.
14134
14135         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
14136         for corlib classes into object. Fixes #349621.
14137
14138 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
14139
14140         * icall.c (property_accessor_nonpublic): new function to determine
14141         whether an accessor allows a property to be considered non-public.
14142         Returns false for private accessor(s) from parent class, and internal
14143         accessor(s) from parent on 2.0 profile (and higher).
14144         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
14145         to determine whether property should be included if NonPublic flag
14146         is set. Fixes bug #349078.
14147
14148 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
14149
14150         * verify.c (init_stack_with_value): added.
14151
14152         * verify.c (mono_method_verify): extracted common
14153         code for exception initialization into init_stack_with_value.
14154
14155         * verify.c (mono_method_verify): initialize the exception
14156         for handler clauses as well.
14157
14158         * verify.c (mono_method_verify): fix the exception clause
14159         ordering rules, it should use handler end offset and not
14160         start offset.
14161
14162 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
14163
14164         * rawbuffer.c: remove useless warning.
14165
14166 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
14167
14168         * threads.h, threads-types.h: move functions to the correct header
14169         (fixes bug#349952).
14170
14171 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14172
14173         * verify.c (mono_method_verify): proper verification
14174         of exception handling clauses ranges and fallthru in
14175         and out of protected blocks.
14176
14177 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14178
14179         * verify.c (mono_method_verify): fixed compilation issue.
14180
14181 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14182
14183         * verify.c (mono_method_verify): a printf slipped in, changed
14184         to use verifier debug macro.
14185
14186 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
14187
14188         * verify.c (is_correct_leave): check for filter clauses.
14189
14190         * verify.c (do_filter): added.
14191
14192         * verify.c (mono_method_verify): property verification of leave.
14193
14194
14195 2007-12-18  Mark Probst  <mark.probst@gmail.com>
14196
14197         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
14198         Win32 build, until we figure out how to do the proper thing on
14199         Win32.
14200
14201 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
14202
14203         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
14204         by the previous patch.
14205         
14206         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
14207         the assembly resolve handler for refonly assemblies.
14208
14209 2007-12-17  Mark Probst  <mark.probst@gmail.com>
14210
14211         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
14212         Make sure only one thread is allowed to commence shutdown, and
14213         don't allow new threads to be started once shutdown is in
14214         progress.
14215
14216 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
14217
14218         * verify.c (is_correct_endfilter): added.
14219
14220         * verify.c (is_unverifiable_endfilter): added.
14221
14222         * verify.c (do_endfilter): added.
14223
14224         * verify.c (mono_method_verify): property verification of endfilter
14225         and fixed a corner case or endfinally.
14226
14227 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
14228
14229         * verify.h: new flags to support fail fast of unverifiable code and
14230         do non-strict verification. Non-strict verification is required to
14231         have MS runtime compatibility. There are a huge amount of unverifiable
14232         code that it accepts as verifiable. The strict mode verifies the code
14233         as the specs says.
14234         Non-strict mode will be required in cases where code needs to be
14235         accepted as verifiable but fails under strict mode.
14236
14237         * pedump.c: added support to fail fast and non-strict verification.
14238
14239         * verify.c: added support for both fail fast and non-strict verification.
14240
14241 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
14242
14243         * verify.c (is_correct_endfinally): added.
14244
14245         * verify.c (mono_method_verify): property verification of endfinally.
14246
14247 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14248
14249         * verify.c (in_any_block): check for filter clauses.
14250
14251         * verify.c (is_correct_rethrow): added.
14252
14253         * verify.c (mono_method_verify): property verification of rethrow.
14254
14255         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
14256
14257 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14258
14259         * verify.c (do_throw): added.
14260
14261         * verify.c (mono_method_verify): property verification of throw
14262
14263 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
14264
14265         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
14266         assemblies. Fixes #346425.
14267
14268 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
14269
14270         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
14271         FieldBuilders.
14272
14273         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
14274
14275         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
14276         prevent asserts when this is called with a token which might not be valid.
14277
14278         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
14279         lookup_dynamic_token_class with valid_token == FALSE.
14280
14281         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
14282
14283         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
14284
14285         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
14286         
14287 2007-12-10  Mark Probst  <mark.probst@gmail.com>
14288
14289         * gc.c: Don't delay threadpool thread finalization unless Mono is
14290         shutting down.
14291
14292 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14293
14294         * threads.c: turn an assert into a non-fatal warning.
14295
14296 2007-12-09  Robert Jordan  <robertj@gmx.net>
14297
14298         * icall.c (GetVirtualMethod): Add missing argument validation.
14299
14300 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14301
14302         * verify.c (do_cast): added.
14303
14304         * verify.c (mono_method_verify): property verification of castclass and isinst.
14305
14306
14307 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14308
14309         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
14310
14311         * verify.c (do_stelem): added.
14312
14313         * verify.c (mono_method_verify): property verification of stelem.X.
14314
14315 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14316
14317         * class.c, class-internals.h: Introduce an environment variable
14318         (MONO_GENERIC_SHARING) through which the extent of generic code
14319         sharing can be controlled (share all classes, share only corlib
14320         classes, or share nothing).
14321
14322         * object.c: Only create runtime generic context for classes for
14323         which sharing is enabled.
14324
14325 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14326
14327         * verify.c (do_ldelem): refactor it to work with ldelem.any.
14328
14329         * verify.c (mono_method_verify): property verification of ldelem.any.
14330
14331 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14332
14333         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
14334         added ldelem.X opcodes.
14335
14336         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
14337
14338         * verify.c: proper verification of ldelem.X 
14339
14340 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14341
14342         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
14343
14344 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
14345
14346         * verify.c (mono_method_verify): null literal requires special handling,
14347         the value pushed on stack need to be flagged as so.
14348
14349         * verify.c (do_ldelema): Verify ldelema properly.
14350
14351 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
14352
14353         * verify.c: Verify ldlen properly.
14354
14355 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
14356
14357         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
14358         to the target object's type. Fixes #346160.
14359
14360 2007-12-05  Dick Porter  <dick@ximian.com>
14361
14362         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
14363         Solaris needs the same workaround as BSD-derived systems.  Fixes
14364         bug 323524, patch by Burkhard Linke
14365         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
14366
14367 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
14368
14369         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
14370         handle to use when error dialog is shown; otherwise, update mask
14371         to show no error dialog when an error occurs.
14372
14373 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14374
14375         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
14376
14377         * class.c (mono_class_get_field_default_value): New helper function to initialize
14378         field->def_type and field->data.
14379
14380 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14381
14382         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
14383         the general one.
14384
14385         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
14386
14387         * marshal.c: Avoid depending on delegate->method_info being set.
14388
14389         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
14390         
14391         * object.c (mono_delegate_ctor): Set delegate->method.
14392
14393         * object-internals.h (struct _MonoDelegate): Add 'method' field.
14394
14395         * appdomain.c: Bump corlib version.
14396
14397 2007-11-27  Raja R Harinath  <harinath@gmail.com>
14398
14399         * metadata.c (mono_generic_inst_equal_full): Short-circuit
14400         equality check if we're comparing canonicalized MonoGenericInsts.
14401
14402 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14403
14404         * class.c (generic_array_methods): Call mono_class_setup_methods () before
14405         accessing class->methods.
14406
14407 2007-11-22  Dick Porter  <dick@ximian.com>
14408
14409         * threads.c: Ensure that the synch_cs is set before trying to use
14410         it.
14411
14412 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
14413
14414         * profiler.c: r89126 broke the statistial profiler, unbreak.
14415
14416 2007-11-22  Martin Baulig  <martin@ximian.com>
14417
14418         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
14419
14420         * mono-debug.c
14421         (mono_debug_debugger_version): Bump to 3.
14422         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
14423         -> mono_debugger_class_initialized().
14424
14425         * mono-debug-debugger.c
14426         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
14427
14428         * class.c
14429         (mono_debugger_start_class_init_func): Removed.
14430         (mono_debugger_class_loaded_methods_func): Added.
14431         (mono_class_setup_methods): Call it here.
14432
14433 2007-11-22  Martin Baulig  <martin@ximian.com>
14434
14435         * mono-debug.c
14436         (mono_debug_add_delegate_trampoline): New public method.
14437         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
14438
14439         * mono-debug.h
14440         (MonoSymbolTable): Added `global_data_table'.
14441         (MonoDebuggerTypeKind): Removed.
14442
14443 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
14444
14445         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
14446         these methods.
14447
14448         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
14449         
14450 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
14451
14452         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
14453
14454 2007-11-20  Martin Baulig  <martin@ximian.com>
14455
14456         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
14457
14458         * mono-debug-debugger.c
14459         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
14460         (mono_debugger_remove_breakpoint): Likewise.
14461         (mono_debugger_check_breakpoints): Likewise.
14462         (mono_debugger_register_class_init_callback): New public method.
14463         (mono_debugger_remove_class_init_callback): Likewise.
14464         (mono_debugger_add_type): Likewise.
14465
14466         * mono-debug-debugger.h
14467         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
14468
14469 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
14470
14471         * class.c: more interface implementations needed for the
14472         array enumerator (fixes bug #341112).
14473
14474 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
14475
14476         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
14477         fix ParamName of ArgumentNullExceptions.
14478
14479 2007-11-17  Miguel de Icaza  <miguel@novell.com>
14480
14481         * reflection.c (mono_reflection_encode_sighelper): Generate the
14482         modopts and modreqs.   I have a useless test that crashes monodis,
14483         but that shows the code working.
14484
14485 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14486
14487         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
14488         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
14489
14490 2007-11-15  Dick Porter  <dick@ximian.com>
14491
14492         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
14493         When joining a thread, it's the thread that's calling Join that
14494         gets WaitSleepJoin state not the target.  Fixes the standalone
14495         test case in bug 334740, and hopefully the whole bug too.
14496
14497 2007-11-15  Dick Porter  <dick@ximian.com>
14498
14499         * process.c: Read file version info from the files pointed at by
14500         process modules, not the current process.  Fixes bug 315969.
14501
14502         Use windows typedef names in some places to fix warnings on the
14503         windows build.
14504
14505 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14506
14507         * image.c, metadata-internals.h: Added a generic_class_cache hash
14508         to MonoImage for looking up generic classes when sharing generics.
14509
14510 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14511
14512         * sgen-gc.c: warning cleanups.
14513
14514 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
14515
14516         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
14517         inherited properties.
14518
14519 2007-11-14  Mark Probst  <mark.probst@gmail.com>
14520
14521         * object.c, class-internals.h: Added more information to the
14522         runtime generic context.
14523
14524 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14525
14526         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
14527         instead of just the target method. Generalize the abstract method handling to
14528         handle any non-static method.
14529
14530         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
14531         mono_marshal_get_delegate_invoke () signature change.
14532
14533 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14534
14535         * class.c, class-internals.h: Made
14536         mono_type_get_basic_type_from_generic () public.  Fixed member
14537         access check for shared generics.
14538
14539         * loader.c: Don't insert field into field cache if it's part of a
14540         non-inflated generic class.
14541
14542         * domain.c, domain-internals.h: The generic sharing context is now
14543         part of the jit info data structure.  Added two accessor
14544         functions.
14545
14546 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14547
14548         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
14549         the array Get/Set/Address methods, since the JIT inlines them.
14550
14551         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
14552
14553         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
14554         (mono_image_init): Initialize runtime_invoke_direct_cache.      
14555
14556         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
14557         mono_marshal_get_delegate_invoke signature change.
14558
14559         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
14560         an additional argument. Add support for invoking abstract methods.
14561
14562         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
14563
14564         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
14565
14566 2007-11-09  Mark Probst  <mark.probst@gmail.com>
14567
14568         * class.c: Do field layout for open generic classes as well.
14569
14570 2007-11-09  Mark Probst  <mark.probst@gmail.com>
14571
14572         * gc.c, gc-internal.h: Don't finalize threadpool threads with
14573         other objects, because the threadpool is still around.  Put them
14574         in a list instead and after finalizing all other objects in the
14575         root domain shut down the thread pool and then finalize the
14576         threads.  Fixes bug #337383.
14577
14578         * threads.c, thread-types.h: New mono_thread_create_internal()
14579         function for marking a thread with the threadpool flag before it
14580         started.  Set synch_cs to NULL after freeing it.
14581
14582         * threadpool.c: Mark threadpool threads before they start.
14583
14584 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14585
14586         * reflection.h, reflection.c: don't export random functions
14587         and lazy load dbnull and missing objects.
14588
14589 2007-11-07  Jonathan Chambers <joncham@gmail.com>
14590
14591         * class.c: Initialize COM types if COM interfaces
14592         are present (not just COM classes).
14593         
14594         Code is contributed under MIT/X11 license.
14595
14596 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14597         * reflection.c:
14598         create_dynamic_mono_image: hook module profiler events (dynamic case).
14599         mono_image_basic_init: hook assembly profiler events (dynamic case).
14600
14601 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14602         * profiler.c:
14603         simple_appdomain_unload: completely terminate the profiler
14604         instead of only processing the statistical samples.
14605         simple_shutdown: make sure this is really called exactly once,
14606         even in multithreaded applications, and always listen to
14607         appdomain events.
14608         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
14609         here, the "[un]load" functions will do it.
14610         Fixes bugs #333791 and #325261.
14611
14612 2007-11-07  Geoff Norton  <gnorton@novell.com>
14613
14614         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
14615         rather than depend on __APPLE__.
14616
14617 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14618
14619         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
14620
14621 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
14622
14623         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
14624         UTF16 MonoString. Fix the crash from bug #335488
14625
14626 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
14627
14628         * marshal.c: Correct (for non-Win32 OS) length != size in 
14629         mono_string_from_bstr. Fix #339530.
14630
14631 2007-11-06  Geoff Norton  <gnorton@novell.com>
14632
14633         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
14634         to succeed
14635
14636 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
14637
14638         * process.c: Added run-time GetProcessId API detection for Windows.
14639
14640 2007-11-04  Miguel de Icaza  <miguel@novell.com>
14641
14642         * reflection.c  (mono_param_get_objects): If a parameter has the
14643         attribute [System.Runtime.InteropServices.Optional] we should
14644         set the DefaultValue of the ParameterInfo to be
14645         System.Reflection.Missing instead of DBNull.
14646
14647         See bug #339013.
14648
14649         (mono_get_reflection_missing_object): New method,
14650         returns the System.Reflection.Missing.Value singleton instance.
14651
14652 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
14653
14654         * culture-info-table.h : regenerated.
14655
14656 2007-11-02  Jonathan Chambers <joncham@gmail.com>
14657
14658         * icall.c: Use GetEnvironmentStrings on windows
14659         so we are using the same environment block as 
14660         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
14661         #333740.
14662         
14663         Code is contributed under MIT/X11 license.
14664
14665 2007-10-31  Martin Baulig  <martin@ximian.com>
14666
14667         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
14668
14669         * mono-debug-debugger.h
14670         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
14671
14672 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
14673
14674         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
14675         classes.
14676
14677 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
14678
14679         * culture-info-table.h : regenerated.
14680
14681 2007-10-30  Robert Jordan  <robertj@gmx.net>
14682
14683         * icall-def.h, icall.c:
14684         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
14685
14686         Code is contributed under MIT/X11 license.
14687
14688 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
14689
14690         * class.c (mono_class_setup_vtable): Find the inflated methods in the
14691         inflated class instead of inflating them again.
14692         
14693         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
14694         dynamic case.
14695
14696         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
14697         Call setup_supertypes () after klass->parent is set.
14698         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
14699
14700         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
14701         for inflated instances of not yet created dynamic generic classes.
14702         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
14703         times from inflated_method.
14704         (methodbuilder_to_mono_method): Ditto.
14705
14706 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
14707
14708         * gc.c: code cleanup and removed old untested option of not creating the
14709         finalizer thread.
14710
14711 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
14712
14713         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
14714         creating a jump trampoline for dynamic methods.
14715
14716 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
14717
14718         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
14719         generic TypeBuilders when called from another method of the same type (bug #335131).
14720
14721
14722 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
14723
14724         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
14725         doesn't seem to work perfectly.
14726         
14727         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
14728         called multiple times.
14729         (methodbuilder_to_mono_method): Ditto.
14730         (resolve_object): Inflate FieldBuilder's.
14731
14732 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14733
14734         * string-icalls.c, string-icalls.h, appdomain.c: patch from
14735         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
14736         RemoveEmptyEntries in the string.Split implementation (bug #322375).
14737
14738 2007-10-26  Dick Porter  <dick@ximian.com>
14739
14740         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
14741         Thread initialisation changes
14742
14743 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
14744
14745         * verify.c: fix compatibility check between arrays and System.Array
14746
14747 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
14748
14749         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
14750         too. Fixes #336999.
14751
14752 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14753
14754         * object.c (mono_value_box): Use typed allocation here.
14755
14756 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14757
14758         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
14759         trampoline instead of compiling the method right away.
14760
14761         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
14762
14763 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
14764
14765         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
14766         related fields for dynamic classes. Fixes #334493.
14767
14768 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
14769
14770         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
14771         
14772         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
14773
14774         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
14775         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
14776
14777         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
14778
14779         * reflection.c (create_generic_typespec): Initialize klass->generic_container
14780         if needed.
14781         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
14782
14783 2007-10-18  Jonathan Chambers <joncham@gmail.com>
14784
14785         * marshal.c: Use correct key when removing item
14786         from ccw_hash.
14787         
14788         Code is contributed under MIT/X11 license.
14789
14790 2007-10-17  William Holmes  <billholmes54@gmail.com>
14791
14792         *marshal.c: Adding a case to marshal booleans to U1
14793
14794         Code is contributed under MIT/X11 license.
14795
14796 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
14797
14798         * class.c (mono_class_from_name): Search the modules compromising dynamic
14799         assemblies. Fixes #331601.
14800
14801 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
14802
14803         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
14804         exception if the type name contains an assembly component. Fixes #334203.
14805
14806         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
14807         modules inside dynamic assemblies. Fixes #334200.
14808         
14809         * reflection.c: Set image->public_key and image->public_key_length;
14810
14811         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
14812         fields.
14813
14814         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
14815         
14816 2007-10-16  Mark Probst  <mark.probst@gmail.com>
14817
14818         * metadata.c: Implemented correct comparing of generic classes.
14819         An inflated generic class can be equal to a non-inflated one if it
14820         is inflated with generic type variables as type arguments.  Fixes
14821         bug #333798.
14822
14823 2007-10-15  Dick Porter  <dick@ximian.com>
14824
14825         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
14826         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
14827         81646.
14828
14829         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
14830         instead of a monitor lock.  This means that monitor_try_enter and
14831         co can set the thread state safely.
14832         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
14833         thread_interrupt_requested, so interrupt actually works.
14834
14835         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
14836         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
14837         state accessor function
14838
14839 2007-10-15  Martin Baulig  <martin@ximian.com>
14840
14841         * mono-debug.h
14842         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
14843         the debugger with the current runtime.
14844
14845 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
14846
14847         * object.c, object-internals.h: added the ability to set a single
14848         trampoline for all the slots in a vtable.
14849
14850 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14851
14852         * marshal.c: deal with a possible race condition during multicast
14853         delegate invocation.
14854
14855 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14856
14857         * class.c: ensure value type methods don't have the synchronized
14858         flag set.
14859
14860 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14861
14862         * string-icalls.c, string-icalls.h: reverted unapproved patch that
14863         breaks the build.
14864
14865 2007-10-11  Joel Reed  <joelwreed@comcast.com>
14866
14867         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
14868         to take an options parameter so that empty entries can be removed during
14869         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
14870
14871 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14872
14873         * marshal.c: make sure we don't store the signature from a dynamic
14874         method into the runtime invoke cache (bug #327189).
14875
14876 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
14877
14878         * marshal.c: make sure the wrapper methods are properly initialized.
14879
14880 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14881
14882         * metadata.c, metadata-internals.h: Generalized
14883         mono_type_stack_size() to mono_type_stack_size_internal() which
14884         takes an additional argument specifying whether it allows open
14885         types.
14886
14887 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
14888
14889         * verify.c (do_invoke_method): handle typedbyref params
14890         correctly and check for unverifiable return values.
14891
14892         * verify.c (do_newobj): fix a warning.
14893
14894 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
14895
14896         * verify.c: don't tread typedbyref as allways unverifable,
14897         so uses, like (ld/st)loc.0 are valid. verify for the cases
14898         that it matters, like boxing related operations.
14899
14900 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
14901
14902         * verify.c: add verification of the newobj opcode. verification
14903         of delegate instantation still missing due ldftn and virldftn not
14904         pushing the function type on stack
14905
14906 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14907
14908         * class-internals.h: Runtime generic context data structure
14909         definition.
14910
14911         * object.c: Initialization of runtime generic context at runtime
14912         vtable creation time.
14913
14914 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
14915         * class.c (mono_class_create_from_typedef,
14916         mono_class_from_generic_parameter, mono_ptr_class_get,
14917         mono_fnptr_class_get, mono_bounded_array_class_get)
14918         * domain.c (mono_domain_create, mono_domain_free)
14919         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
14920         * image.c (do_mono_image_load, mono_image_close):
14921         Hooked up load-unload profiler events.
14922
14923 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14924
14925         * domain.c: track statistics about the actual amount of native code
14926         allocated.
14927
14928 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14929
14930         * class.c: the valuetype enumerators don't have the additional
14931         supertypes interfaces.
14932
14933 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
14934
14935         * class.c: need more interfaces setup for the IEnumerator<T>
14936         object created for arrays (tests/ienumerator-interfaces.2.cs).
14937
14938 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
14939
14940         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
14941
14942 2007-10-05  Alp Toker  <alp@atoker.com>
14943
14944         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
14945         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
14946         #315863.
14947
14948 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
14949
14950         * verify.c (verify_type_compatibility_full): verification of
14951         compatibility improved, validates correctly non-strict checks between
14952         native int and I4 types different than (unsigned)int32.
14953
14954         * verify.c (do_store_indirect): added, do all verification of
14955         ldind.X opcodes. 
14956
14957         * verify.c (get_load_indirect_mono_type): renamed to
14958         get_indirect_op_mono_type, as it now returns the MonoType for 
14959         ldind.X and stind.X opcodes.
14960
14961 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
14962
14963         * reflection.c: Fix the encoding of generic type definition for
14964         TypeBuilders.
14965
14966         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
14967         mono_image_typedef_or_ref but allows to specify if typespec lookups should
14968         be made. Typespec check is done prior to typeref cache lookup.
14969
14970         * reflection.c (mono_image_typedef_or_ref): now just delegate to
14971         mono_image_typedef_or_ref_full.
14972
14973         * reflection.c (encode_generic_class): encode the generic class
14974         directly instead of calling encode_type.
14975
14976         * reflection.c (encode_type): encode the generic type definition
14977         MonoClass as a generic instantiation.
14978
14979         * reflection.c (create_typespec): cache typespec tokens in
14980         the assembly->typespec cache. Don't create typespec for a generic
14981         instance MonoClass. Create typespec for the generic type defintion.
14982
14983         * reflection.c (create_generic_typespec): encode the generic
14984         class directly instead of calling encode_type.
14985
14986         * reflection.c (mono_image_create_token): encode the generic
14987         type definition not using a typespec for MonoType instances.
14988
14989
14990 2007-10-04  Raja R Harinath  <rharinath@novell.com>
14991
14992         Fix #328812
14993         * class.c (mono_image_init_name_cache): Don't return nested
14994         'protected internal' classes.
14995         (mono_class_from_name_case): Likewise.
14996
14997 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
14998
14999         * icall-def.h, icall.c : get_bundled_machine_config() is now the
15000           common function used by both DefaultConfig in System.dll and
15001           InternalConfigurationHost in System.Configuration.dll.
15002
15003 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15004
15005         * class.c: automatically add to vectors only a few essential explicit
15006         generic interfaces. The rest of the interfaces that arrays should
15007         provide are currently implicitly added (but still not lazily, see the
15008         design in the discussion of bug#325495 for the details of what is
15009         needed for that). Additionally, implicit interfaces are assigned the
15010         same vtable slot as the explicit interfaces (as they are compatible):
15011         this enables huge memory savings since we don't need to instantiate
15012         as many memthods and as large vtables anymore. Also, Since
15013         GetEnumerator<T> returns an instance of a type that is required to
15014         support a similarly large set of interfaces as arrays, we add
15015         implicit interfaces and interface offset sharing support to those
15016         types, too. This change adds all the required interfaces so that
15017         the anonarray.cs test case in the bug report works (we don't add
15018         all the interfaces to arrays of arrays 3-level deep and more because
15019         of the memory requirements explained in the bug and since they are much
15020         less common: the lazy-loading support will enabled them to work, too).
15021
15022 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
15023
15024         * verify.c (merge_stacks): major clean up, all type compatibility
15025         checks are done by verify_type_compatibility. This fix my earlier lack
15026         of understanding of the CLR type system and merge_stacks no longer looks
15027         scary.
15028
15029         * verify.c: fixed some bad spelling.
15030
15031 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
15032
15033         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
15034         a given stack slock.
15035         
15036         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
15037         verify_type_compatibility_full. This removed a near indentical function and fixed
15038         handling of Int32 and IntPtr across all opcodes.
15039
15040 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15041
15042         * class.c: only vectors have the additional generic interfaces.
15043
15044 2007-10-01  Jonathan Chambers <joncham@gmail.com>
15045
15046         * mono-config.c: Use g_strcasecmp instead of
15047         strcasecmp like everywhere else to fix
15048         compilation with MSVC.
15049         
15050         Code is contributed under MIT/X11 license.
15051
15052 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15053
15054         * object.c, object-internals.h: refactored the IMT code to enable
15055         building a single slot at a time and lazily creating the IMT trampolines
15056         and thunks.
15057
15058 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
15059
15060         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
15061
15062         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
15063         Fixes #328501.
15064         
15065 2007-09-29  Raja R Harinath  <harinath@gmail.com>
15066
15067         * loader.c (method_from_methodspec): Rearrange to avoid
15068         un-necessary exposition.  Don't assert out if the method's
15069         declaring type is a generic type definition.
15070
15071 2007-09-28  Martin Baulig  <martin@ximian.com>
15072
15073         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
15074
15075 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15076
15077         * class-internals.h: optimize field layout of MonoClass to
15078         requires less cachelines at runtime and save a few bytes on 64 bit
15079         systems.
15080
15081 2007-09-28  Jb Evain  <jbevain@novell.com>
15082
15083         * reflection.c: when encoding type names in custom attributes,
15084         if the type is a closed generic type, its generic arguments
15085         have to be serialized as AssemblyQualifiedName, so that when
15086         they are deserialized, it's possible to re-create them properly.
15087         Fixes #329450.
15088
15089
15090 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
15091
15092         * object.c, class-internals.h: added delegate-creation counter.
15093
15094 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15095
15096         * class.c: cleanup of the code that synthetizes interfaces for
15097         arrays in 2.0: saves quit a bit of corlib mempool memory.
15098         Code to fix bug #325495 ifdeffed out for now until the issues
15099         with memory usage and O(n^2) behaviour are fixed.
15100
15101 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
15102
15103         * marshal.c: when possible, do not duplicate the name of the methods
15104         in the method builder and in the generated MonoMethod.
15105
15106 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
15107         * verify.c: added support for type checking ldind_* opcodes.
15108
15109 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
15110
15111         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
15112         which is used to distinguish the fully open instantiation of a TypeBuilder
15113         with the rest. This temporary hack is required to restore the property that
15114         the fully open instantiation is the same type of the generic type definition.
15115
15116         * class-internals.h (mono_generic_class_is_generic_type_definition):
15117         new function as part of the internal API.
15118
15119         * class.c (inflate_generic_type): return NULL when the generic inst is
15120         fully open. The fully open generic type is now the same as the generic type
15121         definition for non TypeBuilder types.
15122
15123         * class.c (mono_generic_class_get_class): removed assert since it is
15124         no longer valid, gklass->cached_class can point to the generic type definition.
15125
15126         * class.c (mono_generic_class_is_generic_type_definition): new.
15127
15128         * metadata.c (mono_generic_class_hash): added is_tb_open field
15129         to the hash calculation.
15130
15131         * metadata.c (free_generic_class): if the generic class is associated
15132         with the generic type definition, its field will come from the mempool and
15133         must not be freed.
15134
15135         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
15136         new, this function identifies the corner case of a TypeBuilder fully open
15137         instantiation.
15138
15139         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
15140         for lookup. Set gclass->cached_class to be the container class in case of
15141         the fully open instantiation of non TypeBuilder types.
15142
15143         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
15144         to compare generic classes.
15145
15146         * reflection.c (method_encode_methodspec): remove assert that
15147         no longer is valid.
15148
15149         * reflection.c (mono_reflection_generic_class_initialize): add
15150         an aditional assert to ensure the proper type is used.
15151
15152 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
15153
15154         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
15155         to enjoy it.
15156
15157 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
15158
15159         * verify.c (push_arg): Fixed support for ldarga
15160         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
15161         MonoType used as first arg in case of instance calls.
15162
15163 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
15164
15165         * verify.c: Support for verifying VAR and MVAR types, 
15166
15167 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
15168
15169         * icall.c (ves_icall_get_property_info): Set the reflected type of the
15170         accessors correctly.
15171
15172 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15173
15174         * threads.c: support OSX and other systems in
15175         mono_thread_get_stack_bounds (bug #328026).
15176
15177 2007-09-25  Martin Baulig  <martin@ximian.com>
15178
15179         * mono-debug.h
15180         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
15181
15182 2007-09-24  Martin Baulig  <martin@ximian.com>
15183
15184         * mono-debug.h
15185         (MonoDebugClassEntry): Moved the definition of this struct into
15186         mono-debug.c to make it private.
15187
15188         * mono-debug.c
15189         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
15190         type table per symbol file, we don't need to store the symfile id
15191         any longer.
15192
15193 2007-09-24  Martin Baulig  <martin@ximian.com>
15194
15195         Create one type table per symbol file, since a `MonoClass *' gets
15196         invalid when its image is unloaded.
15197
15198         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
15199         (MonoDebugHandle): Added `type_table'.
15200
15201 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15202
15203         * mempool.c, mempool.h: added mono_mempool_new_size () API
15204         to be able to specify a smaller initial size for the pool.
15205         Adjusted the code to slowly increase pool size before using
15206         the previous default size.
15207         * image.c: use a small initial size for image mempools.
15208
15209 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
15210
15211         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
15212         Fixes ##320990.
15213
15214         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
15215         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
15216
15217 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
15218
15219         * metadata.c (mono_type_create_from_typespec): Remove an invalid
15220         free. Fixes #327438.
15221
15222 2007-09-21  Raja R Harinath  <harinath@gmail.com>
15223
15224         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
15225         generic instantiations, etc.
15226         <MONO_TYPE_ARRAY>: Likewise.
15227
15228 2007-09-21  Martin Baulig  <martin@ximian.com>
15229
15230         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
15231         these structs were never defined.
15232         (MonoDebugHandle): Removed the `_priv' field, it was never used.
15233
15234 2007-09-21  Martin Baulig  <martin@ximian.com>
15235
15236         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
15237
15238 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
15239
15240         * image.c: removed the guid hash tables: we can get the same info
15241         without the additional memory usage hit (partially fixes also bug #327052).
15242
15243 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15244
15245         * profiler.h, profiler-private.h, profiler.c: add a new profiler
15246         event to handle unloading methods. After the event is called, the
15247         corresponding MonoMethod* must be considered invalid.
15248         * loader.c (mono_free_method): call the new mono_profiler_method_free
15249         event.
15250
15251 2007-09-20  Mark Probst  <mark.probst@gmail.com>
15252
15253         * domain-internals.h: New flag in MonoJitInfo which marks shared
15254         generic methods.  New hash table (shared_generics_hash) in
15255         MonoDomain to keep track of shared generic methods.  Prototypes
15256         for functions to register and lookup shared generic methods.
15257
15258         * domain.c: Support for registering and looking up shared generic
15259         methods via a hash table (shared_generics_hash) in MonoDomain.
15260
15261         * class-internals.h: New exception to signal failure of shared
15262         compilation of a generic method.  New counters for generics
15263         sharing in MonoStats.
15264
15265 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15266
15267         * image.c, metadata-internals.h: don't keep a file descriptor open
15268         for loaded assemblies (bug#325988).
15269
15270 2007-09-19  Raja R Harinath  <rharinath@novell.com>
15271
15272         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
15273         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
15274         use the corresponding datatypes.
15275         (type_in_image): Update to changes.
15276         (CleanForImageUserData): Simplify.
15277         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
15278         Avoid quadratic behaviour in handling the "stolen" list by
15279         separating the filter predicate out, and by prepending the stolen
15280         items rather than appending them.
15281         (steal_ginst_in_image): Likewise.
15282         (mono_metadata_clean_for_image): Update to changes.
15283
15284 2007-09-19  Martin Baulig  <martin@ximian.com>
15285
15286         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
15287
15288 2007-09-19  Martin Baulig  <martin@ximian.com>
15289
15290         * mono-debug.c (mono_debug_cleanup): Don't call
15291         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
15292
15293 2007-09-19  Raja R Harinath  <harinath@gmail.com>
15294
15295         Fix crash on 'make run-test' in mcs/errors
15296         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
15297         Avoid more potential allocations in mono_class_from_mono_type.
15298         (ginst_in_image): Update to changes.
15299         (gclass_in_image): Rearrange slightly.
15300
15301 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15302
15303         * class.c (mono_class_init): Move the code that sets up class->methods to 
15304         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
15305
15306         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
15307         canonical instance of an inflated generic signature.
15308         (mono_type_create_from_typespec): Remove an invalid free.
15309
15310         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
15311
15312 2007-09-18  Marek Habersack  <mhabersack@novell.com>
15313
15314         * domain-internals.h: added a declaration of the
15315         mono_assembly_load_full_nosearch internal function.
15316
15317         * assembly.c (mono_assembly_load_with_partial_name): use
15318         mono_try_assembly_resolve return value properly.
15319         (mono_assembly_load_full_nosearch): copied the function body from
15320         mono_assembly_load_full, without the code to invoke assembly
15321         search hooks.
15322         (mono_assembly_load_full): calls the above new function and if the
15323         assembly is not resolved, invokes the search hooks.
15324
15325         * appdomain.c (mono_runtime_init): restore the global postload
15326         assembly search handlers.
15327
15328 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15329
15330         * class.c (mono_class_init): Make sure class->methods and class->properties
15331         are never NULL in the generics case.
15332
15333         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
15334
15335 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
15336
15337         * metadata.c (free_generic_class): Disable some code to fix the build.
15338
15339         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
15340
15341         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
15342         from the image mempool.
15343
15344         * metadata.c (free_generic_class): Free more data from the inflated class.
15345
15346         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
15347
15348         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
15349         mempool.
15350         (mono_type_create_from_typespec): Ditto.
15351
15352         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
15353         MonoImage to the caller.
15354         (mono_init_internal): Save the opened image in a global variable.
15355         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
15356
15357         * reflection.c (resolve_object): Fix a leak.
15358
15359         * metadata.c: Fix the freeing of data in the generics caches.
15360         
15361         * metadata.c (free_generic_inst): Comment this out to fix the build.
15362         (free_generic_class): Ditto.
15363
15364         * metadata.c: Free cached generic methods, instantinations and classes when
15365         they are removed from the caches.
15366         (mono_metadata_free_type): Free the type itself.
15367
15368         * class.c: Free the result of mono_class_inflate_generic_type () in a few
15369         places.
15370
15371 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
15372
15373         * boehm-gc.c: restrict managed allocs to __thread supporting
15374         architectures.
15375
15376 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
15377
15378         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
15379         (mono_generic_class_get_class): Fix a leak.
15380
15381         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
15382         mono_metadata_free_type ().
15383         (mono_metadata_inflate_generic_inst): Fix a leak.
15384
15385 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15386
15387         * mono-debug.c (free_header_data): Fix a leak missed earlier.
15388
15389         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
15390         mempool.
15391
15392         * mono-debug.c (mono_debug_close_image): Fix call to 
15393         g_hash_table_remove ().
15394
15395 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
15396
15397         * icall-def.h: redirect all the string ctor to the managed
15398         CreateString () methods.
15399         * string-icalls.c, string-icalls.h: removed dead code for string
15400         ctors and icalls.
15401
15402 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15403
15404         * mono-debug.c: Fix memory leaks.
15405
15406 2007-09-14  Jonathan Chambers <joncham@gmail.com>
15407
15408         * threads-types.h: Implement mono_hazard_pointer_set and 
15409         mono_hazard_pointer_clear macros using do/while(0) to fix
15410         compilation with MSVC.
15411         
15412         Code is contributed under MIT/X11 license.
15413
15414 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15415
15416         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
15417         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
15418
15419 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15420
15421         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
15422         icalls.
15423
15424 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15425
15426         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
15427         managed-code allocated as well.
15428
15429 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15430
15431         * class.c (mono_class_is_assignable_from): Add support for generic variance.
15432
15433 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
15434
15435         * boehm-gc.c: fixed the build after the AOT changes.
15436
15437 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15438
15439         * wrapper-types.h: Add an ALLOC wrapper type.
15440
15441         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
15442         reference managed allocator methods.
15443
15444 2007-09-12  Marek Safar  <marek.safar@gmail.com>
15445
15446         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
15447         of Type array and not MonoType, a fix suggested by Hari.
15448         
15449 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15450
15451         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
15452         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
15453         
15454         Code is contributed under MIT/X11 license.
15455
15456 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15457
15458         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
15459
15460 2007-09-12  Marek Habersack  <mhabersack@novell.com>
15461
15462         * image.c (do_mono_image_open): if assembly file fails to open and
15463         MONO_IOMAP is in effect, try to find the path in a
15464         case-insensitive way.
15465
15466         * appdomain.c (mono_runtime_init): do not install postload hooks -
15467         tests show that MS.NET doesn't use anything of that sort to
15468         trigger the AppDomain.AssemblyResolve event.
15469         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
15470         made non-static.
15471         (mono_runtime_init): init portability helpers here.
15472
15473         * assembly.c (mono_assembly_load_with_partial_name): if other   
15474         attempts fail, trigger the AppDomain.AssemblyResolve event handler
15475         to resolve the assembly.
15476
15477         * domain-internals.h: added mono_try_assembly_resolve and marked
15478         it as internal.
15479
15480 2007-09-11  Jb Evain  <jbevain@novell.com>
15481
15482         * object-internals.h (MonoReflectionDynamicMethod): add
15483         a `MonoReflectionType *owner` field. The owner is used
15484         * reflection.c:
15485         (mono_reflection_create_dynamic_method): use the owner of the dynamic
15486         method as the class declaring the dynamic method.
15487         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
15488         dynamic method to the declaring type of the methodbuilder.
15489
15490 2007-09-11  Mark Probst  <mark.probst@gmail.com>
15491
15492         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
15493         rules for calling methods via reflection.
15494
15495 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
15496
15497         * reflection.c (resolve_object): Add support for MonoGenericClass. 
15498         Inflate MonoType's.
15499
15500 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15501
15502         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
15503         provide a managed method that does fast allocations without needing
15504         a managed->unmanaged transition. Boehm GC implementation currently
15505         enabled for ptrfree objects on sane architectures.
15506
15507 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
15508
15509         * marshal.c, marshal.h: exported a couple of useful functions and
15510         added mono_mb_get_label () to easily handle backward branches.
15511
15512 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
15513
15514         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
15515
15516 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15517
15518         * loader.c (find_method): Fixed the regression introduced while
15519         fixing bug #81466.
15520
15521 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
15522
15523         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
15524         well.
15525         
15526         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
15527         icall.c reflection.c: Pass a MonoGenericContext argument to 
15528         mono_lookup_dynamic_token ().
15529
15530         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
15531         #82744.
15532         
15533 2007-09-09  Robert Jordan  <robertj@gmx.net>
15534
15535         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
15536         for generic methods.
15537
15538         * object.c (mono_object_get_virtual_method): Handle generic methods.
15539         Fixes bug #78882.
15540
15541         Code is contributed under MIT/X11 license.
15542
15543 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
15544
15545         * image.c: fix locking in mono_image_load_file_for_image ().
15546
15547 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
15548
15549         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
15550         used only as a cache: added an icall to fill it.
15551
15552 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
15553
15554         * reflection.h: exposed mono_reflection_free_type_info
15555         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
15556         since mono_reflection_bind_generic_parameters makes a copy of it.
15557         * reflection.c (free_type_info): subinfos should be freed.
15558         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
15559         made non static.
15560         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
15561         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
15562         this fixes #82695 and #81726.
15563    
15564
15565 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
15566
15567         * process.h, process.c:  added support for user profile/info in
15568           ProcessStartInfo. For now only Windows works.
15569
15570 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15571
15572         * metadata.c: consider the generic arguments when comparing
15573         signatures (bug #82614).
15574
15575 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15576
15577         * cil-coff.h, image.c: updated assembly loader to cope with the
15578         PE32+ 64 bit file format.
15579
15580 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15581
15582         * assembly.c, class.c, domain.c, loader.c: remove useless
15583         inclusion of cil-coff.h.
15584
15585 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
15586
15587         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
15588         if interface is marked with CoClassAttribute. 
15589    
15590         Code is contributed under MIT/X11 license.
15591
15592 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
15593
15594         * sgen-gc.c: ensure no object from the to space is copied again or finalized
15595         if it's seen twice in major collections.
15596
15597 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
15598
15599         * sgen-gc.c: big objects are not copied to the gray area, but they
15600         need to be considered for scanning, too, if they are brought alive
15601         by an object ready for finalizations or a survived one.
15602
15603 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15604
15605         * sgen-gc.c: properly account the number of disappearing links when
15606         they are nullified.
15607
15608 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
15609
15610         * sgen-gc.c: share the code to scan the registered roots between the
15611         different types of collections.
15612
15613 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15614
15615         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
15616
15617 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15618
15619         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
15620         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
15621
15622 2007-08-28  Mark Probst  <mark.probst@gmail.com>
15623
15624         * security-manager.c (mono_security_manager_get_methods):
15625         LinkDemandSecurityException now has 2 arguments instead of 3.
15626
15627 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
15628
15629         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
15630         platforms which need it.
15631
15632 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15633
15634         * sgen-gc.c: unregister thread data structures with a pthread_key_t
15635         dtor.
15636
15637 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
15638
15639         * threads.c: free the thread static data on thread exit.
15640
15641 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
15642
15643         * class.c: walk the hierarchy to find the generic definition for
15644         a class (fixes runtime part of bug #82498).
15645
15646 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
15647
15648         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
15649         ...
15650
15651         * image.c (mono_image_close): Here. Hopefully fixes #82510.
15652
15653 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15654
15655         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
15656
15657 2007-08-24  Robert Jordan  <robertj@gmx.net>
15658
15659         * appdomain.c: don't perform the ':'->';' substitution on Win32.
15660
15661 2007-08-24  Jb Evain  <jbevain@novell.com>
15662
15663         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
15664         for byref types.
15665
15666 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15667
15668         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
15669         #82286.
15670
15671 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
15672
15673         * assembly.c: Fix a warning.
15674         
15675 2007-08-23  Marek Habersack  <mhabersack@novell.com>
15676
15677         * appdomain.c: parse the <runtime> section looking for the probing
15678         element with the 'privatePath' attribute, which sets additional
15679         directories in which the runtime should look for assemblies.
15680
15681 2007-08-23  Robert Jordan  <robertj@gmx.net>
15682
15683         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
15684         Fixes #82499.
15685
15686 2007-08-23  Martin Baulig  <martin@ximian.com>
15687
15688         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
15689         _mono_debug_init_corlib() and remove it from the header file.
15690
15691 2007-08-23  Martin Baulig  <martin@ximian.com>
15692
15693         * mono-debug-debugger.c
15694         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
15695         don't notify the debugger about it.
15696
15697         * mono-debug-debugger.h
15698         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
15699
15700 2007-08-23  Robert Jordan  <robertj@gmx.net>
15701
15702         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
15703         Code is contributed under MIT/X11 license.
15704
15705 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15706
15707         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
15708
15709 2007-08-22  Martin Baulig  <martin@ximian.com>
15710
15711         * mono-debug.c: Store debugging info on a per-domain basis and
15712         free it on domain unload.  Add support for unloading symbol files.
15713
15714         * mono-debug.h
15715         (MonoDebugList): New typedef.
15716         (MonoSymbolTable):
15717         - add `data_tables and `type_table'.
15718         - replace 'symbol_files' and `num_symbol_files' with a
15719           `MonoDebugList *'.
15720         (mono_debug_data_table): Removed.
15721         (mono_debug_list_add): New public function.
15722         (mono_debug_list_remove): New public function.
15723         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
15724         (mono_debug_init_2_memory): Renamed into
15725         mono_debug_open_image_from_memory().
15726         (mono_debug_close_image): New public function.
15727         (mono_debug_domain_create): Likewise.
15728         (mono_debug_domain_unload): Likewise.
15729         (MONO_DEBUGGER_VERSION): Bump to 60.
15730
15731         * mono-debug-debugger.h
15732         (MonoDebuggerEvent):
15733         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
15734         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
15735         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
15736         - rename `THREAD_CREATED' and `THREAD_EXITED' into
15737           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
15738         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
15739           meaning.
15740         (mono_debugger_add_symbol_file): Removed.
15741         (mono_debugger_add_type): Removed.
15742         (mono_debugger_lookup_type): Removed.
15743         (mono_debugger_lookup_assembly): Removed.
15744
15745         * domain.c
15746         (mono_domain_create): Call mono_debug_domain_create().
15747         (mono_init_internal): Call mono_debug_init_corlib().
15748
15749         * assembly.c
15750         (mono_assembly_close): Call mono_debug_close_image().
15751
15752 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15753
15754         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
15755         mmap call.
15756
15757 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
15758
15759         * sgen-gc.c: ensure section->pin_queue_end is initialized
15760         correctly when non pinning objects in the section have been found.
15761
15762 2007-08-22  Marek Habersack  <mhabersack@novell.com>
15763
15764         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
15765         containing a list of directories separated by ':'. MSDN docs say
15766         the directories should be separated with ';'. Part of a bugfix for
15767         bug #81446
15768
15769 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
15770
15771         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
15772         it should MonoType and not MonoClass.
15773
15774 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
15775
15776         * culture-info-table.h : regenerated.
15777
15778 2007-08-20  William Holmes  <billholmes54@gmail.com>
15779
15780         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
15781          to call ReplaceFile Kernel32 on windows or in io-layer.
15782         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
15783         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
15784          as an internal call.
15785
15786         Code is contributed under MIT/X11 license.
15787
15788 2007-08-20  Jb Evain  <jbevain@novell.com>
15789
15790         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
15791         and MONO_EXCEPTION_FIELD_ACCESS.
15792
15793         * debug-helpers.[c|h]: new mono_field_full_name function.
15794
15795 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15796
15797         * class.c: Removed class_security_level() and moved it to
15798         security-core-clr.c.
15799
15800         * security-core-clr.c, security-core-clr.h: class_security_level()
15801         is now public and renamed to mono_security_core_clr_class_level().
15802         It also looks for security attributes in the classes a class is
15803         nested in.
15804
15805 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15806
15807         * security-core-clr.c, security-core-clr.h: CoreCLR security
15808         utility functions.
15809
15810         * Makefile.am: Added security-core-clr.[ch].
15811
15812         * security-manager.c, security-manager.h: Functions and enum for
15813         setting and getting the security mode.
15814
15815         * class.c: CoreCLR security checks.
15816
15817 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15818
15819         * icall-def.h, process.c, process.h: implemented icall to get
15820         user/system processor times.
15821
15822 2007-08-17  Mark Probst  <mark.probst@gmail.com>
15823
15824         * domain.c, threads.c, class-internals.h, domain-internals.h: New
15825         reader-lock-free jit_info_table.
15826
15827 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
15828
15829         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
15830
15831         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
15832
15833         * object-internals.h (MonoException): Add missing _data member.
15834
15835 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
15836
15837         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
15838         checking that only methods with matching qname or fqname are picked
15839         from implemented interfaces.
15840
15841 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
15842
15843         * verify.c (do_newarr):added, do type verification of
15844         newarr ops, push the right value on the eval stack.
15845         * verify.c (mono_method_verify): use do_newarr
15846
15847
15848 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
15849
15850         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
15851         factored the common code into get_boxable_mono_type, which
15852         is now using mono_type_get_full, this fixed byref related tests.
15853
15854 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
15855
15856         * class.c: added mono_type_get_full, this function has the same
15857         behavior of mono_class_get_full but the returned MonoType has
15858         all metadata of the associated token in case of a typespec token.
15859         * class.c: added mono_type_retrieve_from_typespec, used by 
15860         mono_type_get_full to retrieve the token type.
15861         * class.c (mono_class_create_from_typespec): changed to use
15862         mono_type_retrieve_from_typespec.
15863         * class.c (mono_ldtoken): changed to use mono_type_get_full
15864         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
15865         * class-internals.h: exported mono_type_get_full for internal use.
15866
15867 2007-08-16  Jb Evain  <jbevain@novell.com>
15868
15869         * domain.c (supported_runtimes): add entry for
15870         the 'moonlight' runtime version.
15871
15872 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15873
15874         * verify.c (mono_method_verify): small typo sliped in.  
15875
15876 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15877
15878         * verify.c (do_unbox_value): added, do type verification of
15879         unboxing ops
15880         * verify.c (mono_method_verify): use do_unbox_value
15881
15882
15883 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15884
15885         * verify.c (dump_stack_value): fixed typo, was printing string
15886         instead of object on stack.
15887         * verify.c (do_box_value): moved the byref check up as it leads
15888         to invalid code and should be done earlier.
15889         * verify.c: improved error messages for and ldobj
15890
15891 2007-08-15  William Holmes  <billholmes54@gmail.com>
15892
15893         * marshal.c (emit_marshal_custom): Omit the call to 
15894           marshal_native_to_managed when calling native to managed 
15895           and the argument is specified as an out argument.
15896
15897         Code is contributed under MIT/X11 license.
15898
15899 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15900
15901         * verify.c: fixed the type checks for generics, function pointers and vectors.
15902         Added type verification for ldobj and ldtoken. The verifier
15903         would segfault if header or signature of a method contained references
15904         to non-existant types.
15905
15906 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
15907
15908         * marshal.c (cominterop_get_ccw): Patch from
15909         Bill Holmes to no walk up interface hierarchy. 
15910         All parent methods should be present in the interface for COM.
15911    
15912         Code is contributed under MIT/X11 license.
15913
15914 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
15915
15916         * marshal.c (emit_marshal_com_interface): Patch from
15917         Bill Holmes to handle COM Interfaces as return values
15918         for native->managed calls.
15919    
15920         Code is contributed under MIT/X11 license.
15921
15922 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
15923
15924         * marshal.c (cominterop_get_idispatch_for_object): Implement
15925         for runtime callable wrappers.
15926    
15927         Code is contributed under MIT/X11 license.
15928
15929 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
15930
15931         * pedump.c (main): changed from mono_init to mono_init_from_assembly
15932         so 2.0 types are accessible
15933
15934
15935 2007-08-13  Miguel de Icaza  <miguel@novell.com>
15936
15937         * domain.c (mono_init_internal): Call mono_assembly_load_friends
15938         once we load mscorlib.   Due to the order in which we initialize,
15939         the mono_assembly_load_full routine that loads mscorlib did not
15940         load friends.   We now load it once we load the
15941         mono_defaults.internals_visible_class class. 
15942
15943         * assembly.c: Expose the mono_load_friend_assemblies method.
15944
15945 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
15946
15947         * verify.c: improved the handling of boxing, better
15948         type checking for unary ops and conversion. Fix bug
15949         regarding managed pointer compatibility checking
15950
15951 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
15952
15953         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
15954
15955         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
15956
15957 2007-08-09  Raja R Harinath  <rharinath@novell.com>
15958
15959         * reflection.c (dup_type): Remove.
15960         * class.c (dup_type): Remove.
15961         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
15962         instead of the dodgy 'dup_type'.
15963         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
15964         handle the case where 'dup_type' needed the second argument.
15965
15966 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
15967
15968         * domain.c: Fix a warning.
15969
15970 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
15971
15972         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
15973         checking that methods with the same fqname are not overridden
15974         with a method from an ancestor.
15975
15976 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
15977
15978         * threads.c (free_thread_static_data_helper): Avoid a crash if
15979         thread->static_data is not yet set.
15980
15981 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
15982
15983         * marshal.c: Use correct image when emitting
15984         native wrapper for COM calls.
15985    
15986         Code is contributed under MIT/X11 license.
15987
15988 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
15989
15990         * icall-def.h, security.c, security.h :
15991           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
15992
15993 2007-08-07  Martin Baulig  <martin@ximian.com>
15994
15995         * mono-debug-debugger.h
15996         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
15997
15998         * domain.c (mono_domain_free): Call
15999         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
16000
16001 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
16002
16003         * verify.c (check_underflow, check_overflow): error message now returns IL offset
16004         * verify.c (in_same_block): code should test if either offset is inside the clauses
16005         * verify.c (mono_method_verify): push the exception into the eval stack of exception
16006         and filter blocks
16007
16008 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
16009
16010         * image.c (mono_image_close): Fix a leak.
16011
16012         * object.c (mono_runtime_invoke_array): Avoid using alloca.
16013
16014         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
16015
16016 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
16017
16018         * domain.c, threads.c, threads-types.h: fix memory retention issue
16019         with thread static variables not being cleared on domain unload.
16020         Reuse thread static slots after domain unload.
16021
16022 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
16023
16024         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
16025         nullable type.
16026
16027         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
16028         now done in mono_runtime_invoke_array.
16029
16030         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
16031         receiver is a nullable type.
16032
16033         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
16034         generic parameter.
16035
16036 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
16037
16038         * marshal.c: Implement COM Objects as return type for 
16039         managed->unmanaged calls. Added Release calls for COM Object
16040         out/return values in managed->unmanaged calls.
16041
16042         Code is contributed under MIT/X11 license.
16043
16044 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
16045
16046         * threads.h, threads-type.h: move the hazard pointer declarations
16047         to the private header.
16048
16049 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
16050
16051         * file-io.c, appdomain.c: memory leak fixes.
16052
16053 2007-08-02  Dick Porter  <dick@ximian.com>
16054
16055         * socket-io.c
16056         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
16057         SO_REUSEADDR setting into io-layer/sockets.c.
16058
16059 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
16060
16061         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
16062         from Object when called on a generic parameter. Fixes #82211.
16063
16064 2007-08-01  Dick Porter  <dick@ximian.com>
16065
16066         * file-io.c (convert_share): Test FileShare values bit-by-bit.
16067         Fixes bug 79250 yet again.
16068
16069 2007-07-30  Martin Baulig  <martin@ximian.com>
16070
16071         Merged the `debugger-dublin' branch.
16072
16073         * mono-debug.h
16074         (MonoDebugDataTable): New typedef.
16075         (MonoDebugMethodAddressList): New typedef.
16076         (MonoDebugWrapperData): Removed.
16077         (MonoDebugSymbolTable): Removed `current_data_table',
16078         `current_data_table_size', `current_data_table_offset'.
16079         (MonoDebugDataItemType): Moved into mono-debug.c.
16080         (MonoDebugMethodJitInfo): Remove `address'.
16081         (mono_debug_data_table): New global variable.
16082         (mono_debug_lookup_method_addresses): New public function.
16083         (mono_debug_find_method): Take a `MonoMethod *', not a
16084         `MonoDebugMethodInfo *'.
16085
16086         * mono-debug.c: Drop support for the old symbol tables.
16087
16088 2007-06-28  Martin Baulig  <martin@ximian.com>
16089
16090         * mono-debug.c (mono_debug_debugger_version): New public variable.
16091
16092 2007-07-31  William Holmes  <billholmes54@gmail.com>
16093
16094         * metadata.c Changed mono_type_create_from_typespec to not insert
16095           the type into the hash map until after
16096           do_mono_metadata_parse_type has completed.
16097         Fixes Bug #82194
16098         Code is contributed under MIT/X11 license.
16099
16100 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
16101
16102         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
16103         generic parameter. Fixes #82211.
16104
16105 2007-07-27  Jb Evain  <jbevain@novell.com>
16106
16107         * pedump.c (dump_metadata, dump_metadata_header): dump
16108         versions contained in the metadata header.
16109
16110 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
16111
16112         * threads.c: register small_id_table with the GC.
16113
16114 2007-07-27  Mark Probst  <mark.probst@gmail.com>
16115
16116         * threads.c, threads.h, class-internals.h, object-internals.h:
16117         Hazard pointers, to be used by lock-free parallel algorithms.
16118
16119 2007-07-26  Dick Porter  <dick@ximian.com>
16120
16121         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
16122         routine on non-windows platforms, as I've not managed to think of
16123         a non-kludgy way of doing this.  Finishes off bug 78739.
16124
16125 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
16126
16127         * object.c: properly setup interface_bitmap in proxy vtables.
16128
16129 2007-07-25  Marek Habersack  <mhabersack@novell.com>
16130
16131         * appdomain.c (get_shadow_assembly_location): do not use TickCount
16132         to create unique shadow copy target directories, use the domain's
16133         serial number instead. Each domain gets a unique target directory
16134         that way.
16135
16136         * domain.c (mono_domain_create): added code to increment domain
16137         shadow copy serial number and cache the value in the current
16138         domain structure.
16139
16140         * domain-internals.h (struct _MonoDomain): added a new field -
16141         shadow_serial to hold the serial number used in generation of
16142         shadow-copy directories. This is to make sure that the directory
16143         name is unique for each and every domain created. We avoid a race
16144         condition with overriding assemblies already in use by other app
16145         domains.
16146
16147 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
16148
16149         * class.c (mono_bounded_array_class_get): fixed memory leak when 
16150         binding generic parameters.
16151
16152 2007-07-24  Raja R Harinath  <rharinath@novell.com>
16153
16154         * metadata.c (do_mono_metadata_parse_generic_class): Use
16155         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
16156         error.
16157
16158 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
16159
16160         * loader.c, class-internals.h, reflection.c: removed the per-method
16161         generics hashtable: we use the global one through the call of
16162         mono_class_inflate_generic_method ().
16163
16164 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
16165
16166         * class.c, metadata.c, class-internals.h: introduce yet another
16167         generics global cache for inflated methods (fixes 98% of the perf
16168         issue in bug #81806).
16169
16170 2007-07-23  Raja R Harinath  <rharinath@novell.com>
16171
16172         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
16173         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
16174         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
16175         return a MonoGenericInst containing (a copy) of those types.
16176         (mono_metadata_inflate_generic_inst): Update to changes.
16177         (mono_metadata_parse_generic_inst): Likewise.
16178         (mono_get_shared_generic_inst): Likewise.
16179         * reflection.c (mono_class_bind_generic_parameters): Likewise.
16180         (mono_reflection_bind_generic_method_parameters): Likewise.
16181         * metadata-internals.h: Likewise.
16182         * icall.c (free_generic_context): Kill.
16183         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
16184
16185         * reflection.c (reflection_methodbuilder_to_mono_method): Use
16186         mono_metadata_type_dup.
16187         * marshal.c (mono_mb_create_method): Likewise.
16188
16189         * metadata.c (mono_metadata_type_dup): Rename from
16190         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
16191         MonoImage.  Handle a few more cases, esp. when no mempool is given.
16192         * marshal.c, metadata-internals.h: Update to changes.
16193
16194 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
16195
16196         * class.c: fixed a small leak for array classes and removed warning.
16197
16198 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
16199
16200         * loader.c (mono_method_get_param_token): Make this work on generic methods.
16201         Return 0x8000000 for return parameters. Fixes #82161.
16202
16203 2007-07-21  Marek Habersack  <grendello@gmail.com>
16204
16205         * appdomain.c (get_shadow_assembly_location): append the current
16206         ticks value to the path. Avoids overwriting the same assemblies by
16207         several threads at the same time.
16208
16209 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
16210         and Raja R Harinath  <rharinath@novell.com>
16211
16212         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
16213         Simplify slightly.
16214         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
16215         property for testing if a method is a generic method definition.
16216
16217 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
16218
16219         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
16220
16221 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16222
16223         * verify.c: used function from private branch, reverted to the one in class.h 
16224
16225 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16226
16227         * verify.c: a typo slipped in and the code wont compile
16228
16229 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16230
16231         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
16232         disabled box instruction as it is doing the wrong thing
16233         improved stack dump messages, now it is easier to debug type related issues
16234
16235
16236 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
16237
16238         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
16239
16240 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16241
16242         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
16243         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
16244         grouped with class and valuetype. This change will simply 
16245         the code as it should be handled just like unmanaged pointers.
16246
16247 2007-07-19  Mark Probst  <mark.probst@gmail.com>
16248
16249         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
16250
16251 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16252
16253         * verify.c: several stack merge issues fixed, reference comparisons now
16254         check the type size. strict type check now works correctly.
16255         added more uses of IS_MANAGED_POINTER macro.
16256         fixed issues pointed by running the test suite against .net.
16257         
16258
16259 2007-07-19  Mark Probst  <mark.probst@gmail.com>
16260
16261         * class.c, loader.c, class-internals.h: Removed the
16262         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
16263         defines.
16264
16265         * icall.c: Better error checking in some internal reflection
16266         methods.
16267
16268 2007-07-18  William Holmes  <billholmes54@gmail.com>
16269
16270         * filewatcher.c : removed unused variable 'filename' in 
16271           ves_icall_System_IO_FSW_SupportsFSW
16272
16273 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
16274
16275         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
16276         obsolete, removed.
16277
16278 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
16279
16280         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
16281         
16282         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
16283
16284 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
16285
16286         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
16287         Implement generics support.
16288         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
16289
16290         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
16291         type_args and method_args arguments.
16292         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
16293         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
16294         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
16295
16296 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
16297
16298         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
16299           It adds a rootimage parameter to mono_reflection_get_type_internal,
16300           adds new function mono_reflection_get_type_with_rootimage and use
16301           the rootimage to resolve the types instead of the current image
16302
16303 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
16304
16305         * culture-info-table.h: Forgot to update after r78304.
16306
16307 2007-07-13  Raja R Harinath  <rharinath@novell.com>
16308
16309         * class.c (mono_class_is_open_constructed_type)
16310         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
16311
16312 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
16313
16314         * class.c (mono_bounded_array_class_get):  method fails if used with
16315         an incomplete TypeBuilder enum (no basetype field), fixed it by 
16316         avoiding calculating the size for such array as it cannot be instantiated.
16317         Fix bug #82015
16318
16319 2007-07-12  Raja R Harinath  <rharinath@novell.com>
16320
16321         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
16322         field.
16323         * metadata.c, reflection.c: Update to changes.
16324
16325 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
16326
16327         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
16328         mono_class_is_valid_enum, they are used to valide a enum when loading.
16329         * reflection.c: used new functions to throw TypeLoadException when and
16330         invalid enum is build with TypeBuilder. Fixes #82018
16331   
16332 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
16333
16334         * object.c: forgot commit of mono_class_setup_methods () to access
16335         iface->methods.
16336         * object-internals.h: added a few more handy fields to
16337         MonoIMTCheckItem.
16338
16339 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
16340
16341         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
16342         iface->methods.
16343
16344 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
16345
16346         * class-internals.h, object-internals.h, object.c: IMT-based
16347         interface invocation core from Massimiliano Mantione
16348         (massi@ximian.com) with a reworked arch-specific interface,
16349         bsearch implementation and a few bugfixes and memory savings by me.
16350
16351 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
16352
16353         * class.c (mono_class_create_from_typedef): mono would segfault if 
16354         an enum did not have a __value field. It now throws a TypeLoadException
16355         for such cases. Fix bug #82022
16356
16357 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
16358
16359         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
16360
16361 2007-07-09  Mark Probst  <mark.probst@gmail.com>
16362
16363         * class.c (mono_class_init): If a class is already inited but has
16364         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
16365
16366 2007-07-09  Mark Probst  <mark.probst@gmail.com>
16367
16368         * class.c: Properly handle the case of an unimplemented interface
16369         method.  Fixes: 81673.
16370
16371 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
16372
16373         * class-internals.h, object.c: cleanup patch from massi: use
16374         MonoVTable->interface_bitmap since the vtable interfaces offset array
16375         is going away.
16376
16377 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
16378
16379         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
16380         GetMDStreamVersion icall instead.
16381
16382 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
16383
16384         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
16385         not use mono_dl_build_path() with a full library name: makes
16386         fallbacks to libgaim and libfam work.
16387
16388 2007-07-06  William Holmes  <billholmes54@gmail.com>
16389
16390         * assembly.c: Added a continue statement in probe_for_partial_name when
16391          parse_assembly_directory_name fails.  Fixes : 82002
16392
16393 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
16394
16395         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
16396         and added a verification  for TYPEDBYREF.
16397         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
16398         make native int interchangeable with int32 and some small cleanup and formating.
16399         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
16400         handle byref of byref.
16401         * verify.c (push_local): handle byref of byref.
16402         * verify.c (do_binop): invalid mix of values is unverifiable
16403         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
16404         added visibility checks
16405         * verify.c (field related method): added visibility checks
16406         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
16407
16408 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
16409
16410         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
16411         string.
16412
16413 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
16414
16415         * profiler.c (mono_profiler_load): Fix an off-by-one error.
16416
16417         * marshal.c (emit_marshal_string): When returning a string from managed code,
16418         allways make a copy even for unicode strings. Fixes #81990.
16419
16420 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
16421
16422         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
16423         of byref generic inst types (bug #81997).
16424
16425 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
16426
16427         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
16428         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
16429
16430 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
16431
16432         * marshal.c (emit_marshal_string): Add support for unicode strings in
16433         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
16434
16435 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
16436
16437         * verify.c: field load/store are now verified, missing only access checks now
16438
16439 2007-06-28  Martin Baulig  <martin@ximian.com>
16440
16441         * mono-debug.c (mono_debug_debugger_version): New public variable.
16442
16443 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
16444
16445         * locales.c: When constructing DateTimeFormat or NumberFormat for
16446         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
16447         MonoCultureInfo contructed from the current locale is always
16448         read-only and has UseUserOverride set to true. All MonoCultureInfo
16449         instances returned for GetCultures have both IsReadOnly and
16450         UseUserOverride set to true. Fixes part of bug #81930.
16451
16452 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
16453
16454        * icall-def.h: Update System.__ComObject icalls
16455        * marshal.c: Avoid managed transition (and object creation)
16456        when looking up COM interface in RCW.
16457        * marshal.h: Ditto.
16458        
16459        Code is contributed under MIT/X11 license.
16460
16461 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
16462
16463         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
16464         to avoid crashes during assembly unloading.
16465
16466 2007-06-22  Raja R Harinath  <rharinath@novell.com>
16467
16468         Fix MethodInfo.IsGenericMethodDefinition
16469         * reflection.c (mono_reflection_bind_generic_method_parameters):
16470         Rearrange code to ensure we always uses a generic method definition.
16471         * class.c (mono_class_inflate_generic_method_full): Set
16472         'generic_container' field only for generic method definitions.
16473         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
16474         Use presense of 'generic_container' field as indication of being a
16475         generic method definition.
16476
16477 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
16478
16479         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16480
16481         * object-internals.h: Reflect changes in the layout of the managed Delegate
16482         class.
16483         
16484         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
16485         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
16486         runtime memory used by the dynamic method. Fixes #77146.
16487
16488 2007-06-21  Dick Porter  <dick@ximian.com>
16489
16490         * file-io.h: 
16491         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
16492         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
16493         81767.
16494
16495 2007-06-21  Raja R Harinath  <rharinath@novell.com>
16496
16497         * reflection.c (method_encode_methodspec): Add a tripwire.
16498         * class.c (inflate_generic_type): The fully open generic type is
16499         not the same as the generic type definition.
16500
16501 2007-06-21  Martin Baulig  <martin@ximian.com>
16502
16503         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
16504
16505         * mono-debug-debugger.h
16506         (MonoDebuggerBreakpointInfo): Removed.
16507         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
16508         (mono_debugger_remove_breakpoint): Likewise.
16509         (mono_debugger_breakpoint_callback): Likewise.
16510         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
16511
16512 2007-06-21  Raja R Harinath  <rharinath@novell.com>
16513
16514         * metadata.c (mono_metadata_lookup_generic_class): The fully open
16515         generic type is not the same as the generic type definition.
16516         * class.c (mono_generic_class_get_class): Likewise.
16517
16518 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
16519
16520         * icall.c: The second argument to 
16521         System.Reflection.MethodBase.GetMethodFromHandleInternalType
16522         is a MonoType not a MonoClass.
16523
16524 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
16525
16526         * verify.c: support for function pointers in the verifier
16527
16528 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
16529
16530         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
16531
16532 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
16533
16534         * assembly.c: removed Mono.Data.SqliteClient from the list of
16535         forward-compatible assemblies as it breaks the ABI (bug #81899).
16536
16537 2007-06-19  Raja R Harinath  <rharinath@novell.com>
16538
16539         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
16540         lookup/update with the loader lock.
16541         * reflection.c (mono_class_bind_generic_parameters): No need to
16542         protect mono_metadata_lookup_* with the loader lock.
16543         * class.c (inflate_generic_type): Likewise.
16544         
16545         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
16546         on a generic instantiated type.
16547
16548 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
16549
16550         *verify.c: produce meanfull error messages on verification error
16551         *verify.c: fixed some cases of verification errors reported as validation errors
16552         *pedump.c: fixed the error name array, now it shows validation errors properly
16553         *verify.h: fixed the contant that should be used for verification errors
16554
16555 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
16556
16557         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
16558         for bug #77596, 81858 and 80743 (generics data structures on domain
16559         unload).
16560
16561 2007-06-15  Raja R Harinath  <rharinath@novell.com>
16562
16563         Avoid allocating 'MonoGenericContext' on the heap.
16564         * class-internals (_MonoMethodInflated::context): Make field
16565         inline, not a pointer.
16566         * loader.c (method_from_methodspec): Allocate 'new_context' on the
16567         stack.  Use the context embedded within the inflated method as the
16568         hash key, rather than 'new_context'.
16569         * class.c (inflate_generic_context): Simplify.  Return a struct
16570         rather than allocating on the heap.
16571         (mono_class_inflate_generic_method_full): Update to changes.  Now,
16572         doesn't salt away a copy of the context -- simplifying the
16573         lifetime rules of a 'MonoGenericContext *'.
16574         (mono_method_get_context): Return pointer to embedded context.
16575         (setup_generic_array_ifaces): Allocate temporary context on stack.
16576         * reflection.c (inflate_mono_method): Likewise.
16577         (mono_reflection_bind_generic_method_parameters): Likewise.
16578         Use the context embedded within the inflated method as the hash key.
16579
16580         Avoid a source of allocation of 'MonoGenericContext'.
16581         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
16582         and 'cached_context' fields into embedded 'MonoGenericContext' field.
16583         * class.c: Update to changes.
16584         (mono_generic_class_get_context): Simplify drastically.  Now just
16585         returns a pointer to the field.
16586         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
16587         argument as a const pointer.
16588         (mono_metadata_generic_context_equal): Likewise.
16589         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
16590         Update to changes.
16591
16592 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
16593
16594         * verify.c improved the handling of brtrue/brfalse, factored out common code
16595
16596 2007-06-14  Raja R Harinath  <rharinath@novell.com>
16597
16598         Kill MonoGenericMethod.
16599         * class-internals.h (MonoGenericContext::method_inst): Rename from
16600         'gmethod' and convert to a MonoGenericInst.
16601         (MonoGenericMethod): Remove.
16602         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
16603         * loader.c (method_from_methodspec): Update to changes.  Use a
16604         MonoGenericContext as the key to the hashtable.
16605         * metadata.c (mono_metadata_generic_context_equal): Rename from 
16606         'mono_metadata_generic_method_equal' and take MonoGenericContext.
16607         (mono_metadata_generic_context_hash): Likewise from
16608         'mono_metadata_generic_method_hash'.  Change hash function.
16609         (mono_metadata_load_generic_params): Update to changes.
16610         (mono_get_shared_generic_method): Remove.
16611         * metadata-internals.h (mono_get_shared_generic_method): Remove.
16612         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
16613         (inflate_generic_context): Likewise.
16614         (mono_class_inflate_generic_method_full): Likewise.
16615         (setup_generic_array_ifaces): Likewise.
16616         (mono_class_create_from_typespec): Likewise.
16617         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
16618         (method_encode_methodspec): Update callsite.
16619         (reflection_methodbuilder_to_mono_method): Update to changes.
16620         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
16621         MonoGenericContext as the key to the hashtable.
16622         (inflate_mono_method): Update to changes.
16623
16624         * class-internals.h (MonoGenericMethod::container): Remove.
16625         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
16626
16627 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
16628
16629         * profiler-private.h, profiler.c, profiler.h: added API to profile
16630         exception events.
16631
16632 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
16633
16634         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
16635
16636 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
16637
16638         * verify.c: method invocation is now validated, now we verify parameter types on stack.
16639         Fixed overflow and underflow not aborting the verification process.
16640
16641 2007-06-13  Mark Probst  <mark.probst@gmail.com>
16642
16643         * class-internals.h (MonoStats): Added stats entries for dynamic
16644         code allocations.
16645
16646 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
16647
16648         * loader.c (mono_free_method): Free header->locals and header->clauses.
16649
16650         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
16651         dynamic case.
16652
16653         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
16654
16655         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
16656
16657 2007-06-12  Raja R Harinath  <rharinath@novell.com>
16658
16659         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
16660         the tables.
16661
16662 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16663
16664         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
16665
16666 2007-06-11  Raja R Harinath  <harinath@gmail.com>
16667
16668         MonoGenericMethod on a diet
16669         * class-internals.h (_MonoMethodInflated::reflection_info): Move
16670         here ...
16671         (_MonoGenericMethod::reflection_info): ... from here.
16672         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
16673         Update to changes.
16674         * reflection.c (inflate_mono_method): Likewise.
16675         (mono_reflection_bind_generic_method_parameters): Likewise.
16676
16677 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16678
16679         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
16680         *verify.c: factored long ldarg forms to share code with short forms
16681
16682 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16683
16684         *verify.c: fixed code formating factored some duplicate code
16685         into a new function
16686
16687         *verify.h: fixed binary incompatibility introduced earlier
16688
16689         *pedump.c: fixed formating
16690
16691 2007-06-11  Raja R Harinath  <harinath@gmail.com>
16692
16693         Fix assertion when disassembling Mono.C5.dll
16694         * loader.c (method_from_methodspec): Avoid inflating a method
16695         twice with the same context.  If the methodref is inflated, use
16696         the declaring method instead.
16697
16698         * class.c (mono_class_from_generic_parameter): Fix case similar to
16699         bug #81830 handled below, but for method containers.
16700
16701 2007-06-10  Raja R Harinath  <harinath@gmail.com>
16702
16703         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
16704         get_shared_generic_class.  Directly inflate the instance.
16705         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
16706         (inflate_generic_class): Delete.
16707         (get_shared_generic_class): Delete.  Move setting of
16708         'cached_class' and 'cached_context' ...
16709         * metadata.c (mono_metadata_lookup_generic_class): ... here.
16710
16711         * metadata.c (mono_metadata_lookup_generic_class): Change
16712         signature to take the components of a MonoGenericClass rather than
16713         an allocated MonoGenericClass.  Change semantics to be intern-like.
16714         * reflection.c (mono_class_bind_generic_parameters): Update to
16715         changes.  Make locking region tighter.
16716         * class.c (inflate_generic_class): Update to changes.
16717         (get_shared_generic_class): Likewise.
16718         * metadata-internals.h: Likewise.
16719
16720         * reflection.c (mono_class_bind_generic_parameters): Take and
16721         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
16722         (mono_reflection_bind_generic_parameters): Use
16723         'mono_class_bind_generic_parameters' rather than duplicate the code.
16724         * class.c (mono_bounded_array_class_get): Update to changes.
16725         * object-internals.h: Likewise.
16726
16727         * reflection.c (mono_class_bind_generic_parameters): Only support
16728         parameterizing generic type definitions.  Remove support for other
16729         open types.
16730
16731 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
16732
16733         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
16734
16735         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
16736         in the dynamic case.
16737
16738 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
16739
16740         * threads.c: When cleaning up thread, reset the Background bit.
16741         Fixes bug #81720.
16742
16743 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
16744
16745        * metadata.c: Move variable declarations to top of scope.
16746        * verify.c: Move variable declarations to top of scope.
16747
16748        Code is contributed under MIT/X11 license.
16749
16750 2007-06-08  Raja R Harinath  <rharinath@novell.com>
16751
16752         * reflection.c (mono_class_bind_generic_parameters): Replace
16753         open-coded loop with mono_metadata_inflate_generic_inst.
16754
16755         * class.c (get_shared_generic_class): Don't call
16756         mono_get_shared_generic_inst.  Use the container's own
16757         'class_inst'.
16758
16759         * metadata.c (mono_metadata_load_generic_params): Move
16760         initialization of 'context' field here from ...
16761         * class.c (mono_class_create_from_typedef): ... here, and ...
16762         * loader.c (mono_get_method_from_token): ... here.
16763
16764         * class.c (get_shared_generic_class): Rename from
16765         mono_get_shared_generic_class and make static.
16766         (mono_get_shared_generic_inst): Move to metadata.c.
16767         * loader.c (mono_get_shared_generic_method): Likewise.
16768         * class-internals.h, metadata-internals.h: Update to changes.
16769
16770         Fix #81830
16771         * class.c (mono_class_from_generic_parameter): Don't assume a
16772         generic container owner exists.  Generic containers from monodis
16773         don't have any.
16774
16775 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
16776
16777         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
16778         * verify.h: new typedefs to returns the non-verifiable status
16779         * verify.c: initial implementation of generics, stack merging and object compatibility check
16780
16781 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16782
16783         * class.c, image.c, class-internals.h (MonoImage): class_cache is
16784         a MonoInternalHashTable again (fixed bug in internal hash table
16785         code).
16786
16787 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16788
16789         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
16790         MonoInternalHashTable again (fixed bug in internal hash table
16791         code).
16792
16793 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16794
16795         * class.c, image.c, class-internals.h, domain.c,
16796         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
16797         changes.  Have to figure out what makes them break the SWF
16798         regression.
16799
16800 2007-06-04  Mark Probst  <mark.probst@gmail.com>
16801
16802         * class.c, image.c, class-internals.h (MonoImage): class_cache is
16803         a MonoInternalHashTable now.
16804
16805 2007-06-04  Mark Probst  <mark.probst@gmail.com>
16806
16807         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
16808         MonoInternalHashTable now.
16809
16810 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
16811
16812         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
16813         invoke_impl code.
16814
16815         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
16816
16817         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
16818         dependent trampoline.
16819
16820         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16821
16822         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
16823
16824 2007-05-29  Robert Jordan  <robertj@gmx.net>
16825
16826         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
16827
16828 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
16829
16830         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
16831
16832 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
16833
16834        * marshal.c: Fix interface lookup loops for
16835        cominterop_get_com_slot_for_method and 
16836        cominterop_get_method_interface. Only need to lookup
16837        if type is a class, else use interface type method is on.
16838
16839        Code is contributed under MIT/X11 license.
16840
16841 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
16842
16843         * reflection.c: HasSecurity can be present even if no specially 
16844         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
16845         SecurityAttribute). Fix CAS regression tests on buildbot.
16846
16847 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
16848
16849        * appdomain.c: Add configure checks for header files.
16850        * image.c: Add configure checks for header files.
16851        * file-io.c: Add configure checks for header files.
16852        * debug-mono-symfile.c: Add configure checks for header files.
16853        * threadpool.c: Add configure checks for header files.
16854        * console-io.c: Add configure checks for header files.
16855        * profiler.c: Add configure checks for header files.
16856        * rawbuffer.c: Add configure checks for header files.
16857        * icall.c: Add configure checks for header files.
16858        * rand.c: Add configure checks for header files.
16859        * socket-io.c: Add configure checks for header files.
16860
16861        Code is contributed under MIT/X11 license.
16862
16863 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
16864
16865         * reflection.c (mono_custom_attrs_from_builders): Remove the 
16866         assertion as it breaks the build.
16867         
16868         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
16869
16870         * reflection.c (lookup_custom_attr): Make a copy here too.
16871
16872         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
16873         dynamic images.
16874
16875         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
16876         images.
16877
16878         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
16879         info.
16880
16881 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
16882
16883         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
16884         (load_cattr_value): Ditto.
16885
16886 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
16887
16888         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
16889
16890 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
16891
16892         * threads.c: In "start_wrapper", set apartment_state to MTA if
16893         apartment_state is Unknown and we're running on 2.0 profile or
16894         higher.
16895         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
16896         to main method, then set apartment_state to Unknown on 1.0 profile,
16897         and MTA on 2.0 profile.
16898
16899 2007-05-16  Jb Evain  <jb@nurv.fr>
16900
16901         * class-internals.h (MonoDefaults): Add an attribute_class and
16902           customattribute_data_class.
16903         * domain.c (mono_init_internal): Populate them.
16904         * reflection.c: Use them to remove duplicates. Make a vew
16905         MonoClass variables `static'.
16906
16907 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
16908
16909         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
16910         step in implementing IMT, so that all isinst checks now can go
16911         through the bitmap.
16912         This was needed because vtables for TransparentProxy need to look
16913         like the vtable of the "target" class, so they need to point to
16914         its interface bitmap directly.
16915
16916         * object.c: inside "mono_class_create_runtime_vtable" and
16917         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
16918
16919 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
16920
16921         * object-internals.h
16922           culture-info.h : added territory field in MonoCulture and
16923           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
16924         * locales.c : fill territory field above too.
16925         * culture-info-table.h : regenerated.
16926
16927 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
16928
16929         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
16930         Fixes #81599.
16931
16932 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
16933
16934         * object.c: Always initialize apartment, even if 
16935         there is no custom attributes on entry point.
16936         
16937         Code is contributed under MIT/X11 license.
16938
16939 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
16940
16941         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
16942         * metadata.c: If no encoding is set, check for unicode
16943         on class.
16944         
16945         Code is contributed under MIT/X11 license.
16946
16947 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
16948
16949         * threads.c: Handle if mono_thread_current returns NULL 
16950         
16951         Code is contributed under MIT/X11 license.
16952
16953 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
16954
16955         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
16956         in start_wrapper. Added mono_thread_init_apartment_state and
16957         mono_thread_cleanup_apartment_state.
16958         * object.c: Initialize thread apartment state on main thread
16959         by checking for STAThreadAttribute on entry point.
16960         * object-internals.h: Add apartment_state field to MonoThread.
16961         * threads-types.h: Add unmanaged definition of 
16962         System.Threading.ApartmentState, MonoThreadApartmentState.
16963         
16964         Code is contributed under MIT/X11 license.
16965         
16966 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
16967
16968         * class.c: Fix windows build.
16969         * class-internals.h: Fix windows build.
16970         
16971         Code is contributed under MIT/X11 license.
16972
16973 2007-05-08  Robert Jordan  <robertj@gmx.net>
16974
16975         * process.c (CreateProcess_internal):
16976         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
16977         .CreateNoWindow was specified. Fixes #81496.
16978
16979 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
16980
16981         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
16982         step in implementing IMT, replaced it with two compact arrays
16983         (interfaces_packed and interface_offsets_packed) and a bitmap that
16984         is used for isinst checks (interface_bitmap).
16985
16986         * class.c: (compare_interface_ids): compare function to pass to
16987         bsearch when looking for an interface with a given id.
16988         (mono_class_interface_offset): reimplemented using bsearch on
16989         interfaces_packed, getting the offset from interface_offsets_packed.
16990         (print_implemented_interfaces): utility debugging function.
16991         (setup_interface_offsets): reworked to initialize interfaces_packed,
16992         interface_offsets_packed and interface_bitmap.
16993
16994         * object.c: replaced all accesses to "MonoClass.interface_offsets"
16995         with uses of interfaces_packed and interface_offsets_packed.
16996
16997 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
16998
16999         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
17000         mono_class_interface_offset prototype to wrap all accesses to
17001         "MonoClass.interface_offsets".
17002
17003         * class.c: Implemented mono_class_interface_offset, and wrapped all
17004         accesses to "MonoClass.interface_offsets".
17005
17006         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
17007         "MonoClass.interface_offsets".
17008
17009 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
17010
17011         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
17012         GetMethodFromHandle overloads (bug #78637).
17013
17014 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
17015
17016         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
17017         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
17018
17019 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
17020
17021         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
17022         #81498.
17023
17024         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
17025         gracefully.
17026         (mono_custom_attrs_from_index): Ditto.
17027
17028         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
17029         Fixes #81501.
17030
17031 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
17032
17033         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
17034         is now allocated from a mempool.
17035
17036 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
17037
17038         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
17039         caller holds threads_lock, leading to deadlocks. Fixes #81476.
17040
17041 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
17042
17043         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
17044         mono_loader_clear_error () too late. Fixes #81463.
17045
17046 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
17047
17048         * culture-info-table.h : regenerated.
17049
17050 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
17051
17052         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
17053         is missing.
17054
17055 2007-04-25  Dick Porter  <dick@ximian.com>
17056
17057         * Makefile.am: Put the mingw enforced-optimisation back into the
17058         PLATFORM_WIN32 section.
17059
17060 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
17061
17062         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
17063         patch.
17064
17065         * image.c (mono_image_load_module): New API function to load a module reference.
17066
17067         * image.c (load_modules): Load modules lazily. Fixes #80812.
17068
17069         * class.c (mono_class_from_typeref): Use mono_image_load_module.
17070         
17071         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
17072
17073         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
17074         to mono_image_load_module_dynamic.
17075
17076 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
17077
17078         * marshal.c: Fix calling convention for CCW on non-windows
17079         platforms. STDCALL on windows, CDECL everywhere else to work 
17080         with XPCOM and MainWin COM.
17081         
17082         Code is contributed under MIT/X11 license.
17083
17084 2007-04-23  Martin Baulig  <martin@ximian.com>
17085
17086         Fix #80969.
17087
17088         * loader.c
17089         (method_from_memberref): Added `gboolean *used_context' argument.
17090         (mono_get_method_from_token): Likewise.
17091         (mono_get_method_full): Don't insert the method in the cache when
17092         `used_context' is true.
17093
17094 2007-04-23  Raja R Harinath  <rharinath@novell.com>
17095
17096         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
17097
17098         * reflection.c (mono_reflection_bind_generic_parameters): Don't
17099         create new MonoTypes for returned types.
17100         * class.c (mono_generic_class_get_class): Export mono-internal.
17101         * class-internals.h: Update to changes.
17102
17103 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
17104
17105         * threadpool.c, threadpool.h, icall-def.h: patch from
17106         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
17107
17108 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
17109
17110         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
17111         
17112         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
17113
17114         * threads.c (mono_thread_get_stack_bounds): New helper function.
17115
17116         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
17117         Correctly compute stack bounds when attaching. Fixes #81394.
17118
17119 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
17120
17121         * reflection.c: fix handling of doubles in custom attributes
17122         for the arm-fpa format (bug #81368).
17123
17124 2007-04-18  Raja R Harinath  <rharinath@novell.com>
17125
17126         * reflection.c (assembly_add_win32_resources): Mildly relax an
17127         bounds check to let the end pointer point just past the end of the
17128         allocated buffer.  (may fix #81384)
17129
17130 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
17131
17132         * culture-info-table.h : regenerated.
17133
17134 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
17135
17136         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
17137         the thread is aborted early.
17138
17139 2007-04-05  Dick Porter  <dick@ximian.com>
17140
17141         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
17142         FindFirstFile()/FindNextFile() to find entries.  This lets the
17143         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
17144         81038.
17145
17146         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
17147         the parameters of
17148         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
17149
17150 2007-04-04  Martin Baulig  <martin@ximian.com>
17151
17152         * debug-helpers.c
17153         (mono_method_desc_full_match): Add support for nested classes.
17154
17155 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
17156
17157         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
17158
17159 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
17160
17161         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
17162         waiting for too many threads.
17163
17164 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
17165
17166         * environment.c: Fix return value check on uname so we can get the 
17167         executing version on Solaris operating systems.
17168
17169 2007-03-28  Jb Evain  <jbevain@gmail.com>
17170
17171         * class.c (mono_type_get_name_recurse): Complete the
17172         fix for the creation of assembly qualified names for
17173         pointer types. Fixes #81208.
17174
17175 2007-03-27  Dick Porter  <dick@ximian.com>
17176
17177         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
17178         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
17179         changed.
17180
17181         * threads.c
17182         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
17183         the value of ReleaseMutex().
17184
17185 2007-03-27  Dick Porter  <dick@ximian.com>
17186
17187         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
17188         in little-endian order, not network endian, so must be converted
17189         to host endian here.  Fixes bug 80593.
17190
17191 2007-03-22  Jb Evain  <jbevain@gmail.com>
17192
17193         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
17194         qualified names for pointer types. Fixes #81208.
17195
17196 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
17197
17198         * marshal.c: Add support for PreserveSigAttribute. 
17199         
17200         Code is contributed under MIT/X11 license.
17201
17202 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
17203
17204         * process.c: Fix endianness issues. Fixes #81126.
17205
17206         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
17207         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
17208
17209         * image.c (mono_image_lookup_resource): Make this work on big-endian
17210         machines.Change API contract so the caller needs to free the return value.
17211         
17212         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
17213         API change.
17214         
17215 2007-03-14  Martin Baulig  <martin@ximian.com>
17216
17217         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
17218         mono_type_get_desc() as well.
17219
17220 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
17221
17222         * icall.c:  Fix environ access in VS.  
17223         
17224 2007-03-13  Alp Toker  <alp@atoker.com>
17225
17226         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
17227         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
17228         #63841.
17229
17230 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
17231
17232         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
17233         circular references among dynamic methods. Fixes #81091.
17234
17235         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
17236
17237 2007-03-09  Martin Baulig  <martin@ximian.com>
17238
17239         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
17240
17241 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
17242
17243         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
17244         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
17245         
17246         Code is contributed under MIT/X11 license.
17247         
17248 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
17249
17250         * loader.c: Reapply patch for bug #79424.
17251
17252 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
17253
17254         * metadata.c (mono_type_to_unmanaged): Only convert object to
17255         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
17256
17257 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
17258
17259         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
17260         (and incorrectly set) is_reference field from MonoGenericInst.
17261
17262 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
17263
17264         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
17265         a little earlier.
17266
17267         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
17268
17269         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
17270
17271 2007-03-05  Miguel de Icaza  <miguel@novell.com>
17272
17273         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
17274         FileOptions.1 value to mean "temporary", map that to
17275         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
17276
17277         Fixes 80688
17278
17279 2007-03-03  Marek Habersack  <mhabersack@novell.com>
17280
17281         * appdomain.c: implement MS .Net style shadow copying. Copies of
17282         the assemblies are made in a subdirectory of the dynamic base
17283         directory, the assembly names are preserved.
17284         Copy .mdb and .config files along with the assemblies being shadowed.
17285
17286 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
17287
17288         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
17289         (emit_marshal_handleref): Ditto.
17290
17291         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
17292         on Visual C++. Fixes #80671.
17293
17294 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
17295
17296         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
17297         for clone operations.
17298
17299 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
17300
17301         * marshal.c: Fix warnings.
17302
17303 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
17304
17305         * loader.c: allow case-insensitive matching of the dll name
17306         in dllmap handling when prefixed with "i:".
17307
17308 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
17309
17310         * threads.c: Fix #ifdef for dummy_apc function for VS.
17311
17312 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
17313
17314         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
17315
17316 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
17317         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
17318         giving precedence to the methods with a fully qualified name
17319         (InterfaceName.MethodName) when building the interface sections
17320         of the vtable.
17321
17322 2007-02-16  Dick Porter  <dick@ximian.com>
17323
17324         * threadpool.c (append_job): Fix fast-path array handling, so it's
17325         less likely the array will grow exponentially when the load is
17326         heavy.
17327
17328 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
17329
17330         * metadata-internals.h, loader.c: fix dllmap lookup order
17331         for non-function maps, too, and prepare for fallback code.
17332
17333 2007-02-12  Robert Jordan  <robertj@gmx.net>
17334
17335         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
17336         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
17337         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
17338         GlobalFree. Fixes a part of bug #77075.
17339
17340 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
17341
17342         * loader.c: implemented typedef parent in field memberref.
17343
17344 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
17345
17346         * marshal.c: Fix warnings and remember to call Release on
17347         IUnknown of RCW.
17348         
17349         Code is contributed under MIT/X11 license.
17350
17351 2007-02-10  Miguel de Icaza  <miguel@novell.com>
17352
17353         * class-internals.h: Add MonoHandleRef definition, and
17354         handleref_class to mono_defaults. 
17355
17356         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
17357         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
17358
17359         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
17360         (do nothing on this stage)
17361         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
17362         (emit_marshal_handleref): New method, used for argument handling
17363         of HandleRefs. 
17364
17365 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
17366
17367         * class.c (mono_class_setup_parent): Lazily init com types.
17368         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
17369         init com types.
17370         * object.c (mono_remote_class_vtable): Lazily init com types.
17371         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
17372         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
17373         * domain-internals.h: Expose mono_init_com_types.
17374         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
17375         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
17376         Add support for COM Callable Wrapper marshalling.
17377         * marshal.h: Add icall definitions.
17378         * gc.c: Handle freeing of CCWs in finalizer code.
17379         
17380         Code is contributed under MIT/X11 license.
17381
17382 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
17383
17384         * reflection.c: changed all the signature encoding code to use
17385         a variable-sized buffer.
17386
17387 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
17388
17389         * marshal.c: locking fixes: never take the loader lock
17390         or other runtime locks when holding the marshal lock
17391         (fixes bug#80664).
17392
17393 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
17394
17395         * marshal.c: make the delegate function pointer mapping
17396         work for the moving GC.
17397
17398 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
17399
17400         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
17401         for bug #80618.
17402
17403 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
17404
17405         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
17406         gmodule.
17407
17408 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
17409
17410         * threadpool.c: made the code moving-GC safe.
17411
17412 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
17413
17414         * assembly.c, boehm-gc.c, class-internals.h, class.c,
17415         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
17416         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
17417         warning cleanup.
17418         * reflection.c: warning cleanup, some threading and moving GC fixes.
17419
17420 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
17421
17422         * class.c, loader.c: create the needed Set/Get/Address array methods
17423         as well as the .ctors in mono_class_init (), fixes bug #80567.
17424
17425 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
17426
17427         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
17428         we doesn't decrease its alignment. Should fix the sparc build.
17429
17430 2007-01-24  Dick Porter  <dick@ximian.com>
17431
17432         * socket-io.c
17433         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
17434         Create the returned object if we need to ignore an unsupported
17435         socket option.  Fixes a segfault reported by Atsushi.
17436
17437 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
17438
17439         * class.c, object.c: restrict GC-tracked fields to
17440         UIntPtr fields used inside corlib, so we provide better
17441         type info to the GC and also allow broken packing as in
17442         bug #80580.
17443
17444 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
17445
17446         * sgen-gc.c: removed duplicated function.
17447
17448 2007-01-19  Miguel de Icaza  <miguel@novell.com>
17449
17450         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
17451         value that means that the value is not supported, but that we
17452         should not return a failure, but instead report this as a
17453         successful operation.
17454
17455 2007-01-19  Raja R Harinath  <rharinath@novell.com>
17456
17457         Fix tests/bug79956.2.il
17458         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
17459         (mono_generic_class_get_class): If the generic definition in an
17460         enum, copy over other fields related to it.
17461
17462 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
17463
17464         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
17465         genericinst enums (bug #79215).
17466
17467 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
17468         * class.c: Fix bug 80307.
17469
17470 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
17471
17472         * image.c: if the file table is not present, try to load
17473         all the modules, since we don't have info about them
17474         having or not metadata (bug #80517).
17475         * assembly.c: allow mono_assembly_load_references () to
17476         work for netmodules.
17477
17478 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
17479
17480         * image.c, metadata-internals.h, object.c: execute module
17481         cctors when running on the 2 runtime if present (bug #80487).
17482
17483 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
17484
17485         * icall.c: optimized InitializeArray() on bigendian.
17486
17487 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
17488
17489         * icall.c: fix for the broken ARM FPA double format.
17490
17491 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
17492
17493         * icall.c: handle endian issues for r4 and r8 types, too, in
17494         the InitializeArray() icall.
17495
17496 2007-01-15  Miguel de Icaza  <miguel@novell.com>
17497
17498         * loader.c (mono_loader_error_prepare_exception): Clear the error
17499         once we have extracted the information from it, do this before we
17500         call into the JIT's class loading mechanisms.
17501
17502         * object.c (mono_class_create_runtime_vtable): Do not clear the
17503         loader error before calling mono_class_get_exception_for_failure
17504         as the loader error is needed inside
17505         mono_class_get_exception_for_failure to throw the error (thinko).
17506
17507         Fixes #80521
17508         
17509 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
17510
17511         * reflection.c: align fields rva data so it's faster to load at
17512         runtime.
17513
17514 2007-01-12  Raja R Harinath  <rharinath@novell.com>
17515
17516         Prepare to simplify GenericMethod handling.
17517         * class-internals.h (mono_method_get_context): New accessor function.
17518         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
17519         rather than directly accessing '->context' field.
17520
17521         * class-internals.h (_MonoGenericParam.method): Move ...
17522         (_MonoGenericContainer): ... here.  Add into union with klass field.
17523         * class.c, icall.c, loader.c, metadata.c, reflection.c:
17524         Update to changes.
17525
17526 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
17527
17528         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
17529         the wrapper type enum and reduce relocations.
17530
17531 2007-01-12  Raja R Harinath  <rharinath@novell.com>
17532
17533         * reflection.c (inflate_mono_method): Reuse method instantiation
17534         from the generic method, if available.
17535
17536 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17537
17538         * marshal.c (emit_marshal_variant): Fix conv_arg
17539         type in last commit, based on whether parameter is byref.
17540         
17541 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17542
17543         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
17544         marshalling.
17545         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
17546         MONO_TYPE_OBJECT back for VARIANT support.
17547
17548 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17549
17550         * marshal.c, marshal.h, icall-def.h: Implement 
17551         Marshal.ReAllocCoTaskMem.
17552
17553 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
17554
17555         * marshal.c: memory retention fixes: use the proper
17556         image cache for runtime_invoke method lookups.
17557
17558 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
17559
17560         * mempool.c: added code to help debug mempool allocations.
17561
17562 2007-01-11  Dick Porter  <dick@ximian.com>
17563
17564         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
17565         support (experimenting with faking it with IP_MTU_DISCOVER for
17566         systems that don't have IP_DONTFRAGMENT.)
17567         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
17568         icall.
17569
17570         * icall-def.h: new System.Net.Sockets.Disconnect icall.
17571
17572         * socket-io.h: Add new fields to MonoSocketAsyncResult
17573         corresponding to the new ones in Socket.cs.
17574
17575 2007-01-11  Raja R Harinath  <rharinath@novell.com>
17576
17577         Fix IronPython regression mentioned in #80249
17578         * metadata.c (do_mono_metadata_parse_generic_class): Clear
17579         'cached_context' field, since it may have been initialized as a
17580         side-effect of metadata parsing.
17581
17582         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
17583         (_MonoGenericClass.cached_class): Move here and rename from lone
17584         remaining field of ...
17585         (_MonoInflatedGenericClass): ... this.  Remove.
17586         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
17587         to changes.
17588
17589         Fix mcs/tests/test-128.cs regression.
17590         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
17591         2007-01-10 change below.
17592         [MONO_TYPE_OBJECT]: Recurse into array case.
17593
17594 2007-01-11  Raja R Harinath  <harinath@gmail.com>
17595
17596         * class-internals.h (mono_get_inflated_generic_class): Remove.
17597         * class.c (mono_get_inflated_generic_class): Remove.
17598         (mono_generic_class_get_class): Rename from
17599         mono_class_create_generic.
17600         (mono_class_from_mono_type) [GENERICINST]: Use it.
17601         * reflection.c, metadata.c: Update to changes.  Use
17602         'mono_class_from_mono_type'.
17603
17604 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
17605
17606         * reflection.c: use passed type when encoding an array element
17607         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
17608
17609 2007-01-09  Robert Jordan  <robertj@gmx.net>
17610
17611         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
17612         result arguments (someDelegate.EndInvoke (unrelatedAres)).
17613         Fixes bug #80392.
17614
17615 2007-01-09  Raja R Harinath  <rharinath@novell.com>
17616
17617         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
17618
17619         * object.c (set_value): Avoid aliasing between type->data.klass
17620         and type->data.generic_class.
17621
17622         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
17623
17624 2007-01-08  Raja R Harinath  <rharinath@novell.com>
17625
17626         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
17627         between type->data.klass and type->data.generic_class.
17628
17629 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
17630
17631         * marshal.c: In MS.NET, StringBuilder objects are not copied by
17632         value in out parameters.
17633
17634 2007-01-08  Raja R Harinath  <rharinath@novell.com>
17635
17636         Simplify invariant for MonoGenericClass::klass field.
17637         * class.c (mono_class_create_generic): Verify 'klass' is null.
17638         * metadata.c (do_mono_metadata_parse_generic_class): Don't
17639         initialize 'klass' field.
17640
17641 2007-01-05  Raja R Harinath  <rharinath@novell.com>
17642
17643         Ongoing work to avoid redundant data and simplify invariants.
17644         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
17645         'generic_class', and change type to a GenericInst.
17646         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
17647         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
17648
17649 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
17650
17651         * class.c : skip io-layer under PLATFORM_WIN32.
17652
17653 2007-01-03  Tor Lillqvist  <tml@novell.com>
17654
17655         Fix #80305: In a bundled executable, look in the bundled exe
17656         assembly to determine the runtime version. Add the possibility to
17657         bundle also the machine.config file.
17658         
17659         * assembly.c (mono_assembly_open_from_bundle): Make
17660         non-static. Allow being called even if we have no bundled
17661         assemblies, and return NULL right away in that case.
17662
17663         * domain-internals.h: Declare mono_assembly_open_from_bundle()
17664         here.
17665
17666         * domain.c (app_config_parse): Take an assembly exe file name as
17667         parameter instead of a config file name. Check for a bundled
17668         config file for that assembly by calling
17669         mono_config_string_for_assembly_file() (see below) before looking
17670         for one in the file system.
17671         (get_runtimes_from_exe): Corrsponding change to call of
17672         app_config_parse().
17673         (get_runtimes_from_exe): Check for bundled assembly exe file first
17674         by calling mono_assembly_open_from_bundle(). If no bundled
17675         assembly exe file is found, call mono_image_open() as before to
17676         look it up in the file system.
17677
17678         * mono-config.c: Add variable bundled_machinec_onfig.
17679         (mono_config_string_for_assembly_file): New function.
17680         (mono_config_for_assembly): Move code snippet that looks for a
17681         bundled assembly .config file into the above new function. Call
17682         it.
17683         (mono_register_machine_config, mono_get_machine_config): New
17684         functions to set and retrieve
17685
17686         * assembly.h: Declare mono_register_machine_config().
17687
17688         * mono-config.h: Declare mono_get_machine_config() and
17689         mono_config_string_for_assembly_file().
17690
17691         * icall.c: No declaration of environ necessary on Win32. It is
17692         declared (as a macro expanding to a function call) in stdlib.h.
17693         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
17694         New internal mono function. Returns the value of
17695         mono_get_machine_config() as a Mono string.
17696
17697         * icall-def.h: Add get_bundled_machine_config().
17698
17699 2007-01-04  Raja R Harinath  <rharinath@novell.com>
17700
17701         Remove redundant field
17702         * class-internals.h (_MonoGenericContext.container): Remove field.
17703         * loader.c (mono_method_get_signature_full): Don't parse a
17704         "container" for a signature parse when the signature is inflated
17705         immediately.
17706         (method_from_methodspec): Likewise, for a generic_inst.
17707         * class.c, metadata.c, reflection.c: Update to changes.
17708
17709 2006-01-04  Raja R Harinath  <rharinath@novell.com>
17710
17711         * class-internals.h (_MonoGenericClass): Rename 'context' field to
17712         'cached_context', and change semantics -- it starts off NULL, and
17713         is initialized on demand.
17714         * class.c (mono_generic_class_get_context): New accessor to
17715         replace 'context' field accesses.
17716         (mono_class_get_context): New helper.
17717         (*): Update to changes.
17718         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
17719
17720 2007-01-03  Miguel de Icaza  <miguel@novell.com>
17721
17722         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
17723         before the memcpy.   Fixes Marshal2 regression.
17724
17725 2007-01-02  Jb Evain  <jbevain@gmail.com>
17726
17727         * blob.h: add a MONO_TYPE_ENUM definition
17728         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
17729         fix the encoding of arrays of enums in custom attributes.
17730
17731         Fixes #79666.
17732
17733 2007-01-01  Miguel de Icaza  <miguel@novell.com>
17734
17735         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
17736         string is null terminated, but only cut the string short if it
17737         overflows the buffer.   
17738         
17739         (mono_string_to_byvalstr): Also fix this routine.   The code here
17740         was not properly terminating a string (it was only terminated
17741         because of the previous catch-all memset). 
17742
17743         I left the memset, because I do not know if applications expect
17744         the runtime to clear this region. 
17745
17746         Fixes #79944.
17747
17748         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
17749         Clear the error before returning to unmanaged code to prevent the
17750         runtime from being confused later on (fixes  80420).
17751         (ves_icall_type_from_name): Always call mono_loader_clear_error
17752         after parsing a type that could have failed.
17753         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
17754
17755         * loader.c (mono_loader_clear_error): Fix indentation.
17756
17757 2006-12-28  Martin Baulig  <martin@ximian.com>
17758
17759         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
17760
17761 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17762
17763         * reflection.c: patch from Rolf Bjarne Kvinge to fix
17764         getting a token for an EnumBuilder.
17765
17766 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
17767
17768         * reflection.c: be more careful in case resource generation
17769         fails to create the data array.
17770
17771 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
17772
17773         * sgen-gc.c: write barrier for clone and fix unregister handles.
17774
17775 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17776
17777         * reflection.c: some fixes needed in the generics code for the moving GC.
17778
17779 2006-12-22  Robert Jordan  <robertj@gmx.net>
17780
17781         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
17782         account. Fixes bug #80299.
17783
17784 2006-12-21  Raja R Harinath  <rharinath@novell.com>
17785
17786         Fix WaitHandle usage in delegates.
17787         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
17788         * object.c (mono_wait_handle_new): Use the property set method to
17789         initialize the handle.
17790         (mono_wait_handle_get_handle): New.
17791         * threadpool.c (mono_async_invoke): Use it.
17792         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
17793         Likewise.
17794         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
17795
17796 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
17797
17798         * marshal.c (emit_marshal): Call emit_marshal_variant and
17799         emit_marshal_com_interface when applicable.
17800         (emit_marshal_variant, emit_marshal_com_interface): Add
17801         methods for this case and remove if's from emit_marshal_object.
17802         
17803 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
17804
17805         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
17806
17807 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
17808
17809         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
17810         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
17811         and GlobalFree on Windows. Remove FIXME.
17812
17813 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17814
17815         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
17816         implementation for managed objects.
17817
17818 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
17819
17820         * object.c: implemented code to be used for checking
17821         that no reference field overlaps with non-references.
17822
17823 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
17824
17825         * threadpool.c: fix queue code to be compatible with the
17826         moving GC.
17827
17828 2006-12-18  Miguel de Icaza  <miguel@novell.com>
17829
17830         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
17831         in structures by throwing ArgumentNullException.
17832
17833         (emit_marshal_safehandle): Also when they are null parameters.
17834
17835         (emit_marshal_safehandle): Add support for ref
17836         SafeHandles parameters
17837
17838 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
17839
17840         * profiler.c: updated to use the mono-dl API instead of
17841         gmodule.
17842
17843 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
17844
17845         * profiler.c: updated to use the mono-dl dynamic loading
17846         API instead of gmodule.
17847
17848 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17849
17850         * profiler.c: use readlink, older versions of glib don't have
17851         g_file_read_link ().
17852
17853 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
17854
17855         * profiler.c: try to detect the path to mono if libc fails to provide
17856         a useful name (bug #80286).
17857
17858 2006-12-16  Raja R Harinath  <rharinath@novell.com>
17859
17860         Fix #80242
17861         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
17862         instance, use the generic type definition instead.
17863         (ves_icall_Type_GetNestedTypes): Likewise.
17864         * class.c (mono_class_create_generic): Always set the
17865         nested_classes of a generic instance to NULL, even if the generic
17866         type definition has nested types.
17867
17868 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
17869
17870         * marshal.c (mono_string_from_bstr): Revert previous Windows change
17871         and fix on Linux.
17872         
17873 2006-12-15  Miguel de Icaza  <miguel@novell.com>
17874
17875         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
17876         my arguments were in the wrong order.   I also fixed the Windows
17877         version which seems to have had the same issue.
17878
17879         (mono_free_bstr): On Unix, this is g_free.
17880         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
17881         conversions (for the tests in corlib to pass).
17882
17883 2006-12-14  Miguel de Icaza  <miguel@novell.com>
17884
17885         * marshal.c (emit_ptr_to_object_conv): For now, ignore
17886         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
17887         exception if a ref SafeHandle in a struct has changed).
17888         
17889         (emit_struct_conv): Do not perform layout checks for classes
17890         derived from SafeHandle, as those are specially handled. 
17891
17892         (emit_object_to_ptr_conv): Add support for
17893         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
17894
17895         (emit_marshal_safehandle): Implement conversion of return values
17896         of safehandles (MARSHAL_ACTION_CONV_RESULT).
17897         
17898         * threads.c: WaitHandle now is compiled with two different handles
17899         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
17900         for 2.0.
17901         
17902         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
17903         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
17904         these routines to cope with both kinds of fields.
17905
17906 2006-12-12  Miguel de Icaza  <miguel@novell.com>
17907
17908         * metadata.c (mono_type_to_unmanaged): Handle the case where
17909         type->data.klass is a SafeHandle, and in that case, return the
17910         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
17911         MONO_MARSHAL_CONV_SAFEHANDLE. 
17912
17913 2006-12-11  Miguel de Icaza  <miguel@novell.com>
17914
17915         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
17916         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
17917         calling emit_marshal_object.
17918
17919         (emit_marshal_safehandle): Implement marshalling of
17920         SafeHandle parameters (no ref support yet).
17921
17922         (MarshalAction): Document the defines as I implement
17923         them for SafeHandle.
17924
17925         (emit_marshal_object): indentation police.
17926
17927         * class-internals.h: Define MonoSafeHandle.
17928         Add safehandle_class to MonoDefaults type.
17929
17930         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
17931         list of classes to check for fields. 
17932
17933         * domain.c (mono_init_internal): Add SafeHandle to the list of
17934         mono_defaults loaded.
17935
17936 2006-12-15  Raja R Harinath  <rharinath@novell.com>
17937
17938         Fix #80253
17939         * reflection.c (mono_reflection_bind_generic_parameters): If the
17940         generic type definition is a type builder, ensure that it is fully
17941         initialized before instantiating it.  Kill some dead code.
17942
17943 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17944
17945         * object.c: clear the loader_error () before loading
17946         more metadata stuff (bug #80258).
17947
17948 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
17949
17950         * icall.c, icall-defs.h: type modifiers icalls for
17951         parameters and properties.
17952
17953 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
17954
17955         * object.c, icall.c: fixed warnings.
17956
17957 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
17958
17959         * marshal.c: fixed a couple of leaks and coding style in a few places.
17960
17961 2006-12-08  Dick Porter  <dick@ximian.com>
17962
17963         * process.c: Cope with NULL ProcessStartInfo arguments on windows
17964         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
17965         80173.
17966
17967 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
17968
17969         * process.c: ProcessStartInfo may have only filename set and
17970         arguments can be NULL.
17971
17972 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
17973
17974         * icall.c: fix leak found by Robert Jordan.
17975
17976 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
17977
17978         * marshal.c, marshal.h: generate managed method to access an element
17979         of a multi-dimensional array.
17980
17981 2006-11-30  Paolo Molaro (lupus@ximian.com)
17982
17983         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
17984
17985 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
17986
17987         * icall.c: back out GetFields () fix until the serialization code is
17988         fixed to not depend on the incorrect behaviour.
17989
17990 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
17991
17992         * profiler.c: provide defaults if none are set.
17993
17994 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
17995
17996         * Makefile.am, attrdefs.h: new public header file with
17997         constants for attributes for use by embedders.
17998
17999 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18000
18001         * icall.c: GetFields () fix for bug #80064.
18002
18003 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
18004
18005         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
18006         removed long unused icalls.
18007
18008 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
18009   
18010         * marshal.c: 
18011                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
18012                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
18013                 can be generated without a delegate class.
18014                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
18015         
18016         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
18017
18018 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18019
18020         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
18021         #80069.
18022
18023 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
18024
18025         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
18026         icall-def.h: added icalls needed by System.GC.
18027
18028 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
18029
18030         * loader.c: ensure the class in catch clauses is handled
18031         correctly for generics methods (fixes bug#79980).
18032
18033 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
18034
18035         * monitor.h, monitor.c: added mono_locks_dump () function
18036         to help debug deadlocks involving managed locks.
18037
18038 2006-11-13  Dick Porter  <dick@ximian.com>
18039
18040         * file-io.c (get_file_attributes): If the file is a symlink try
18041         and get the stat data for the target, but also add the
18042         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
18043         the specs for the windows symlink support, but will probably have
18044         to be reworked when I have test data from a vista machine.  Fixes
18045         bug 79887.
18046
18047 2006-11-13  Dick Porter  <dick@ximian.com>
18048
18049         * gc.c (mono_domain_finalize): 
18050         * marshal.c (mono_delegate_begin_invoke): 
18051         * threadpool.c (socket_io_init, mono_thread_pool_init)
18052         (mono_thread_pool_finish): 
18053         * monitor.c (mono_monitor_try_enter_internal): 
18054         * threads.c (mono_thread_resume, mono_thread_init)
18055         (mono_thread_suspend_all_other_threads)
18056         (mono_thread_execute_interruption): 
18057         * appdomain.c (mono_domain_unload): Check for NULL error returns
18058         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
18059         75733.
18060
18061 2006-11-11  Miguel de Icaza  <miguel@novell.com>
18062
18063         * process.c
18064         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
18065         Only close the handle if the value of the handle is not
18066         INVALID_HANDLE_VALUE.  This just makes the process a bit more
18067         robust.
18068
18069         Improvement for #75733, so that we do not run into this problem. 
18070
18071         
18072         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
18073         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
18074         internal variables.  Fixes #79462 
18075         
18076
18077 2006-11-09  Dick Porter  <dick@ximian.com>
18078
18079         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
18080         Use poll() not select().  Fixes bug 79397.
18081
18082 2006-11-09  Raja R Harinath  <rharinath@novell.com>
18083
18084         Fix #79872
18085         * assembly.c (mono_assembly_load_from_full): Check that the given
18086         image has an assembly manifest.
18087
18088 2006-11-09  Ankit Jain  <jankit@novell.com>
18089
18090         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
18091         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
18092         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
18093
18094 2006-11-07  Dick Porter  <dick@ximian.com>
18095
18096         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
18097         Put the old resolver behaviour back for pre-2.0 profiles.
18098
18099 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
18100
18101         * threadpool.c: precise GC and locking fixes.
18102
18103 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
18104
18105         * class.c: don't load types that have an explicit unaligned
18106         managed reference. Provide better info in the TypeLoad exception.
18107         Part of the fix for bug #79744.
18108         * object.c: use the correct check for class type load issues.
18109
18110 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
18111
18112         * class.c: enforce alignment of fields with managed references
18113         even when Pack=1 is forced by the user (bug #77788).
18114
18115 2006-11-03  Dick Porter  <dick@ximian.com>
18116
18117         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
18118         If the address reverse lookup fails, return it as the hostname
18119         anyway.  Fixes bug 79721.
18120
18121 2006-11-03  Dick Porter  <dick@ximian.com>
18122
18123         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
18124         Fix build on Windows.
18125
18126 2006-11-02  Dick Porter  <dick@ximian.com>
18127
18128         * icall-def.h: 
18129         * object-internals.h: 
18130         * exception.c (mono_get_exception_thread_interrupted): 
18131         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
18132         Fixes bug 74525.
18133
18134         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
18135         Check for pending Thread.Interrupt.
18136
18137 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
18138         * loader.c: Fixed bug 79684.
18139
18140 2006-10-27  Dick Porter  <dick@ximian.com>
18141
18142         * file-io.c (get_file_attributes): Force symlinks to directories
18143         to be returned as a regular file.  Fixes bug 79733.
18144 2006-10-26  Dick Porter  <dick@ximian.com>
18145
18146         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
18147         CreateFile to open a directory then we need to set the
18148         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
18149
18150 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
18151
18152         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
18153         friends.
18154
18155 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18156
18157         * sgengc.c: small cleanup of timer code.
18158
18159 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
18160
18161         * sgen-gc.c: fix some warnings and start adding support for
18162         complete object removal on domain unload.
18163
18164 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
18165
18166         * assembly.c: build_assembly_name should not consider a version
18167         number without build or revision number invalid. Fixes bug #79715.
18168
18169 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
18170
18171         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
18172         call kernel32 function OutputDebugString directly.
18173         
18174         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
18175         
18176 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
18177
18178         * reflection.c: small cleanup, using a function to insert a MonoString
18179         in the string heap.
18180
18181 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
18182
18183         * reflection.c: moving GC fixes.
18184
18185 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
18186
18187         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
18188         all the objects with finalizers belonging to an unloading appdomain.
18189
18190 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
18191
18192         * sgen-gc.c: added ability to allocate even when the nursery is fully
18193         pinned and fixed a couple of bugs.
18194
18195 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
18196
18197         * threads.h: Revert the last change for now.
18198
18199         * threads.h (mono_thread_get_pending_exception): Rename this to
18200         mono_thread_get_undeniable_exception ().
18201
18202 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
18203
18204         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
18205         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
18206         when fname does not refer to valid assembly. This result in a more
18207         meaningful error message.
18208         * exception.c: added mono_get_exception_bad_image_format2 which 
18209         constructs a BadImageFormatException using the ctor taking a custom
18210         message and the file name. Passing in a NULL msg results in a default
18211         message.
18212         * exception.h: define mono_get_exception_bad_image_format2 function.
18213         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
18214         when file name pointed to an invalid IL image. Use 
18215         mono_get_exception_file_not_found2 to construct FileNotFoundException,
18216         as this results in a more meaningful error message.
18217
18218 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
18219
18220         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
18221         #79465.
18222
18223 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
18224
18225         * metadata.c (mono_type_size): Change the align parameter to guint32 for
18226         consistency with the other _size functions.
18227         (mono_type_stack_size): Ditto.
18228
18229         * class.c object.c icall.c: Fix warnings caused by the above change.
18230
18231         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
18232
18233         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
18234
18235         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
18236
18237 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
18238
18239         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
18240         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
18241         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
18242         threadpool.h, threads-types.h: mark more internal functions.
18243
18244 2006-10-11  Dick Porter  <dick@ximian.com>
18245
18246         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
18247         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
18248         reproduce the bug even before applying the fix.)
18249
18250 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
18251
18252         * reflection.c: allow retrieving attributes for arguments in generic
18253         methods (bug #79241).
18254
18255 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
18256
18257         * debug-mono-symfile.c: properly check fopen () result (found by
18258         coverity).
18259
18260 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
18261
18262         * reflection.c: make error message clearer and fixed two
18263         issuelets found by Coverity.
18264
18265 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
18266
18267         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
18268
18269 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
18270
18271         * object-internals.h, gc-internal.h, profiler-private.h:
18272         mark internal functions.
18273
18274 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
18275
18276         * reflection.c: put data in the text section.
18277         * icall.c: recognize more types in type_from_typename ().
18278         * process.c, marshal.c: added some GC FIXMEs.
18279
18280 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
18281
18282         * loader.c: check for NULL before initializing.
18283
18284 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
18285
18286         * gc.c (finalizer_thread): Use a non-alertable wait here.
18287
18288         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
18289         until the correct solution is found.
18290
18291 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
18292
18293         * reflection.c (mono_module_get_object): Avoid an assert when operating on
18294         modules with no metadata. Fixes #79596.
18295
18296         * image.c (load_metadata_ptrs): Put back the error message when
18297         the #- heap is encountered since the support is not complete yet.
18298
18299 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
18300
18301         * gc.c: do not allow the user to SuppressFinalize () a
18302         delegate because it would leak the trampoline if present.
18303
18304 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
18305
18306         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
18307         PropertyPtr table.
18308
18309 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
18310
18311         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
18312
18313         * metadata.c (mono_metadata_get_param_attrs): Ditto.
18314
18315         * row-indexes.h: Add definitions for *Ptr tables.
18316
18317         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
18318
18319         * metadata.c (mono_metadata_translate_token_index): New helper function to
18320         translate table indexes used in uncompressed metadata.
18321         (mono_metadata_decode_table_row): Ditto.
18322         (mono_metadata_decode_table_row_col): Ditto.
18323
18324         * metadata.c: Add table schema for *Ptr tables.
18325
18326         * class.c loader.c: Use the new helper function to access the affected metadata
18327         tables.
18328         
18329         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
18330         #38532.
18331         
18332 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
18333
18334         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
18335         sequences which can be unbounded in size. Fixes #79583.
18336
18337 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
18338
18339         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
18340         static initialization.
18341
18342         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
18343
18344         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
18345
18346         * domain.c (mono_domain_free): Free up type_init_exception_hash.
18347
18348         * object.c (mono_runtime_class_init): Implement correct semantics when a static
18349         ctor fails, i.e. throw the same exception on subsequent accesses.
18350         
18351 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
18352
18353         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
18354         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
18355         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
18356         Handle marshalling of interfaces and VARIANTs contained in structs.
18357         
18358         Code is contributed under MIT/X11 license.
18359         
18360 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
18361
18362         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
18363         
18364         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
18365         mempool.
18366
18367 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18368
18369         * console-io.c: ignore previous SIGINT handler.
18370
18371 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
18372
18373         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
18374         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
18375         #79460, #79461, #79485.
18376
18377         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
18378
18379         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
18380         #79217.
18381
18382 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
18383
18384         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
18385         could be generated from it.
18386
18387 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
18388
18389         * rand.c: fix read loop to correctly handle EINTR.
18390
18391 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18392
18393         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
18394         internal calls are defined to keep methods closer to the declaring
18395         type and allow a significant reduction in runtime relocations and
18396         memory usage.
18397
18398 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
18399
18400         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
18401         exception message to have FileNotFoundException use the default
18402         assembly load error message. Fixes bug #79426.
18403         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
18404
18405 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18406
18407         * threadpool.c: (start_thread_or_queue) use the root domain when
18408         creating the thread instead of the async object one.
18409
18410 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
18411
18412         * class.c, object.c, class-internals.h, reflection.c:
18413         for arrays, store element_size inside MonoClass (speedup
18414         for array object creation).
18415
18416 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
18417
18418         * icall.c: fixed CodeBase to use the file name and not the module
18419         name (bug #79365).
18420
18421 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
18422
18423         * mono-debug.c, mono-debug.h: export find_method as
18424         mono_debug_find_method ().
18425
18426 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18427
18428         * debug-helpers.c, class-internals.h: added a few functions useful
18429         when debugging under gdb.
18430
18431 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18432
18433         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
18434         characters that need special handling.
18435
18436 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
18437
18438         * mono-config.c: make the os/cpu specification more flexible,
18439         allowing lists and negation.
18440
18441 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
18442
18443         * marshal.c: COM Interop fixes. Handle case where method->klass.
18444         is interface. Handle BSTR/MonoString when null. Use CDECL as 
18445         calling convention on non-windows platforms. This is for
18446         compatibility with XPCOM and MainWin COM.
18447         
18448         Code is contributed under MIT/X11 license.
18449         
18450
18451 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
18452
18453         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
18454         correctly. Fixes #79217.
18455
18456         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
18457
18458 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
18459
18460         * mono-config.c: allow both an os and cpu attribute for dllmap
18461         and dllentry elemnets to enable a single config file to be used
18462         for multiple architectures.
18463
18464 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
18465
18466         * loader.c: MonoLoaderError was cleared too soon on load failure.
18467         Fixes bug #79424.
18468
18469 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
18470
18471         * icall.c: use the defining class vtable when accessing a
18472         static field, not a pobblibly derived class.
18473
18474 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
18475
18476         * icall.c string-icalls.c: Remove references to unicode.h.
18477
18478         * unicode.h unicode.c Makefile.am: Remove these unused source files.
18479
18480         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
18481
18482         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
18483         indicating the image where custom marshaller types should be looked up.
18484         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
18485         custom marshallers, instead of corlib. Fixes #79425.
18486
18487 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
18488
18489         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
18490
18491 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
18492
18493         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
18494         Implement Environment.ProcessorCount.
18495         
18496         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
18497         Implement Environment.ProcessorCount.
18498         
18499         * icall.c: 
18500         Add Environment.ProcessorCount icall.
18501         
18502         Patch by Jason McFall.
18503
18504 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18505
18506         * assembly.c: don't append .exe/.dll when the filename already contains
18507         one of those extensions.
18508
18509 2006-09-12  Martin Baulig  <martin@ximian.com>
18510
18511         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
18512         to array interfaces.
18513
18514 2006-09-11  Martin Baulig  <martin@ximian.com>
18515
18516         * reflection.c (mono_image_build_metadata): Create the
18517         MethodImpl's after emitting all types and methods, so we don't
18518         need another fixup pass for them.
18519
18520 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
18521
18522         * class.c (mono_class_from_name_case): Fix regression introduced by the last
18523         change.
18524
18525 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
18526
18527         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
18528         unload.
18529
18530 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
18531
18532         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
18533         args is not set. Fixes #78926.
18534
18535 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
18536
18537         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
18538
18539         * image.c (load_class_names): Move this to class.c, and rename it to 
18540         'mono_image_init_name_cache'.
18541         (load_modules): Fix a warning.
18542
18543         * class.c icall.c image.c: Initialize image->name_cache lazily.
18544
18545         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
18546         on its name using information in the AOT file.
18547
18548         * class.c (mono_class_from_name): Use the new hook function.
18549
18550 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
18551
18552         * reflection.c (mono_param_get_objects): Handle enum default parameter values
18553         correctly.
18554
18555         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
18556         Fixes #79289.
18557         
18558 2006-09-06  Martin Baulig  <martin@ximian.com>
18559
18560         * icall.c (mono_lookup_internal_call): Small fix.
18561
18562 2006-09-05  Raja R Harinath  <rharinath@novell.com>
18563
18564         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
18565         double g_free.
18566
18567 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
18568
18569         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
18570         when --debug is specified.
18571
18572 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
18573
18574         * class.c (setup_generic_array_ifaces): Fix a warning.
18575
18576 2006-09-04  Miguel de Icaza  <miguel@novell.com>
18577
18578         * Temporarily remove the patch to assemly.c that checks the
18579         assembly versions as it breaks our gacutil.
18580
18581 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
18582
18583         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
18584
18585         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
18586         a net 1.0 runtime.
18587
18588         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
18589         created using the default ctor. Fixes #79152.
18590         (mono_string_builder_to_utf16): Ditto.
18591
18592 2006-09-01  Martin Baulig  <martin@ximian.com>
18593
18594         Fix handling of the generic array interfaces.
18595
18596         * class-internals.h
18597         (MonoDefaults): Removed `generic_array_class' and added
18598         `generic_ilist' class.
18599
18600         * class.c
18601         (mono_bounded_array_class_get): Add the new generic array interfaces.
18602         (setup_generic_array_ifaces): New static method; create vtable
18603         entries for each method in the generic array interfaces.
18604
18605         * metadata.c
18606         (select_container): Allow "parent-less" generic methods.
18607
18608         * marshal.c
18609         (mono_marshal_get_generic_array_helper): New public method.
18610
18611         * icall.c
18612         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
18613         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
18614         moved the interncall into System.Array.
18615
18616 2006-09-01  Raja R Harinath  <rharinath@novell.com>
18617
18618         A few more cases of avoiding work on types with ->byref set.
18619         Has the real fix for #79238
18620         * icall.c (is_generic_parameter): New helper.
18621         (ves_icall_Type_GetGenericParameterPosition): Use it.
18622         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
18623         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
18624         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
18625         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
18626         reference types.
18627         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
18628         reference types.
18629         (ves_icall_Type_get_IsGenericInstance): Likewise.
18630         (ves_icall_Type_get_IsGenericType): Likewise.
18631
18632 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
18633
18634         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
18635         class if possible.
18636
18637         * mempool.h (mono_mempool_get_allocated): New helper function.
18638
18639         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
18640         change.
18641
18642         * mempool.c: Fix warnings and the calculation of stats.
18643
18644         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
18645
18646         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
18647
18648         * loader.c (mono_get_method_from_token): Update method_count stat.
18649
18650         * class-internals.h (MonoStats): Add some stats.
18651
18652 2006-08-31 Robert Jordan  <robertj@gmx.net>
18653
18654         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
18655         with managed variants.
18656         All code is contributed under the MIT/X11 license.
18657         
18658 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
18659
18660         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
18661         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
18662
18663         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
18664
18665         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
18666         with cycles in classes.
18667
18668         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
18669
18670         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
18671         missing a [MarshalAs] directive. Fixes #79203.
18672
18673         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
18674         klass->marshal_info. Fixes #79217.
18675
18676 2006-08-30  Martin Baulig  <martin@ximian.com>
18677
18678         Committing a patch from Joachim Ante <joe@otee.dk>:
18679         Add support for binary data symbol stores.
18680
18681         * debug-mono-symfile.c
18682         (mono_debug_open_mono_symbol_file): Renamed into
18683         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
18684         arguments.
18685
18686         * mono-debug.c
18687         (mono_debug_open_image): Added `raw_contents' and `size' args.
18688         (mono_debug_init_2_memory): New public function.
18689
18690 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
18691
18692         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
18693
18694 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18695
18696         * appdomain.c: implement support for ShadowCopyFiles.
18697
18698 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
18699
18700         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
18701         when value is NULL (and should remove CID #51).
18702
18703 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18704
18705         * image.c: moved 2 functions to ../utils.
18706
18707 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
18708
18709         * gc.c: cope with the target object of a GC handle being NULL
18710         (bug #78877).
18711
18712 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
18713
18714         * class.c: recursively check parent's explicit implementations
18715         of interface methods (fixes bug #79125).
18716
18717 2006-08-19  Miguel de Icaza  <miguel@novell.com>
18718
18719         * filewatcher.c: Avoid warnings when building, do not redefine
18720         constants that are defined.
18721
18722         Remove warnings.
18723
18724 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18725
18726         * image.c: don't fail when the link points to an absolute path.
18727
18728 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
18729
18730         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
18731         Fix CID #3.
18732
18733 2006-08-17  Miguel de Icaza  <miguel@novell.com>
18734
18735         * image.c (full_path): A new method used to obtain the actual path
18736         of an assembly even in the presence of symbolic links.  
18737
18738         This is necessary for the case where we are running a binary that
18739         has been GACed, but we are using the "published" path name
18740         ($prefix/mono/1.0/blah.exe) which happens to point to the real
18741         file in the GAC.
18742
18743         This was the source of the failure for the `xsp' command with the
18744         recent AppDomain changes, as far as the runtime was concerned,
18745         there were two different assemblies: $prefix/mono/1.0/blah.exe and
18746         $prefix/mono/gac/blah/version/blah.exe.
18747
18748         (do_mono_image_open): use full path
18749
18750 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18751
18752         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
18753
18754 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
18755
18756         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
18757         domain_id is supplied. Fix CID #241 and corlib's unit tests.
18758
18759 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18760
18761         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
18762         small structures. Fixes #78990.
18763
18764 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18765
18766         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
18767
18768         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
18769
18770 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18771
18772         * appdomain.c:
18773         * marshal.c: don't load all the assemblies from a domain into newly
18774         created ones. The new domains might have different rules and load
18775         assemblies from different locations. Fixes bug #76757.
18776
18777         Patch by Lluis. Conflicts resolved by Brian Crowell.
18778
18779 2006-08-16  Alp Toker  <alp@atoker.com>
18780
18781         * socket-io.c: First half of the fix for #79084.
18782         Set sa_size to the length of the content, not that of the struct.
18783         Don't add NULL suffix to the content, this should be done in
18784         managed code if needed.
18785
18786 2006-08-14  Raja R Harinath  <rharinath@novell.com>
18787
18788         Fix part of #79012
18789         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
18790         mono_metadata_parse_type returns NULL.
18791
18792 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
18793
18794         * normalization-tables.h : new file for string normalization data.
18795         * locales.c, locales.h, icall.c :
18796           added load_normalization_resource() for string normalization,
18797           and icall as well.
18798         * Makefile.am : added normalization-tables.h to the sources.
18799
18800 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
18801
18802         * marshal.c: Add more helper functions to reduce code duplication and use them
18803         everywhere.
18804
18805 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
18806
18807         * marshal.c: Fix non-x86 stdcall warnings.
18808         
18809         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
18810         them everywhere.
18811
18812 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
18813
18814         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
18815         type check on multi-dimensional arrays. Fixes #79000.
18816
18817 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
18818
18819         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
18820         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
18821         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
18822         * class-internals.h: add is_com_object to class structure.
18823         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
18824         null checks to COM object marshalling. Fix .ctor call on RCW.
18825         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
18826         
18827         All code is contributed under the MIT/X11 license.
18828
18829 2006-08-09  Dick Porter  <dick@ximian.com>
18830
18831         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
18832         racing mono_monitor_allocator_lock() somewhere, so don't delete
18833         the critical section for now.  Found by running and exiting
18834         monodevelop.
18835
18836 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
18837
18838         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
18839         (ves_icall_System_ComObject_FindInterface): Ditto.
18840         (ves_icall_System_ComObject_CacheInterface): Ditto.
18841
18842         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
18843         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
18844
18845 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18846
18847         * threadpool.c: treat pipes from process asynchronous reads as sockets
18848         when reading from them, so we get select/poll or epoll to wait for
18849         data.
18850
18851 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
18852
18853         * loader.c: Fix a typo (CID #233) in the null check.
18854
18855 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
18856
18857         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
18858         Hopefully fixes #78949.
18859         
18860         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
18861         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
18862         bytes. Fixes #78972.
18863
18864 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18865
18866         * filewatcher.c: we need to set errno here.
18867
18868 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18869
18870         * filewatcher.c: let Win32Exception get the error value.
18871
18872 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18873
18874         * filewatcher.c: translate errno into win32 errors for Win32Exception
18875         to know what happened.
18876
18877 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
18878
18879         * threadpool.c: Fix more warnings.
18880
18881         * assembly.c (search_loaded): Fix warnings.
18882
18883         * threadpool.c (mono_thread_pool_finish): Fix warnings.
18884         (mono_async_invoke): Ditto.
18885
18886 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
18887
18888         * object.c (mono_remote_class_vtable): Need to create proxy vtable
18889         entries for __ComObject type in addition to ComImport types.
18890         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
18891         about hash table.
18892         
18893         All code is contributed under the MIT/X11 license.
18894
18895 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
18896
18897         * image.c: avoid tentative loading of modulerefs that contain
18898         no metadata (P/Invoke library names).
18899
18900 2006-07-28  Dick Porter  <dick@ximian.com>
18901
18902         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
18903         mono_loader_lock() somewhere, so don't delete the critical section
18904         for now.  Found by running and exiting monodevelop.
18905
18906 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18907
18908         * filewatcher.c: define the inotify syscalls when we're building on
18909         linux and have sys/syscall.h. The build system might not have support
18910         for inotify but the target system might have it.
18911
18912 2006-07-26  Miguel de Icaza  <miguel@novell.com>
18913
18914         * domain.c: Documentation updates.
18915
18916         * loader.c (mono_free_method): Do not release the method
18917         information if we are being profiled, as profilers will use this
18918         information at shut down to present some data to the user.
18919
18920         This is needed so that the profiler does not crash, as the
18921         profiler tends to keep MonoMethods around, and they might become
18922         invalid if we free these.
18923
18924         (mono_get_method_constrained): Return the original CIL stream
18925         method as well, so verification can be performed against it.
18926
18927 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18928
18929         * filewatcher.[ch]: support for inotify file system watcher.
18930         * icall.c: add new internal calls for the inotify file system watcher.
18931
18932 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18933
18934         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
18935         #78888.
18936
18937 2006-07-20  Dick Porter  <dick@ximian.com>
18938
18939         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
18940         warning.
18941
18942 2006-07-20  Dick Porter  <dick@ximian.com>
18943
18944         * threads.c (start_wrapper): Do the thread cleanup while we still
18945         hold a reference to its object.  Fixes bug 78123.
18946
18947 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
18948
18949         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
18950         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
18951           "managed-to-managed".
18952         * icall.c: Redirect string constructors that take sbyte* to
18953           ves_icall_System_String_ctor_RedirectToCreateString.
18954         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
18955           to CreateString () methods with matching signature.
18956         * reflection.c: Use original security informations for
18957           MONO_WRAPPER_MANAGED_TO_MANAGED.
18958         * security-manager.c: Use original security informations for
18959           MONO_WRAPPER_MANAGED_TO_MANAGED.
18960         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
18961           that is a placeholder and only its address should be used.
18962         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
18963           that is a placeholder and only its address should be used.
18964
18965 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
18966
18967         Begin implementing COM Interop.
18968         * appdomain.c: Increment corlib version.
18969         * class.c: Set ComImport classes' parent to __ComObject.
18970         * loader.c: Mark cominterop methods as such.
18971         * domain.c: Add __ComObject class to MonoDefaults structure.
18972         * image.c: Add 2 hashtables to the image for COM Interop related methods
18973         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
18974         using the mempool allocator
18975         
18976         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
18977         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
18978         declaration for mono_metadata_type_dup_mp.
18979         
18980         * debug-helpers.c: Added strings for two additional wrapper types
18981         * object.c: Create proxy objects for ComImport classes
18982         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
18983         and added __ComObject class to MonoDefaults structure.
18984         
18985         * object-internals.h: Finish MonoRealProxy definition, and add definition of
18986         MonoComInteropProxy and MonoComObject.
18987         
18988         * marshal.c: Added support for COM Interop
18989         (signature_cominterop): Converts managed signature to corresponding
18990         unmanaged COM signature.
18991         (cominterop_get_function_pointer): gets unmanaged function pointer via
18992         COM object vtable
18993         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
18994         (cominterop_get_method_interface): returns interface type that method is defined on
18995         (mono_mb_emit_cominterop_call): emits native call to function pointer
18996         gotten from vtable
18997         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
18998         that matches signature of unmanaged function.
18999         (cominterop_get_native_wrapper): wrapper around adjusted method call.
19000         (cominterop_get_invoke): forwards call from proxy to __ComObject
19001         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
19002         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
19003         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
19004         
19005         * marshal.h: Added Marshal icall declarations.
19006         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
19007         so we can access them in finalizer
19008         
19009 2006-07-14  Dick Porter  <dick@ximian.com>
19010
19011         * object.c (mono_type_initialization_cleanup): Fix a race
19012         condition by temporarily commenting out the critical section
19013         deletion.
19014
19015 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
19016
19017         * reflection.c (create_custom_attr): Fix some warnings.
19018         (create_custom_attr_data): Ditto.
19019         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
19020         types. Fixes #78855.
19021
19022 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
19023
19024         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
19025
19026         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
19027
19028 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
19029
19030         * reflection.c (resolve_object): Add support for DynamicMethod.
19031
19032         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
19033         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
19034
19035 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
19036
19037         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
19038         don't leak GPtrArray's pdata has we have no use (nor free) for it.
19039
19040 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
19041
19042         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
19043         Fixes #77888.
19044
19045 2006-06-30  Raja R Harinath  <rharinath@novell.com>
19046
19047         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
19048         slightly: remove a shadow local variable.
19049
19050 2006-06-29  Raja R Harinath  <rharinath@novell.com>
19051
19052         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
19053         definition that introduces the virtual function slot.
19054         Also fix Coverity #105.
19055
19056 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
19057
19058         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
19059         for dynamic assemblies. Fixes #78724.
19060
19061 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
19062
19063         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
19064         Fixes #78722.
19065
19066 2006-06-21  Martin Baulig  <martin@ximian.com>
19067
19068         * reflection.c
19069         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
19070         fixes #76484.
19071
19072 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
19073
19074         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
19075
19076 2006-06-20  Raja R Harinath  <rharinath@novell.com>
19077
19078         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
19079         nor TYPEREFs.
19080         * class.c (mono_class_create_from_typespec): Add 'context' argument.
19081         Inflate result if necessary.
19082         (mono_class_get_full): Remove old version.  Rename from
19083         'mono_class_get' and add 'context' argument.  Pass it to
19084         ..._create_from_typespec.
19085         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
19086         (mono_ldtoken): Revert change below.
19087
19088 2006-06-20  Martin Baulig  <martin@ximian.com>
19089
19090         * class.c (mono_ldtoken): Don't pass the generic context to
19091         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
19092
19093 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
19094
19095         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
19096         and later freeing it. Fixes #78638.
19097
19098 2006-06-15  Miguel de Icaza  <miguel@novell.com>
19099
19100         * icall.c (mono_class_get_throw): Revert over-zealous error
19101         throwing, the caller for mono_class_get_throw will cope with
19102         errors when classes are not properly initialized already.
19103
19104         The code still copes with loader exceptions though.
19105
19106         Fixes the regression in reftype1 and reftype3 from the CAS tests.
19107         
19108 2006-06-14  Miguel de Icaza  <miguel@novell.com>
19109
19110         Fixes the `make run1' version of RuntimeAbort (to be commited,
19111         source is in Bugzilla).
19112         
19113         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
19114         FALSE on class loading failure instead of returning true.
19115
19116         * class.c (mono_class_create_from_typedef): It is possible for
19117         mono_metadata_interfaces_from_typedef_full to fail if a class is
19118         not found, cope with this.
19119         
19120
19121 2006-06-14  Dick Porter  <dick@ximian.com>
19122
19123         * socket-io.c: 
19124         * process.c: Fix a bunch of signed/unsigned warnings from gcc
19125         4.1.1
19126
19127 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
19128
19129         * culture-info-table.h : oops, forgot to make it nsync with r61548.
19130
19131 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
19132
19133         * icall.c: Another fix for building mono in Visual Studio.
19134
19135 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
19136
19137         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
19138         
19139 2006-06-09  Martin Baulig  <martin@ximian.com>
19140
19141         * debug-mono-symfile.c: Put this back and really fix it this
19142         time. Sorry for all the trouble.
19143
19144 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
19145
19146         * icall.c (mono_class_get_throw): Fix a warning.
19147         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
19148         ReflectionTypeLoadException if needed. Fixes #78606.
19149
19150         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
19151         (mono_class_init): Ditto.
19152
19153         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
19154         ref_only exceptions.
19155         (mono_loader_clear_error): Make this work even if there is no error.
19156
19157 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
19158
19159         * object-internals.h marshal.c marshal.h icall.c: Implement method 
19160         Marshal.GetComSlotForMethodInfo using internal call.
19161
19162 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
19163
19164         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
19165         a function for signalling it.
19166
19167         * class.c (mono_class_from_typeref): Use the new kind of loader error when
19168         a referenced assembly is not found.
19169
19170         * loader.c (mono_loader_error_prepare_exception): Add support for 
19171         LOADER_ERROR_ASSEMBLY. Fix formatting.
19172
19173 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
19174
19175         * domain.c appdomain.c class-internals.h marshal.c: Add support 
19176         for VARIANT marshalling on windows and increment corlib version
19177         since Variant struct was added.
19178
19179 2006-06-03  Miguel de Icaza  <miguel@novell.com>
19180
19181         * debug-mono-symfile.c: Revert Martin's previous patch which broke
19182         stack trace line information:
19183
19184         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
19185         (Martin) when looking up B which is between A and C, return A not C.
19186
19187         Bug is #78573.
19188
19189         Thanks to Alexander Olk for tracking this down.
19190
19191 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
19192
19193         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
19194         
19195         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
19196         avoid clobbering its value.
19197         (mono_string_to_lpstr): Fix a warning on windows.
19198
19199 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
19200
19201         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
19202
19203         * reflection.c loader.c: Removed references to 'dummy' flag.
19204
19205         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
19206
19207         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
19208         it gets GC tracking.
19209
19210         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
19211         GC tracking.
19212         
19213         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
19214
19215         * marshal.c threadpool.c: Update callers of mono_async_result_new.
19216
19217         * appdomain.c: Bump corlib version.
19218
19219 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
19220
19221         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
19222         CEE_STIND_REF when working with object references.
19223
19224 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
19225
19226         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
19227         Fixes #78539.
19228
19229 2006-05-30  Miguel de Icaza  <miguel@novell.com>
19230
19231         * loader.c (method_from_memberref): Fix argument value for
19232         mono_loader_set_error_method_load (I was passing the MonoClass
19233         instead of the class name char *).
19234
19235 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
19236
19237         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
19238         CEE_STIND_REF when working with object references.
19239
19240 2006-05-30  Martin Baulig  <martin@ximian.com>
19241
19242         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
19243         mono_method_full_name() change and replace the ':' with a '.'
19244         here.
19245
19246 2006-05-30  Martin Baulig  <martin@ximian.com>
19247
19248         * debug-mono-symfile.c
19249         (mono_debug_symfile_lookup_location): Fix the algorithm:
19250         when looking up B which is between A and C, return A not C.
19251
19252 2006-05-29  Martin Baulig  <martin@ximian.com>
19253
19254         * mono-debug.h
19255         (MonoDebugMethodInfo): Make the typedef public.
19256         (MonoDebugSourceLocation): New public struct.
19257
19258         * mono-debug.c
19259         (mono_debug_source_location_from_address): Removed.
19260         (mono_debug_source_location_from_il_offset): Removed.
19261         (mono_debug_il_offset_from_address): Removed.
19262         (mono_debug_address_from_il_offset): Removed.
19263         (mono_debug_lookup_method): New public function.
19264         (mono_debug_lookup_source_location): New public function; replaces
19265         the old mono_debug_source_location_from_*() functions; see the
19266         inline documentation.
19267         (mono_debug_free_source_location): New public function.
19268         (mono_debug_print_stack_frame): New public function; see the
19269         inline documentation.
19270
19271         * debug-mono-symfile.c
19272         (mono_debug_find_source_location): Renamed into
19273         mono_debug_symfile_lookup_location(); only take a
19274         `MonoDebugMethodInfo *' and an `offset' argument; added inline
19275         documentation.
19276         (mono_debug_find_method): Renamed into
19277         mono_debug_symfile_lookup_method().
19278
19279 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
19280
19281         * assembly.c (mono_assembly_open_full): Dont overwrite the status
19282         returned by mono_image_open_full ().
19283
19284         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
19285         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
19286         #78517.
19287
19288         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
19289         #78518.
19290
19291 2006-05-27  Miguel de Icaza  <miguel@novell.com>
19292
19293         * class.c (mono_class_from_typeref): handle missing images
19294         earlier, deals with bug #78418.   Refactor code; 
19295
19296         Fix a warning introduced in my previous commit (some stale code
19297         from before I revisited my patch).
19298
19299         * class.c (mono_class_create_from_typedef): On failure, remove the
19300         class from the MonoImage->class_cache as the class is not
19301         initialized;   Fixes the leak pointed out by Paolo.
19302
19303 2006-05-25  Dick Porter  <dick@ximian.com>
19304
19305         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
19306         DeleteCriticalSections until I figure out which one may still be
19307         sometimes locked when mono_thread_cleanup is called.
19308
19309 2006-05-24  Dick Porter  <dick@ximian.com>
19310
19311         * threads.c (mono_thread_cleanup): Move the threading cleanup out
19312         of mono_thread_manage and back into its own function, so it can be
19313         called after the finalizer thread has finished.
19314
19315         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
19316
19317 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
19318
19319         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
19320         Fixes #78495.
19321
19322         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
19323         with non-blittable elements.
19324         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
19325
19326 2006-05-24  Martin Baulig  <martin@ximian.com>
19327
19328         * mono-debug-debugger.h (MonoDebuggerEvent): Added
19329         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
19330
19331         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
19332         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
19333         `mono_debugger_event_handler' to NULL.
19334
19335 2006-05-24  Martin Baulig  <martin@ximian.com>
19336
19337         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
19338
19339 2006-05-24  Martin Baulig  <martin@ximian.com>
19340
19341         * mono-debug-debugger.h
19342         (mono_debugger_create_notification_function): Added
19343         `MonoCodeManager *' argument.
19344
19345 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
19346
19347         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
19348
19349 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
19350
19351         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
19352         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
19353         implementation.
19354
19355 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
19356
19357         * icall.c: precise GC support: objects can't be stored in unmanaged
19358         memory anymore, even if they are kept alive by other references: since
19359         they can move the GC needs to be able to always find them.
19360
19361 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
19362
19363         * object.c: precise GC support for static fields. Support
19364         for moving GCs: write barriers and pinned allocation for interned
19365         strings.
19366
19367 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
19368
19369         * domain.c, domain-internals.h: precise GC support for the MonoDomain
19370         structure.
19371
19372 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
19373
19374         * class.c, gc.c: sgen and precise GC updates.
19375
19376 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
19377
19378         * marshal.h, marshal.c: added write barrier wrapper and precise type
19379         fixes.
19380
19381 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
19382
19383         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
19384         support.
19385
19386 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
19387
19388         * reflection.c: precise and sgen GC updates.
19389
19390 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
19391
19392         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
19393
19394 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
19395
19396         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
19397
19398 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
19399
19400         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
19401         MONO_TYPE_OBJECT. Fixes #78462.
19402
19403 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
19404
19405         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
19406         and blittable types.
19407
19408 2006-05-17  Miguel de Icaza  <miguel@novell.com>
19409
19410         * class.c (mono_class_get_exception_for_failure): Implement parts
19411         of a TODO: if the loader error is set (instead of the class
19412         error), we return a Loader exception that can be properly thrown
19413         elsewhere.
19414
19415         This was exposed by some Winforms 2.0 code that I tried to run
19416         (Atsushi pointed me to it).
19417
19418 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
19419
19420         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
19421         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
19422         
19423         * marshal.c (emit_marshal_vtype): Add limited support for 
19424         UnmanagedType.LPStruct. Fixes #78427.
19425
19426         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
19427         Applied a patch from kangaroo to fix #77523.
19428
19429 2006-05-17  Martin Baulig  <martin@ximian.com>
19430
19431         * threads.c
19432         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
19433         (debugger_thread_created): Removed.
19434         (debugger_thread_exited): Removed.
19435
19436 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
19437
19438         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
19439
19440         * object-internals.h (MonoReflectionResource): Sync with managed version.
19441
19442 2006-05-12  Wade Berrier <wberrier@novell.com>
19443
19444         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
19445
19446 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
19447
19448         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
19449         functions try to allocate from the image mempool.
19450
19451 2006-05-12  Dick Porter  <dick@ximian.com>
19452
19453         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
19454
19455 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
19456
19457         * object.c: The FieldGetter and FieldSetter methods require the full
19458         name of the class, not only the name. Fixes bug #78277.
19459
19460 2006-05-11  Miguel de Icaza  <miguel@novell.com>
19461
19462         * loader.c (method_from_memberref): Do not pass the NULL klass to
19463         mono_loader_set_error_() methods.  Pass the non-NULL value
19464         (class). 
19465
19466 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
19467
19468         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
19469         (mono_assembly_close): Null out assembly->image->references after freeing it.
19470
19471         * image.c (mono_image_close): Free image->references.
19472         
19473         * reflection.c (mono_image_basic_init): Fix a small memory leak.
19474
19475 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
19476
19477         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
19478         before checking if it's NULL (g_assert).
19479
19480 2006-05-10  Martin Baulig  <martin@ximian.com>
19481
19482         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
19483         I thought I already killed that two months ago, but now it somehow reappeared.
19484
19485 2006-05-10  Martin Baulig  <martin@ximian.com>
19486
19487         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
19488
19489 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
19490
19491         * reflection.c: Allocate memory for dynamically created methods in the image
19492         mempools.
19493
19494 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
19495
19496         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
19497         don't use the ad pointer before checking if it's NULL (g_assert).
19498
19499 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
19500
19501         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
19502         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
19503
19504         * marshal.c: Allocate all signatures from mempools.
19505
19506         * marshal.c: Allocate some more signatures from mempools.
19507
19508 2006-05-09  Miguel de Icaza  <miguel@novell.com>
19509
19510         * object.c (mono_load_remote_field): The code used to provide a
19511         temporary variable for returning results if the user did not
19512         provide a result pointer.  But our temporary variable was allocted
19513         on the satck.
19514
19515         Fix calling code to always pass a result area.   Coverity ID 103.
19516
19517 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
19518
19519         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
19520         value, not the old. Fixes #78312.
19521         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
19522
19523         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
19524         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
19525         per-image cache.
19526
19527         * assembly.c (mono_assembly_close): Free image->references.
19528
19529         * assembly.c (mono_assembly_names_equal): Fix a warning.
19530         (mono_assemblies_cleanup): Cleanup more global data.
19531
19532         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
19533
19534         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
19535         ptr_cache and image->modules.
19536
19537         * image.c (mono_image_init): Allocate array_cache lazily.
19538         
19539 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19540
19541         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
19542         behavior was changed recently and has bad side effects.
19543
19544 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
19545
19546         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
19547         
19548         * assembly.c (mono_assembly_close): Remove a debug printf.
19549
19550         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
19551
19552         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
19553         to also allow for temporary references between mono_image_open ()/close ().
19554
19555         * domain.c (get_runtimes_from_exe): Add a FIXME.        
19556
19557 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
19558
19559         * marshal.c: Fix support for dynamic methods.
19560
19561         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
19562
19563         * marshal.c (mono_marshal_cleanup): New cleanup function.
19564
19565         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
19566         image mempools.
19567
19568         * class.c (mono_class_init): Fix leaking class->nested_classes.
19569
19570         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
19571
19572         * image.c (mono_image_init): Initialize the new cashes.
19573
19574         * image.c (mono_image_close): Destroy the new cashes.
19575
19576         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
19577
19578         * mempool.c (mono_mempool_strdup): New helper function.
19579
19580         * class-internals.h: Add prototype for mono_loader_unlock ().
19581
19582         * domain.c (mono_jit_info_table_find): Fix a warning.
19583         (mono_debugger_check_runtime_version): Ditto.
19584
19585         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
19586         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
19587         functions to these modules.
19588
19589         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
19590         metadata modules.
19591         
19592         * marshal.c (mono_free_bstr): Fix a warning.
19593
19594         * assembly.c (mono_assembly_open_full): Fix another small leak.
19595
19596         * object.c: Fix some unload leaks in the remoting code.
19597
19598         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
19599         function.
19600
19601         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
19602
19603         * reflection.c: Fix some unload leaks in dynamic assemblies.
19604
19605 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
19606
19607         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
19608         * marshal.h: Add BSTR support on Win32
19609         * icall.c: Add BSTR icalls
19610         * metadata.h: Add BSTR enums
19611
19612 2006-04-28  Miguel de Icaza  <miguel@novell.com>
19613
19614         Work to catch the crash from #76795 and turn it into an
19615         exception.   As I stubbed out pieces of the VisualBasic support,
19616         I found a number of places where the code was failing and I added
19617         checks to those places. 
19618         
19619         * metadata.c (do_mono_metadata_parse_generic_class): Make this
19620         function return a status code.  If we fail to parse the signature
19621         from mono_metadata_parse_generic_inst, return FALSE.
19622
19623         * loader.c (mono_get_method_from_token): If we fail to load the
19624         method (mono_class_get) return NULL.   
19625
19626         * (method_from_memberref): Return NULL if we are unable to parse
19627         the method signature
19628
19629         (mono_loader_error_prepare_exception): Since we now use the
19630         loader_error flag internally to stop processing, and obtaining
19631         exceptions that might be thrown will walk this code path the
19632         proper way of going from a MonoLoaderError into a
19633         MonoException was convoluted.   This new routine encapsulates the
19634         process of turning the error into an exception and *clearing* the
19635         error afterwards.
19636         
19637 2006-04-27  Miguel de Icaza  <miguel@novell.com>
19638
19639         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
19640         with missing assemblies), and to cope with:
19641
19642                 * Missing fieldref from a non-existing assembly.
19643                 * Missing methodref from a non-existing assembly.
19644
19645         The first batch of work to address *some* of the issues from 76661.
19646         
19647         * object.c (mono_class_create_runtime_vtable): If we fail to
19648         initialize the class raise the exception here. 
19649
19650         * metadata.c (mono_class_get_overrides_full): If any methods fail
19651         to load return the failure to the caller.
19652
19653         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
19654         flagging assemblies that failed to load.   
19655
19656         Do not crash if we are unable to load the assembly.
19657
19658         (mono_assembly_close): Do nothing with REFERENCE_MISSING
19659         assemblies. 
19660
19661         * loader.c (mono_loader_set_error_type_load): Change the
19662         convention to always pass unallocated strings, so we make our own
19663         copies (I know our own code had duplicated strings before, but
19664         this keeps the normal conventions).
19665         (method_from_memberref): Call mono_loader_set_error_method_load
19666         for all possible failures of loading the class. 
19667         Remove assert, turn into a loader error.
19668
19669         (mono_loader_error_to_exception): Move this routine from mini
19670         (mini_loader_error_to_exception) there was no need to have that in
19671         mini. 
19672
19673         * class.c (mono_class_from_typeref): If we were not able to load
19674         the assembly with mono_assembly_load_reference, call the
19675         mono_loader_set_error_type_load to register the problem.
19676
19677         (mono_class_setup_fields): If we fail to load the type from
19678         mono_metadata_parse_type_full, call mono_class_set_failure and
19679         break from the loop.
19680
19681         If class->exception_type is set, we do not layout the fields as
19682         that might crash the runtime, and instead return (from breaking
19683         from the previous loop).
19684
19685         (mono_class_setup_vtable): This now returns a boolean indicating
19686         whether the table was properly setup.   The decision is driven by
19687         mono_class_get_overrides_full which might run into non-existing
19688         methods. 
19689         
19690         (mono_class_init): Returns TRUE on success or FALSE if there was a
19691         problem in loading the type (incorrect assemblies, missing
19692         assemblies, methods, etc).
19693
19694         When we call mono_class_setup_fields we also check for a potential
19695         error inside this call (either a class exception or a general
19696         loader exception).
19697
19698         (mono_class_create_from_typedef): If the parent fails to load
19699         (calling mono_class_get_full) return NULL.
19700         
19701         ** Important **
19702
19703         calls to mono_metadata_parse_type_full should be checked
19704         everywhere and set the mono_class_set_failure
19705         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
19706
19707         The current patch checks the places where my manually constructed
19708         tests show the errors are showing up, but we should do it
19709         everywhere. 
19710
19711         ** Important2 **
19712
19713         mono_class_init return values should be tested everywhere, like
19714         the previous case this is something that we should audit
19715         everywhere and not only on the cases exposed by the tests I
19716         created. 
19717
19718 2006-04-26  Miguel de Icaza  <miguel@novell.com>
19719
19720         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
19721         boolean parameter and instead pass the information on `options'
19722         parameter (FileOptions).
19723
19724         * icall.c: Register the new signature for MonoIO.Open.
19725
19726         * debug-helpers.c (dis_one): Trying to understand how coverity
19727         works.  Fix Run 5, item 78.
19728
19729 2006-04-26  Dick Porter  <dick@ximian.com>
19730
19731         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
19732         dereference.
19733
19734 2006-04-25  Martin Baulig  <martin@ximian.com>
19735
19736         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
19737
19738         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
19739         debugger_thread_created().
19740         (debugger_gc_push_all_stacks): Don't handle the main thread in any
19741         special way.
19742         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
19743         (mono_debugger_finalize_threads): New function; undo the effects
19744         of mono_debugger_init_threads().
19745         (mono_debugger_create_all_threads): Removed.
19746
19747 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
19748
19749         * image.c (mono_image_close): Tidy up trace messages.
19750
19751         * assembly.c (mono_assembly_close): Ditto.
19752
19753         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
19754         no longer references an already freed assembly. Fixes #78168.
19755
19756 2006-04-21  Dick Porter  <dick@ximian.com>
19757
19758         * threads.c (mono_thread_detach): Fix reference counting when
19759         detaching threads.
19760
19761 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
19762
19763         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
19764         #78155.
19765
19766 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
19767
19768         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
19769         (mono_type_to_stind): Ditto.
19770
19771         * marshal.c: Use the new helper functions to simplify code.
19772
19773         * image.c (mono_image_close): Add some code for help debug assembly unloading
19774         problems.
19775
19776         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
19777         image mempool.
19778
19779         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
19780         assembly was already loaded in another appdomain. Fixes #78083.
19781
19782 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
19783
19784         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
19785         referenced assemblies.
19786         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
19787
19788         * domain.c (mono_domain_free): Add a trace message.
19789
19790         * appdomain.c (add_assemblies_to_domain): Ditto.        
19791
19792         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
19793         field.  
19794
19795 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
19796
19797         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
19798
19799 2006-04-12  Martin Baulig  <martin@ximian.com>
19800
19801         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
19802         `USE_INCLUDED_LIBGC'.   
19803
19804 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
19805
19806         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
19807         the patch contains ../ and a small directory name later. Hopefully fixes
19808         #78035.
19809
19810 2006-04-10  Martin Baulig  <martin@ximian.com>
19811
19812         Clean up the debugger's thread-handling code.
19813
19814         The debugger's thread-handling code has been moved from
19815         ../mini/debug-debugger.c to threads.c.  We now iterate directly
19816         over the `threads' hash, keep track of exiting threads and also
19817         use proper locking.
19818
19819         We can now debug XSP and XSP based applications with the debugger.
19820
19821         * object-internals.h (MonoThread): Added `gpointer end_stack'.
19822
19823         * threads.h
19824         (MonoThreadCallbacks): Removed; this was only used by the debugger.
19825         (mono_install_thread_callbacks): Likewise.      
19826
19827         * threads.c (mono_thread_callbacks): Removed.
19828         (debugger_thread_created, debugger_thread_exited): New static functions.
19829         (start_wrapper): Call debugger_thread_created().
19830         (thread_cleanup): Call debugger_thread_exited().
19831         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
19832         (mono_debugger_init_threads): New public function.
19833         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
19834         iterate directly over the `threads' hash and also use proper locking.
19835
19836         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
19837
19838         * mono-debug-debugger.h
19839         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
19840
19841 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
19842
19843         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
19844         argument type=array. Fixes #78057.
19845
19846 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
19847
19848         * culture-info-table.h : regenerated. Fixed bug #69652.
19849
19850 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
19851
19852         * loader.c metadata.c: Reapply a variant r59116.
19853         
19854         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
19855
19856         * class.c (mono_class_setup_interface_offsets): New internal function.
19857
19858         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
19859         interfaces too. Fixes #77398.
19860
19861         * reflection.c (encode_cattr_value): Add support for 
19862         parameter type=object, argument type=array.
19863         (load_cattr_value): Ditto. Fixes #77916.
19864
19865         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
19866         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
19867
19868         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
19869         a byval char array and CharSet is Ansi.
19870
19871         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
19872
19873 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
19874
19875         * metadata.c: Add some locking comments.
19876         
19877         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
19878         mempool.
19879         (mono_metadata_free_method_signature): Don't free the signature itself.
19880
19881         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
19882
19883         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
19884         reference the same MonoImage.
19885         (mono_assembly_load_from_full): Add an assert.
19886
19887 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
19888
19889         * image.c (mono_image_close): Don't put the image we are about to free into the
19890         loaded_images_guid_hash.
19891
19892         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
19893         to reduce code duplication.
19894
19895         * marshal.c: Register the native functions called by this module as icalls, to
19896         somewhat centralize the creation of MonoMethodSignature's.
19897
19898         * loader.c (mono_method_signature): Add a cache for method signatures.
19899
19900         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
19901         the parameter attributes of a method.
19902         (mono_metadata_parse_method_signature_full): Refactored the computation of
19903         parameter attributes into a separate function. Also avoid one allocation in
19904         most cases.
19905
19906         * assembly.c (mono_assembly_close): Ditto.
19907
19908         * image.c (mono_image_close): Log trace messages with INFO level.
19909
19910         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
19911
19912         * image.c reflection.c: Correct reference counting of image modules.
19913         
19914         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
19915         of this function from the image mempool.
19916         
19917         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
19918         to allow more cached types to be used.
19919
19920         * mono-debug.c (mono_debug_add_method): Appled patch from
19921         David S. Miller  <davem@sunset.davemloft.net>: Access 
19922         minfo->lexical_blocks[] entry elements using read32().
19923
19924 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
19925
19926         * loader.c (mono_free_method): No longer free the method header for non-dynamic
19927         methods as it is allocated from the mempool.
19928
19929         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
19930         image mempool.
19931
19932         * metadata-internals.h: Add comments describing the reference counting scheme
19933         used for MonoImage and MonoAssembly.
19934
19935         * image.c assembly.c reflection.c: Rework reference counting of images and 
19936         assemblies so they are freed when the runtime is shut down. Free some 
19937         additional memory structures when an image is unloaded.
19938         
19939 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
19940
19941         * class.c loader.c reflection.c: Allocate more data structures in
19942         the image mempool.
19943
19944 2006-03-31  Miguel de Icaza  <miguel@novell.com>
19945
19946         * icall.c
19947         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
19948         build on pre glib 2.4 systems.
19949
19950 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
19951
19952         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
19953
19954         * icall.c: Fix some warnings.
19955
19956 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
19957
19958         * culture-info-table.h : regenerated.
19959
19960 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
19961
19962         * threads.c, object-internals.h, verify.c: changed the culture caching
19963         code to use a normal MonoArray for storage so the GC can keep track of
19964         them easily. Fixed bits of the cache logic, too and simplified the
19965         code.
19966
19967 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
19968
19969         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
19970         thread for non-Boehm GCs.
19971
19972 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
19973
19974         * domain.c, object.c, domain-internals.h: reduce the amount of memory
19975         needed to keep track of the data for static fields.
19976
19977 2006-03-29  Raja R Harinath  <rharinath@novell.com>
19978
19979         Fix #75172
19980         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
19981         for interface classes.  Use 'num_methods' instead.
19982         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
19983         before using '->vtable_size' field.
19984
19985 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
19986
19987         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
19988         doesn't contain managed pointers, so use a normal hashtable.
19989
19990 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
19991
19992         * reflection.c, class-internals.h, domain.c: fixed handling of types
19993         used as values for objects in custom attributes (bug #77915):
19994
19995 2006-03-24  Martin Baulig  <martin@ximian.com>
19996
19997         * class.c (mono_class_setup_fields): Added support for generic
19998         instances; fixes #77580.
19999
20000 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20001
20002         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
20003
20004 2006-03-24  Dick Porter  <dick@ximian.com>
20005
20006         * file-io.c (get_file_attributes): More stat macro breakage.
20007         Fixes bug 77759.
20008
20009 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
20010
20011         * profiler.c: added the file=filename option in the default profiler
20012         to output the profile data to filename.
20013
20014 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20015
20016         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
20017         bug #77877.
20018
20019 2006-03-22  Martin Baulig  <martin@ximian.com>
20020
20021         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
20022         allocated `MonoClassField *' in `fb->handle'.
20023
20024 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
20025
20026         * class.c, image.c, metadata-internals.h: implemented new mechanism to
20027         allocate interface ID to save memory and allow better ID reuse on
20028         appdomain unload. setup_generic_vtable () removal from Martin.
20029
20030 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
20031
20032         * object.h, appdomain.c, domain.c, exception.c, icall.c,
20033         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
20034         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
20035         write barriers for reference stores with managed objects accessed with
20036         C structures in the runtime and in embedding programs.
20037
20038 2006-03-20  Raja R Harinath  <rharinath@novell.com>
20039
20040         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
20041         'interface_id' and 'max_interface_id' fields of MonoClasses
20042         representing open generic types.
20043
20044 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
20045
20046         * object.h, object.c, icall.c: added functions to deal with
20047         storing valuetypes that contain references in managed objects.
20048         * reflection.c, string-icalls.c, threads.c, marshal.c: small
20049         fixes and comments around uses of mono_array_addr ().
20050
20051 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
20052
20053         * object.h, icall.c, monitor.c: object.GetHashCode ()
20054         implementation that supports the moving garbage collector.
20055
20056 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
20057
20058         * icall.c, threads-types.h, threads.c: implemented finalizer for
20059         LocalDataStoreSlot.
20060
20061 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
20062
20063         * metadata.c (mono_type_size): Add a fixme.
20064         (mono_type_stack_size): Ditto.
20065
20066         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
20067         'type_forwarders' field.
20068
20069         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
20070         attribute from net 2.0.
20071
20072         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
20073         from class.c.
20074
20075         * class.c (mono_class_setup_fields): Fix a warning.
20076         
20077         * class.c (mono_class_from_name): Add support for assemblyref entries
20078         in the EXPORTEDTYPE table.
20079
20080         * reflection.c: Add support for handling type forwarders under net 2.0.
20081
20082         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
20083         
20084 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
20085
20086         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
20087         overwriting entries in ModuleBuild->types, also clean up the code
20088         a little. Fixes #77774.
20089
20090 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
20091
20092         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
20093         load friend assembly info when present.
20094
20095 2006-03-14  Raja R Harinath  <rharinath@novell.com>
20096
20097         Fix crasher on gtest-158.cs.
20098         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
20099         the return value if the MonoClass we want is yet in an
20100         inconsistent state.
20101         * class.c (mono_class_create_from_typedef): Add an comment
20102         explaining an order dependency between mono_class_setup_parent and
20103         mono_class_setup_mono_type.
20104
20105 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
20106
20107         * class.c: documentation updates and events bug fix.
20108
20109 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
20110
20111         * class.c: some cleanup, locking fixes.
20112
20113 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
20114
20115         * class.c: fix the generics code to setup nested
20116         type info to the instantiated type (bug #77770).
20117
20118 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
20119
20120         * marshal.c: fixed a few type correctness issues.
20121
20122 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
20123
20124         * loader.c: the Set/Get/Addrtess array methods should be public.
20125
20126 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
20127
20128         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
20129         
20130         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
20131         info->wrapper.
20132
20133 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
20134
20135         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
20136
20137         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
20138
20139         * mempool.c (mono_mempool_alloc): Speed this up a bit.
20140         (mono_mempool_alloc0): Ditto.
20141
20142 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20143
20144         * socket-io.c:
20145         (create_object_from_sockaddr): it was allocating 4 extra bytes
20146         for the AF_UNIX data. Fixes bug #77747.
20147
20148 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
20149
20150         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
20151
20152 2006-03-09  Dick Porter  <dick@ximian.com>
20153
20154         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
20155         Fixes bug 76966 again.
20156
20157 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
20158
20159         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
20160         names from r57532
20161         * appdomain.c: Bumped corlib version to 48 (due to r57532)
20162
20163 2006-03-07  Martin Baulig  <martin@ximian.com>
20164
20165         * object.c
20166         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
20167
20168 2006-03-07  Martin Baulig  <martin@ximian.com>
20169
20170         * class.c
20171         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
20172         regression introduced in r56970; see gtest-252.cs.
20173
20174         * loader.c (mono_get_method_constrained): Correctly handle generic
20175         methods; see gtest-253.cs.
20176
20177 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
20178
20179         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
20180
20181 2006-03-04  Martin Baulig  <martin@ximian.com>
20182
20183         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
20184         compute the parent type at runtime, just like we're already doing
20185         it for interfaces.
20186
20187         * reflection.c
20188         (mono_reflection_bind_generic_parameters): Don't compute the
20189         parent type anymore.
20190
20191         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
20192
20193 2006-03-04  Martin Baulig  <martin@ximian.com>
20194
20195         * mono-debug-debugger.h
20196         (mono_debugger_create_notification_function): Allocate memory at
20197         runtime and return a pointer to it.
20198
20199 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
20200
20201         * assembly.c: Fix windows build.
20202         
20203         * assembly.c: Fix build.
20204
20205         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
20206
20207         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
20208         
20209 2006-03-03  Dick Porter  <dick@ximian.com>
20210
20211         * process.c
20212         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
20213         Check parameters before dereferencing them.  Fixes Aaron's part of
20214         bug 77393.
20215
20216 2006-03-03  Raja R Harinath  <rharinath@novell.com>
20217
20218         Fix performance regression.
20219         * loader.c (find_method_in_class): Add 'from_class' argument.
20220         Rename 'klass' argument to 'in_class'.  The signature is compared
20221         against the method in 'in_class', and the corresponding method is
20222         returned from 'from_class'.
20223         (find_method): Walk both 'in_class' and 'from_class' in parallel.
20224         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
20225         type definition and generic instantiation in parallel.
20226         (mono_get_method_constrained): Update to changes.
20227
20228 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
20229
20230         * threads.c: make sure the domain is correct, too when doing
20231         mono_thread_attach ().
20232
20233 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
20234
20235         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
20236         windows. Fixes #77683.
20237
20238 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
20239
20240         * object.h, *: introduced specific way to set elements of an array
20241         of references to be used as write barrier. Still need to audit the
20242         uses of mono_array_addr.
20243
20244 2006-03-01  Miguel de Icaza  <miguel@novell.com>
20245
20246         * object-internals.h: New field to cache the assmebly name, patch
20247         from Tambet Ingo (tambet@ximian.com)
20248
20249 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
20250
20251         * decimal.h, class-internals.h, metadata-internals.h,
20252         file-io.h: mark a few function declarations as internal, to
20253         reduce the number of PLT entries.
20254
20255 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20256
20257         * file-io.c: fix typo in warning message.
20258
20259 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
20260
20261         * loader.c: on unix, lookup the "*A" version of a function
20262         if charset is auto as a second option before failing.
20263
20264 2006-02-28  Raja R Harinath  <rharinath@novell.com>
20265
20266         * class.h (mono_class_inflate_generic_method): Revert to two
20267         argument version.
20268         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
20269         (mono_class_inflate_generic_method_full): Add.
20270         * class.c (mono_class_inflate_generic_method_full): Rename from
20271         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
20272         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
20273         * loader.c, reflection.c: Update to changes.
20274
20275 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
20276
20277         * icall.c: const fixes and small improvements.
20278
20279 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20280
20281         * threadpool.c: for asynchronous connect(), enable the same workaround
20282         for BSD 6 as for the Mac. Fixes bug #77637.
20283
20284 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
20285
20286         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
20287         formatted classes. Fixes #77524.
20288
20289 2006-02-24  Raja R Harinath  <rharinath@novell.com>
20290
20291         * class.c (inflate_generic_type): Add a couple more
20292         micro-optimizations.
20293         (inflate_generic_context): Don't use the 'gmethod' from
20294         'inflate_with'.
20295         (mono_class_inflate_generic_method): If the method has generic
20296         parameters, but the passed-in context doesn't have a 'gmethod',
20297         create one.  Use the possibly simplified generic instantiation
20298         from the declaring class instead of the one passed in.
20299
20300 2006-02-24  Raja R Harinath  <harinath@gmail.com>
20301
20302         Make generic method signature and method header handling lazy.
20303         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
20304         (inflate_generic_header): Likewise.
20305         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
20306         parameter to avoid inflating types.
20307         (mono_get_inflated_method): Empty out.
20308         * class.h (mono_class_inflate_generic_method): Update to changes.
20309         * loader.c (mono_get_method_from_token): Don't parse signature for
20310         generic methods, nor methods of generic classes.
20311         (mono_method_signature): Rename from 'mono_method_signature'.
20312         Inflate signature on demand.
20313         (mono_method_get_header): Inflate method header on demand.
20314         * reflection.c: Update to changes.
20315
20316 2006-02-23  Raja R Harinath  <rharinath@novell.com>
20317
20318         * metadata.c (mono_metadata_inflate_generic_inst): If the
20319         instantiation is closed, don't bother expanding it in the new
20320         context.
20321         * class.c (inflate_generic_class): If the generic instantiation
20322         doesn't change after inflation, return the argument itself.
20323         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
20324         Add bounds checks.
20325         (inflate_generic_context): If neither the generic class nor the
20326         generic method instantiations change, return the original context.
20327         * reflection.c (mono_method_get_object): Do
20328         'mono_get_inflated_method' before accessing the ->klass field.
20329         (inflate_mono_method): Don't create a MonoGenericMethod unless
20330         necessary.
20331         (inflate_method): Don't pass a constructed type as the declaring
20332         type of a methodbuilder.
20333
20334 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
20335
20336         * object.c: fix memory overwrite.
20337
20338 2006-02-22  Dick Porter  <dick@ximian.com>
20339
20340         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
20341         it doesn't work any more.
20342         (mono_threads_request_thread_dump): Fix unused variable warnings.
20343
20344 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
20345
20346         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
20347         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
20348         the public header file.
20349
20350 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
20351
20352         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
20353
20354 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
20355
20356         * class-internals.h, object.c: reduce the size of MonoVTable
20357         and store the interface_offsets array at negative offsets.
20358
20359 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
20360
20361         * metadata.c: tweak table descriptors data structures to reduce
20362         size and runtime relocations.
20363
20364 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
20365
20366         * marshal.c: fix some types and opcodes to be type-safe
20367         in marshaling wrappers.
20368
20369 2006-02-21  Ankit Jain  <jankit@novell.com>
20370
20371         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
20372
20373 2006-02-21  Raja R Harinath  <rharinath@novell.com>
20374
20375         * metadata.c (get_constraints): Relax debugging checks for monodis.
20376
20377 2006-02-21  Ankit Jain  <jankit@novell.com>
20378
20379         * metadata.c (mono_metadata_load_generic_params): Move the code
20380         checking for ambiguous generic params from here to mono/dis/get.c
20381         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
20382
20383 2006-02-21  Raja R Harinath  <harinath@gmail.com>
20384
20385         Fix assertion triggered when compiling nemerle.
20386         * class.c (mono_get_shared_generic_inst): Rename from
20387         get_shared_inst and make non-static.
20388         * loader.c (mono_get_shared_generic_method): New.  Used to create
20389         the MonoGenericContext-equivalent of a MonoGenericContainer.
20390         (mono_get_method_from_token): Initialize the 'context' field of
20391         the created MonoGenericContainer.
20392         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
20393         * metadata.c (get_constraints): Add sanity check.
20394         * class-internals.h: Add new internal methods.
20395
20396         * reflection.c (verify_safe_for_managed_space): New sanity check.
20397         Currently checks that owner-less generic parameters aren't allowed
20398         in managed space.
20399         (mono_type_get_object): Use it.
20400         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
20401         that are now in mono_type_get_object.
20402         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
20403
20404 2006-02-19  Raja R Harinath  <harinath@gmail.com>
20405
20406         * metadata.c (mono_type_create_from_typespec): Rename from
20407         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
20408         argument and caching of types in the generic container.
20409         (unwrap_arrays, find_generic_param): Remove.
20410         * metadata-internals.h: Update.
20411         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
20412
20413 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
20414
20415         * class.c (mono_class_get_exception_for_failure): Fix a warning.
20416
20417         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
20418         return values. Fixes #77581.
20419
20420         * class.c (mono_fnptr_class_get): Switch name and name_space.
20421
20422         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
20423         classes and add support for [In, Out] attributes.
20424         (mono_marshal_free_asany): Ditto. Fixes #77524.
20425
20426 2006-02-18  Raja R Harinath  <harinath@gmail.com>
20427
20428         * class.c (mono_class_from_generic_parameter): Make more robust to
20429         incomplete MonoGenericContainers from monodis.
20430
20431 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
20432
20433         * class-internals.h: added some more exception types.
20434         * class.c, metadata.c: added a few checks to handle missing
20435         types.
20436
20437 2006-02-17  Raja R Harinath  <rharinath@novell.com>
20438
20439         Use owner-less generic-params some more.
20440         * class.c (my_mono_class_from_generic_parameter): Remove.
20441         (mono_class_from_generic_parameter): Handle null image,
20442         param->name and param->owner.
20443         (mono_class_from_mono_type): Update.
20444         (mono_class_create_from_typespec): Remove 'container' parameter.
20445         If that parameter is non-null, the result is always inflated by
20446         'mono_class_get_full' anyway.
20447         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
20448         parameter.
20449         (mono_class_get_full): Update.
20450
20451         * class.c (inflate_generic_type) [GENERICINST]: If the generic
20452         instance is not open, don't bother inflating.
20453         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
20454         parse metadata for inflated classes.
20455         (_mono_class_get): Change GenericContext* parameter to
20456         GenericContainer*.
20457         (mono_class_create_from_typespec): Likewise.  Simplify, and
20458         implement trivially.  All the cases are handled in
20459         mono_class_from_mono_type.  Don't inflate returned class.
20460         (mono_class_get_full): Delegate GENERICINST optimization to
20461         inflate_generic_type.
20462         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
20463
20464 2006-02-16  Dick Porter  <dick@ximian.com>
20465
20466         * socket-io.c (create_object_from_sockaddr): Fix typo.
20467         (create_sockaddr_from_object): Check array lengths before
20468         potentially accessing items off the end.
20469         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
20470         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
20471         (ves_icall_System_Net_Sockets_Socket_Send_internal)
20472         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
20473         length checks to avoid wraparound overflows.
20474         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
20475         contents of the array of sockets
20476         (hostent_to_IPHostEntry2)
20477         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
20478         Check return value of inet_ntop ().
20479         (addrinfo_to_IPHostEntry): Fix typo
20480
20481 2006-02-16  Raja R Harinath  <rharinath@novell.com>
20482
20483         Type metadata parsing doesn't use generic-instantiation information.
20484         * metadata.c (mono_metadata_parse_array_full): Change
20485         MonoGenericContext* parameter to MonoGenericContainer*.
20486         (mono_metadata_parse_type_full): Likewise.
20487         (mono_type_create_from_typespec_full): Likewise.
20488         (mono_metadata_parse_mh_full): Likewise.
20489         (mono_metadata_parse_generic_inst): Likewise.
20490         (do_mono_metadata_parse_generic_class): Likewise.
20491         (do_mono_metadata_parse_type): Likewise.
20492         * metadata-internals.h: Update to changes.
20493         * class.c (mono_class_find_enum_basetype): Likewise.
20494         (mono_class_setup_fields): Likewise.
20495         (mono_class_create_from_typespec): Likewise.
20496         * loader.c (method_from_methodspec): Likewise.
20497         (mono_get_method_from_token): Likewise.
20498         (mono_method_get_header): Likewise.
20499
20500 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
20501
20502         * marshal.c: handle additional GENERICINST case (patch from
20503         Thong Nguyen <tum@veridicus.com>).
20504         Fix a few cases where LDIND_I/STIND_I was used for references.
20505
20506 2006-02-16  Raja R Harinath  <rharinath@novell.com>
20507
20508         * reflection.c (mono_reflection_get_token): Remove unused variable.
20509
20510 2006-02-16  Martin Baulig  <martin@ximian.com>
20511
20512         * reflection.c (mono_reflection_get_token): Add support for fields
20513         in instantiated generic types.
20514
20515         * icall.c
20516         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
20517
20518 2006-02-15  Martin Baulig  <martin@ximian.com>
20519
20520         * icall.c
20521         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
20522         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
20523         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
20524         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
20525
20526 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
20527
20528         * class.c, metadata.c, metadata.h, object.c, icall.c,
20529         marshal.c: changed mono_type_get_underlying_type () to do
20530         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
20531         Fixed handling of instantiated generic valuetypes (bug #75479).
20532
20533 2006-02-15  Raja R Harinath  <rharinath@novell.com>
20534
20535         * metadata.c (mono_metadata_decode_signed_value): Simplify.
20536         Delegate to mono_metadata_decode_value, and work on the returned value.
20537
20538         * icall.c (ves_icall_MonoType_GetGenericArguments):
20539         Add consistency check here too.
20540         
20541 2006-02-15  Ankit Jain  <jankit@novell.com>
20542
20543         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
20544         char/short etc.
20545
20546 2006-02-15  Ankit Jain  <jankit@novell.com>
20547
20548         * metadata.c (mono_metadata_decode_signed_value): New function to decode
20549         signed values, used only for representing lower bounds of arrays.
20550         (mono_metadata_parse_array_full): Use new
20551         mono_metadata_decode_signed_value to decode lower bounds.
20552
20553 2006-02-14  Martin Baulig  <martin@ximian.com>
20554
20555         * reflection.c
20556         (mono_reflection_get_token): Support "MonoGenericMethod" and
20557         "MonoGenericCMethod" and allow generic instances / methods.
20558
20559 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
20560
20561         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
20562         to obtain the terminal size using an ioctl.
20563
20564         * object.c (mono_nullable_init): Revert this as nullable reference
20565         types are not valid.
20566         (mono_nullable_box): Ditto.
20567
20568 2006-02-09  Dick Porter  <dick@ximian.com>
20569
20570         * threads.c (mono_thread_detach): Drop a reference to the thread
20571         we're detaching.
20572
20573 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
20574
20575         * object.c (mono_nullable_init): Handle nullable reference types.
20576         (mono_nullable_box): Ditto. Fixes #77446.
20577
20578 2006-02-07  Martin Baulig  <martin@ximian.com>
20579
20580         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
20581
20582 2006-02-07  Ankit Jain  <jankit@novell.com>
20583
20584         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
20585         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
20586         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
20587         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
20588         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
20589         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
20590
20591 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
20592
20593         * class.c (mono_class_create_generic): Set type_token as well.
20594
20595         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
20596         compatible with MS.
20597
20598 2006-02-02  Martin Baulig  <martin@ximian.com>
20599
20600         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
20601         has never been used so far.
20602
20603 2006-02-02  Martin Baulig  <martin@ximian.com>
20604
20605         * mono-debug-debugger.h: Changed comment at the top of this file;
20606         the header is not installed, but it's safe to #include it from
20607         within the JIT.
20608
20609         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
20610         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
20611
20612 2006-02-02  Martin Baulig  <martin@ximian.com>
20613
20614         * mono-debug.h
20615         (MonoSymbolTable): Removed the `metadata_info' field.
20616
20617         * mono-debug.c
20618         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
20619
20620         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
20621         (mono_debugger_add_builtin_types): Removed.
20622         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
20623         (mono_debugger_create_notification_function): We now operate on a
20624         pre-allocated area; take a `gpointer' and return `void'.
20625
20626         * mono-debug-debugger.c
20627         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
20628         (mono_debugger_add_builtin_types): Removed.
20629
20630 2006-02-02  Martin Baulig  <martin@ximian.com>
20631
20632         * threads.c (mono_debugger_create_all_threads): New public method.
20633
20634 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
20635
20636         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
20637         breaks on several platforms.
20638
20639 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
20640
20641         * assembly.c: the VS.NET build doesn't supply default values for
20642         MONO_ASSEMBLIES and MONO_CFG_DIR.
20643
20644 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
20645
20646         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
20647         helper function.
20648
20649         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
20650
20651         * loader.c (method_from_memberref): Fix a warning.
20652
20653         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
20654
20655         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
20656         with explicit layout. Fixes #77433.
20657
20658 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
20659
20660         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
20661         max_interface_id is initialized before using it. Fixes #77398.
20662         (ves_icall_Type_GetInterfaces): Ditto.
20663
20664 2006-01-30  Raja R Harinath  <rharinath@novell.com>
20665
20666         * metadata.c (mono_metadata_parse_method_signature_full): Don't
20667         allocate memory for parameter attributes when parsing memberref
20668         signatures.
20669         * loader.c (mono_loader_set_error_method_load): Don't warn.
20670         (method_from_memberref): Ensure MissingMethodException gets thrown
20671         if method is not found.  Make warning more informative.
20672
20673 2006-01-29  Raja R Harinath  <harinath@gmail.com>
20674
20675         Fix #77397
20676         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
20677         return true if is byref.
20678         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
20679         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
20680         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
20681
20682 2006-01-27  Raja R Harinath  <rharinath@novell.com>
20683
20684         Fix tests/find-method.2.il
20685         * loader.c (find_method, find_method_in_class): Remove is_inflated
20686         argument.  Revert 2006-01-18 change.
20687         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
20688         is generic, search for method in its generic definition.
20689         * class.c (mono_class_setup_vtable_general): Print generic
20690         arguments of generic types in debugging printf.
20691
20692 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
20693
20694         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
20695
20696         * threads.c (mono_threads_request_thread_dump): New helper function.
20697
20698 2006-01-25  Raja R Harinath  <rharinath@novell.com>
20699
20700         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
20701
20702 2006-01-25  Ankit Jain  <jankit@novell.com>
20703
20704         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
20705         move definition to ..
20706         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
20707         
20708 2006-01-25  Ankit Jain  <jankit@novell.com>
20709             Raja R Harinath  <rharinath@novell.com>
20710
20711         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
20712         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
20713         as necessary.
20714
20715 2006-01-25  Martin Baulig  <martin@ximian.com>
20716
20717         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
20718         `MonoDebuggerThread' into debug-debugger.c.
20719
20720 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
20721
20722         * profiler.c: fix printing of data.
20723
20724 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
20725
20726         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
20727           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
20728
20729 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
20730
20731         * object.c: fix deadlock related to string interning.
20732
20733 2006-01-23  Martin Baulig  <martin@ximian.com>
20734
20735         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
20736
20737         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
20738
20739 2006-01-23  Martin Baulig  <martin@ximian.com>
20740
20741         * mono-debug.h: Moved the prototypes of some functions which are
20742         used by the JIT here from mono-debug-debugger.h.
20743
20744 2006-01-21  Martin Baulig  <martin@ximian.com>
20745
20746         * Makefile.am: Don't install mono-debug-debugger.h.
20747
20748 2006-01-21  Martin Baulig  <martin@ximian.com>
20749
20750         * mono-debug-debugger.h: Enforce the private status of this header
20751         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
20752         Moved some stuff from mono-debugger-jit-wrapper.h here.
20753
20754 2006-01-20  Raja R Harinath  <rharinath@novell.com>
20755
20756         * class.c (mono_class_from_typeref): Add a sanity test to help
20757         catch lack of assembly load/search hooks.
20758
20759 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
20760
20761         * marshal.c (emit_struct_conv): Relax the fields with same offset
20762         check even more. Fixes #77230.
20763
20764 2006-01-18  Martin Baulig  <martin@ximian.com>
20765
20766         * loader.c (find_method_in_class): Added `gboolean is_inflated'
20767         argument; if false, we compare the uninstantiated signatures.
20768         (method_from_memberref): Compare the uninstantiated signatures;
20769         fixes #76417.
20770
20771 2006-01-18  Robert Jordan  <robertj@gmx.net>
20772
20773         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
20774         Clear the weak link. Fixes bug #77170.
20775
20776         * gc.c (mono_gchandle_free):
20777         Reflect *-gc.c changes (tiny optimization).
20778
20779 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
20780
20781         * metadata.c (mono_metadata_signature_dup): Applied patch from
20782         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
20783         Fixes #77288.
20784
20785 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
20786
20787         * marshal.c (emit_struct_conv): Allow fields with the same offset when
20788         marshalling from native to managed code. Fixes #77230.
20789
20790 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20791
20792         * threadpool.c: fix problem (Mac only) when more than one asynchronous
20793         connect. Fixes bug #77020.
20794
20795 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
20796
20797         * class.c: fixed id assignement for nested interfaces (bug #77275).
20798         Added also better info for --print-vtable debugging.
20799
20800 2006-01-12  Martin Baulig  <martin@ximian.com>
20801
20802         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
20803         interfaces on-the-fly; fixes #76625.
20804
20805         * class-internals.h
20806         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
20807         don't need that anymore.
20808
20809 2006-01-12  Miguel de Icaza  <miguel@novell.com>
20810
20811         * socket-io.c
20812         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
20813         To avoid initing the nested_classes when not needed I turned the
20814         PeerCredData as a toplevel internal class, as it has to be shared
20815         anyways. 
20816
20817         Fixes the CASA issue.
20818
20819 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
20820
20821         * domain.c: Accessors for MonoJitInfo
20822
20823         * profiler-private.h: Add jitinfo to the end jit hook
20824
20825         * profiler.[ch]: Define new hooks, called after jitting which give
20826         the MonoJitInfo that was compiled
20827
20828 2006-01-10  Martin Baulig  <martin@ximian.com>
20829
20830         * class.c (mono_class_setup_events): Add support for generic
20831         classes; fixes #76440.
20832
20833 2006-01-06  Raja R Harinath  <rharinath@novell.com>
20834
20835         Fix #77160.
20836         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
20837         on passed-in method.
20838
20839 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
20840
20841         * object.c (mono_runtime_invoke_array): Add Nullable support.
20842
20843         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
20844
20845 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
20846
20847         * file-io.c: Don't consider sockets as directory and avoid an endless
20848         loop. Fix bug #76966.
20849
20850 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
20851
20852         * object.c (mono_nullable_init): New helper function.
20853         (mono_nullable_box): Ditto.
20854
20855         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
20856
20857         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
20858
20859         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
20860         
20861 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
20862
20863         * class.c (mono_class_is_assignable_from): Make T assignable to 
20864         Nullable<T>.
20865
20866 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
20867
20868         * appdomain.c: Bump corlib version to 46.
20869         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
20870         serialization purpose) and changed ves_icall_System_Reflection_
20871         Assembly_get_code_base signature to accept a boolean (to escape, or 
20872         not, the assembly code base).
20873
20874 2005-12-23  Dick Porter  <dick@ximian.com>
20875
20876         * icall.c: 
20877         * threads-types.h: 
20878         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
20879         CreateEvent icall now returns "created" boolean parameter.
20880
20881 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
20882
20883         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
20884         #76967.
20885
20886         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
20887         when attr_klass is an interface. Fixes #77045.
20888
20889 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
20890
20891         * marshal.c (emit_struct_conv): Fix previous patch.
20892         
20893         * marshal.c (emit_struct_conv): Add a check for fields with the same
20894         offset.
20895
20896 2005-12-20  Raja R Harinath  <rharinath@novell.com>
20897
20898         Fix regression in Mono.C5.
20899         * class.c (mono_class_create_generic): If 'klass' is an interface
20900         set up the interface offsets.
20901         (mono_class_is_assignable_from): Don't throw away generic arguments.
20902
20903 2005-12-19  Raja R Harinath  <rharinath@novell.com>
20904
20905         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
20906         type parameters.
20907
20908 2005-12-15  Raja R Harinath  <rharinath@novell.com>
20909
20910         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
20911         dead store.
20912         (do_mono_metadata_parse_generic_class): Don't pass the current
20913         generic context when parsing the type being instantiated: it
20914         cannot use it, anyway.
20915
20916         * loader.c (method_from_memberref): Don't inflate a signature if
20917         it doesn't contain any type parameters.
20918
20919 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
20920
20921         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
20922
20923 2005-12-14  Martin Baulig  <martin@ximian.com>
20924
20925         * class.c
20926         (mono_type_get_name_recurse): Don't return null for type
20927         parameters and open generic classes.
20928         (mono_class_setup_methods): Don't exclude generic instances.
20929         (mono_get_unique_iid): Use different IDs for different
20930         instantiations of the same generic type.
20931         (mono_class_setup_vtable): Only use setup_generic_vtable() for
20932         open generic instances; create a normal vtable for closed generic
20933         instances.
20934         (mono_class_setup_vtable_general): We're now also called for
20935         closed generic instances.
20936
20937         * reflection.c
20938         (mono_reflection_bind_generic_parameters): Correctly use
20939         mono_metadata_lookup_generic_inst() everywhere.
20940
20941 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
20942
20943         * object.c (mono_class_create_runtime_vtable): Call 
20944         mono_class_setup_vtable ().
20945
20946         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
20947         function.
20948         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
20949         #76959.
20950
20951         * loader.c (mono_loader_set_error_type_load): Print the type load
20952         warnings to the console so they are more visible to the user.
20953         (mono_loader_set_error_method_load): Ditto.
20954
20955         * reflection.c (ensure_runtime_vtable): Revert the last change as it
20956         is still broken.
20957         
20958         * reflection.c (ensure_runtime_vtable): Fix build.
20959
20960         * reflection.c (ensure_runtime_vtable): Disable an optimization which
20961         doesn't work in all cases.
20962
20963 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
20964
20965         * object.c (mono_array_new_full): Treat a single dimensional array
20966         with 0 lower bounds as an szarray. Fixes #76973.
20967
20968         * reflection.c (custom_attr_visible): Really fix this.
20969
20970 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
20971
20972         * reflection.c (custom_attr_visible): Allow nested public attributes
20973         as well.
20974
20975         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
20976         interface check.
20977
20978 2005-12-12  Raja R Harinath  <harinath@gmail.com>
20979
20980         * class.c (set_generic_param_owner): Delete.
20981         (mono_class_create_from_typedef): Don't set ->owner field of
20982         generic parameters to "param containers" of enclosing classes.
20983         * reflection.c (mono_reflection_initialize_generic_parameter):
20984         Likewise.
20985
20986 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
20987
20988         * reflection.c (custom_attr_visible): Fix build.
20989
20990 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
20991
20992         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
20993         private attributes.
20994         
20995         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
20996         handling of null parameter defaults.
20997
20998 2005-12-09  Raja R Harinath  <rharinath@novell.com>
20999
21000         * class.c (mono_class_from_generic_parameter): Don't set
21001         klass->generic_container.
21002         (my_mono_class_from_generic_parameter): Likewise.
21003
21004 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
21005
21006         * reflection.c (load_public_key): Fix a warning.
21007         (method_encode_code): Fix unaligned accesses.
21008
21009 2005-12-07  Martin Baulig  <martin@ximian.com>
21010
21011         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
21012
21013         * reflection.c
21014         (write_generic_param_entry): Encode our custom attrs.
21015
21016         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
21017
21018 2005-12-07  Martin Baulig  <martin@ximian.com>
21019
21020         * reflection.c (encode_new_constraint): Removed; we don't use the
21021         `NewConstraintAttribute' anymore.
21022
21023 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
21024
21025         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
21026         not fire a TypeResolve event when Assembly.GetType () is called.
21027
21028 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
21029
21030         Beginning of support for nullable types in the runtime. Parts of
21031         this patch are from Martin.
21032
21033         * appdomain.c (MONO_CORLIB_VERSION): Bump
21034
21035         * domain.c (mono_init_internal): get the nullable type
21036
21037         * class.c (mono_class_is_nullable): New method
21038         (mono_class_get_nullable_param): New mehod
21039         (mono_class_create_generic): In types T? set cast_class to T
21040
21041         * class-internals.h (MonoDefaults): new nullable default class
21042         (mono_class_get_nullable_param, mono_class_get_nullable_param):
21043         new methods.
21044
21045 2005-12-05  Raja R Harinath  <rharinath@novell.com>
21046
21047         * metadata.c (select_container): New.  Refactor code to select the
21048         appropriate GenericContainer given the type of generic parameter
21049         we are looking for.
21050         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
21051         not a MonoGenericContext.  Use select_container.  Update parameters.
21052         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
21053         and MONO_TYPE_MVAR.
21054         (unwrap_arrays): Remove duplicate tests.
21055         (find_generic_param): Rename from 'has_same_context'.  Now walks a
21056         generic instantiated class to find any arguments that are generic
21057         parameters.
21058         (mono_type_create_from_typespec_full): Use find_generic_param to
21059         avoid evicting some generic instantiations from the typespec
21060         cache.
21061
21062 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
21063
21064         * reflection.c: fixed writing of doubles on ARM FPA.
21065
21066 2005-12-02  Robert Jordan  <robertj@gmx.net>
21067
21068         * icall.c: Fixed EventInfo.ReflectedType (#76829).
21069
21070 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21071
21072         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
21073         least on SUSE 10 they are not the same (on debian, they are just the
21074         same thing).
21075
21076 2005-12-01  Raja R Harinath  <rharinath@novell.com>
21077
21078         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
21079         DeclaringType for VARs and MVARs.
21080         * class.c (set_generic_param_owner): Fix initialization of owner
21081         fields.
21082
21083 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
21084
21085         * icall.c: fixed Enum.ToObject() to correctly convert the values.
21086
21087 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21088
21089         * threadpool.c: workaround for a bug that shows up on the Mac:
21090         select()+connect() on a blocking socket is not like it should
21091         be, so we proceed to connect() in that case, wasting the I/O
21092         threadpool thread until connect succeedes. Fixes bug #75436.
21093
21094 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21095
21096         * threadpool.c: fix typo when setting file descriptor states.
21097
21098 2005-11-28  Raja R Harinath  <rharinath@novell.com>
21099
21100         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
21101         * metadata.c (mono_metadata_parse_method_signature_full): Don't
21102         create a temporary signature container.
21103         (mono_metadata_parse_generic_param): Update to changes.
21104         (mono_type_create_from_typespec_full): Update to changes.
21105         * loader.c (method_from_memberref): Don't use a
21106         MonoGenericContainer while parsing a memberref signature.
21107         (method_from_methodspec): Remove dead-store of the 'container'
21108         variable.  It's overwritten before use.
21109
21110         * metadata.c (mono_type_create_from_typespec_full): Make debugging
21111         checks tighter.
21112         (mono_metadata_parse_generic_param): Likewise.
21113         * loader.c (find_method_in_class): Does not need a
21114         MonoGenericContainer.  Use 'mono_method_signature' rather than
21115         'mono_method_signature_full'.
21116         (find_method, mono_get_method_constrained, method_from_memberref):
21117         Update to changes.
21118
21119         * metadata.c (mono_type_create_from_typespec_full): Ensure that
21120         owner-less generic-parameters are never evicted from the typespec
21121         cache.
21122
21123         * loader.c (method_from_memberref): Don't use the current context
21124         when parsing signatures.
21125         (method_from_methodspec, mono_get_method_from_token): Update to changes.
21126
21127         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
21128         side-effects in g_assert.
21129         * loader.c (mono_get_method_from_token): Resolve klass earlier so
21130         that we don't potentially lose information.
21131
21132 2005-11-26  Dick Porter  <dick@ximian.com>
21133
21134         * icall.c:
21135         * threads.c: icalls to implement basic (ie, not named)
21136         System.Threading.Semaphore.
21137
21138 2005-11-24  Dick Porter  <dick@ximian.com>
21139
21140         * process.c
21141         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
21142         Use GetProcessId() if it's available.
21143
21144 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
21145
21146         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
21147
21148 2005-11-23  Raja R Harinath  <rharinath@novell.com>
21149             Ankit Jain  <jankit@novell.com>
21150
21151         * loader.c (mono_get_method_from_token): Initialize 'method' field
21152         of all generic parameters before parsing the signature.  Remove
21153         code that "fixed"-up MVAR references.
21154
21155 2005-11-23  Ankit Jain  <jankit@novell.com>
21156
21157         * metadata.c (mono_metadata_has_generic_params):
21158         (mono_metadata_load_generic_param_constraints):
21159         (mono_metadata_load_generic_params): Move duplicate code ...
21160         (mono_metadata_get_generic_param_row): ... here. Returns the
21161         first row-id in GenericParam table for a given owner (token).
21162         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
21163         prototype.
21164
21165 2005-11-23  Raja R Harinath  <rharinath@novell.com>
21166             Ankit Jain  <jankit@novell.com>
21167
21168         * metadata.c (mono_metadata_class_equal): Pass signature_only when
21169         comparing VARs too.
21170         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
21171         type->data.generic_param only if the type is an MVAR.
21172         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
21173         leak owner-less VARs and MVARs into managed space.
21174
21175 2005-11-21  Martin Baulig  <martin@ximian.com>
21176
21177         * class-internals.h
21178         (MonoMethod): Moved the `generic_container' here from
21179         `MonoMethodNormal' since we now also need it for
21180         `MonoMethodPInvoke';
21181         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
21182         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
21183         an union containing both `MonoMethodNormal' and
21184         `MonoMethodPInvoke'.
21185
21186         * loader.c
21187         (mono_get_method_from_token): Allow implementing generic methods
21188         as interncalls.
21189
21190         * threads.c
21191         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
21192         icall.
21193
21194 2005-11-17  Dick Porter  <dick@ximian.com>
21195
21196         * icall.c: 
21197         * process.h: 
21198         * process.c: Split the Process Start_internal icall into
21199         ShellExecuteEx_internal and CreateProcess_internal, which are
21200         called depending on whether UseShellExecute is true.  Fixes bug
21201         76670.
21202
21203         * appdomain.c (MONO_CORLIB_VERSION): Incremented
21204
21205 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
21206
21207         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
21208         'msize' parameters, use the information in 'mspec' instead.
21209         (emit_object_to_ptr_conv): Ditto.
21210
21211         * marshal.c (emit_struct_conv): Handle explicit layout structs with
21212         fields out of order. Fixes #76733.
21213
21214 2005-11-17  Ankit Jain  <jankit@novell.com>
21215
21216         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
21217
21218 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
21219
21220         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
21221           bug #76575.
21222
21223 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
21224
21225         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
21226         for types with non-auto layout. Fixes #76717.
21227
21228 2005-11-16  Ankit Jain  <jankit@novell.com>
21229
21230         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
21231         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
21232         if generic_context is null.
21233           (mono_metadata_generic_param_equal): param->owner can be null.
21234           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
21235         null.
21236
21237 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
21238
21239         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
21240         the correct value.
21241
21242 2005-11-15  Martin Baulig  <martin@ximian.com>
21243
21244         * object.c (set_value): Use mono_class_from_mono_type() instead of
21245         the hack for generic instances; fixes #76136.
21246
21247 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
21248
21249         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
21250         fields.
21251
21252         * image.c (load_metadata_ptrs): Initialize the new fields.
21253
21254         * reflection.c (create_dynamic_mono_image): Ditto.
21255
21256         * reflection.c (build_compressed_metadata): Use the new fields.
21257
21258         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
21259         icall.
21260
21261         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
21262         icall.
21263         
21264 2005-11-15  Ankit Jain  <jankit@novell.com>
21265             Raja R Harinath  <harinath@gmail.com>
21266
21267         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
21268         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
21269         new per-generic_container cache if the cached MonoType's context matches
21270         the current context.
21271           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
21272         to the expected context.
21273           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
21274
21275 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21276
21277         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
21278         we changed the signature of an icall.
21279         * icall.c: Modify to mono_double_ParseImpl return true/false 
21280         depending on the success, instead of throwing the exception. This will
21281         help us in Double.TryParse methods.
21282         
21283 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
21284
21285         * marshal.c (emit_marshal_object): Throw an exception when
21286         marshalling 'object' instead of crashing. Fixes #76696.
21287
21288 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
21289
21290         * class-internals.h: Add prototype for mono_type_get_full_name ().
21291
21292 2005-11-11  Dick Porter  <dick@ximian.com>
21293
21294         * threads.c (mono_thread_manage): Make sure the main thread has
21295         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
21296
21297 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
21298
21299         * loader.c (mono_loader_set_error_type_load): Log a warning to the
21300         console about the missing type.
21301         (mono_loader_set_error_method_load): Ditto.
21302
21303 2005-11-09  Miguel de Icaza  <miguel@novell.com>
21304
21305         * mono-config.c (mono_get_config_dir): Set the system defaults if
21306         none is specified.
21307
21308         * assembly.c (mono_set_dirs): New API entry point to set the
21309         assembly and the config directory in one call
21310
21311 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
21312
21313         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
21314         the ftnptr was created from a delegate in a domain other than the
21315         current domain. Fixes #75377.
21316
21317         * exception.h exception.c: Add mono_get_exception_not_supported ().
21318
21319 2005-11-08  Martin Baulig  <martin@ximian.com>
21320
21321         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
21322
21323 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
21324
21325         * security-manager.h: Added definitions to deal with strongname key 
21326         pairs bigger (and smaller) than 1024 bits.
21327         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
21328         adjust wrt the public key length being used.
21329
21330 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
21331
21332         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
21333           Windows build (r51396-51397).
21334
21335 2005-11-03  Martin Baulig  <martin@ximian.com>
21336
21337         * class.c (mono_class_setup_vtable_general): Also add generic
21338         methods to the vtable; fixes #76581.
21339
21340 2005-11-01  Miguel de Icaza  <miguel@novell.com>
21341
21342         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
21343         sure that we lookup GetString method from the System.Text.Encoding
21344         class, not the derived class or we get an empty method.
21345
21346         Fixed class #76612.
21347
21348 2005-10-25  Miguel de Icaza  <miguel@novell.com>
21349
21350         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
21351         if it has been previously set (embedders). 
21352
21353         Make mono_set_rootdir available also on Unix.
21354
21355 005-10-24  Robert Jordan  <robertj@gmx.net>
21356
21357         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
21358
21359 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
21360
21361         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
21362         only calls which are made to native code use this flag.
21363
21364         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
21365
21366 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
21367
21368         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
21369         Add support for FieldBuilders.
21370
21371 2005-10-29  Martin Baulig  <martin@ximian.com>
21372
21373         * mono-debug.c
21374         (mono_debug_using_mono_debugger): New public method; returns
21375         whether we're running inside the debugger.
21376
21377 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
21378
21379         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
21380         for Method/Constructor/FieldBuilders.
21381
21382 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
21383
21384         * reflection.c (module_add_cattrs): Save custom attributes for global methods
21385         and fields as well.
21386
21387 2005-10-26  Martin Baulig  <martin@ximian.com>
21388
21389         * mono-debug-debugger.c
21390         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
21391
21392 2005-10-24  Raja R Harinath  <harinath@gmail.com>
21393
21394         * icall.c (base64_to_byte_array): Don't pass an out-of-range
21395         integer to isspace.
21396
21397 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
21398
21399         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
21400         when passing valuetypes byref. Fixes #76502.
21401
21402 2005-10-19  Jackson Harper  <jackson@ximian.com>
21403
21404         * profiler.c: Don't put a . in front of types that are not in a
21405         namespace.
21406
21407 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
21408
21409         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
21410
21411 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
21412
21413         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
21414         #76436.
21415         (mono_marshal_get_ldflda_wrapper): Fix a warning.
21416
21417 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21418
21419         * assembly.c metadata-internals.h icall.c: Define an additional
21420         parameter for mono_assembly_name_parse_full, so we can avoid creating
21421         S.R.AssemblyName.Version when no version info wasn't passed.
21422         
21423 2005-10-09  Miguel de Icaza  <miguel@novell.com>
21424
21425         * class.c (mono_type_get_full_name): Reimplement method that was
21426         removed. 
21427
21428         * image.c: Some docs
21429
21430 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
21431
21432         * profiler.c (output_newobj_profile): Fix printing of Total memory
21433         on x86.
21434
21435 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
21436
21437         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
21438
21439 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
21440
21441         * threads.c: remove debug output.
21442
21443 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
21444
21445         * threads.c (mono_thread_manage): Fix crashes if more than 64
21446         threads need to be aborted. Hopefully fixes #75899.
21447
21448         * assembly.c (mono_stringify_assembly_name): New helper function.
21449
21450         * class.c: Use mono_stringify_assembly_name instead of the similar
21451         static function.
21452
21453         * assembly.h assembly.c: Add support for calling a postload search 
21454         hook if an assembly cannot be loaded.
21455
21456         * appdomain.c: Register new search hooks which call the AssemblyResolve
21457         events in AppDomain. Fixes #75231
21458
21459 2005-10-07  Martin Baulig  <martin@ximian.com>
21460
21461         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
21462         methods without debug info.
21463
21464 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
21465
21466         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
21467         wrappers.
21468
21469 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21470
21471         * file-io.c: now that we return symlinks, use lstat and, when the file
21472         is a symbolic link, stat, to get the file attributes. Also avoid the
21473         conversion to/from utf16/external.
21474
21475 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
21476
21477         * class.c (mono_class_layout_fields): Compute klass->has_references
21478         correctly if an embedded valuetype is not yet initialized. Fixes
21479         #76331.
21480
21481 2005-10-04  Martin Baulig  <martin@ximian.com>
21482
21483         * metadata.c
21484         (mono_metadata_load_generic_param_constraints): New public
21485         function; splitted the constraints loading out from
21486         mono_metadata_load_generic_params().
21487
21488         * class.c (mono_class_create_from_typedef): Call
21489         mono_metadata_load_generic_param_constraints() after setting up
21490         the type and creating our parent; fixes #75329.
21491
21492 2005-10-04  Martin Baulig  <martin@ximian.com>
21493
21494         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
21495         non-dynamic parent classes.
21496
21497 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
21498
21499         * file-io.c : win32 build fix (ETXTBSY seems not found).
21500
21501 2005-10-04  Martin Baulig  <martin@ximian.com>
21502
21503         * reflection.c
21504         (mono_image_get_methodspec_token): Make the cache actually work;
21505         fixes #75974.
21506
21507 2005-10-04  Martin Baulig  <martin@ximian.com>
21508
21509         * class.c (mono_class_name_from_token): Removed the unneccessary
21510         `MonoGenericContext *' argument.
21511
21512 2005-10-04  Martin Baulig  <martin@ximian.com>
21513
21514         * loader.c
21515         (method_from_methodspec): Make the caching work again; fixes the
21516         performance regression from #76262.
21517
21518 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21519
21520         * file-io.c:
21521         * file-io.h:
21522         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
21523         GetFileSystemEntries that performs the same work but without going
21524         into io-layer, locking, etc.
21525
21526 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
21527
21528         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
21529         ThreadState_Stopped as well. Fixes #76047.
21530
21531 2005-09-29  Martin Baulig  <martin@ximian.com>
21532
21533         * class.c
21534         (inflate_generic_context): If the new context has a `gmethod', set
21535         its `container' that that gmethod's `container'.
21536
21537         * metadata.c
21538         (mono_metadata_parse_generic_param): Simplify things;
21539         `generic_container = generic_context->container;' is just fine.
21540
21541         * loader.c (method_from_methodspec): Code cleanups.
21542
21543 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
21544
21545         * decimal.c: fix warning (and let gcc generate correct
21546         code on ARM with optimizations).
21547
21548 2005-09-28  Martin Baulig  <martin@ximian.com>
21549
21550         * loader.c
21551         (method_from_memberref): Added `MonoGenericContext *class_context'
21552         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
21553         (method_from_methodspec): If we're a memberref, use the enclosing
21554         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
21555
21556 2005-09-28  Martin Baulig  <martin@ximian.com>
21557
21558         * object.c (mono_runtime_invoke_array): Added support for
21559         MONO_TYPE_GENERICINST; fixes #75917.
21560
21561 2005-09-27  Martin Baulig  <martin@ximian.com>
21562
21563         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
21564         `k->byval_arg.type' to determine the actual type.
21565
21566         * loader.c (method_from_methodspec): Removed some hacks.
21567
21568 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
21569
21570         * class-internals.h (mono_field_is_deleted): Do the test for
21571         rtspecialname before we check the actual name of the field. This
21572         prevents us from dereferencing a pointer into the string table,
21573         saving us from accessing a few pages
21574
21575         * *.c: Replace the use of {Enter,Leave}CriticalSection with
21576         macros. This will allow a deadlock debugger to easily be plugged
21577         in.
21578
21579 2005-09-27  Martin Baulig  <martin@ximian.com>
21580
21581         * loader.c (method_from_methodspec): Create a "signature"
21582         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
21583
21584 2005-09-27  Martin Baulig  <martin@ximian.com>
21585
21586         * class.c
21587         (inflate_generic_class): Correctly set the new context's
21588         container.
21589
21590         * loader.c
21591         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
21592         instead of a `MonoGenericContext *'.
21593         (mono_method_signature_full): Take a `MonoGenericContainer *'
21594         instead of a `MonoGenericContext *'.
21595
21596         * metadata.c
21597         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
21598         instead of a `MonoGenericContext *'.
21599         (mono_metadata_parse_method_signature_full): Likewise.
21600
21601 2005-09-26  Martin Baulig  <martin@ximian.com>
21602
21603         * class.c
21604         (mono_class_from_generic_parameter): Set `klass->generic_container'
21605         (mono_class_from_generic_parameter): Likewise.
21606         (mono_bounded_array_class_get): We inherit the generic container
21607         from the element class.
21608
21609         * loader.c
21610         (find_method, find_method_in_class): Take a `MonoGenericContext *'
21611         argument rather than computing it here.
21612         (method_from_memberref): Correctly set the generic context before
21613         parsing the signature.  Fixes #75681.
21614
21615 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
21616
21617         * object.c (mono_class_has_special_static_fields): Fix warnings.
21618
21619 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21620
21621         * assembly.c: Add parse_public_key function, to
21622         par the public keys. Also added mono_assembly_name_parse_full,
21623         to define it the parsed key should be freed or not.
21624         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
21625         to parse a long format assembly name.
21626         * metadata-internals.h: Keep mono_assembly_name_parse_full as
21627         private, since calling it to preserve the key requires
21628         freeing it manually.
21629         
21630 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
21631
21632         * locales.c : removed HAVE_ICU part.
21633
21634 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
21635
21636         * object.c (mono_class_create_runtime_vtable): Avoid calling 
21637         field_is_special_static if the klass has no special static fields.
21638
21639         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
21640         (MonoCachedClassInfo): Likewise.
21641
21642         * object.c (mono_class_has_special_static_fields): New helper function.
21643
21644 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21645
21646         * class.c (mono_class_create_from_typedef): Don't call 
21647         interfaces_from_typedef_full for enums.
21648         (mono_class_create_from_typedef): Compute the base types of enums directly
21649         without calling mono_class_setup_fields ().
21650         (mono_class_find_enum_basetype): New helper function.
21651
21652         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
21653         one place inside the string heap.
21654         
21655 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
21656
21657         * class.c: locking fixes, code cleanups, some docs added.
21658         Allocate some data structures in the image mempool.
21659
21660 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21661
21662         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
21663         the example code.
21664         
21665 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
21666
21667         * class-internals.h, class.c, reflection.c: reduce memory taken by
21668         MonoClass.
21669
21670 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
21671
21672         * metadata.c, metadata.h, loader.h: documentation updates, code and
21673         API cleanups.
21674
21675 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21676
21677         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
21678         the example code.
21679
21680         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
21681         page faults caused by the runtime while reading metadata.
21682
21683 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21684
21685         * socket-io.c: the field names were changed 3 months ago and no one
21686         realized until bug #76077 got filed!
21687
21688 2005-09-20  Martin Baulig  <martin@ximian.com>
21689
21690         * icall.c (assembly_icalls): Removed some unused debugger icalls.
21691
21692 2005-09-20  Martin Baulig  <martin@ximian.com>
21693
21694         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
21695         write the rank into the class entry.
21696
21697 2005-09-20  Martin Baulig  <martin@ximian.com>
21698
21699         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
21700
21701 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
21702
21703         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21704
21705         * icall.c (custom_attrs_defined_internal): New icall.
21706
21707         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
21708         function.
21709         (mono_custom_attrs_construct_by_type): New helper function.
21710
21711 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
21712
21713         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
21714         terminate the resulting string. Fixes #76123.
21715
21716 2005-09-16  Martin Baulig  <martin@ximian.com>
21717
21718         * mono-debug.c
21719         (mono_debug_add_method): Ignore inflated methods for the moment.
21720
21721 2005-09-14  Martin Baulig  <martin@ximian.com>
21722
21723         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
21724
21725 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
21726
21727         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
21728         return a success/failure indication.
21729         (mono_metadata_interfaces_from_typedef_full): Ditto.
21730         (get_constraints): Ditto.
21731
21732 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
21733
21734         * marshal.c (emit_marshal_array): Fix handling of null arrays.
21735         
21736         * marshal.c (emit_marshal_array): Add support for returning string
21737         arrays from delegates. Fixes #76063.
21738
21739         * marshal.c: Use the emit_ldloc/stloc macros where possible.
21740
21741 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
21742
21743         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
21744         icall.
21745
21746 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
21747
21748         * reflection.c icall.c: Fix after mono_get_exception_type_load
21749         signature change.
21750
21751         * assembly.c (mono_assembly_get_assemblyref): New helper function.
21752         (mono_assembly_load_reference): Use the new helper.
21753
21754         * class-internals.h (MonoLoaderError): New structure containing 
21755         information about type loading errors.
21756
21757         * class-internals.h loader.c: Add APIs to store per-thread loader
21758         error information.
21759
21760         * loader.c class.c: Set the loader error if needed.
21761
21762         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
21763
21764 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
21765
21766         * decimal.c: fixed to handle the broken ARM fp format.
21767
21768 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
21769
21770         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
21771         broken.
21772
21773 2005-09-06  Martin Baulig  <martin@ximian.com>
21774
21775         * domain.c (supported_runtimes): Added v2.0.50727.
21776
21777 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
21778
21779         * culture-info.h: reduce the size of some structures.
21780
21781 2005-09-05  Martin Baulig  <martin@ximian.com>
21782
21783         Reflect latest API changes in the August CTP.
21784
21785         * icall.c
21786         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
21787         ("MonoType.HasGenericArguments"): Removed.
21788         ("MonoMethod.BindGenericParameters"): Renamed to
21789         "MakeGenericMethod".
21790         ("MethodBuilder.BindGenericParameters"): Renamed to
21791         "MakeGenericMethod".    
21792
21793 2005-09-05  Martin Baulig  <martin@ximian.com>
21794
21795         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
21796
21797 2005-09-05  Martin Baulig  <martin@ximian.com>
21798
21799         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21800
21801         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
21802         generic_container is non-NULL.
21803
21804 2005-09-05  Martin Baulig  <martin@ximian.com>
21805
21806         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21807
21808         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
21809
21810 2005-08-29  Michal Moskal  <malekith@nemerle.org>
21811
21812         * reflection.c (encode_locals,
21813         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
21814         for large generic types.
21815
21816 2005-09-05  Martin Baulig  <martin@ximian.com>
21817
21818         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21819
21820         * class.c (mono_dup_array_type): New public method.
21821         (mono_metadata_signature_deep_dup): New public method.
21822         (dup_type): Correctly duplicate array and function types.
21823
21824 2005-09-05  Martin Baulig  <martin@ximian.com>
21825
21826         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21827
21828         * reflection.c (get_default_param_value_blobs): Handle generic types
21829         and generic methods.
21830
21831 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
21832
21833         * class.c: Fixed error reporting (method/class were inversed) for 
21834         inheritance demands.
21835         * security-manager.c|h: Added the AppDomain when calling the managed
21836         System.Security.SecurityManager.InheritanceDemand method.
21837
21838 2005-09-01  Raja R Harinath  <rharinath@novell.com>
21839
21840         * reflection.c (encode_marshal_blob): 'marshaltype' and
21841         'marshaltyperef' are alternate sources for the custom marshaler
21842         name.
21843
21844 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
21845
21846         * class.c: fix creation of array classes with rank == 1
21847         (patch by Ankit Jain <jankit@novell.com>).
21848
21849 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
21850
21851         * object.c: fix check for creating the bound data for arrays vs
21852         szarrays.
21853
21854 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21855
21856         * object.c: configuration file name is now based on the executable name,
21857         not the image name. Fixes bug #75931.
21858
21859 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
21860
21861         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
21862         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
21863
21864 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
21865
21866         * rand.c: Use wincrypt.h instead of WinCrypt.h.
21867
21868 2005-08-24  Ankit Jain  <jankit@novell.com>
21869             Raja R Harinath  <rharinath@novell.com>
21870
21871         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
21872           called by it recursively.
21873           (mono_class_init): Remove special case in pending_init handling, since it's
21874           superseded by the fix to mono_class_from_typeref.
21875
21876 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
21877
21878         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
21879         BROKEN_THREAD_START stuff.
21880
21881 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
21882
21883         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
21884         trampoline.
21885
21886         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
21887         
21888         * object.c (mono_delegate_ctor): Replace the original function address with
21889         a delegate trampoline.
21890
21891 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
21892
21893         * icall.c: add boolean argument to base64_to_byte_array and 
21894         InternalFromBase64String to control whether a whitespace-only string
21895         is allowed (or should casue a FormatException to be thrown). We need
21896         this as the behavior has changed between MS.NET 1.x and 2.0, and we
21897         to match the MS behaviour in both profiles.
21898         * appdomain.c: Bump corlib version.
21899
21900 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21901
21902         This patch implements a big portion of publisher policy
21903         support, used to bind assembly versions and redirect
21904         one assembly from version A to version B.
21905
21906         * assembly.c:
21907         New GSList loaded_assembly_bindings, for storing the cached
21908         assembly bindings.
21909         (assembly_binding_maps_name): New static function for checking if a 
21910         assembly binding information maps an assembly name.
21911         (mono_assembly_binding_info_free): New function for freeing
21912         assembly binding information resources.
21913         (get_publisher_policy_info): New static function for retrieving 
21914         assembly binding information from a MonoImage.
21915         (compare_versions): New static function for comparing an assembly
21916         binding information data and the version of an assembly name.
21917         (check_policy_versions): New static function for checking if an
21918         assembly binding info mapping an assembly name is valid for it.
21919         (mono_assembly_load_publisher_policy): New static function for
21920         loading the 'policy.major.minor.MyAssembly' image for an assembly
21921         with an assembly name 'aname'.
21922         (mono_assembly_bind_version): New static function for updating
21923         assembly redirection.
21924         (mono_assembly_apply_binding): New static function for applying
21925         assembly binding.
21926         (search_binding_loaded): New static function for searching 
21927         loaded assembly binding infos in the cache domain.
21928         (mono_assembly_load_full): Don't apply assembly binding for
21929         reflection only assemblies.
21930
21931         * metadata-internals.h: Add MonoAssemblyBindingInfo,
21932         which contains information about assembly binding. Also
21933         declare signature for mono_config_parse_publisher_policy ()
21934         function, used to retrieve pub policy info.
21935         
21936         * mono-config.c:
21937         (publisher_policy_start): New static function used to parse publisher 
21938         policy config files.
21939         (publisher_policy_parser): New static MonoParseHandler containing 
21940         the functions used when parsing config files.
21941         (mono_config_parse_publisher_policy): New function for parsing
21942         publisher policy files.
21943         
21944 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
21945
21946         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
21947
21948         * marshal.c (mono_delegate_free_ftnptr): Ditto.
21949
21950         * object.c (mono_get_addr_from_ftnptr): New helper function.
21951
21952         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
21953
21954         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21955
21956 2005-08-19  Dick Porter  <dick@ximian.com>
21957
21958         * threads.c, threads.h, appdomain.c, appdomain.h,
21959         profiler-private.h, monitor.c, object.c, object-internals.h,
21960         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
21961         store the thread ID, so it can hold a 64 bit value if needed.
21962
21963 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
21964
21965         * reflection.c (mono_reflection_create_dynamic_method): Store the
21966         handle class into the method references as well so ldtoken works in
21967         dynamic methods.
21968
21969         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
21970         types.
21971
21972 2005-08-19  Ankit Jain <jankit@novell.com>
21973
21974         Fix #75847.
21975         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
21976           here rather than using the method signature of a arbitrary function
21977           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
21978           two arguments.
21979           Hack done with Harinath.
21980
21981 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21982
21983         * threadpool.c: disable printing stack traces when we get a exception
21984         in a threadpool thread. I need to do more testing to figure out which
21985         cases actually print this. Fixes bug #75828.
21986
21987 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21988
21989         * icall.c: there might be ignored whitespace after the last '='. This
21990         fixes length computation and bug #75840.
21991
21992 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
21993
21994         * assembly.c (mono_assembly_load_full): Consider .exe extension as
21995         well. Fixes #75809.
21996
21997         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
21998         #75784.
21999         
22000         * reflection.c (create_custom_attr_data): Ditto.
22001
22002 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
22003
22004         * locales.c, culture-info.h : removed RegionLCIDMap.
22005         * culture-info-tables.h : regenerated.
22006
22007 2005-08-16  Martin Baulig  <martin@ximian.com>
22008
22009         * class.c (mono_type_get_name_recurse): Small fix.
22010
22011 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
22012
22013         * locales.c : indentation fixie.
22014
22015 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
22016
22017         * object-internals.h,
22018           locales.h,
22019           locales.c,
22020           culture-info.h,
22021           icall.c : added RegionInfo table support.
22022         * culture-info-table.h : regenerated for region support.
22023
22024 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
22025
22026         * reflection.c (resolve_object): handle all kinds of MonoMethod
22027         including generic ones
22028
22029 2005-08-12  Ankit Jain <jankit@novell.com>
22030
22031         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
22032           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
22033
22034 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
22035
22036         * process.c: Don't close a thread handle when it's NULL. This is a
22037         workaround for bug #75733.
22038
22039 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
22040
22041         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
22042
22043 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
22044
22045         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
22046
22047 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22048
22049         * threadpool.c: if a work item in the thread pool has a callback that
22050         catches a exception, don't propagate it after invoking the callback.
22051         Fixes bug #75336.
22052
22053 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
22054
22055         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
22056
22057         * class-internals.h (MonoCachedClassInfo): Add some new fields.
22058
22059         * class.c (mono_class_init): Load field info lazily in the AOT case.    
22060
22061         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
22062
22063 2005-08-03  Ankit Jain  <jankit@novell.com>
22064
22065         Fix #75683.
22066         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
22067           PInvoke calling convention is 0.
22068
22069 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
22070
22071         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
22072         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
22073
22074 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
22075
22076         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
22077         to handle threads not started by the GC (patch by Michael Meeks
22078         <michael.meeks@novell.com>).
22079
22080 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
22081
22082         * reflection.c: Make buffer used in emitting types larger for some
22083         big generic types (patch by Michal Moskal).
22084
22085 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
22086
22087         * mono-debug.c: Fix some (not all) alignment problems.
22088
22089 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22090
22091         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
22092         Invoke mono_image_load_from_data_full passing the refonly
22093         parameter.
22094
22095         * assembly.c
22096         (mono_assembly_open_from_bundle): Add the refonly argument, 
22097         in order to pass it to other methods it calls to.
22098         (do_mono_assembly_open): Add the refonly argument, in order 
22099         to pass it to other methods it calls to.
22100         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
22101         the refonly parameter to it.
22102
22103         * image.c: Add loaded_images_refonly_hash and
22104         loaded_images_refonly_guid_hash to cache the reflection
22105         only loaded images.
22106         (mono_images_init): Initialize the hash tables used for
22107         caching the reflection only images.
22108         (load_modules): Invoke mono_image_open_full passing the refonly
22109         parameter to load the modules the correct way.
22110         (build_guid_table): Add the refonly argument, to re-build the 
22111         correct hash table.
22112         (do_mono_image_open): Added the refonly argument, in order to
22113         define it for the loaded image.
22114         (mono_image_loaded_full): New function, which receives an
22115         additional parameter to look for the image in the refonly or
22116         non-refonly section.
22117         (mono_image_loaded): Updated, using mono_image_loaded_full.
22118         (mono_image_loaded_by_guid_full): The same case that happens
22119         with mono_image_loaded_full.
22120         (mono_image_loaded_by_guid): Likewise.
22121         (register_image): Use the ref_only variable inside MonoImage
22122         to decide in which hash table store the current image.
22123         (mono_image_open_from_data_full): Rename
22124         mono_image_open_from_data to mono_image_open_from_data_full,
22125         adding the refonly argument, to define the ref_only variable 
22126         inside MonoImage.
22127         (mono_image_open_from_data): Return 
22128         mono_image_open_from_data_full.
22129         (mono_image_open_full): Rename mono_image_open to
22130         mono_image_open_full, receiving the new refonly argument,
22131         to pass it to inner methods.
22132         (mono_pe_file_open): Update this function, to open
22133         a MonoImage as a non-refonly image.
22134         (mono_image_close): Use the refonly variable inside
22135         MonoImage to remove the image from the correct caches.
22136
22137         * image.h: Add the signatures of mono_image_open_full,
22138         mono_image_open_from_data_full, mono_image_loaded_full,
22139         mono_image_loaded_by_guid_full.
22140
22141         * metadata-internals.h: Add the ref_only field to 
22142         MonoImage.
22143         
22144 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22145
22146         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
22147         Fix the last behavior, which used to load the assemblies and
22148         extract MonoReflectionAssemblyName information, instead of
22149         extract it from the metadata tables. Needed for Reflection
22150         Only assemblies.
22151         
22152 2005-07-29  Martin Baulig  <martin@ximian.com>
22153
22154         * mono-debug-debugger.c
22155         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
22156         not initialized.
22157
22158         * mono-debug.c
22159         (mono_debug_address_from_il_offset): Check whether we have
22160         debugging support before attempting to take the lock.
22161         (mono_debug_source_location_from_address): Likewise.
22162         (mono_debug_source_location_from_il_offset): Likewise.
22163         (mono_debug_il_offset_from_address): Likewise.
22164         (mono_debug_address_from_il_offset): Likewise.
22165
22166 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
22167
22168         * class.c (mono_class_from_name_case): Add support for dynamic images.
22169         Fixes #75650.
22170
22171         * object.c (mono_class_compute_gc_descriptor): Add a workaround
22172         for #75479.
22173
22174 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
22175         
22176         * reflection.c (mono_method_get_object): Fix warning.
22177
22178 2005-07-28  Martin Baulig  <martin@ximian.com>
22179
22180         * mono-debug.c
22181         (mono_debug_add_wrapper): Also write the wrapper type.
22182
22183 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
22184
22185         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
22186         
22187         * class.c (mono_class_init): Avoid reading nested classes if the AOT
22188         data indicates the class has none.
22189
22190 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
22191
22192         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
22193         loader lock with the debugger lock. Prevents deadlocks for beagle.
22194
22195         Beagle can now run on an smp box for a weekend without any
22196         issues. Woohoo!
22197
22198 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
22199
22200         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
22201         in a module. Fixes #75629.
22202
22203 2005-07-26  Martin Baulig  <martin@ximian.com>
22204
22205         * mono-debug.c (mono_debug_add_wrapper): New static method.
22206         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
22207         interncall or a wrapper.
22208
22209         * mono-debug.h (MonoDebugWrapperData): New public typedef.
22210         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
22211         (MONO_DEBUGGER_VERSION): Bump to 51.
22212
22213         * mono-debug-debugger.c
22214         (mono_debugger_add_type): Removed this empty function.
22215         (mono_debugger_add_method): Likewise.
22216
22217 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
22218
22219         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
22220         before accessing method->slot.
22221
22222 2005-07-21  Jb Evain  <jbevain@gmail.com>
22223
22224         * reflection.c (method_encode_clauses/class): Handle filters clauses.
22225         Fixes #75010.
22226
22227 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
22228
22229         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
22230         #75587.
22231
22232 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
22233
22234         * image.h image.c: Add mono_image_get_guid () API function.
22235
22236 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
22237
22238         There were issues when multiple threads tried to load
22239         assemblies. A deadlock was created between assemblies_mutex and
22240         mono_domain_assemblies_lock. This fixes the issue by making the
22241         assembly ref counting be lock free. See bug 75586.
22242         
22243         * image.c (mono_image_close): The add ref function here was using
22244         Interlocked operations while the unref was using a mutex and a
22245         --. I don't think this was ever a bug that would be exposed in a
22246         non-pendantic way (ie, by an embedder doing a ref on one thread
22247         and an unref on another), but for the sake of correctness, this is
22248         now Interlocked.
22249
22250         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
22251         (mono_assembly_load_reference): Call mono_assembly_addref rather
22252         than touching the refcount ourselves.
22253         (mono_assembly_close): Use InterlockedDecrement to unref the
22254         assembly. Don't acquire the lock unless it is actually needed.
22255
22256 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
22257
22258         * class.c (mono_class_layout_fields): Fix calculation of has_references
22259         for generic types.
22260
22261 2005-07-12  Martin Baulig  <martin@ximian.com>
22262
22263         Applying a patch from Michal Moskal <malekith@nemerle.org>.
22264
22265         * metadata.c
22266         (mono_type_hash): Provide better hashing for generic instances.
22267         (mono_generic_inst_hash): Improve hashing.
22268         (mono_generic_class_hash): Likewise.
22269
22270         * reflection.c (mymono_metadata_type_hash): Improve hashing for
22271         generic instances.
22272
22273 2005-07-12  Martin Baulig  <martin@ximian.com>
22274
22275         * reflection.c (mono_reflection_create_runtime_class): Remove the
22276         hack for generic type definitions and non-`Run' assemblies.
22277         (mono_reflection_bind_generic_parameters): Also use
22278         `klass->wastypebuilder' to check for TypeBuilders.
22279
22280 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
22281
22282         * class.c (mono_class_layout_fields): Fix calculation of has_references
22283         for generic types.
22284
22285         * class.c (inflate_generic_class): Fix a leak.
22286         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
22287         for generic types.
22288
22289 2005-07-11  Martin Baulig  <martin@ximian.com>
22290
22291         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
22292         on error.
22293
22294 2005-07-11  Martin Baulig  <martin@ximian.com>
22295
22296         * loader.c (find_method): Also lookup in
22297         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
22298
22299 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22300
22301         * appdomain.c (mono_domain_unload): Don't free the error message
22302         before passing it to mono_get_exception_...
22303
22304         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
22305         
22306 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
22307
22308         * threads.c: try to better guess an available RT signal (bug #75387).
22309
22310 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22311
22312         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
22313         and CACHE_OBJECT.
22314
22315 2005-07-07  Martin Baulig  <martin@ximian.com>
22316
22317         * class.c (mono_type_get_name_full): Return NULL for
22318         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
22319         fixes #75408.
22320
22321 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22322
22323         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
22324         exit the appdomain as well being aborted.
22325
22326         * threadpool.c: Create all threadpool threads inside the root appdomain, and
22327         change back to the root domain after calling managed code. This enables
22328         appdomains using threadpools to be unloaded.
22329
22330 2005-07-07  Martin Baulig  <martin@ximian.com>
22331
22332         * class-internals.h
22333         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
22334         into `MonoDynamicGenericClass' since we only need it for dynamic
22335         types.
22336
22337         * reflection.c (mono_class_bind_generic_parameters): We don't need
22338         to compute the `parent' here.
22339
22340 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
22341
22342         * culture-info-table.h : regenerated.
22343
22344 2005-07-06  Martin Baulig  <martin@ximian.com>
22345
22346         * icall.c
22347         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
22348
22349         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
22350
22351 2005-07-06  Martin Baulig  <martin@ximian.com>
22352
22353         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
22354         we're doing a signature-only comparision; fixes #74945.
22355
22356 2005-07-06  Martin Baulig  <martin@ximian.com>
22357
22358         * class-internals.h (MonoGenericClass): Moved some things out into
22359         a new `MonoInflatedGenericClass' type.  
22360         (MonoInflatedGenericClass): New type; the `klass' of a
22361         `MonoGenericClass' is now computed lazyly in
22362         mono_get_inflated_generic_class().      
22363
22364         * class.c (mono_get_inflated_generic_class): New public function.
22365         (mono_class_inflate_generic_method): Removed the unused
22366         `MonoClass *' argument.
22367         (setup_generic_vtable): Don't call mono_get_inflated_method() on
22368         all the methods.
22369         (mono_class_create_generic): Make this static and merge it with
22370         mono_class_create_generic_2(); we're now called automatically from
22371         mono_get_inflated_generic_class().
22372
22373         * loader.c (mono_method_signature): Call
22374         mono_get_inflated_method() here.
22375
22376 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
22377
22378         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
22379         type of fields with RVA.
22380
22381         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
22382         for this pseudo class.
22383         (my_mono_class_from_generic_parameter): Likewise.
22384         (mono_class_init): Allow interfaces to have cctors.
22385
22386 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
22387
22388         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
22389         lazily for AOT methods.
22390
22391 2005-07-05  Martin Baulig  <martin@ximian.com>
22392
22393         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
22394         returns FALSE for a successful match, not TRUE.
22395
22396 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
22397
22398         * loader.c (mono_method_get_index): Optimize this a bit.
22399
22400 2005-07-04  Martin Baulig  <martin@ximian.com>
22401
22402         * class.c
22403         (class_compute_field_layout): Move the check for generic type
22404         definitions into mono_class_layout_fields().  Fixes #74684.
22405         (mono_class_from_generic_parameter): Correctly compute
22406         `klass->parent'; fixes #75457.
22407
22408         * reflection.c (register_assembly, register_module): Make sure
22409         `domain->rejobject_hash' is already created.
22410
22411 2005-07-02  Martin Baulig  <martin@ximian.com>
22412
22413         * class-internals.h
22414         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
22415         `MonoDynamicGenericClass'.      
22416
22417 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
22418
22419         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
22420         returned by a field getter is null, since null is a valid value.
22421
22422 2005-07-01  Martin Baulig  <martin@ximian.com>
22423
22424         * reflection.c (mono_reflection_generic_class_initialize): Update
22425         the `dgclass->fields [i].parent' to the correct class.
22426         (mono_image_get_fieldref_token): Use the declaring type, not the
22427         reflected type.
22428
22429 2005-07-01  Martin Baulig  <martin@ximian.com>
22430
22431         * loader.c (find_method): Also look in the interfaces; fixes #75429.
22432
22433 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
22434
22435         * threads.c (thread_cleanup): assert that thread != NULL
22436         (wait_for_tids_or_state_change): We were using the wrong variable
22437         when accessing wait->threads. `i' was always out of the bounds of
22438         the array.
22439
22440 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22441
22442         * loader.c: map user32 and kernel32 to libMonoSupportW
22443
22444 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
22445
22446         * appdomain.c (unload_thread_main): Mark this as WINAPI.
22447
22448 2005-06-28  Martin Baulig  <martin@ximian.com>
22449
22450         * loader.c (method_from_methodspec): Fix #75334.
22451
22452 2005-06-28  Martin Baulig  <martin@ximian.com>
22453
22454         Fix #74953 - Arrays now implement the generic IList<T> interface
22455         on the 2.0 platform.
22456
22457         * class-internals.h (MonoDefaults): Added `generic_array_class'.
22458
22459         * reflection.c (mono_class_bind_generic_parameters): New public
22460         function; similar to mono_reflection_bind_generic_parameters(),
22461         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
22462
22463         * domain.c (mono_init_internal): Try to initialize.
22464         `mono_defaults.generic_array_class' here; this'll only succeed if
22465         we're using the 2.0 corlib.
22466
22467         * icall.c
22468         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
22469         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
22470         (mono_lookup_internal_call): Added support for nested classes.
22471
22472         * loader.c
22473         (mono_get_method_from_token): Set `result->signature->pinvoke' if
22474         we're an interncall and have generic arguments.
22475
22476         * class.c
22477         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
22478         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
22479         instance of System.Array.InternalArray<T> for arrays, so they
22480         implement the generic IList<T> interface.
22481
22482 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
22483
22484         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
22485         (chastamar@yahoo.com). Fixes #75374.    
22486
22487 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
22488
22489         * culture-info-table.h: regenerated.
22490
22491 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22492
22493         * icall.c: handle spaces correctly for base64 strings.
22494
22495 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
22496
22497         * *.c: Kill some warnings.
22498
22499 2005-06-23  Duncan Mak  <duncan@novell.com>
22500
22501         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
22502         that this builds on Solaris 10 (x86).
22503
22504 2005-06-23  Martin Baulig  <martin@ximian.com>
22505
22506         * class.c
22507         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
22508         generic type definitions.
22509
22510 2005-06-23  Martin Baulig  <martin@ximian.com>
22511
22512         Fix #75331.
22513
22514         * metadata.c (mono_class_get_overrides): Renamed to
22515         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
22516         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
22517         pass it to mono_get_method_full().
22518
22519 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
22520
22521         * reflection.c (mono_reflection_create_runtime_class): take the
22522         mono_domain_lock in this method. Prevents deadlocks
22523
22524 2005-06-22  Martin Baulig  <martin@ximian.com>
22525
22526         * loader.c (method_from_methodspec): Fix #75330.
22527
22528 2005-06-22  Martin Baulig  <martin@ximian.com>
22529
22530         * reflection.c (type_get_qualified_name): Use
22531         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
22532         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
22533         argument; use it if we don't have an assembly name.
22534
22535 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
22536
22537         * object.c: In mono_message_init, set "copy out" flag for in
22538         parameters with the [Out] flag.
22539
22540 2005-06-21  Martin Baulig  <martin@ximian.com>
22541
22542         * class.c
22543         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
22544         and MONO_TYPE_PTR.
22545
22546 2005-06-21  Martin Baulig  <martin@ximian.com>
22547
22548         * class.c (mono_class_init): Don't initialize `class->fields' for
22549         generic instances since they're initialized again in
22550         compute_field_layout(). 
22551         (compute_field_layout): Set the field's `generic_info' here; fix
22552         #75320. 
22553
22554 2005-06-21  Martin Baulig  <martin@ximian.com>
22555
22556         * class-internals.h
22557         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
22558
22559         * metadata.c (mono_metadata_generic_method_equal): Also
22560         distinguish the `generic_class'; fixes #75334.
22561
22562 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22563
22564         * domain.c:
22565         * appdomain.c:
22566         * domain-internals.h:
22567         * reflection.c: 'domain_assemblies' field is now protected by its own
22568         lock. Don't call into managed code to run the AssemblyLoad event if we
22569         now there are no registered delegates for it.
22570
22571 2005-06-20  Martin Baulig  <martin@ximian.com>
22572
22573         * class.c (mono_class_is_assignable_from): Use a custom version of
22574         mono_class_has_parent() to make things work for generic instances;
22575         fix #75300.
22576
22577 2005-06-20  Martin Baulig  <martin@ximian.com>
22578
22579         * loader.c (method_from_methodspec): Apply a patch from
22580         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
22581
22582 2005-06-20  Martin Baulig  <martin@ximian.com>
22583
22584         * class.c (mono_class_init): Reverted Zoltan's last change; it
22585         breaks generics.
22586
22587 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
22588
22589         * threads.c (wait_for_tids_or_state_change): Add missing locking.
22590
22591 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22592
22593         * socket-io.c: fix the index in the socket array for writable/error
22594         sockets. Fixes bug #75306.
22595
22596 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
22597
22598         * class.c (mono_class_init): Allow interfaces to have static ctors.
22599
22600 2005-06-17  Martin Baulig  <martin@ximian.com>
22601
22602         * loader.c (method_from_methodspec): Use `context->container' when
22603         parsing the `gmethod->inst'.
22604
22605 2005-06-17  Martin Baulig  <martin@ximian.com>
22606
22607         * class.c (mono_type_get_name_recurse): Don't add the assembly
22608         name for type arguments.
22609
22610 2005-06-15  Martin Baulig  <martin@ximian.com>
22611
22612         * reflection.c (mono_image_get_inflated_method_token): Encode
22613         correct klass; fixes #75260.
22614
22615 2005-06-13 Michal Moskal <malekith@nemerle.org>
22616
22617         * icall.c: Make GetCorrespondingMethod/Constructor take
22618         MonoReflectionMethod method not MonoMethod. Removed
22619         MonoType.GetCorrespondingField, and make
22620         MonoGenericType.GetCorrespondingField take name not
22621         MonoClassField.
22622
22623 2005-06-13  Michal Moskal <malekith@nemerle.org>
22624
22625         * reflection.c (field_encode_signature, encode_locals):
22626          Make sizes of buffers for types larger (for big generic types).
22627          (create_generic_typespec,
22628          mono_reflection_sighelper_get_signature_local,
22629          mono_reflection_sighelper_get_signature_field):
22630          Add asserts for too small buffers.
22631
22632 2005-06-15  Martin Baulig  <martin@ximian.com>
22633
22634         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
22635         if our parent is not a dynamic type.
22636
22637 2005-06-15  Martin Baulig  <martin@ximian.com>
22638
22639         * class-internals.h (MonoTypeNameFormat): New enum.
22640
22641         * class.c
22642         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
22643         (mono_type_get_full_name): Removed.
22644         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
22645         argument instead of the boolean's.
22646
22647         * icall.c (ves_icall_System_MonoType_getFullName):
22648         Added `gboolean assembly_qualified'.    
22649
22650         * reflection.h
22651         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
22652
22653         * reflection.c (mono_reflection_parse_type): Parse the new type
22654         name format.
22655
22656 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22657
22658         * icall.c: no need to convert from utf16 to utf8 and then back again
22659         after the call to GetLogicalDrives.
22660
22661 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22662
22663         * icall.c: frombase64. Fix problems exposed by new tests.
22664
22665 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22666
22667         * icall.c: added internal calls for converting char [] and strings in
22668         base64 into byte [].
22669
22670 2005-06-10  Martin Baulig  <martin@ximian.com>
22671
22672         * class.c (mono_class_create_generic_2): Read the nested classes
22673         from the metadata rather than from `gklass->nested_classes' since
22674         `gklass' might not be initialized yet.
22675
22676 2005-06-09  Duncan Mak  <duncan@novell.com>
22677
22678         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
22679         all public headers. Fixes #74919.
22680
22681 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
22682
22683         * domain.c: The key for proxy_vtable_hash is now a pointer
22684         array. Added new GHashFunc and GCompareFunc functions for this.
22685
22686         * class.h: The list of interfaces in MonoRemoteClass is known in
22687         advance and can't grow (we create a new MonoRemoteClass if needed),
22688         so now the interface array can be allocated together with
22689         MonoRemoteClass.
22690         
22691         * object.c: Added a new method create_remote_class_key.
22692         Fixed mono_remote_class so it does not depend on
22693         mono_upgrade_remote_class.
22694         Removed extend_interface_array.
22695         Added new method clone_remote_class(), which makes a copy of a remote
22696         class and adds a new interface or class to it.
22697         mono_upgrade_remote_class() now creates a new remote class (or gets
22698         it from the cache) if an vtable upgrade is needed. In this way
22699         we make sure that other objects sharing the same remote class
22700         don't get the new vtable with unwanted interfaces.
22701         
22702         * object-internals.h:
22703         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
22704         
22705         * marshal.c: Track changes in mono_upgrade_remote_class().
22706
22707 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
22708         * icall.c: Add runtime methods for obtaining members of inflated
22709         class, which were created from supplied non-inflated members. It
22710         is used in internal Get{Method,Constructor,Field} methods in
22711         System.Type
22712
22713 2005-06-09  Martin Baulig  <martin@ximian.com>
22714
22715         * reflection.c
22716         (mono_reflection_bind_generic_method_parameters): Fix #75169.
22717
22718 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22719         * reflection.c (mono_image_basic_init): Define
22720         Version in MonoDynamicAssembly. 
22721         
22722 2005-06-08  Martin Baulig  <martin@ximian.com>
22723
22724         Fix #75136.
22725
22726         * loader.c
22727         (mono_method_signature_full): New public method; takes a
22728         `MonoGenericContext *'.
22729         (find_method): Use mono_method_signature_full() and pass the
22730         klass'es context to it.
22731
22732         * class.c (mono_class_is_inflated_method): Use
22733         mono_method_signature_full() and pass the context to it.
22734
22735 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
22736
22737         * object.c: add proper locking in mono_remote_class_vtable(),
22738         fixes possible memory corruption.
22739
22740 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
22741
22742         * marshal.c (mono_remoting_marshal_init): set
22743         initialized after initialization.
22744
22745 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
22746
22747         * locales.c : hush.
22748
22749 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
22750
22751         * object.c (extend_interface_array): fix really silly
22752         memory corrupting / comparison bug.
22753
22754 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22755
22756         * reflection.c: Functions added to support the creation
22757         of CustomAttributeData, which includes Attribute data
22758         used by ReflectionOnly methods.
22759
22760         * reflection.h:  mono_reflection_get_custom_attrs_data and
22761          mono_custom_attrs_data_construct added (functions exposed).
22762
22763          * icall.c: Added mono_reflection_get_custom_attrs_data
22764          as icall.
22765         
22766 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
22767
22768         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
22769         lupus's request.
22770
22771 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
22772
22773         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
22774
22775         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
22776         dynamic DllImportAttribute.
22777
22778         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
22779         dynamic DllImportAttribute.
22780
22781         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
22782         Fixes #75162.
22783
22784 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22785
22786         * threads.c: avoid segfault when an unstarted thread is aborted.
22787
22788 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
22789
22790         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
22791         Returns the name and version of the runtime for reporting.
22792
22793 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22794
22795         * appdomain.c: bump corlib version.
22796         * object-internals.h: new field in MonoReflectionAssembly.
22797
22798 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22799
22800         * object-internals.h: Carlos forgot to add this field.
22801
22802 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22803
22804         * icall.c: Added create_version to create instances
22805         of Version of MonoReflectionAssemblyName. This change helps
22806         the AssemblyName tests to keep running fine.
22807         
22808 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
22809   
22810         * object.c (mono_method_return_message_restore): A somehow less
22811         intrusive fix for #75138.
22812
22813 2005-06-03  Raja R Harinath  <rharinath@novell.com>
22814
22815         * object.c (mono_method_return_message_restore): Fix computation
22816         of expected number of out args.
22817
22818 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
22819
22820         * reflection.c (mono_image_get_method_info): Fix the case when the
22821         charset is empty.
22822
22823 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
22824
22825         * object.c: Added missing null check in
22826           mono_method_return_message_restore.
22827
22828 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
22829
22830         * reflection.c (mono_image_get_method_info): Handle the case when
22831         dllentry is empty.
22832
22833 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
22834
22835         * object.c: When creating the vtable for a proxy, take into account
22836         all inherited interfaces, not only the ones registered in
22837         iclass->interfaces. This fixs bug #74996.
22838         Also, in mono_method_return_message_restore, verify that the array
22839         of out args has the expected lengh.
22840
22841 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22842
22843         * socket-io.c: update the timeout in Poll when the call is interrupte.
22844
22845 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22846
22847         * socket-io.c: support abort/suspend in Select_internal after last
22848         change.
22849
22850 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22851
22852         * threadpool.c: remove warning.
22853
22854 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22855
22856         * icall.c:
22857         * socket-io.[ch]: Select_internal uses poll() now when available, thus
22858         removing the 1024 limit from select(). Runtime part of the fix for
22859         bug #71203.
22860
22861 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22862
22863         * socket-io.c: when resolving the addresses for the same
22864         host returned by gethostname(), get the local IPs from the interface
22865         list. Loopback addresses are discarded if the are interfaces up with
22866         non-loopback ones. Fixes bug #63265.
22867
22868 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
22869
22870         * appdomain.c, verify.c, object-internals.h, reflection.c:
22871         bumped corlib number to 36, and added new extra_flags field
22872         to ReflectionMethodBuilder and friends.  Fixes #75060.
22873
22874 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
22875
22876         * gc.c: register a new weak link only if the object is non-null
22877         (fixes bug#75047).
22878
22879 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
22880
22881         * culture-info.h : short time pattern too.
22882
22883 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
22884
22885         * culture-info.h : expand long time pattern string length.
22886
22887 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
22888
22889         * culture-info-table.h : update (more French date format; #72788).
22890
22891 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
22892
22893         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
22894         the method is static. Fixes #75029.
22895
22896 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
22897
22898         * reflection.c: Update the table_idx field of method builders after
22899         saving the module, since it can change. This is a workaround for
22900         bug #74914. 
22901
22902 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
22903
22904         * culture-info-table.h : update (additional French date format).
22905
22906 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
22907
22908         * icall.c (ves_icall_type_Equals): Revert last change.
22909         
22910         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
22911
22912         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
22913
22914 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
22915
22916         * class-internals.h: Added executioncontext_class field to 
22917         MonoDefaults structure.
22918         * domain.c: Cache System.Threading.ExecutionContext class in 
22919         mono_defaults.
22920         * object.c: Capture the ExecutionContext for asynchroneous calls in
22921          mono_async_result_new.
22922         * object-internals.h: Added execution_context and original_context 
22923         fields to MonoAsyncResult. Added execution_context to MonoThread.
22924         * security-manager.c|.h: Added mono_get_context_capture_method to 
22925         return the capture method (if required by the security manager or by
22926         the framework version used).
22927         * threadpool.c: Apply capture (if present) ExecutionContext in 
22928         mono_async_invoke and revert to original context after it completes.
22929
22930 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
22931
22932         * culture-info-table.h : updated (real hacky solution for zh-CHT).
22933
22934 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
22935
22936         * culture-info-table.h : zh-CHT related workaround.
22937
22938 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
22939
22940         * marshal.c (emit_marshal_custom): Add some error checking and call the
22941         methods in the ICustomMarshaler interface. Fixes #74875.
22942         
22943         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
22944         native->managed wrappers.
22945
22946 2005-05-12  Martin Baulig  <martin@ximian.com>
22947
22948         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
22949         here and use the loader lock.
22950
22951         * mono-debug.c: Properly lock when the debugger is not attached.
22952         (mono_debug_init): Release the initial lock if we're not running
22953         in the debugger.
22954
22955 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
22956
22957         * marshal.c (emit_marshal_custom): Pass through NULL values without
22958         calling the custom marshalling routines.
22959
22960         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
22961         conversion in structures. Fixes #74882.
22962
22963 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
22964
22965         * culture-info-table.h : zh-* cultures were missing.
22966
22967 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
22968
22969         * threads.c: Added a new event background_change_event which is signaled
22970         when a thread changes its background mode.
22971         Moved here several checks previously done in managed code. The checks
22972         require the thread lock, and using the thread lock in managed code
22973         can result in deadlocks.
22974         Merged Start_internal and Thread_internal into a single method. Now 
22975         Thread_internal does all work of creating and starting a thread.
22976         Added icalls for setting and getting the state of the object. Moved from
22977         managed code to avoid locking there.
22978         Added wait_for_tids_or_state_change() which is called instad of
22979         wait_for_tids when waiting for non-backround threads to end. This method
22980         will return if one of the threads ends or the background_change_event
22981         is signaled.
22982         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
22983         the background mode. This method signals the background_change_event
22984         event.
22985         * icall.c:
22986         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
22987         removed Start_internal.
22988         
22989 2005-05-11  Martin Baulig  <martin@ximian.com>
22990
22991         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
22992         to order of some fields to get proper alignment on 64-bit machines.
22993
22994 2005-05-11  Martin Baulig  <martin@ximian.com>
22995
22996         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
22997         changes as they're broken and completely fuck up the debugger.
22998
22999         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
23000
23001 2005-05-10  Martin Baulig  <martin@ximian.com>
23002
23003         * reflection.c (mono_reflection_generic_class_initialize): Don't
23004         call mono_class_setup_parent() here.
23005
23006 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23007
23008         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
23009         send/receive timeout use an integer in milliseconds. We were using a
23010         struct timeval.
23011
23012 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23013
23014         * locales.c:
23015         (internal_get_cultures): reserve the first slot of the array for the
23016         InvariantCulture, which will be filled in managed code.
23017
23018 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
23019
23020         * reflection.c (mono_image_fill_module_table): Initialize the
23021         GENERATION field as well.
23022
23023 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23024
23025         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
23026         Monitor.Enter on the object.
23027
23028 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
23029
23030         * threads.c: Enable the wait for running threads when exiting.
23031         * icall.c: Suspend all threads before exiting.
23032
23033 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
23034
23035         * assembly.c (mono_assembly_load_reference): Fix warning.
23036
23037 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23038
23039         * threadpool.c: changed the default number of threads per cpu. From now
23040         on, the default will be 20 + (5 * number of cpus) instead of 50.
23041
23042 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
23043
23044         * loader.c (mono_method_get_signature_full): Add locking here.
23045
23046 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
23047
23048         * appdomain.c: Moved methods for parsing and freeing assembly
23049         names to assembly.c.
23050         * assembly.c, domain-internals.h: Created public methods for parsing
23051         assembly names. Fixed mono_assembly_load_with_partial_name:
23052         it now finds the best match, taking into account the version,
23053         token and culture specified in the partial name. Also return
23054         the latest version if no version information is specified.
23055
23056 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
23057
23058         * threadpool.c: replace check for SocketAsyncCall class.
23059
23060 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23061
23062         * threadpool-internals.h:
23063         * Makefile.am: added threadpool-internals.h
23064
23065         * threadpool.c: call mono_unhandled_exception on exceptions not handled
23066         that happen in threadpool threads (tested on MS).
23067         (mono_thread_pool_remove_socket): new function that dispatch any pending
23068         AIO call on a socket that is closing. By now only epoll really needs it,
23069         as select/poll wake up when the socket closes.
23070
23071
23072         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
23073
23074 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
23075
23076         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
23077
23078 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
23079
23080         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
23081
23082 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
23083
23084         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
23085         has an abort request, convert it into a suspend request.
23086
23087 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
23088
23089         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
23090         warning for the usage of `UnmanagedFunctionPointerAttribute' which
23091         is not supported yet.
23092
23093 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23094
23095         * image.c: register assemblies loaded from data (bundles) in the loaded
23096         assemblies hash. Fixes bug #74772.
23097
23098 2005-04-29  Martin Baulig  <martin@ximian.com>
23099
23100         * class.c (mono_type_get_name_recurse): Update to the new naming
23101         schema from the latest .NET 2.x beta2.
23102         (mono_class_setup_vtable_general): If we're a generic instance,
23103         copy the vtable from our generic type definition and inflate all
23104         the methods in it.
23105
23106         * loader.c (find_method): Update to the new naming schema from the
23107         latest .NET 2.x beta2.
23108
23109 2005-04-29  Raja R Harinath  <harinath@gmail.com>
23110
23111         * class.c (mono_class_init): Add a mono_loader_unlock to the
23112         #74734 fix.
23113
23114 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
23115
23116         * icall.c (ves_icall_System_Environment_Exit): Remove the 
23117         suspend_all_other_threads () call for the time being, since it can hang.
23118
23119         * threads.c (mono_thread_manage): Similarly, disable the waiting for
23120         the background threads to exit, since it can also hang.
23121
23122         * class.c (mono_class_init): Applied patch from Ankit Jain 
23123         (radical@gmail.com). Avoid pending init errors when a field refers
23124         to a nested class using a typeref. Fixes #74734.
23125
23126         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
23127         this for dynamic modules.
23128
23129 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23130
23131         * threads.c: don't wait for threads that are in the process of aborting
23132         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
23133         and waiting for background threads to finish. This makes xsp and
23134         mod-mono-server exit without random length delays and/or hangs.
23135
23136 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23137
23138         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
23139
23140 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
23141
23142         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
23143         dynamic types to prevent infinite loops. Fixes #74727.
23144
23145         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
23146         ..._is_assignable_to.
23147
23148 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
23149
23150         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
23151
23152 2005-04-25  Martin Baulig  <martin@ximian.com>
23153
23154         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
23155
23156         * domain.c
23157         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
23158
23159         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
23160
23161         * reflection.c (build_compressed_metadata): Set metadata header
23162         version to 2.0.
23163
23164 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
23165
23166         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
23167         number into an integral and a decimal part. Fixes #70473.
23168
23169         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
23170
23171 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
23172
23173         * culture-info-table.h : reflected the latest locale-builder output.
23174
23175 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23176
23177         * threadpool.c: check for SuspendRequested too when deciding if
23178         mono_thread_interruption_checkpoint should be called.
23179
23180 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23181
23182         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
23183         * threads.c: remove interruption_mutex and use Interlocked instead. When
23184         suspending all the threads, wait for all the suspended events at once.
23185         If we're shutting down and get an APC that is going to be queued,
23186         call mono_thread_execute_interruption immediately, as the thread might
23187         be sleeping on a pthread condition or mutex.
23188
23189         * icall.c: call mono_runtime_set_shutting_down before suspending the
23190         threads.
23191
23192         Fixes bug #74693. And now xsp is happier when exiting.
23193
23194 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
23195
23196         * loader.c (mono_stack_walk): Fix #74690.
23197
23198 2005-04-22  Martin Baulig  <martin@ximian.com>
23199
23200         * mono-debug.h (MonoDebugMethodJitInfo): Added
23201         `MonoDebugMethodJitInfo *jit'.
23202
23203         * mono-debug.c (mono_debug_read_method): Cache the
23204         MonoDebugMethodJitInfo in `address->jit'.
23205         (mono_debug_free_method_jit_info): New public method.
23206
23207 2005-04-22  Martin Baulig  <martin@ximian.com>
23208
23209         * class.c (mono_class_is_assignable_from): Disallow
23210         type parameter -> interface.
23211
23212 2005-04-21  Dick Porter  <dick@ximian.com>
23213
23214         * threads.c (mono_thread_create): Turn an assertion into an error.
23215
23216 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
23217
23218         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
23219         
23220         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
23221         Fix some gcc 4.0 warnings.
23222
23223 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
23224
23225         * file-io.c: fix alt dir separator char on unix systems
23226         and cleanup (fixes bug #71214).
23227
23228 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
23229
23230         * marshal.c: Use CALLVIRT instead of CALL when dispatching
23231         a call to a remote domain, since the method may be an
23232         interface method in the client domain. This fixes bug #74192.
23233
23234 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23235
23236         * threadpool.c: recv/send are now performed before going back to managed
23237         code to save one transition.
23238
23239 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23240
23241         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
23242
23243         * metadata/threadpool.c: removed hack to workaround the bug above.
23244
23245         Fixes bug #74618.
23246
23247 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
23248
23249         * reflection.c reflection.h: Fix handling of parameter defaults in
23250         dynamic methods. Also fixes handling of parameter attributes.
23251         Fixes #74609.
23252
23253         * mono-debug.c (mono_debug_close_image): Fix warning.
23254
23255 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23256
23257         * socket-io.h: replaced old unused field with new 'blocking'.
23258         * threadpool.c: restore socket blocking state on windows(tm).
23259
23260 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
23261
23262         * icall.c: don't return the codebase in the AssemblyName[] returned by
23263         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
23264         * object-internals.h: Removed FIXME (fields were presents) and fixed
23265         versioncompat declaration.
23266
23267 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23268
23269         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
23270         not closed, so don't cleanup when it happens.
23271
23272 2005-04-13  Chris Toshok  <toshok@ximian.com>
23273
23274         * mono-debug-debugger.h: change prototype for
23275         mono_debugger_lookup_type.
23276
23277         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
23278         this function, although it should probably be named
23279         mono_debugger_init_type.
23280
23281 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23282
23283         * threadpool.c: fix non-AIO case.
23284
23285 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
23286
23287         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
23288         the built-in profiler to measure just JIT compilation times.
23289
23290 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23291
23292         * threadpool.c: the epollfd might be closed by another thread at
23293         any time, so ignore EBADF at treat it as a "we're closing" sign.
23294
23295 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23296
23297         * threadpool.c: release the semaphores with a count equals to the number
23298         of working threads in both IO and regular pools. Fixed typo that messed
23299         up the count of IO pool threads. Don't initialize the pipe handles if
23300         we're using epoll.
23301
23302 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23303
23304         * threadpool.c: some systems don't like a NULL when deleting the socket
23305         from epoll.
23306
23307 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23308
23309         * threadpool.c: fix semaphore allocation.
23310
23311 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23312
23313         * threadpool.c: added epoll() based implementation for asynchronous IO
23314         that is used instead of the default poll() when available.
23315         It can be disabled by setting MONO_DISABLE_AIO.
23316
23317 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23318
23319         * threadpool.c: windows needs 'closesocket' and instead of returning
23320         0 when the stream is closed while in select, it returns -1. Fixes bug
23321         #74573.
23322
23323 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
23324
23325         * class.c (class_compute_field_layout): Fix the regression caused by
23326         the previous try.
23327
23328 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23329
23330         * threadpool.c: separate pool for socket async. IO.
23331         * threadpool.h: mono_max_worker_threads is not a global any more.
23332
23333 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
23334
23335         * class.c (class_compute_field_layout): Fix #74549.
23336
23337 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23338
23339         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
23340         use 2 connected sockets instead.
23341
23342 2005-04-08  Miguel de Icaza  <miguel@novell.com>
23343
23344         * mono-config.c: Add new entry point for mkbundle
23345         mono_config_parse_memory. 
23346
23347 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23348
23349         * threadpool.c: removed another unused function.
23350
23351 2005-04-08  Ankit Jain  <radical@corewars.org>
23352
23353         * reflection.c (get_default_param_value_blobs): Add 'types'
23354         parameter to get the types encoded in the constant table.
23355         (mono_param_get_objects): Use the type from the constant table,
23356         not the type of the parameter, when creating default values.
23357         Handle null default values correctly.
23358
23359 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23360
23361         * file-io.c:
23362         * file-io.h:
23363         * threadpool.c:
23364         * threadpool.h:
23365         * icall.c:
23366         * socket-io.c: removed dead code for async IO.
23367
23368 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23369
23370         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
23371
23372         * threadpool.c: intercept socket async. calls and pass them to a thread
23373         that is polling and dispatching the job items to the threadpool as
23374         socket become ready. Fixes bugs #71217, #71933.
23375
23376         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
23377         between char and short/ushort arrays.
23378
23379         * socket-io.c: remove dead code.
23380
23381 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
23382
23383         * locales.c,
23384           icall.c : removed InternalToUpper_Comp() and
23385           InternalToLower_Comp().
23386
23387 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
23388
23389         * char-conversions.h : The tables were incorrectly generated. Should
23390           be generated against invariant culture.
23391
23392 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
23393
23394         * object.c (mono_runtime_invoke_array): Fix return value when 
23395         passing pre-created valuetype objects to ctors.
23396
23397         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
23398         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
23399         Fixes #74338.
23400
23401 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
23402
23403         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
23404         only used with --security and hides the wrong corlib version error.
23405
23406 2005-03-30  Joshua Tauberer  <tauberer@for.net>
23407
23408         * class.c: Changed mono_class_name_from_token so that types
23409         outside of a namespace don't have an initial period.  Improved
23410         the g_warning message used in _mono_class_get when loading
23411         fails.
23412         * assembly.c: In mono_assembly_load_reference, when an assembly
23413         can't be found, "No such file or directory" is misleading and
23414         unhelpful because a few paths were checked for the presence of
23415         the assembly.  When that happens (ENOENT), display a nicer
23416         message indicating the directories that were searched.  In all
23417         cases, the warning is made easier to read for non-hackers.
23418
23419 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
23420
23421         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
23422         project/solution.
23423         * appdomain.h|domain.c: Removed inline from functions.
23424         * appdomain.c: Reduced warnings when compiling on windows.
23425         * icall.c: Fixed output_debug declaration to gunichar2*.
23426         * mono-config.c: Reduced warnings when compiling on windows.
23427         * rand.c: Added missing "windows.h". Added missing return value.
23428         * rawbuffer.c: Added missing winsock2.h for windows.
23429         * sysmath.h: Added mono-compiler.h header to allow/ease 
23430         compilation with non-GCC compilers.
23431         * threads.c: Fixed declarations to compile with VS.NET C compiler.
23432         Removed cast warnings.
23433
23434         Adapted from the work of J Lothian (for VC6).
23435
23436 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
23437
23438         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
23439         from default_path.
23440
23441 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
23442
23443         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
23444         the 2.0 profile.
23445
23446 2005-03-27  Raja R Harinath  <harinath@gmail.com>
23447
23448         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
23449         has to be in $(exec_prefix).  $(prefix) is for arch-independent
23450         stuff, and it would probably use $(prefix)/share rather than
23451         $(prefix)/lib.
23452
23453 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23454
23455         * console-io.c: added 2 includes that might be missing.
23456
23457 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
23458
23459         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
23460         profile.
23461
23462         * reflection.c (create_custom_attr): Allocate the params array using
23463         alloca so it gets GC tracking.
23464
23465 2005-03-23  Chris Toshok  <toshok@ximian.com>
23466
23467         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
23468         out some spew.
23469
23470 2005-03-24  Raja R Harinath  <rharinath@novell.com>
23471
23472         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
23473         changes to pick up any changes in prefix, etc.
23474
23475 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
23476
23477         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
23478         
23479         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
23480         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
23481
23482 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
23483
23484         * class-internals.h object-internals.h class.c reflection.c: Extend the
23485         mono_lookup_dynamic_token () function to return the class of the
23486         token as well. 
23487
23488         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
23489         well. Fixes #73848.
23490
23491 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
23492
23493         * security-manager.c: Skip inheritance checks for intra-corlib
23494         class inheritance and method overrides. This skips a lot of checks
23495         and (anyway) permissions cannot work until corlib is loaded.
23496
23497 2005-03-23  Martin Baulig  <martin@ximian.com>
23498
23499         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
23500         MONO_TYPE_GENERICINST.  
23501
23502 2005-03-23  Martin Baulig  <martin@ximian.com>
23503
23504         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
23505
23506 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
23507
23508         * class.c: added locking comments to some functions.
23509         Cache the interface offsets arrays (saves about 20 KB
23510         of runtime memory in a typical app).
23511         Reduce the time overhead in mono_class_setup_supertypes ().
23512
23513 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
23514
23515         * icall.c: speedup and fix leaks in GetMethodsByName and
23516         GetPropertiesByName.
23517
23518 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
23519
23520         * reflection.c: some locking fixes.
23521
23522 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
23523
23524         * metadata.c: added missing break in case statement.
23525
23526 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
23527
23528         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
23529         typedbyref return values. Fixes #73941.
23530
23531 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
23532
23533         * security-manager.c|h: Added demandunmanaged method and 
23534         suppressunmanagedcodesecurity class to MonoSecurityManager.
23535         Renamed aptc class to allowpartiallytrustedcallers.
23536
23537 2005-03-17  Martin Baulig  <martin@ximian.com>
23538
23539         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
23540
23541 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23542
23543         * file-io.c: disabled file async. IO using aio_*. It uses the
23544         threadpool now. Workaround for bug #73718.
23545
23546 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
23547
23548         * assembly.h, mono-config.c: added code to deal with bundled configs
23549         for bundled assemblies.
23550
23551 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
23552
23553         * *.c, private.h: cleanup, removing old private.h header file.
23554
23555 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
23556
23557         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
23558         and throw_on_unmappable_char attributes.
23559
23560 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
23561
23562         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
23563         _ProcessName_internal.
23564
23565 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
23566
23567         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
23568         #73631.
23569
23570         * icall.c threads.c threads-types.h: Remove slothash icalls as they
23571         are no longer used.
23572
23573 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
23574
23575         * object.c (compute_class_bitmap): Add support for generics. Fixes
23576         #73527.
23577
23578 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
23579
23580         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
23581
23582 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23583
23584         * filewatcher.c: commented out the code for windows watcher, as we don't
23585         use it (we use the managed implementation instead).
23586
23587 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
23588
23589         * object-internals.h (MonoThread): Remove 'unused1' field.
23590
23591         * appdomain.c: Bump corlib version.
23592
23593         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
23594
23595         * reflection.c (mono_reflection_create_runtime_class): Remove the
23596         AssemblyBuilder.Save optimization since it causes too many problems.
23597
23598 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
23599
23600         * exception.c|h: Added mono_get_exception_reflection_type_load to
23601         create a ReflectionTypeLoadException object.
23602         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
23603         to return NULL is a InheritanceDemand fails during reflection. Updated
23604         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
23605         ReflectionTypeLoadException if an InheritanceDemand fails during 
23606         reflection. Added icall mapping for GetLinkDemandSecurity.
23607         * security-manager.c|h: Added ves_icall_System_Security_
23608         SecurityManager_GetLinkDemandSecurity internal call to return the
23609         class and methods permissions set for a LinkDemand. Removed unused
23610         fields in MonoSecurityManager.
23611
23612 2005-03-10  Martin Baulig  <martin@ximian.com>
23613
23614         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
23615         it's a generic instance.
23616
23617 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
23618
23619         * reflection.c (mono_get_object_from_blob): Applied patch from
23620         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
23621
23622         * class.c (mono_class_is_assignable_from): Another try at fixing 
23623         #73469 without breaking anything.
23624
23625 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
23626
23627         * class.c: (mono_class_is_assignable_from): Revert the last changes
23628         since they don't work with generics.
23629         
23630         * class.c (mono_class_is_assignable_from): Fix build bustage.
23631
23632         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
23633         the managed IsAssignableFrom method. Fixes #73469.
23634
23635         * reflection.c (mono_reflection_call_is_assignable_from): New helper
23636         function.
23637
23638 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
23639
23640         * object.c (mono_load_remote_field_new): Fix returning uninitialized
23641         memory when the remoting callback does not sets the out arguments.
23642         Fixes #73007.
23643
23644         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
23645         by mistake.
23646
23647         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
23648
23649         * object-internals.h (MonoStackFrame): Sync with managed object layout.
23650
23651         * appdomain.c: Bump corlib version.
23652
23653 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
23654
23655         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
23656         function.
23657
23658         * threads.c (mono_thread_attach): Detect threads which are not started
23659         by the GC pthread wrappers.
23660
23661 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
23662
23663         * icall.c: Added new icall for RNG.
23664         * rand.c|h: Added new icall to open the RNG. This allows to share a 
23665         single handle on Linux to access /dev/urandom and fix #73183.
23666
23667 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
23668
23669         * object.c: setting the new vtable in a transparent proxy object must
23670         not change the GC descriptor.
23671
23672 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
23673
23674         * object.c: fixed compilation without GCJ support.
23675         * reflection.c: for runtime-created types ensure klass->has_references
23676         is correct (bug #73215).
23677
23678 2005-03-02  Martin Baulig  <martin@ximian.com>
23679
23680         * class.c (mono_class_is_assignable_from): Make this work if
23681         `oklass' is a generic instance; fixes #72831.
23682
23683 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
23684
23685         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
23686         with hasthis set.
23687         
23688         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
23689
23690         * marshal.c: Reorganize native->managed marshalling code to also use
23691         the emit_marshal_... functions.
23692
23693 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
23694
23695         * object.c: typed allocs have issues with bitmap sizes > 30,
23696         so check for max_set >= 30.
23697
23698 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
23699
23700         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
23701         managed code. Fixes #73012.
23702
23703         * metadata.h (MonoMarshalSpec): Add elem_mult field.
23704
23705         * metadata.c reflection.c: Load/Emit elem_mult as well.
23706         
23707         * metadata.h (MonoMarshalSpec): Add comment.
23708
23709         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
23710
23711         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
23712         num_elem to -1 if not given.
23713
23714         * object-internals.h (MonoReflectionMarshal): Add has_size field.
23715
23716         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
23717         given values.
23718
23719 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
23720
23721         * null-gc.c (mono_gc_free_fixed): Was not compilable.
23722
23723 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
23724
23725         * reflection.c (encode_marshal_blob): Encode param_num field as well.
23726
23727         * object-internals.h (MonoReflectionMarshal): Add param_num field.
23728
23729 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
23730
23731         * object.c: generalized the reference bitmap creation
23732         and added hooks for the new GC.
23733         * class-internals.c: removed the gc_bitmap field from MonoClass.
23734
23735 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
23736
23737         * domain.c: help the compiler to produce better code
23738         in mono_jit_info_table_find ().
23739
23740 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
23741
23742         * object.c: make all allocations look typed.
23743
23744 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
23745
23746         * socket-io.c: load Mono.Posix if it's not loaded already
23747         (fixes bug#73033).
23748
23749 2005-02-24  Martin Baulig  <martin@ximian.com>
23750
23751         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
23752         * reflection.c (dup_type): Likewise.
23753
23754 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
23755
23756         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
23757         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
23758
23759 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
23760
23761         * domain.c, threads.c, object-internals.h: make the critical thread
23762         local vars use the fast access mode (even when we're compiled in
23763         a lib). Provide accessors to be used by the jit during codegen.
23764
23765 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
23766
23767         * appdomain.c: Changed hook functios behavior to include
23768         support for the reflection only assemblies. Some icalls were changed
23769         to support the mentioned assemblies too. Signatures of static methods
23770         try_assembly_resolve and real_load now have an additional parameter:
23771         refonly.
23772
23773         * assembly.c: General changes to mono_assembly_ methods to support
23774         reflection only api. Functions mono_assembly_open, mono_assembly_load,
23775         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
23776         suffix, to support an additional gbool parameter to specify whether
23777         the assembli is reflection only or not. Created some new hook functions 
23778         to add support for reflection only assemblies. Signatures of static 
23779         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
23780         have now an additional parameter: refonly.
23781
23782         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
23783         indicating whether the assembly is reflection only or not.
23784
23785         * exception.c: Add mono_get_exception_invalid_operation.
23786
23787         * icall.c: Throw an InvalidOperationException when trying to invoke
23788         a property/method/event, or trying to set/get the value of a field.
23789         Also add an icall to retrieve the ref_only flag to the
23790         MonoReflectionAssembly.
23791
23792 2005-02-23  Chris Toshok  <toshok@ximian.com>
23793
23794         Part of fix for #72827.
23795         * mono-debug.c (mono_debug_add_method): add lexical block data to
23796         the info we write.  Kind of a hack at the moment - we copy the
23797         lexical block info from the MonoDebugMethodInfo to the
23798         MonoDebugMethodJitInfo here, before writing it.
23799         (mono_debug_read_method): read the lexical block info.
23800
23801         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
23802
23803         * debug-mono-symfile.h: add lexical block support.
23804
23805         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
23806         support.
23807
23808 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
23809
23810         * loader.c (mono_lookup_pinvoke_call): Fix warning.
23811
23812         * object.c (mono_runtime_free_method): Call mono_free_method () and
23813         put the TODOs there.
23814
23815         * loader.c (mono_free_method): Free up most memory allocated for 
23816         dynamic methods.
23817
23818 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
23819
23820         * reflection.c: properly flag a Type argument to a
23821         named custom attr value (bug #72248).
23822
23823 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
23824
23825         * reflection.c: reduce code duplication in named custom
23826         attribute encoding.
23827
23828 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
23829
23830         * reflection.c: properly encode custom attrs of type object
23831         (bug #72649).
23832
23833 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
23834
23835         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
23836
23837 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
23838
23839         * socket-io.c: load System.dll if it's not loaded already
23840         (bug #72850 and #70477).
23841
23842 2005-02-21  Martin Baulig  <martin@ximian.com>
23843
23844         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
23845         generic instances.
23846
23847 2005-02-21  Martin Baulig  <martin@ximian.com>
23848
23849         * reflection.c (mono_image_build_metadata): We also need to
23850         "fixup" the MethodImpl table after we computed the final method
23851         indices.  Call fixup_methodimpl() to do that.
23852         (fixup_methodimpl): New private method.
23853
23854 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
23855
23856         * assembly.c: special case mscorlib.dll (bug#72536),
23857         patch from Carlos Alberto Cortez.
23858
23859 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
23860
23861         * threads-types.h threads.c: Fix build bustage.
23862
23863         * threads.c: Use a union for long<->double conversions.
23864
23865         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
23866         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
23867
23868         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
23869         containing the checkpoint call with NOT_TAKEN.
23870         
23871         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
23872         checkpoint before pushing the arguments, so they won't have to be
23873         spilled to stack.
23874
23875 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
23876
23877         * domain.c, assembly.c, domain-internals.h: make some data
23878         const and relocation-free.
23879
23880 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
23881
23882         * object.c, appdomain.c, class-internals.h: introduce the
23883         MonoClassRuntimeInfo structure to hold the info needed to
23884         use a class at runtime. Made mono_class_vtable() lock-free
23885         for all the appdomains.
23886
23887 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
23888
23889         * metadata-internals.h, image.c: introduce a per-image mempool to
23890         be used for memory that has the same lifetime as the image.
23891
23892 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
23893
23894         * domain.c: In mono_init_internal(), instead of selecting the first
23895         runtime version supported by an executable, get a list of all
23896         supported versions and select the one for which an mscorlib exists
23897         (since even if the runtime supports a given version, it doesn't mean
23898         that the framework for that version is installed).
23899         Modified get_runtimes_from_exe to support this behavior.
23900         In supported_runtimes, added information about additional system
23901         assembly versions.
23902         
23903         * assembly.c: Added support for more than one system assembly version
23904         per runtime version. Updated the assembly list.
23905         In mono_assembly_remap_version, removed the initial version check,
23906         since we don't know to which version we need to compare until we
23907         get the version set on which the assembly is based.
23908         Moved the code for loading corlib into the new method
23909         mono_assembly_load_corlib(), so it can be used by the initialization
23910         code.
23911         
23912         * domain-internals.h: Updated data structures and added declaration
23913         for mono_assembly_load_corlib.
23914
23915 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
23916
23917         * reflection.c (resolve_object): Fix the creation of the signature in 
23918         the SignatureHelper case.
23919
23920         * assembly.c (mono_assembly_remap_version): Fix binary search.
23921         
23922 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
23923  
23924         * class.c: Added inheritance check when a method is overloaded (from a
23925         virtual method or when implementing an interface) and when a class is
23926         inherited. Added functions to set a failure for a class and to 
23927         retreive the exception from a failure.
23928         * class-internals.h: Added fields to MonoClass to keep the exception
23929         information status for inheritance (or other exceptions) to be thrown
23930         later (i.e. not at load time).
23931         * object.c: Throw the inheritance SecurityException when a type is to 
23932         be created with either class or method inheritance violations.
23933         * reflection.c|h: Fix when getting declsec from a class. Removed 
23934         unrequired code for class. Improved sanity in parameter naming.
23935         * security-manager.c|h: Added functions to check for class and method
23936         inheritance.
23937
23938 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
23939
23940         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
23941         and has_finalize in dynamic types as well.
23942
23943 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
23944
23945         * culture-info-table.h : fixed currency format for en-GB (and so on).
23946
23947 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
23948
23949         * gc.c: ensure the GC handles never have 0 as a value.
23950
23951 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
23952
23953         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
23954         a pointer to a struct to unmanaged code. Fixes #72625.
23955
23956 2005-02-16  Martin Baulig  <martin@ximian.com>
23957
23958         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
23959
23960 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
23961
23962         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
23963
23964 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
23965
23966         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
23967
23968         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
23969         UnmanagedFunctionPointerAttribute, use it for determining calling convention
23970         etc. Fixes #71471.
23971
23972         * reflection.c (mono_custom_attrs_get_attr): New helper function.
23973
23974         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
23975
23976 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
23977
23978         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
23979         changes to make the current context a field in MonoThread.
23980
23981 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
23982
23983         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
23984         the last change.
23985         
23986         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
23987         extracted from mono_marshal_get_native_wrapper.
23988
23989         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
23990         to create wrappers around native functions.
23991
23992         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
23993         delegates for arbitrary function pointers. Fixes #71472.
23994
23995 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
23996
23997         * threads.c: cleaned up the code a little.
23998
23999 2005-02-15  Martin Baulig  <martin@ximian.com>
24000
24001         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
24002         the data table.
24003
24004         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
24005         allocate larger chunks if needed.
24006
24007 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
24008
24009         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
24010         in by mistake.
24011
24012 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
24013
24014         * domain.c: keep the domains in an array and ensure the domain ids
24015         are kept small, so they can be used as indexes to domain-specific data
24016         with a small memory overhead.
24017
24018 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
24019
24020         * icall.c: Handle byref types in Type icalls. Fixes #72544.
24021
24022 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
24023
24024         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
24025
24026 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
24027
24028         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
24029
24030         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
24031         values.
24032
24033         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
24034         
24035 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
24036
24037         * domain-internals.h: add the hashtable here.
24038
24039         * class-internals.h: Remove `info' from MonoMethod
24040
24041         * domain.c: Add a new hashtable, jit_trampoline_hash
24042
24043 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
24044
24045         * object.c: don't set the value of static fields
24046         (fixes bug#72494).
24047
24048 2005-02-11  Martin Baulig  <martin@ximian.com>
24049
24050         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
24051         (mono_debug_add_method): Silently ignore the method if it's too big.
24052         (mono_debug_add_type): Likewise.
24053
24054 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
24055
24056         * threads.c, appdomain.c: remove #ifdefs from the code.
24057
24058 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
24059
24060         * metadata-internals.h: Added flags to MonoAssembly to cache the most
24061         common security informations. This allows us to stay in unmanaged code
24062         when doing LinkDemand and it's special cases (except for the first 
24063         time for initialization). The flags a very much used with --security.
24064         * reflection.c|h: Added code to get declarative security attributes 
24065         for LinkDemand and InheritanceDemand. This required to refactor the
24066         existing code for Demand.
24067         * security-manager.c|h: Added new method fields for the special cases
24068         of LinkDemand.
24069
24070 2005-02-10  Martin Baulig  <martin@ximian.com>
24071
24072         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
24073         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
24074
24075 2005-02-10  Martin Baulig  <martin@ximian.com>
24076
24077         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
24078         debugging code; this is almost a complete rewrite.
24079
24080         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
24081
24082 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
24083
24084         * domain.c, object.h: expose mono_string_equal () and 
24085         mono_string_hash ().
24086         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
24087         it's implemented in managed code.
24088
24089 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24090
24091         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
24092         lo leak objects between appdomains.
24093
24094 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24095
24096         * assembly.c: old compilers compilation fix from 
24097         robertj@gmx.net (Robert Jordan).
24098
24099 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
24100
24101         * class-internals.h: Little reminder for the future.
24102
24103         * debug-helpers.c: Fix up wrapper_type_names
24104
24105 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24106
24107         * image.c, metadata-internals.h: when loading an image from a file,
24108         mmap all of it and use the same codepaths as when using a
24109         in-memory image: the code is simpler and we use less memory
24110         (both writable and readonly).
24111
24112 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
24113
24114         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
24115         API to alloc runtime data structures that need to be tracked by the
24116         GC and contain pointers.
24117         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
24118         make the code more readable and eventually use a different GC.
24119
24120 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
24121
24122         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
24123         for out arguments.
24124         
24125 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
24126
24127         * object.c: In release_type_locks(), don't release the cctor lock
24128         if it has already been released. This fixes a crash in the
24129         thread5 test.
24130
24131 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
24132
24133         * gc.c, marshal.c, icall.c: register a delegate for finalization
24134         only when the native function pointer has been allocated for it.
24135
24136 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24137
24138         * object.c: cleaned up some code, allocate objects that are
24139         pointer free with the atomic malloc variant. Allocate memory
24140         for static data from the mempool if it's pointer-free.
24141         Allocate the bounds array at the end of the array data, when needed.
24142         * object-internals.h, object.h: move a private function in a private
24143         header.
24144         * class.c: handle missing case in tracking references in fields.
24145
24146 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
24147
24148         * class.c, class-internals.h: keep track if a type has
24149         reference fields in either the instance or static fields.
24150
24151 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
24152
24153         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
24154         and renamed to MonoRuntimeInfo. Added fields to store the expected
24155         framework assembly version. Changed mono_get_framework_version and
24156         mono_get_runtime_version for a single mono_get_runtime_info method.
24157         
24158         * assembly.c: Added method to remap system assembly versions to the
24159         current executing runtime version. Removed old mapping code.
24160         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
24161         
24162         * icall.c, reflection.c: Track api changes.
24163
24164 2005-02-06  Miguel de Icaza  <miguel@novell.com>
24165
24166         * loader.c (method_from_memberref): Improve error reporting,
24167         produce the class name instead of the typeref/typedef index. 
24168
24169 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
24170
24171         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
24172
24173 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24174
24175         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
24176         stdcall and charset name mangling.  Reorganize the code and add
24177         some tracing stuff.
24178
24179 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
24180
24181         * monodiet.c: More iters!
24182
24183         * marshal.c: Iter usage.
24184
24185         * icall.c: Iter usage.
24186
24187         * object.c: Use iters.
24188
24189         * debug-helpers.c: More iters
24190
24191 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24192
24193         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
24194         under win32.
24195
24196 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
24197
24198         * mono-debug-debugger.c: use iters
24199
24200         * class.c, class-internals.h: mono_class_setup_events is static
24201         now
24202
24203         * All callers: use iters
24204
24205 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24206
24207         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
24208         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
24209
24210 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
24211
24212         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
24213
24214         * marshal.h: Add prototypes for ldfld/stfld_remote.
24215
24216         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
24217         this is called during startup.
24218         
24219 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
24220
24221         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
24222         MonoThreadsSync struct private in monitor.c. Changed the way
24223         MonoThreadsSync is allocated so it's faster and there is no
24224         need to keep track of it with a finalizer and it uses less memory.
24225         This also finally allows us to allocate mono objects as ptrfree when
24226         there are no reference fields.
24227
24228 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
24229
24230         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
24231         disappearing link to the GC interface and use them to simplify
24232         the gchandles code.
24233
24234 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
24235
24236         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
24237         stfld_remote which call mono_load/store_field_new. This allows methods
24238         calling ldfld/stfld wrappers to be AOTed.
24239
24240         * console-io.c: Include sys/filio.h under solaris.
24241         
24242         * console-io.c: Include curses.h if needed correctly.
24243
24244 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
24245         
24246         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
24247         method->klass as well.
24248
24249         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
24250
24251         * class.c (mono_class_init): Switch on lazy initialization of 
24252         methods.
24253
24254         * class.c (mono_class_get_finalizer): Handle the case when the 
24255         finalizer is inherited.
24256
24257 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24258
24259         * console-io.c: <curses.h> is needed by term.h on solaris.
24260
24261 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
24262
24263         * icall.c, class-internals.h, monodiet.c, class.c: Remove
24264         mono_class_setup_properties where possible. Remove this ftn from
24265         the header file, and make it static.
24266
24267 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
24268
24269         * loader.c: Add missing setup_... call.
24270
24271         * class.c: Add missing setup_... calls.
24272
24273         * class.c (mono_class_init): Switch on lazy initialization of 
24274         the generic vtable.
24275         
24276         * class.c (mono_class_init): Fix generics broken by the recent changes.
24277
24278         * monodiet.c (handle_type): Add missing setup_... calls.
24279
24280         * class.c: Back out garbage in previous patch.
24281         
24282         * class.c: Add missing setup_... calls.
24283
24284         * class.c (mono_class_get_method_from_name_flags): Avoid calling
24285         mono_class_setup_methods () if possible.
24286
24287         * class-internals.h (MonoClass): Add 'has_cctor' flag.
24288
24289         * class-internals.h (MonoCachedClassInfo): New structure.
24290
24291         * class.c: Initialize properties and events fields of MonoClass lazily.
24292
24293         * class.c: Add infrastructure for lazily initializing the methods and
24294         vtable fields of MonoClass. Not yet used.
24295
24296         * class.c (mono_class_get_finalizer): New helper function.
24297
24298         * class.c: Add infrastructure for loading some class related data from
24299         an AOT file.
24300
24301         * object.c: Add infrastructure for initializing the vtable from data
24302         in the AOT file.
24303
24304         * gc.c (run_finalize): Use mono_class_get_finalizer ().
24305
24306         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
24307         appropriate initialization function before accessing parts of the
24308         MonoClass structure.
24309
24310         * marshal.c: Fix warnings.
24311         
24312         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
24313
24314         * mono-debug-debugger.c (get_exception_message): Use 
24315         mono_class_get_method_from_name_flags ().
24316
24317 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
24318
24319         * reflection.c, appdomain.c: Replace a few manual searches that
24320         Zoltan missed. (Paolo approved this part of my initial patch).
24321
24322 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
24323
24324         * profiler.c: disable recording statistical events at report time.
24325
24326 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24327
24328         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
24329         to byteswap arrays of enum values, too (bug #72080).
24330
24331 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
24332
24333         * appdomain.c (set_domain_search_path): Allow this to be called if
24334         domain->setup is not yet set.
24335
24336         * loader.c (mono_method_get_index): New helper function.
24337
24338         * loader.c reflection.c: Use mono_method_get_index ().
24339
24340         * class.c (mono_class_get_method_from_name_flags): New helper method.
24341
24342         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
24343         this.
24344
24345         * class.c (mono_class_get_cctor): New helper method.
24346
24347         * string-icalls.c object.c class.c marshal.c reflection.c: Use
24348         mono_class_get_method () to look up methods.
24349
24350 2005-02-01  Miguel de Icaza  <miguel@novell.com>
24351
24352         * console-io.c: Fix the build, this should work on Windows.
24353
24354 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
24355
24356         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
24357         be set to null to keep things valid
24358
24359 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24360
24361         * icall.c: added Console 2.0 icalls.
24362         * Makefile.am: added console-io.[ch]
24363         * console-io.[ch]: internal calls for Console 2.0 API.
24364
24365 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24366
24367         * class.c: make sure we consider all the interfaces
24368         when calculating max_interface_id (bug found by
24369         Jeroen Frijters running ikvm).
24370
24371 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
24372
24373         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
24374         valuetype fields to null.
24375
24376         * object.c (set_value): Ditto. Fixes #71669.    
24377
24378 2005-01-31  Martin Baulig  <martin@ximian.com>
24379
24380         * metadata.c (mono_metadata_has_generic_params): New public
24381         function; checks whether something is a generic method.
24382
24383 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
24384
24385         * appdomain.c: fix infinite recursion when adding assemblies.
24386
24387 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
24388
24389         * object.c: Fix small typo to return all items for Environment.
24390         GetCommandLineArgs.
24391
24392 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
24393
24394         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
24395         reflection.c: more domain and assembly-unload related fixes
24396         and memory leaks plugs.
24397
24398 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
24399
24400         * 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.
24401
24402 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
24403
24404         * loader.c (mono_method_signature): Make this method lazy
24405         (mono_get_method_from_token): Don't computate the signature here.
24406
24407         Doing this saves quite a bit of memory. I got 90 kb on starting up
24408         monodoc. It should also save some disk reads on startup.
24409
24410         * *: MonoMethod->signature might be NULL now. You *MUST* use
24411         mono_method_signature.
24412
24413 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
24414
24415         * object.c (mono_runtime_get_main_args): Return an array from the
24416         current domain here. Fixes #71938.
24417
24418 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
24419
24420         * monitor.c: formatting changes to comply with the
24421         mono coding style and remove #ifdefs from the code.
24422
24423 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
24424
24425         * metadata.c, private.h: remove some unneeded data
24426         and use a more compact representation for table schemas.
24427
24428 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
24429
24430         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
24431         to get a better distribution in hash tables.
24432         * *.c: use mono_aligned_addr_hash() where appropriate.
24433         * assembly.c: make var static.
24434
24435 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
24436
24437         * domain-internals.h: Put MonoJitInfo on a diet.
24438
24439         * domain.c: Fix a warning.
24440
24441 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24442
24443         * gc.c: rework the gc handles code to reuse handles
24444         when freed.
24445
24446 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
24447
24448         * domain.c: fixed long standing bug in mono_string_equal() which
24449         was brought to light with the ldstr changes.
24450
24451 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
24452
24453         * reflection.c: Remove warning by adding missing include for marshal.h
24454
24455 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24456
24457         * domain.c, object.c: change the ldstr_table to hold
24458         MonoString* as keys: makes the runtime isinterned lookup
24459         faster and simplifies memory management.
24460
24461 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
24462  
24463         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
24464         possible to add imperative security checks before calling the icall.
24465         * reflection.c: Return security attributes on the original MonoMethod
24466         (and not the wrapped one). This fix permissions on icalls.
24467
24468 2005-01-25  Dick Porter  <dick@ximian.com>
24469
24470         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
24471         the check for mktime() support actually test the mktime() return
24472         value.  "Fixes" bug 71682, though the output is still different to
24473         MS.
24474
24475 2005-01-25  Martin Baulig  <martin@ximian.com>
24476
24477         * class.c (mono_class_is_assignable_from): Make this work for
24478         generic instances.
24479
24480 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
24481
24482         * marshal.c (mono_string_utf8_to_builder)
24483         (mono_string_builder_to_utf16): We might not have ownership of the
24484         string. In thise case, we need to create a new buffer.
24485
24486         * object-internals.h (mono_stringbuilder_capacity): sb->str might
24487         be null, in which case, use the default capacity.
24488
24489 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24490
24491         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
24492         GC events to the profiler.
24493
24494 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
24495
24496         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
24497         if you don't want the GC to run.
24498
24499 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
24500
24501         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
24502         start providing a GC API and keeping different implementations in
24503         their own file.
24504         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
24505
24506 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
24507
24508         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
24509         mmap rather than allocating a huge buffer.
24510         (mono_debug_close_mono_symbol_file): Free the buffer allocated
24511         above.
24512
24513 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
24514
24515         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
24516         and CheckExecutionRights.
24517         * reflection.c|h: Keep the index of the declarative security to be 
24518         used, instead of the pointer, when AOT compiler is used. Also add 
24519         class initialization when requesting demands.
24520         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
24521         CheckExecutionRights. Both properties are now FALSE by default, and
24522         unmodifiable, unless the --security option is used.
24523
24524 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24525
24526         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
24527         reflection.c: properly refcount images and assemblies, many leaks fixed.
24528
24529 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24530
24531         * threadpool.c: increase the timeout for threads in the thread pool to
24532         10s.  Fixes bug #67159.
24533
24534 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
24535
24536         * class-internals.h: Sun's compiler insists on explicit
24537         signed on bit fields to handle then correctly.
24538
24539 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
24540
24541         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
24542         Make the size of the array fit only the number of invalid path
24543         chars that we have.
24544
24545         * class.c (_mono_class_get): Improve the error reporting when a
24546         class referenced is not found, to assist debugging. 
24547
24548 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
24549
24550         * threads.c: fix off-by-one error.
24551         * domain.c: free data allocated in the domain.
24552
24553 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
24554
24555         * reflection.c (mono_method_body_get_object): Fill out exception info
24556         as well.
24557
24558         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
24559         structure.
24560         
24561 2005-01-19  Martin Baulig  <martin@ximian.com>
24562
24563         * loader.c (mono_get_method_constrained): Make this work again.
24564
24565 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
24566
24567         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
24568         guint16 to match the managed side.
24569
24570         * reflection.c (mono_reflection_body_get_object): Fill out local
24571         variables array.
24572
24573         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
24574         as well.
24575
24576         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
24577         'local_var_sig_token'.
24578
24579 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
24580
24581         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
24582         System.Drawing.
24583
24584         * reflection.c (mono_method_body_get_object): Handle abstract and
24585         runtime methods.
24586
24587 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
24588
24589         * marshal.c, loader.c, class-internals.h, reflection.c:
24590         store the emthod data for a wrapper in an array instead of a list.
24591
24592 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
24593
24594         * marshal.c: change the code to allocate memory more
24595         conservatively for method wrappers.
24596
24597 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
24598
24599         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
24600         fields from MonoClass to the marshal info structure where they belong.
24601
24602 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24603
24604         * class.c, object.c, class-internals.h, marshal.c: rearrange
24605         some fields and tweak some types to lower memory usage.
24606
24607 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
24608
24609         * threads.c (signal_thread_state_change): Handle the case when the
24610         target thread is the current thread.
24611
24612         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
24613
24614         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
24615         emit_ptr_to_object_conv. 
24616
24617         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
24618         marshalling. Fixes #71352.
24619
24620 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
24621
24622         * metadata.h, blob.h: move table enum to blob.h so it can be included
24623         in any header.
24624         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
24625         cut the size of MonoImage/MonoDynamicImage.
24626
24627 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
24628
24629         * profiler.c (mono_profiler_install_simple): Fix default arguments.
24630
24631 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
24632
24633         * reflection.c, reflection.h, icall.c: add a function to check
24634         if an attribute type is defined for a metadata object.
24635
24636 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
24637
24638         * object-internals.h: Added some needed fields from StringBuilder class.
24639         * marshal.c: Set the maxCapacity when creating a StringBuilder.
24640
24641 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
24642
24643         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
24644         threads before shutting down the runtime.
24645
24646         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
24647
24648 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
24649
24650         * object-internal.h, threads.c: implement stacksize and 
24651         parameterized thread start functionality (requires
24652         matching corlib). Marked broken code for later removal.
24653
24654 2005-01-12  Martin Baulig  <martin@ximian.com>
24655
24656         * class-internals.h (MonoGenericClass): Moved the `initialized'
24657         flag to MonoDynamicGenericClass, removed `init_pending'.
24658         (MonoGenericInst): Added `is_reference' flag.
24659
24660 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
24661
24662         * reflection.c (mono_image_create_pefile): Only set the pe_offset
24663         inside the MSDOS header. Fixes #71201.
24664
24665         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
24666         gc thread.
24667         (mono_domain_finalize): Ditto.
24668
24669 2005-01-12  Martin Baulig  <martin@ximian.com>
24670
24671         * class.c (mono_get_shared_generic_class): Use the cache for
24672         non-dynamic generic classes.
24673
24674         * class-internals.h (mono_class_create_generic_2): Removed
24675         function prototype, this function is now static inside class.c.
24676
24677         * class.c (mono_class_create_generic_2): Made this static, only
24678         call it from mono_class_init() and mono_class_setup_parent().
24679         (collect_implemented_interfaces_aux): Call mono_class_init() on
24680         the interfaces we collect.
24681         (mono_class_setup_vtable): Call mono_class_init (class->parent).
24682
24683 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
24684
24685         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
24686         it a real thread handle.
24687
24688         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
24689         MonoJitExceptionInfo, since each catch clause needs its own variable.
24690         
24691 2005-01-11  Dick Porter  <dick@ximian.com>
24692
24693         * image.c (mono_pe_file_open): New variant on mono_image_open()
24694         that does not set up the CLI metadata; used for FileVersionInfo so
24695         it can get the data for windows binaries too.
24696         
24697         * process.c (process_read_string_block): Don't read off the end of
24698         the StringTable block.
24699
24700         These both fix bug 70766.
24701
24702 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
24703
24704         * gc.c: set some fields to NULL at GC cleanup time.
24705         * threads.c: if we quit the main thread, call exit ().
24706
24707 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
24708
24709         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
24710
24711 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
24712
24713         * threads.h, threads.c, object.c: added accessor and settor for
24714         main_thread. Handle it specially when exiting from it: wait
24715         for other foreground threads to exit.
24716
24717 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
24718
24719         * process.c, verify.c: remove some bloat.
24720
24721 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
24722
24723         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
24724         the calling convention to cdecl under win32.
24725
24726 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
24727
24728         * object.c (mono_object_get_size): New function to get the size of
24729         an object instance.
24730
24731         * profiler.c (simple_allocation): Use above.
24732
24733 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
24734
24735         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
24736         ves_icall_System_AppDomain_getRootDomain (as it's not required to
24737         get an appdomain by it's id and we can't assume the root's id is 0).
24738         * domain-internals.h: Change the function prototype to match.
24739         * icall.c: Change the icall table for AppDomain.
24740
24741 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
24742
24743         * locales.c (string_invariant_compare_char): Only compute
24744         GUnicodeTypes in the case where we need them.  Test for ordinality
24745         first and return if so.
24746
24747         From the commit:
24748
24749                 /*
24750                  * FIXME: here we must use the information from c1type and c2type
24751                  * to find out the proper collation, even on the InvariantCulture, the
24752                  * sorting is not done by computing the unicode values, but their
24753                  * actual sort order.
24754                  */
24755
24756 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
24757
24758         * loader.c: for P/Invoke methods, allow the "Internal" shared
24759         library name to refer to the calling process symbol namespace.
24760
24761 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
24762
24763         * Makefile.am: Add the security manager to the build.
24764         * security-manager.c|h: New. Initialization of the security manager.
24765
24766 2005-01-07  Dick Porter  <dick@ximian.com>
24767
24768         * threads.c: 
24769         * monitor.c: Update thread state during Monitor and WaitHandle
24770         waits.  Fixes bug 71031.
24771
24772 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
24773
24774         * reflection.c (property_encode_signature): Correctly handle when the
24775         property has no methods.
24776
24777 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
24778
24779         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
24780         
24781         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
24782         fields from mb, not rmb. Fixes #71017.
24783
24784         * marshal.c (emit_ptr_to_str_conv): Add support for 
24785         ByValTStr -> string conversion. Fixes #71015.
24786
24787         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
24788
24789         * mempool.c (mono_mempool_contains_addr): New helper function.
24790
24791 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
24792
24793         * metadata.c (mono_metadata_compute_size): Fix size calculation of
24794         HasSematics encoded fields.
24795         
24796         * metadata.c (mono_type_to_unmanaged): Improve error message for 
24797         invalid string marshalling.
24798
24799         * metadata.c: Fix warnings.
24800         
24801 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24802
24803         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
24804         profiler support.
24805
24806 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
24807
24808         * domain.c object.c domain-internals.h: Revert part of r38077 since the
24809         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
24810         tests.
24811
24812 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
24813
24814         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
24815         so methods containing these can be AOTed.
24816
24817 2005-01-03  Martin Baulig  <martin@ximian.com>
24818
24819         * loader.c (find_method): Removed the hack for generic instances.
24820         (method_from_memberref): If our parent is a generic instance, pass
24821         its generic type definition to find_method() and then inflate the
24822         method.
24823         (mono_get_method_constrained): Pass the generic type definition to
24824         find_method() and inflate the method later.
24825
24826         * class-internals.h (MonoStats): Added `generic_class_count'.
24827
24828         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
24829         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
24830
24831         * reflection.c (mono_custom_attrs_from_params): Don't ignore
24832         generic type definitions.
24833
24834 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
24835
24836         * loader.c icall.c: Fix warnings.
24837
24838 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
24839
24840         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
24841         blittable types. Fixes #70864.
24842
24843 2004-12-29  Martin Baulig  <martin@ximian.com>
24844
24845         * icall.c
24846         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
24847
24848         * reflection.c (mono_method_get_object): Create a
24849         "System.Reflection.MonoGenericMethod" for inflated methods; don't
24850         call mono_get_inflated_method().
24851
24852         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
24853
24854 2004-12-27  Martin Baulig  <martin@ximian.com>
24855
24856         * class-internals.h (MonoMethod): Added `is_inflated' flag.
24857         (MonoMethodInflated): Added `inflated' field.
24858
24859         * class.c (mono_class_inflate_generic_method): Don't really
24860         inflate the method here; just set the `is_inflated' flag in the
24861         MonoMethod.
24862         (mono_class_get_inflated_method): Actually inflate the method here
24863         if it's not already inflated; we use the MonoMethodInflated's new
24864         `inflated' field as a cache.
24865
24866 2004-12-26  Martin Baulig  <martin@ximian.com>
24867
24868         * class.c
24869         (inflate_generic_class): Moved some code out of inflate_generic_type().
24870         (mono_class_inflate_generic_method): If we're already inflated,
24871         inflate the context and use the declaring method; ie. make sure
24872         the declaring method of an inflated method is always the generic
24873         method definition.
24874         (mono_class_create_from_typedef): Create
24875         `class->generic_container->context->gclass'.
24876
24877 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
24878
24879         * metadata-internals.h, marshal.c, reflection.c: More
24880         MonoGHashTable->GHashTable.
24881
24882         * domain-internals.h, class.c: Change MonoGHashTable's into
24883         GHashTables for some cases where no gc stuff is used
24884
24885         All users: update apis
24886
24887 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
24888
24889         * metadata.c (builtin_types): Make this `const'. Makes this get
24890         put into the shareable section.
24891         (mono_metadata_init): Casts to make gcc happy.
24892
24893 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
24894
24895         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
24896
24897 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
24898
24899         * icall.c: Added an internal call to retrieve the position and length
24900         of assembly-level declarative security attributes (RequestMinimum, 
24901         RequestOptional and RequestRefuse). This is used by the Assembly class
24902         to re-create the corresponding permission sets.
24903
24904 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
24905
24906         * marshal.c: fix the stelemref wrapper to be type correct
24907         (and faster).
24908
24909 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
24910
24911         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
24912         to do key & 0x7fffffff. Hashtable already does this. It just
24913         results in longer code.
24914
24915 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
24916
24917         * appdomain.c: Bump corlib version.
24918         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
24919         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
24920         * reflection.c|h: Add functions to get declarative security infos
24921         (blob position and length) for assemblies, classes and methods.
24922
24923 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
24924
24925         * reflection.c: sort the constant table (bug #70693).
24926
24927 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
24928
24929         * object-internals.h, threads.c, domain.c: add accessors for
24930         the MonoThread and MonoDomain tls keys.
24931
24932 2004-12-18  Martin Baulig  <martin@ximian.com>
24933
24934         * class.c (inflate_generic_type): If we're inflating a generic
24935         instance, set `ngclass->context->container = context->container';
24936         ie. the container we inflated into.
24937
24938         * metadata.c (mono_metadata_parse_generic_param): Reflect above
24939         inflate_generic_type() changes.
24940
24941 2004-12-17  Martin Baulig  <martin@ximian.com>
24942
24943         * class-internals.h
24944         (MonoGenericClass): Replaced `MonoType *generic_type' with
24945         `MonoClass *generic_class'.  Removed `dynamic_info'; if
24946         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
24947         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
24948
24949 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
24950
24951         * exception.c (mono_exception_from_token): New helper function.
24952
24953 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
24954
24955         * assembly.c (mono_assembly_load_with_partial_name): Call 
24956         mono_assembly_loaded before invoking the preload hooks. Fixes
24957         #70564.
24958
24959         * object-internals.h (MonoThread): Change culture_info and 
24960         ui_culture_info into an array.
24961
24962         * threads.c: Cache culture info objects from more than one appdomain.
24963
24964         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
24965         current UI culture.
24966
24967 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
24968
24969         * threads.h threads.c appdomain.c: Clear the culture_info field of
24970         all threads during unloading if they point to an object in the dying
24971         appdomain.
24972
24973 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
24974
24975         * culture-info.h (TextInfoEntry): New struct
24976         * object-internals.h: sync with managed
24977         * locales.c: fill the `text_info_data' field
24978         * culture-info-tables.h: update
24979
24980 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
24981
24982         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
24983         collector.
24984
24985 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
24986
24987         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
24988         (ves_icall_ModuleBuilder_getMethodToken): Ditto
24989
24990 2004-12-12  Martin Baulig  <martin@ximian.com>
24991
24992         * mono-debug-debugger.c (write_type): If we're an enum and the
24993         builtin types have already been initialized, call mono_class_init().
24994
24995 2004-12-11  Martin Baulig  <martin@ximian.com>
24996
24997         * metadata.c (mono_metadata_load_generic_params): Added
24998         `MonoGenericContainer *parent_container' argument; automatically
24999         compute `container->is_method'; pass the correct owner to
25000         get_constraints().      
25001
25002         * reflection.c (compare_genericparam): Sort the GenericParam table
25003         according to increasing owners. 
25004
25005 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
25006
25007         * profiler.c: allow disabling the default profiler.
25008
25009 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
25010
25011         * decimal.c, icall.c: allow disabling System.Decimal support.
25012
25013 2004-12-09  Marek Safar <marek.safar@seznam.cz>
25014
25015         * reflection.c: Add support for null attribute arguments.
25016
25017 2004-12-09  Martin Baulig  <martin@ximian.com>
25018
25019         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
25020         names to get rid of compiler warnings.
25021
25022 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
25023
25024         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
25025         mono_marshal_load_type_info (). Fixes #69625.
25026         (mono_marshal_get_ptr_to_struct): Likewise.
25027
25028 2004-12-08  Martin Baulig  <martin@ximian.com>
25029
25030         * mono-debug.h: Bumped version number to 47.
25031
25032         * mono-debug-debugger.c
25033         (mono_debugger_event_handler, mono_debugger_event): Take two
25034         guint64 arguments insteed of a gpointer and a guint32.  
25035
25036 2004-12-08  Martin Baulig  <martin@ximian.com>
25037
25038         * debug-mono-symfile.h
25039         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
25040         `address' to `native_offset'.
25041
25042 2004-12-08  Martin Baulig  <martin@ximian.com>
25043
25044         * class.c (mono_class_create_from_typespec): Only inflate if we
25045         either have `context->gclass' or `context->gmethod'.
25046
25047 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
25048
25049         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
25050
25051         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
25052
25053         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
25054
25055         * reflection.c (mono_assembly_get_object): Remove the workaround put
25056         in for the release.
25057         
25058         * appdomain.c: Use the corlib_internal field from MonoAssembly.
25059
25060         * appdomain.c: Bump corlib version.
25061
25062         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
25063         be visible in other appdomains.
25064
25065 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
25066
25067         * threads.c: Interlocked inc and dec for longs were messed up,
25068         use a KISS based impl for this. Fixes 70234
25069
25070 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
25071
25072         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
25073
25074 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
25075
25076         * icall.c: fix to follow policy not to allow struct
25077         arguments in icalls.
25078
25079 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25080
25081         * process.c: make the patch that handles spaces in file paths work
25082         on mono/windows too.
25083
25084 2004-12-06  Martin Baulig  <martin@ximian.com>
25085
25086         * class.c (mono_class_create_generic): Call
25087         mono_class_setup_supertypes() if we're dynamic.
25088         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
25089
25090 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
25091
25092         * object-internals.h: Add new fields to MonoThread.
25093
25094         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
25095
25096         * icall.c threads-types.h threads.c: Add new icalls.
25097
25098         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
25099
25100         * object-internals.h (MonoReflectionAssembly): Sync object layout with
25101         managed side.
25102
25103         * appdomain.c: Bump corlib version.
25104
25105         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
25106         internal assemblies. Fixes #69181.
25107
25108 2004-12-05  Martin Baulig  <martin@ximian.com>
25109
25110         * class.c (mono_class_inflate_generic_signature): Make this a
25111         no-op if `context' is NULL or we don't have any type parameters;
25112         also copy `sentinelpos'.        
25113
25114 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
25115
25116         * image.c: Add unbox_wrapper_cache.
25117
25118         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
25119
25120         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
25121         function generator.
25122         
25123         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
25124         Fixes #70173.
25125
25126         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
25127         
25128 2004-12-04  Martin Baulig  <martin@ximian.com>
25129
25130         * loader.c (mono_method_get_signature_full): New public function;
25131         like mono_method_get_signature(), but with an additional
25132         `MonoGenericContext *' argument.
25133
25134         * class.c (mono_class_inflate_generic_signature): Formerly known
25135         as inflate_generic_signature(); make this public.
25136
25137 2004-12-04  Martin Baulig  <martin@ximian.com>
25138
25139         * metadata.c
25140         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
25141         instead of a `MonoGenericContainer *'.  
25142         (mono_metadata_parse_array_full): Likewise.
25143         (mono_metadata_parse_signature_full): Likewise.
25144         (mono_metadata_parse_method_signature_full): Likewise.
25145         (mono_metadata_parse_generic_inst): Likewise.
25146         (mono_metadata_parse_generic_param): Likewise.
25147         (mono_metadata_parse_mh_full): Likewise.
25148         (mono_type_create_from_typespec_full): Likewise.
25149
25150 2004-12-03  Martin Baulig  <martin@ximian.com>
25151
25152         * class-internals.h (MonoGenericContainer): Replaced the
25153         `MonoGenericContext * pointer with a `MonoGenericContext'
25154         structure and made it the first element.
25155
25156 2004-12-03  Martin Baulig  <martin@ximian.com>
25157
25158         * class.c
25159         (inflate_generic_type): Set the `context->container' when creating
25160         a new MonoGenericContext.
25161         (mono_class_inflate_generic_method): Likewise.
25162         (mono_class_create_from_typespec): Just use `context->container'
25163         to get the container.
25164
25165         * loader.c (method_from_methodspec): Set `context->parent' from
25166         `context->container' - and if that's a method container, use its
25167         parent.  Also set the `context->container' when creating a new
25168         MonoGenericContext.
25169         (mono_get_method_from_token): Use just `context->container' to get
25170         the container.
25171
25172         * metadata.c (do_mono_metadata_parse_generic_class): Also set
25173         `gclass->context->container'.
25174
25175         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
25176         the `context->container' when creating a new MonoGenericContext.
25177
25178 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
25179
25180         * reflection.c (compare_genericparam): Sort params with identical
25181         owner by their number. Fixes gen-111 on sparc.
25182
25183 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
25184
25185         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
25186         around the domain changes.
25187
25188         * appdomain.c (mono_domain_unload): Handle the case when the thread
25189         calling Unload is itself being aborted during unloading. Fixes #70022.
25190
25191         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
25192
25193         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
25194         checkpoint_func as an icall so it gets a wrapper.
25195         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
25196         in the cross-appdomain wrappers too.
25197
25198         * threads.c (mono_thread_has_appdomain_ref): Make this public.
25199
25200         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
25201
25202         * reflection.c: Fix some memory leaks.
25203         
25204 2004-12-02  Martin Baulig  <martin@ximian.com>
25205
25206         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
25207
25208         * metadata.c (generic_class_cache): New static hashtable.
25209         (mono_metadata_lookup_generic_class): New public method.
25210
25211 2004-12-02  Martin Baulig  <martin@ximian.com>
25212
25213         * class.c (mono_class_create_from_typedef): Call
25214         mono_class_setup_parent() and mono_class_create_mono_type() before
25215         parsing the interfaces.
25216
25217 2004-12-02  Martin Baulig  <martin@ximian.com>
25218
25219         * metadata.c (generic_inst_cache): New static hashtable.
25220         (mono_metadata_lookup_generic_inst): New public function.
25221         (mono_metadata_inflate_generic_inst): New public function.
25222         (mono_metadata_parse_generic_inst): New public function.
25223         (do_mono_metadata_parse_generic_class): Use the new
25224         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
25225         since this'll also use the cache.
25226
25227         * reflection.c (mono_reflection_bind_generic_method_parameters):
25228         Use mono_metadata_lookup_generic_inst() to use the new cache.
25229
25230         * class.c (inflate_mono_type): Use
25231         mono_metadata_inflate_generic_inst() to inflate a generic
25232         instance; this'll also use the new cache.
25233
25234         * loader.c (method_from_methodspec): Use
25235         mono_metadata_parse_generic_inst() and
25236         mono_metadata_inflate_generic_inst() rather than parsing it
25237         manually, so we can use the new cache.
25238
25239 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
25240
25241         * threads.c (wait_for_tids): Do not incorrectly free threads when 
25242         the wait times out.
25243
25244 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
25245
25246         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
25247         iter->args based on whether parameters are passed in registers (i.e.
25248         MONO_ARCH_REGPARMS is defined)
25249
25250 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
25251
25252         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
25253         the exception message. Fixes #70070.
25254         (method_from_methodspec): Fix warnings.
25255
25256 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25257
25258         * process.c: (complete_path) return the path quoted
25259
25260 2004-12-01  Martin Baulig  <martin@ximian.com>
25261
25262         * class-internals.h (MonoGenericInst): New structure.
25263         (MonoGenericClass): Replaced `type_argc', `type_argv' and
25264         `is_open' with `MonoGenericInst *inst'.
25265         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
25266         `is_open' with `MonoGenericInst *inst'.
25267
25268 2004-11-30  Martin Baulig  <martin@ximian.com>
25269
25270         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
25271
25272         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
25273         to `generic_class_cache'.
25274
25275         * metadata.c
25276         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
25277         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
25278         (mono_generic_inst_is_valuetype): Renamed to
25279         mono_generic_class_is_valuetype().
25280
25281         * class-internals.h
25282         (MonoGenericInst): Renamed to MonoGenericClass.
25283         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
25284         (MonoClass): Renamed `generic_inst' to `generic_class'.
25285         (MonoGenericContext): Renamed `ginst' to `gclass'.
25286
25287         * object-internals.h
25288         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
25289
25290         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
25291         mono_reflection_generic_class_initialize().
25292
25293         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
25294         now known as "System.Reflection.MonoGenericClass".
25295         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
25296
25297 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
25298
25299         * class-internals.h: Added a flag field to MonoClass to cache the
25300         declarative security attributes actions associated with the class.
25301         * domain-internals.h: Added booleans to MonoJitInfo to cache the
25302         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
25303         applicable to the JITted method.
25304         * reflection.c|h: Added functions to extract (as flags) which security
25305         actions are available (declaratively) for a method, class or assembly.
25306         * metadata.c|h: Added functions to search the declarative security
25307         table in the metadata.
25308         
25309 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
25310
25311         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
25312         EXPORTEDTYPES are already in the class name cache, so there is no
25313         need to add extra code here to look at them. Just removes a bit of
25314         cruft.
25315
25316         (ves_icall_System_Environment_get_TickCount): No need for #if
25317         WINDOWS. We already have the code in io-layer.
25318
25319 2004-11-28  Martin Baulig  <martin@ximian.com>
25320
25321         * loader.c
25322         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
25323         Fixes gen-112.cs.
25324
25325 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
25326
25327         * assembly.c (do_mono_assembly_open): Instead of having a
25328         conditional WITH_BUNDLE, incorporate support for bundles here, by
25329         having a global `bundles' variable holding a pointer to the actual
25330         bundles. 
25331
25332         (mono_register_bundled_assemblies): New API call used by the
25333         bundle code. 
25334
25335         See mkbundle.1 for details.
25336         
25337 2004-11-27  Martin Baulig  <martin@ximian.com>
25338
25339         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
25340         the vtable for generic methods.
25341
25342 2004-11-26  Martin Baulig  <martin@ximian.com>
25343
25344         * metadata.c
25345         (mono_metadata_generic_method_hash): New public function.
25346         (mono_metadata_generic_method_equal): Likewise.
25347
25348         * class-internals.h
25349         (MonoGenericContainer): Added `GHashTable *method_hash'.
25350
25351         * reflection.c (ReflectionMethodBuilder): Added
25352         `MonoGenericContainer *generic_container'.
25353         (reflection_methodbuilder_to_mono_method): Don't create a new
25354         MonoGenericContainer each time we're called.
25355         (mono_reflection_bind_generic_method_parameters): Use
25356         `container->method_hash' to cache the results so we don't create a
25357         different method if we're called several times with the same
25358         arguments.
25359
25360         * loader.c (method_from_methodspec): Use the new
25361         `container->method_hash' here, too.
25362
25363 2004-11-26  Martin Baulig  <martin@ximian.com>
25364
25365         * class.c (inflate_generic_signature): Correctly compute
25366         `res->has_type_parameters'.
25367         (mono_class_vtable): Use the `has_type_parameters' flag to
25368         determine whether we're a generic method.
25369
25370         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
25371
25372 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
25373
25374         * object.c (mono_runtime_run_main): Fix a small memory leak.
25375
25376 2004-11-25  Martin Baulig  <martin@ximian.com>
25377
25378         * class.c (set_generic_param_owner): Fixed the loop.
25379
25380 2004-11-25  Martin Baulig  <martin@ximian.com>
25381
25382         * object.c (mono_class_vtable): Don't create any JIT wrappers for
25383         generic methods.
25384
25385 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
25386
25387         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
25388         names. Fixes #69787.
25389
25390 2004-11-24  Martin Baulig  <martin@ximian.com>
25391
25392         * class.c (mono_class_create_generic_2): If we don't have a
25393         `ginst->parent', inflate `gklass->parent' to get our parent.
25394
25395 2004-11-24  Martin Baulig  <martin@ximian.com>
25396
25397         * reflection.c (compare_genericparam): Correctly sort the
25398         GenericParam table; fixes #69779.
25399
25400 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
25401
25402         * reflection.c: When writing a PE file, don't create a huge
25403         buffer in memory. Just write the arrays we have to the file.
25404         This reduces memory usage.
25405
25406         * metadata-internals.h: MonoDynamicStream pefile is no longer used
25407         globally.
25408
25409 2004-11-17  Martin Baulig  <martin@ximian.com>
25410
25411         * class.c (mono_class_init): Don't setup `class->parent' for
25412         dynamic instances; moved this to mono_class_generic_2().
25413         (mono_class_create_generic): Also set `klass->inited' for dynamic
25414         generic instances.
25415         (mono_class_create_generic_2): Don't do anything for dynamic
25416         generic instances.  Set `klass->parent' here and also call
25417         mono_class_setup_parent() here. 
25418
25419         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
25420         `MonoType *parent' argument; set `ginst->parent' before calling
25421         mono_class_create_generic_2(), so we set the correct parent.
25422
25423 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
25424
25425         * reflection.c: allow getting attributes from ModuleBuilder
25426         (used by ikvm).
25427
25428 2004-11-17  Martin Baulig  <martin@ximian.com>
25429
25430         * class.c (mono_class_create_from_typedef): If a type parameter is
25431         inherited from an outer class, set its owner to that class.
25432
25433 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
25434
25435         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
25436           for (int*) written size. This fixes bug #69592.
25437
25438 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
25439
25440         * icall.c: Added IsAuthenticodePresnet internal call.
25441         * image.c|h: New function that check a MonoImage for an Authenticode
25442         signature in the certificate PE data directory.
25443         * security.c|h: New internal call to ask the runtime if an 
25444         Authenticode signature seems referenced in the PE header.
25445
25446 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
25447
25448         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
25449
25450         * reflection.c (mono_image_create_pefile): Free the assembly streams
25451         after writing out the assembly file.
25452
25453         * object.c (mono_runtime_run_main): Fix small memory leak.
25454
25455         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
25456         property access modifiers. Fixes #69389.
25457
25458 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
25459
25460         * domain.c, object.c, object-internals.h, domain-internals.h,
25461         object.h, marshal.c: keep dynamic code info per domain.
25462
25463 2004-11-15  Martin Baulig  <martin@ximian.com>
25464
25465         * class.c (mono_type_get_name_recurse): Put type arguments in
25466         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
25467         see bug #68387.
25468
25469 2004-11-15  Martin Baulig  <martin@ximian.com>
25470
25471         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
25472         (mono_class_setup_vtable): When computing `the_cname' for a
25473         generic instance, don't include the namespace since we'd otherwise
25474         add it twice.
25475
25476 2004-11-15  Martin Baulig  <martin@ximian.com>
25477
25478         * class.c (mono_class_create_generic): Changed return type to void.
25479         (mono_class_create_generic_2): New public function; setup
25480         `class->method', `class->field' and `class->interfaces' here
25481         instead of in mono_class_init().
25482
25483         * class.h (mono_class_create_generic): Moved to class-internals.h.
25484
25485 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
25486
25487         * reflection.c (mono_image_create_pefile): take a file HANDLE.
25488         rather than writing to memory, write to this file. Right now,
25489         we are just writting into a buffer, and copying that. However
25490         we can avoid the buffer later.
25491
25492         (mono_dynamic_stream_reset): new function
25493
25494         * icall.c, object-internals.h: update for the above.
25495
25496 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
25497
25498         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
25499         have been using gc'd memory. First it is slower, unlikely
25500         the comment in the source code said, secondly, it increases
25501         our footprint to do it in the gc.
25502
25503         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
25504         the method so that it does not have to copy to managed code.
25505
25506 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
25507
25508         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
25509
25510 2004-11-12  Martin Baulig  <martin@localhost>
25511
25512         * reflection.c (mono_image_create_token): Allow generic method
25513         definitions here, since they may appear in an `.override'; see
25514         gen-98/gen-99 for an example.
25515
25516 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
25517
25518         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
25519         #69365.
25520
25521         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
25522         descriptive.
25523
25524 2004-11-11  Martin Baulig  <martin@ximian.com>
25525
25526         * class.c (mono_class_setup_vtable): In an explicit interface
25527         implementation, the method name now includes the arity.
25528
25529 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
25530
25531         * object.c (mono_array_full_copy): Fix warning.
25532
25533 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
25534
25535         * appdomain.c: Removed look_for_method_by_name(). Use the new method
25536         mono_class_get_method_from_name() instead.
25537         
25538         * class-internals.h: Added two new types of wrappers. 
25539         Added MonoRemotingTarget enum. Added new trampoline function type, which
25540         takes an additional MonoRemotingTarget value as parameter, so it is
25541         possible to request a trampoline for a specific target.
25542         
25543         * class.c: Added new mono_class_get_method_from_name() method.
25544         
25545         * class.h: In MonoRemoteClass, we can have now to vtables, one for
25546         general remoting sinks and one specific for cross domain calls.
25547         
25548         * debug-helpers.c: Added new wrapper names.
25549         
25550         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
25551         of a remote class.
25552         
25553         * image.c: Porperly delete value objects form the remoting invoke hashtable.
25554         
25555         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
25556         with several other methods (mono_marshal_get_xappdomain_dispatch,
25557         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
25558         and others) can generate a fast remoting wrapper for cross domain calls.
25559         More information can be found in docs/remoting.
25560         Other changes: Removed mono_find_method_by_name, and used
25561         mono_class_get_method_from_name instead.
25562         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
25563         is stored in the remoting invoke hashtable.
25564         
25565         * marshal.h: published the new method for getting the xdomain wrapper,
25566         and also added a method for getting the adequate wrapper for a given
25567         method and target.
25568         
25569         * object-internals.h, object.c: Added a couple of methods for capying and
25570         cloning arrays.
25571         Modified mono_install_remoting_trampoline, which takes the new remoting
25572         trampoline that has a remoting target as parameter.
25573         mono_class_proxy_vtable now also takes a remoting target as parameter, and
25574         will return the most suitable vtable for the target.
25575         Added mono_remote_class_vtable, which returns the vtable of a remote class
25576         (which can be the normal remoting vtable or the xdomain vtable).
25577         
25578         * threads.c: the xdomain invoke and dispatch wrappers must also be
25579         protected against interruptions.
25580
25581 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25582
25583         * icall.c: use memmove in BlockCopyInternal when the source and
25584         destination arrays are the same.
25585
25586 2004-11-09  Martin Baulig  <martin@ximian.com>
25587
25588         * class-internals.h (MonoGenericContainer): Removed `method' and
25589         `signature', replaced them with `is_method' and `is_signature'
25590         flags.  Added `context'.
25591
25592         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
25593         instead of a `MonoGenericContainer *'.
25594
25595         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
25596         for dynamic type parameters.
25597         (mono_metadata_load_generic_params): Setup `container->context'.
25598
25599         * reflection.c (mono_reflection_setup_generic_class): Setup
25600         `tb->generic_container->context'.
25601         (do_mono_reflection_bind_generic_parameters): Use
25602         mono_class_inflate_generic_type() to correctly inflate types,
25603         rather than using our own hack just for MONO_TYPE_VAR.
25604
25605 2004-11-09  Martin Baulig  <martin@ximian.com>
25606
25607         * class.c (mono_class_inflate_generic_method): Small fix; don't
25608         crash here.
25609
25610         * icall.c
25611         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
25612         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
25613         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
25614         (ves_icall_Type_BindGenericParameters): Likewise.
25615         (ves_icall_Type_get_IsGenericInstance): Likewise.
25616         (ves_icall_Type_GetGenericParameterPosition): Likewise.
25617         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
25618         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
25619         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
25620
25621 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
25622
25623         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
25624         assembly versions and public key tokens. Fixes #69113.
25625
25626 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
25627
25628         * metadata.c: fix bug introduced with the type cache changes
25629         on 2004-11-06.
25630
25631 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
25632
25633         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
25634         the MonoClass pointer instead of the token in exception clauses.
25635         * reflection.c: updates for the above and make the code not depend
25636         on the structure of MonoExceptionClause.
25637
25638 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
25639
25640         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
25641         Add support for dynamic assemblies. Fixes #69114.
25642
25643         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
25644
25645 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
25646
25647         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
25648         since most only those methods use it. the code member of
25649         MonoMethodPInvoke was dead, so that can be removed too. Also,
25650         remove inline_count (again, not used), and move slot so that it
25651         can share bits with some other flags. This saves 8 bytes in the
25652         structure and gives us about 50 kb back for mcs helloworld.cs
25653
25654         * *.[ch]: Do naming changes for the above.
25655
25656         * loader.c (mono_method_get_header): Lazily init the header
25657         on first access.
25658         (mono_get_method_from_token): don't init the header here
25659         (mono_free_method): the header may never be allocated
25660
25661         Overall, this saves 150 kb of unmanaged allocations
25662         for mcs helloworld.cs. That accounts for 10% of the unmanaged
25663         memory at runtime.
25664         
25665         * loader.c, loader.h (mono_method_get_header): new accessor.
25666
25667         * *.[ch]: use the above method. Prepares us to lazily load
25668         the header.
25669
25670         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
25671         three warnings, which are actual bugs (see 69206).
25672
25673         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
25674         unused. Saves a cool 4 bytes / method.
25675
25676 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
25677
25678         * metadata.c (builtin_types): Add types for System.Object here.
25679         (mono_metadata_parse_type_full): Cache MonoType*'s that are
25680         for a class or valuetype from klass->this_arg or klass->byval_arg.
25681
25682         On mcs for a hello world, this gets us down from 21836 MonoType's
25683         to 14560.
25684
25685         (mono_metadata_free_type): Account for the above change.
25686
25687 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
25688
25689         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
25690         exception instead of asserting if name is null.
25691         (ves_icall_System_AppDomain_GetData): Ditto.
25692
25693 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
25694
25695         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
25696         EnumBuilder.
25697
25698         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
25699         Return NULL when the domain does not have entry_assembly set.
25700
25701         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
25702         Add a 'resource_modules' argument.
25703         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
25704
25705         * reflection.c (mono_reflection_create_runtime_class): Move setting
25706         of wastypebuilder here, so mono_get_type_object () returns a MonoType
25707         for enums too.
25708
25709         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
25710         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
25711         Throw an ArgumentNullException if 'ptr' is null.
25712
25713         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
25714         assemblies here. Fixes #69020.
25715
25716 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
25717
25718         * reflection.c (build_compressed_metadata): Fix the previous patch for
25719         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
25720         the stack.
25721
25722 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
25723
25724         * assembly.c (mono_assembly_names_equal): Allow a match if one of
25725         the cultures is false. Fixes #69090.
25726
25727         * reflection.c (build_compressed_metadata): Fix invalid memory read 
25728         detected by valgrind.
25729         
25730         * reflection.c (mono_reflection_get_type): Avoid triggering a 
25731         TypeResolve multiple times for the same type. Fixes #65577.
25732
25733 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
25734
25735         * marshal.c: Avoid using ldftn to call managed functions. It is
25736         much slower than just a call.
25737
25738         * reflection.c (mono_module_get_object): free the basename we
25739         allocate here from glib.
25740         
25741         * reflection.c (ensure_runtime_vtable): make sure to free
25742         overrides.  Also, we were allocating an array of MonoMethod not an
25743         array of MonoMethod*.
25744
25745         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
25746
25747         * image.c (mono_image_close): free image->guid here.
25748
25749 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
25750
25751         * reflection.c: Fix some spec conformance issues with the PE file
25752         structures so mcs compiled apps run on the Net 2.0 beta.
25753
25754 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
25755
25756         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
25757         Implement this. Fixes #67264.
25758
25759         * debug-helpers.h debug-helpers.c marshal.c: Move 
25760         mono_find_method_by_name to debug-helpers.c.
25761
25762 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
25763
25764         * object.c (mono_release_type_locks): type_initialization_hash is
25765         a GHashTable.
25766
25767         * reflection.c object.c object-internals.h: Fix warnings.
25768
25769         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
25770         without accessors. Fixes #61561.
25771
25772         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
25773         application base from the root domain if not set. Fixes #65641.
25774         (mono_runtime_init): Fix warning.
25775
25776 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25777
25778         * appdomain.c: call mono_thread_pool_init.
25779         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
25780         of worker threads based on the number of CPUs and the environment
25781         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
25782         for non-windows (windows) systems.
25783
25784 2004-10-27  Chris Toshok  <toshok@ximian.com>
25785
25786         * mono-debug-debugger.c (write_class): don't call mono_class_init
25787         here, as even with the check for (!klass->init_pending), we get
25788         into a situation where we're hitting cycles in class
25789         initialization.  Fixes #68816.
25790
25791 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
25792
25793         * image.c: Avoid overwriting values in the loaded_images_hash when an
25794         assembly is loaded multiple times. Fixes #61152.
25795
25796         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
25797         so multiple satellite assemblies for the same name can be loaded.
25798         Fixes #68259.
25799
25800         * mono_domain_assembly_preload: Actually return the loaded assembly, 
25801         not NULL.
25802
25803         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
25804         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
25805
25806         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
25807         pending finalizers are not invoked after the appdomain has been 
25808         unloaded. Fixes #67862.
25809
25810 2004-10-22  Martin Baulig  <martin@ximian.com>
25811
25812         * mono-debug-debugger.c
25813         (mono_debugger_runtime_invoke): Don't box valuetypes.
25814
25815 2004-10-22  Chris Toshok  <toshok@ximian.com>
25816
25817         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
25818         don't hide private methods.
25819
25820 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
25821
25822         * icall.c: Allows the runtime to "share" (when known) the public key
25823         token of an assembly. This avoid the need to recalculate the token 
25824         (from the public key) in managed code.
25825
25826 2004-10-21  Chris Toshok  <toshok@ximian.com>
25827
25828         * debug-helpers.c (append_class_name): argh, revert last patch.
25829         
25830 2004-10-21  Chris Toshok  <toshok@ximian.com>
25831
25832         * debug-helpers.c (append_class_name): use '+' as the delimiter,
25833         not '/', so that it matches what the debugger uses to look up
25834         methods.
25835
25836 2004-10-21  Martin Baulig  <martin@ximian.com>
25837
25838         * mono-debug-debugger.c (mono_debugger_throw_exception): New
25839         public method; this is called each time an exception is thrown and
25840         allows the debugger to use exception catch points.
25841
25842 2004-10-21  Martin Baulig  <martin@ximian.com>
25843
25844         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
25845         the stack pointer and the exception object in some struct and pass
25846         that to the debugger.
25847
25848 2004-10-21  Chris Toshok  <toshok@ximian.com>
25849
25850         * mono-debug-debugger.c (do_write_class): add instance/static
25851         event support.  We don't expose "raise" or "other" yet.
25852         (event_is_static): new method.
25853
25854 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
25855
25856         * mono-debug-debugger.c
25857         (mono_debugger_handle_exception): Remove
25858         bogus return value for fussy compilers.
25859
25860 2004-10-20  Martin Baulig  <martin@ximian.com>
25861
25862         * mono-debug-debugger.c
25863         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
25864         (mono_debugger_handled_exception): Likewise.
25865
25866 2004-10-20  Martin Baulig  <martin@ximian.com>
25867
25868         * mono-debug-debugger.h (MonoDebuggerEvent): Added
25869         MONO_DEBUGGER_EVENT_EXCEPTION.
25870
25871         * mono-debug-debugger.c (mono_debugger_handle_exception): New
25872         public function to send the debugger a notification for an
25873         exception and inform it about a catch/finally clause.
25874
25875 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
25876
25877         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
25878         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
25879         fix 2.95 build. 
25880
25881         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
25882
25883 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
25884
25885         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
25886         marshalled as [In,Out]. Fixes #58325.
25887
25888 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
25889
25890         * reflection.c (mono_method_body_get_object): Implement some fields.
25891
25892 2004-10-12  Martin Baulig  <martin@ximian.com>
25893
25894         * reflection.c (mono_reflection_bind_generic_parameters): Small
25895         fix, correctly retrieve our parent from a generic instance.
25896
25897 2004-10-12  Martin Baulig  <martin@ximian.com>
25898
25899         * metadata.c (mono_metadata_generic_param_equal): We always have
25900         an owner.
25901
25902         * class.c
25903         (mono_class_from_generic_parameter): We need to have an owner.
25904         (my_mono_class_from_generic_parameter): Likewise.
25905
25906         * reflection.c (mono_reflection_setup_generic_class): Renamed to
25907         mono_reflection_create_generic_class() and added a new
25908         mono_reflection_setup_generic_class().  
25909         (mono_reflection_initialize_generic_param): If we're a nested
25910         generic type and inherited from the containing class, set our
25911         owner to the outer class.
25912
25913 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
25914
25915         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
25916
25917         * reflection.c (mono_method_body_get_object): New function to create
25918         a MethodBody object.
25919
25920         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
25921
25922 2004-10-11  Martin Baulig  <martin@ximian.com>
25923
25924         * metadata.c (_mono_metadata_type_equal): Renamed to
25925         do_mono_metadata_type_equal() and made static.
25926
25927 2004-10-11  Martin Baulig  <martin@ximian.com>
25928
25929         * appdomain.c: Bump corlib version number to 28.
25930
25931 2004-10-10  Martin Baulig  <martin@ximian.com>
25932
25933         * class-internals.h
25934         (MonoGenericInst): Added `MonoGenericContainer *container'.
25935         (MonoGenericMethod): Likewise.
25936         (MonoGenericContext): Likewise.
25937         (MonoGenericParam): Added `MonoGenericContainer *owner'.
25938
25939         * metadata.c
25940         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
25941         (do_mono_metadata_parse_generic_inst): Likewise.
25942         (mono_metadata_parse_type_full): New public method.  This is the actual
25943         mono_metadata_parse_type() implementation - with an additional
25944         `MonoGenericContainer *' argument.
25945         (mono_metadata_parse_array_full): Likewise.
25946         (mono_metadata_parse_signature_full): Likewise.
25947         (mono_metadata_parse_method_signature_full): Likewise.
25948         (mono_metadata_parse_mh_full): Likewise.
25949         (mono_type_create_from_typespec): Likewise.
25950         (mono_metadata_interfaces_from_typedef_full): New public method;
25951         this is similar to the other _full() methods, but we take a
25952         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
25953         (mono_metadata_parse_generic_param): Take an additional
25954         `MonoGenericContainer *' argument and lookup the MonoGenericParam
25955         from that container.
25956         (mono_metadata_generic_param_equal): New static method to compare
25957         two type parameters.
25958         (_mono_metadata_type_equal): New static method; takes an
25959         additional `gboolean signature_only' argument - if true, we don't
25960         compare the owners of generic parameters.
25961         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
25962         with a TRUE argument - do a signature-only comparision.
25963
25964         * loader.c: Use the new _full() methods and pass the
25965         MonoGenericContainer to them.
25966
25967         * object-internals.h (MonoReflectionTypeBuilder): Added
25968         `MonoGenericContainer *generic_container' field.
25969         (MonoReflectionMethodBuilder): Likewise.
25970
25971 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
25972
25973         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
25974         case initial images of dynamic assemblies.
25975
25976         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
25977
25978         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
25979
25980         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
25981         length of event->other array.
25982         (typebuilder_setup_events): Ditto.
25983
25984         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
25985         'assembly_by_name' and add an 'assemblies' list.
25986
25987         * assembly.h assembly.c: Add a new search hook for determining whenever
25988         an assembly is already loaded. Use this instead of searching in the
25989         loaded_assemblies list.
25990
25991         * domain.c appdomain.c: Implement the new search hook so loaded 
25992         assemblies are now scoped by appdomain. Fixes #67727.
25993
25994 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
25995
25996         * threads.c (mono_thread_attach): Initialize synch_lock field so
25997         mono_thread_detach works again.
25998
25999         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
26000         'lib' too. Fixes #63130.
26001
26002 2004-10-06  Jackson Harper  <jackson@ximian.com>
26003
26004         * culture-info-tables.h: regenerated.
26005
26006 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
26007
26008         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
26009         implemented by other interfaces in the result. Fixes #65764.
26010         
26011         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
26012         Handle unloadable modules without crashing.
26013
26014         * image.c (load_modules): Revert the previous patch since modules must
26015         have a fixed index inside the array.
26016         
26017         * image.c (load_modules): Don't include native modules in the modules
26018         array.
26019
26020 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
26021
26022         * reflection.h: Add param_defaults field.
26023
26024         * reflection.c: Add support for parameter defaults in dynamic methods.
26025         Fixes #64595.
26026
26027         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
26028         an empty string when a type has no namespace. Fixes #64230.
26029
26030 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
26031
26032         * tabledefs.h: Added "internal" security actions to support non-CAS
26033         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
26034         Note: they do not seems to be used anymore in 2.0 (new metadata format)
26035
26036 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
26037
26038         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
26039         constructor of abstract class. Fixes #61689.
26040
26041 2004-10-04  Martin Baulig  <martin@ximian.com>
26042
26043         * class-internals.h (MonoGenericContainer): New type.
26044         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
26045         `MonoGenericContainer *generic_container'.
26046         (MonoClass): Replaced `gen_params' and `num_gen_params' with
26047         `MonoGenericContainer *generic_container'.
26048
26049         * metadata.c (mono_metadata_load_generic_params): Return a
26050         `MonoGenericContainer *' instead of a `MonoGenericParam *';
26051         removed the `num' argument.
26052
26053 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
26054
26055         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
26056         for dynamic images.
26057
26058         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
26059         machine fields.
26060
26061         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
26062
26063         * reflection.c: Save pe_kind and machine values into the generated
26064         image file.
26065
26066         * appdomain.c: Bump corlib version number.
26067
26068         * object-internals.h: Reorganize layout of LocalBuilder.
26069
26070         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
26071         New helper function.
26072
26073         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
26074         created MonoType for dynamic types. Fixes #66180.
26075
26076 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
26077
26078         * threadpool.c: the ares hashtable needs a critical section around it.
26079         this prevents some nasty segfaults
26080
26081 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
26082
26083         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
26084         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
26085         bug 67324).
26086         
26087 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
26088
26089         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
26090         
26091 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
26092
26093         * image.c: Always canonicalize image file names, to avoid loading
26094         the same assembly twice when referenced using a relative path.
26095
26096 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
26097
26098         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
26099
26100         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
26101
26102         * marshal.c: Fix warnings.
26103
26104 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
26105
26106         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
26107         attempting to marshal the delegate_trampoline as the method_addr.
26108         This patch has a static hashtable of marshalled delegates so that 
26109         we can map delegate_trampoline addresses back to delegates.  This
26110         allows a delegate passed to managed code to be passed back into native
26111         code.  Fixes #67039
26112
26113 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
26114
26115         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
26116
26117         * reflection.c (method_encode_code): Align method headers properly.
26118         Fixes #66025.
26119
26120 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
26121
26122         * marshal.c: In the runtime invoke wrapper, reset the abort
26123         exception if it is cached. This avoids the automatic rethrowal of 
26124         the exception after the catch of the wrapper. Also check for pending
26125         interruptions before calling the managed method. This is done using
26126         the new method emit_thread_force_interrupt_checkpoint, since the
26127         normal checkpoint method is ignored when running the invoke wrapper.
26128         * object.c: If the abort exception is rethrown, set the abort_exc
26129         field of the thread, so it will be rethrown aftere every catch.
26130         * threadpool.c: Only run an interruption checkpoint if what has been
26131         requested is a stop of the thread (aborts will be ignored).
26132         * threads.c: By default, a thread will now never be interrumped while
26133         running the runtime invoke wrapper (this ensures that runtime_invoke
26134         will always return to the caller if an exception pointer is provided).
26135         There is a new special method mono_thread_force_interruption_checkpoint()
26136         to force an interruption checkpoint even if running a protected
26137         wrapper, which is used by the same runtime invoke wrapper to do a check
26138         at a safe point.
26139
26140 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
26141
26142         * object.c, object-internals.h: Implemented mono_release_type_locks,
26143         which releases the cctor locks held by a thread.
26144         * threads.c, threads.h: In thread_cleanup, release cctor locks held
26145         by a thread. Added mono_thread_exit() method to be used to safely stop
26146         a thread.
26147
26148 2004-09-28  Raja R Harinath  <rharinath@novell.com>
26149
26150         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
26151         Move null check before dereference.  Avoid indexing beyond the end
26152         of the 'modules' array.
26153
26154 2004-09-28  Raja R Harinath  <rharinath@novell.com>
26155
26156         * metadata-internals.h (MonoImage): Add module_count field.
26157         * image.c (load_modules): Set image->module_count.
26158         (mono_image_load_file_for_image): Use image->module_count.
26159         * reflection.c (mono_image_load_module): Append to image->modules array 
26160         of dynamic assembly.
26161         (mono_module_get_object): Fix loop to actually increment index.
26162         Use image->module_count.
26163         * assembly.c (mono_assembly_load_references): Use image->module_count.
26164         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
26165         Likewise.
26166
26167 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
26168
26169         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
26170         Avoid assert on generic types.
26171
26172 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
26173
26174         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
26175
26176         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
26177
26178         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
26179         function to convert a MarshalSpec structure to its managed counterpart.
26180
26181         * reflection.c: Fix warnings.
26182         
26183         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
26184         field.
26185
26186         * icall.c (mono_create_icall_signature): Fix build.
26187
26188 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
26189
26190         * icall.c: Add MakePointType icall.
26191
26192         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
26193         warnings.
26194
26195 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26196
26197         * threadpool.c: reuse allocated slots in the queue.
26198
26199 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
26200
26201         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
26202
26203         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
26204
26205         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
26206         previous change.
26207
26208         * tabledefs.h: Add constants for pinvoke attributes BestFit and
26209         ThrowOnUnmappableChar.
26210
26211         * icall.c (ves_icall_Type_GetPacking): New icall.
26212
26213 2004-09-24  Martin Baulig  <martin@ximian.com>
26214
26215         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
26216
26217 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26218
26219         * appdomain.c:
26220         (mono_domain_set): allow setting a domain that is being unloaded.
26221         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
26222         being unloaded.
26223
26224 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
26225
26226         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
26227         the GetCustomAttributes icall.
26228
26229 2004-09-23  Martin Baulig  <martin@ximian.com>
26230
26231         * object-internals.h (MonoReflectionGenericParam): Replaced
26232         'has_ctor_constraint', `has_reference_type' and `has_value_type'
26233         with `guint32 attrs'.
26234
26235 2004-09-23  Martin Baulig  <martin@ximian.com>
26236
26237         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
26238
26239 2004-09-23  Martin Baulig  <martin@ximian.com>
26240
26241         * object-internals.h (GenericParameterAttributes): New enum.
26242
26243 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
26244
26245         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
26246         
26247         * class.c (init_events): Fill out event->other field.
26248
26249         * class.c: Fix warnings.
26250
26251         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
26252
26253 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
26254
26255         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
26256         walk which doesn't supply the IL offset.
26257
26258 2004-09-22  Martin Baulig  <martin@ximian.com>
26259
26260         * reflection.c (mono_reflection_setup_internal_class): If we're
26261         System.ValueType, System.Object or System.Enum, set
26262         `klass->instance_size' and create the vtable.
26263         (mono_reflection_create_internal_class): If we're an enum type,
26264         get the base class from our current corlib.
26265
26266 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
26267
26268         * reflection.h (MonoResolveTokenError): New type.
26269
26270         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
26271         icall.
26272
26273         * icall.c: Add an 'error' argument to the ResolveToken icalls.
26274
26275 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
26276
26277         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
26278         Support also calling constructors, but only for already allocated objects.
26279
26280 2004-09-17  Geoff Norton <gnorton@customerdna.com>
26281
26282         * reflection.c (type_get_qualified_name): If the klass is null
26283         return the typename to avoid a NullRefEx.
26284         (encode_cattr_value): Get the qualified name of the boxed type,
26285         not the underlying enumtype.  Fixes #62984.
26286
26287 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
26288
26289         * marshal.c: Fix problems with previous checkin.
26290
26291 2004-09-21    <vargaz@freemail.hu>
26292
26293         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
26294         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
26295
26296         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
26297
26298 2004-09-21  Geoff Norton <gnorton@customerdna.com>
26299
26300         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
26301         should only return a type for pointers, arrays, and passbyref types.
26302         Fixes bug #63841.
26303
26304 2004-09-21  Martin Baulig  <martin@ximian.com>
26305
26306         * domain.c (mono_debugger_check_runtime_version): New public
26307         function.
26308
26309         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
26310
26311 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
26312
26313         * reflection.c: Added missing sort to the declarative security 
26314         attributes table. MS implementation stops seeing the attributes if the
26315         token number regress in the table (as shown by ildasm and permview).
26316
26317 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
26318
26319         * object-internals.h (MonoReflectionModule): Add 'token' field.
26320         
26321         * reflection.c (mono_reflection_get_token): Add support for Module
26322         and Assembly.
26323         (mono_module_get_object): Set 'token' field.
26324         (mono_module_file_get_object): Set 'token' field.
26325
26326         * icall.c: Add new Assembly and Module icalls.
26327
26328         * appdomain.c: Bump corlib version.
26329
26330 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
26331
26332         * loader.h loader.c class.h class.c: Add helper functions for obtaining
26333         tokens of metadata objects.
26334
26335         * reflection.h reflection.c (mono_reflection_get_token): New function
26336         to obtain the token of a metadata object.
26337
26338         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
26339
26340 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
26341
26342         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
26343         
26344         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
26345
26346 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
26347
26348         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
26349         * object-internals.h: Added 3 MonoArray* members to MonoReflection
26350         AssemblyBuilder to access the permissions set in the class lib.
26351         * reflection.c: Added security attributes encoding step in 
26352         mono_image_build_metadata.
26353         * tabledefs.h: Added new security actions defined in 2.0:
26354         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
26355
26356 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
26357
26358         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
26359         macro parameter.
26360
26361 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
26362  
26363         * locales.c: nullify the ICU_collator member of CompareInfo when it is
26364           finalized. There where random SIGSEVs at program termination, when
26365           an object being finalized was trying to do a string comparison and
26366           the current culture was already finalized.
26367  
26368 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26369
26370         * threads.c: call thread_cleanup before finishing the thread if we get
26371         there.
26372
26373 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
26374
26375         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
26376         assemblies from the parent. Fixes #65665.
26377
26378 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
26379
26380         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
26381         modifiers.
26382
26383 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
26384
26385         * reflection.h: add prototype for mono_get_dbnull_object
26386         * reflection.c: add prototypes for get_default_param_value_blobs 
26387         and mono_get_object_from_blob for fussier compilers
26388
26389 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
26390  
26391         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
26392         false deadlock checks in class initialization.
26393  
26394 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
26395
26396         * image.c (mono_image_addref): Fix comment.
26397
26398         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
26399         possible.
26400
26401 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
26402
26403         * reflection.c (mono_param_get_objects): Modified to return
26404         ParameterInfo.DefaultValue object.
26405
26406         (get_default_param_value_blobs):
26407         (mono_get_object_from_blob):
26408         (mono_get_dbnull_object): New helper routines. 
26409
26410         * object.c (mono_get_constant_value_from_blob): New helper routine
26411         carved out from get_default_field_value ()
26412
26413         * object-internals.h (mono_get_constant_value_from_blob): Added
26414         function declaration.
26415
26416 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
26417
26418         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
26419         referenced assemblies. Fixes #62135.
26420
26421         * exception.h exception.c (mono_get_exception_file_not_found2): New
26422         helper function.
26423
26424 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
26425
26426         * class.h class.c: Add mono_type_get_underlying_type ().
26427
26428 2004-09-09  Geoff Norton <gnorton@customerndna.com>
26429
26430         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
26431         Fix GetTypes() to support dynamically created assemblies.
26432
26433 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
26434
26435         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
26436         
26437         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
26438         previous patch.
26439
26440         * reflection.h reflection.c loader.c: Allow dynamic construction of
26441         pinvoke methods. Fixes #65571.
26442         
26443         * reflection.c (mono_reflection_get_type): Revert previous change since
26444         it causes regressions.
26445
26446 2004-09-08  Martin Baulig  <martin@ximian.com>
26447
26448         * class.c (class_compute_field_layout): Don't call
26449         mono_class_layout_fields() for open generic instances.
26450
26451 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
26452         * threads.c appdomain.c: fix typo in GC macro
26453
26454 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26455
26456         * threads.c: don't call mono_thread_detach() in start_wrapper(),
26457         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
26458
26459 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
26460
26461         * image.c (mono_image_close): Applied patch from 
26462         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
26463         assembly is loaded multiple times from data.
26464         
26465         * image.c (mono_image_open): Fix warning.
26466
26467 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26468
26469         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
26470         once. Fixes #58334.
26471         
26472         * reflection.c (mono_reflection_create_runtime_class): Initialize
26473         klass->nested_classes. Fixes #61224.
26474
26475 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
26476
26477         * threads.c: sched_yield() on exit, to allow threads to quit.
26478
26479 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26480
26481         * object.c (mono_unhandled_exception): Remove leftover debug code.
26482
26483 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
26484
26485         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
26486
26487 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26488
26489         * marshal.c (emit_marshal_array): Really null terminate string arrays.
26490         
26491         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
26492
26493 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26494
26495         * marshal.c (emit_marshal_array): Null terminate string arrays.
26496         
26497         * marshal.c (raise_auto_layout_exception): Fix warning.
26498
26499         * reflection.c (mono_param_get_objects): Initialize the default value
26500         with DBNull.Value, not null. Fixes #62123.
26501
26502 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
26503
26504         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
26505         throw an exception with a cute explanation.
26506
26507 2004-09-06  Dick Porter  <dick@ximian.com>
26508
26509         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
26510         Close the new process's thread handle, as we don't use it.  The
26511         handle stays around forever otherwise.
26512
26513 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26514
26515         * object.c (arith_overflow): Fix warning.
26516
26517         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
26518         calling conventions in method refs. Fixes #65352.
26519
26520         * reflection.c: Fix warnings.
26521
26522 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
26523
26524         * icall.c: Add a new icall for Array.Clear
26525
26526 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
26527
26528         * object.c: When allocating an array, we have to throw
26529         an overflow exception if any of the lengths are < 0.
26530
26531 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26532
26533         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
26534         properly. Also move implementation of string array marshalling to 
26535         managed code. Fixes #42316.
26536
26537 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26538
26539         * assembly.c: provide more information when loading an assembly fails.
26540
26541 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26542
26543         * filewatcher.c: don't expect the development fam package to be
26544         installed.
26545
26546 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
26547
26548         * marshal.c: Make a copy of the signature cookie since it will be
26549         freed by the caller.
26550         
26551         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
26552
26553         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
26554
26555         * metadata.c (mono_metadata_free_marshal_spec): New function to free
26556         marshal specs.
26557
26558         * marshal.c: More refactoring.
26559         
26560         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
26561         smaller functions.
26562
26563 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
26564
26565         * object.c: In mono_message_invoke, fill the output parameter array after
26566           calling the managed method (it was done before the call). This fixes
26567           bug #59299.
26568
26569 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
26570
26571         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
26572         as well.
26573
26574 2004-09-02  Martin Baulig  <martin@ximian.com>
26575
26576         * class.c (mono_class_instance_size): Don't allow generic type
26577         definitions or open generic instances.
26578         (mono_class_array_element_size): If we're a value type, call
26579         mono_class_instance_size() on the original class.
26580
26581         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
26582         handle generic instances.
26583
26584         * mono-debug-debugger.c (write_type): Handle generic instances
26585         like classes.
26586
26587 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
26588
26589         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
26590         the allocation request fails. Fixes #65089.
26591
26592         * object.c (mono_runtime_free_method): Do not call mono_free_method.
26593         
26594         * object.c (mono_runtime_free_method): New function to free a dynamic
26595         method.
26596
26597         * marshal.c (mono_delegate_free_ftnptr): New function to free the
26598         delegate trampoline.
26599
26600         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
26601         with hasthis as dynamic,
26602
26603         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
26604
26605         * domain.c (mono_jit_info_table_remove): New function to remove an
26606         entry from the jit info table.
26607
26608         * class-internals.h (MonoMethod): Add 'dynamic' field.
26609
26610         * loader.c: Fix warnings.
26611
26612 2004-09-01  Martin Baulig  <martin@ximian.com>
26613
26614         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
26615         instead of mono_debugger_lock() because the latter one is a no-op
26616         unless running in the debugger.
26617
26618 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
26619
26620         * class.c (class_compute_field_layout): Classes with auto-layout or
26621         reference fields are not blittable.
26622         
26623 2004-09-01  Dick Porter  <dick@ximian.com>
26624
26625         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
26626         mono_image_get_filename() to get the assembly location.
26627
26628         * icall.c:
26629         * metadata.h: Fix compile warnings
26630
26631 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
26632
26633         * class.c (class_compute_field_layout): System.Object is blittable.
26634
26635         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
26636         as in/out. Fixes #59909.
26637
26638 2004-09-01  Martin Baulig  <martin@ximian.com>
26639
26640         * metadata.h (MONO_TYPE_ISREFERENCE): Call
26641         mono_metadata_generic_inst_is_valuetype() if we're a generic
26642         instance to check whether our underlying type is a reference type.
26643
26644 2004-09-01  Martin Baulig  <martin@ximian.com>
26645
26646         * metadata.c (mono_type_size): If we're a generic instance, call
26647         mono_class_value_size() for value types.
26648
26649 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
26650
26651         * marshal.c: Implement more custom marshalling functionality. Fixes
26652         #64915.
26653
26654 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
26655
26656         * mono-debug.c, debug-mono-symfile.c: add some locking love.
26657
26658 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
26659
26660         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
26661
26662         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
26663
26664         * icall.c: Fix some warnings.
26665
26666         * threads.c (abort_appdomain_thread): Fix unref errors.
26667         (mono_thread_current): Fix THREAD_DEBUG define.
26668
26669 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
26670
26671         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
26672
26673         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
26674
26675 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
26676
26677         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
26678         string arrays.
26679
26680 2004-08-28  Martin Baulig  <martin@ximian.com>
26681
26682         * metadata.c
26683         (mono_metadata_generic_inst_is_valuetype): New public function.
26684
26685         * metadata.h (MONO_TYPE_ISSTRUCT): Call
26686         mono_metadata_generic_inst_is_valuetype() if we're a generic
26687         instance to check whether our underlying type is a valuetype.
26688
26689 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
26690
26691         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
26692         #63768.
26693
26694 2004-08-25  Martin Baulig  <martin@ximian.com>
26695
26696         * loader.c (mono_get_method_from_token): Abstract methods can also
26697         be generic and thus have type parameters.
26698
26699         * metadata-internals.h
26700         (MonoDynamicImage): Added `GPtrArray *gen_params'.
26701
26702         * reflection.c (mono_image_get_generic_param_info): Don't create a
26703         metadata row, just add an entry to the `gen_params' array.
26704         (build_compressed_metadata): Sort the `gen_params' array and then
26705         actually create the metadata.
26706
26707 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26708
26709         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
26710
26711 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
26712
26713         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
26714
26715 2004-08-24  Martin Baulig  <martin@ximian.com>
26716
26717         * class.cs (mono_class_is_subclass_of): Like an interface, a
26718         generic instance also derives from System.Object.
26719
26720 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
26721
26722         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
26723         custom modifiers to be in any order. Fixes #61990.
26724
26725 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
26726
26727         * object.c: Register mono_object_new_fast icall.
26728         
26729         * object.c (mono_class_get_allocation_ftn): Return to calling
26730         mono_object_new_fast, since it seems faster to compute the object 
26731         size in unmanaged code than passing it as a parameter.
26732
26733         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
26734
26735         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
26736         this function with Boehm as the oom handler, so we don't have to check
26737         the result of GC_malloc.
26738
26739         * object.c: Remove checks for oom.
26740
26741         * object.h object.c (mono_class_get_allocation_ftn): New function to
26742         return the icall which can be used to allocate an instance of a given
26743         class. 
26744
26745         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
26746
26747         * class-internals.h: Add 'enabled' field.
26748
26749 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
26750
26751         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
26752
26753 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
26754         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
26755         value 0x0010.
26756
26757 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
26758
26759         * appdomain.c: use the Tls function for appdomain too,
26760         at Zoltan's request. Actually return in mono_context_get
26761
26762         * appdomain.c, profiler.c, threads.c: use __thread
26763
26764 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
26765
26766         * appdomain.c threads.c: Call GC_CreateThread on windows.
26767
26768         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
26769         multiple libraries since this don't work on windows.
26770
26771 2004-08-18  Martin Baulig  <martin@ximian.com>
26772
26773         * class-internals.h
26774         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
26775         MonoMethodHeader.
26776
26777         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
26778         MonoMethodNormal since we also need it for abstract and interface
26779         methods.
26780
26781         * reflection.c
26782         (build_compressed_metadata): Sort the GenericParam table.
26783         (mono_image_create_token): Added `gboolean create_methodspec'
26784         argument; this is false when generating a MethodImpl token.
26785         (reflection_methodbuilder_to_mono_method): Abstract and interface
26786         methods may also have generic parameters.
26787
26788 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
26789
26790         * appdomain.c: thread local alloc
26791
26792 2004-08-17  Martin Baulig  <martin@ximian.com>
26793
26794         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
26795
26796         * icall.c
26797         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
26798         argument.
26799
26800         * class.c (mono_type_get_full_name): New public function.
26801         (mono_type_get_name): Don't include the type arguments.
26802
26803 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
26804
26805         * Makefile.am: Build static versions of libmetadata and libmonoruntime
26806         for inclusion into the mono executable.
26807
26808 2004-08-16  Martin Baulig  <martin@ximian.com>
26809
26810         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
26811         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
26812
26813 2004-08-14  Martin Baulig  <martin@ximian.com>
26814
26815         * class.c (dup_type): Also copy the `byref' field.
26816
26817 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
26818
26819         * reflection.c (create_dynamic_mono_image): Revert the last change 
26820         since it breaks bootstrap.
26821
26822 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
26823
26824         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
26825
26826         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
26827         not free them with g_free.
26828
26829 2004-08-11  Martin Baulig  <martin@ximian.com>
26830
26831         * reflection.c (mono_reflection_setup_internal_class): Also call
26832         mono_class_setup_mono_type() if we already have a `tb->type.type'.
26833
26834 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
26835
26836         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
26837         called during default (first) AppDomain creation. Keep track of
26838         Evidence when loading assemblies.
26839
26840 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
26841
26842         * opcodes.c, opcodes.h: reduce runtime relocations.
26843
26844 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
26845
26846         * culture-info.h, locales.c: fixes and chages to sue the new
26847         optimized format of the locale data.
26848         * culture-info-tables.h: regenerated.
26849
26850 2004-08-06  Geoff Norton <gnorton@customerdna.com>
26851         
26852         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
26853
26854 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
26855
26856         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
26857         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
26858         * domain-internals.h: icall declaration.
26859         * icall.c: icall registration.
26860         * object-internals.h: New fields in MonoAssembly for CAS.
26861
26862 2004-08-05  Duncan Mak  <duncan@ximian.com>
26863
26864         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
26865         CEE_LDELEM_ANY.
26866
26867 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
26868
26869         * reflection.c: fix to deal with object[] arrays in custom ctors
26870         (bug #62550).
26871
26872 2004-08-05  Martin Baulig  <martin@ximian.com>
26873
26874         * class.c (mono_class_array_element_size): Added support for
26875         generic instances and correctly handle "recursive" types.
26876
26877 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
26878
26879         * assembly.c: Fix warnings.
26880
26881 2004-08-04  Martin Baulig  <martin@ximian.com>
26882
26883         * class.c
26884         (mono_type_get_name_recurse): Added `gboolean include_arity'
26885         argument specifying whether or not we should include the generic
26886         arity in the type name.
26887         (_mono_type_get_name): New static function.
26888         (mono_class_setup_vtable): If we're a generic instance, don't
26889         include the generic arity in the names of explicit method
26890         implementations.        
26891
26892 2004-08-03  Martin Baulig  <martin@ximian.com>
26893
26894         * class.c (mono_type_get_name_recurse): Enclose the generic type
26895         arguments in `<', '>'.
26896
26897 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
26898
26899         * gc.c: make GC warning messages use the trace API, they are just
26900         noise to most of the users.
26901
26902 2004-08-03  Martin Baulig  <martin@ximian.com>
26903
26904         * debug-mono-symfile.c (read_string): Correctly read the string.
26905
26906 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
26907
26908         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
26909         
26910         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
26911         icalls.
26912         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
26913
26914 2004-07-30  Martin Baulig  <martin@ximian.com>
26915
26916         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
26917         Reflect latest symbol writer changes.   
26918
26919 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
26920
26921         * object.c: always create an object if null is passed
26922         to Invoke() where a valuetype is expected.
26923
26924 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
26925
26926         * marshal.c (mono_marshal_init): make managed
26927         signatures match native ones better for 64bits.
26928
26929 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26930
26931         * appdomain.c: hack to build correctly the private bin path on windows.
26932         Fixes bug #61991.
26933
26934 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
26935
26936         * assembly.c: Load mscorlib from the correct framework directory
26937           (mono/<version>/mscorlib.dll).
26938         * appdomain.h: Added prototypes for new functions.
26939         * internals.h: Added some prototypes.
26940         * domain.c: When initializing the runtime, get from the executable and
26941           the configuration files the runtime version that the app supports.
26942           Added support methods for reading app.exe.config. Added list of versions
26943           supported by the JIT. Added two new methods: mono_init_from_assembly,
26944           which initializes the runtime and determines the required version from
26945           the provided exe file, and mono_init_version, which initializes
26946           the runtime using the provided version.
26947         * icall.c: Get machine.config from version-specific directory.
26948         * reflection.c: When generating an image, embed the version number
26949           of the current runtime.
26950
26951 2004-07-28  Dick Porter  <dick@ximian.com>
26952
26953         * socket-io.c
26954         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
26955         returned sockaddr size before creating the remote address object.
26956         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
26957         61608.
26958
26959 2004-07-28  Dick Porter  <dick@ximian.com>
26960
26961         * locales.c (string_invariant_compare_char): Fix invariant char
26962         compares between upper and lower cases.  Fixes bug 61458.
26963
26964 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
26965         
26966         * marshal.c: actually cache stelem.ref wrappers.
26967         
26968 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
26969
26970         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
26971         sections and remove the mono_cli_rva_map () function.
26972
26973 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
26974
26975         * debug-mono-symfile.c: fix one more endianess issue, from a patch
26976         by Geoff Norton (<gnorton@customerdna.com>).
26977
26978 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
26979
26980         * class.c: fix class loads for pointer types (typeof(int) !=
26981         typeof(int*)).
26982
26983 2004-07-27  Martin Baulig  <martin@ximian.com>
26984
26985         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
26986         reading the debugging information from an external ".mdb" file.
26987
26988 2004-07-24  Martin Baulig  <martin@ximian.com>
26989
26990         * reflection.c (mono_image_get_type_info): Only write a class
26991         layout entry if we actually have a size or a packing size.
26992
26993 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
26994
26995         * reflection.c (type_get_fully_qualified_name): 
26996         insert cast to get type checking of ?: with non-gcc compilers
26997
26998 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
26999
27000         * rand.c: use g_getenv for both lookups of
27001         MONO_EGD_SOCKET
27002
27003 2004-07-17  Martin Baulig  <martin@ximian.com>
27004
27005         * reflection.c (mono_reflection_bind_generic_method_parameters):
27006         Set `gmethod->reflection_info'.
27007
27008 2004-07-17  Martin Baulig  <martin@ximian.com>
27009
27010         * class.c (mono_class_create_from_typedef): Insert the newly
27011         created class into the hash table before computing the interfaces
27012         since we could be called recursively.
27013
27014 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
27015
27016         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
27017         function to implement stelem.ref in managed code
27018         * class-internals.h, debug-helpers.c: a new wrapper type
27019         for the above.
27020
27021 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
27022
27023         * gc.c: allow GC handles to work even when no GC is compiled in.
27024         Fix part of bug #61134 (GetAddrOfPinnedObject).
27025
27026 2004-07-13  Peter Williams  <peter@newton.cx>
27027  
27028         * process.c (complete_path): Make sure we don't attempt to execute
27029         directories.
27030  
27031 2004-07-12  Geoff Norton <gnorton@customerdna.com>
27032
27033         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
27034           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
27035           and will add/subtract the hour if needed
27036
27037 2004-07-12  Martin Baulig  <martin@ximian.com>
27038
27039         * reflection.c (mono_field_get_object): If we have
27040         `field->generic_info', take the attributes from
27041         `field->generic_info->generic_type'.    
27042
27043 2004-07-12  Martin Baulig  <martin@ximian.com>
27044
27045         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
27046         This function must be called before initializing the runtime.
27047         (mono_debug_init_1): New function; call this after initializing
27048         the runtime, but before loading the assembly.  It tells the
27049         debugger to load corlib and the builtin types.
27050
27051         * mono-debug-debugger.c: Did some larger changes in the debugging
27052         code; support recursive class declarations, make sure we actually
27053         add all classes.
27054
27055 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27056
27057         * debug-helpers.c: undo my previous patch and fixed the real issue in
27058         ../mini/exceptions-x86.c
27059
27060 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27061
27062         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
27063         when no HOME env. variable was set and a NullRef was thrown in a .cctor
27064         called from other .cctors.
27065
27066 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
27067
27068         * loader.c: Removed the mono_loader_wine_init hack now that we are
27069         doing a managed version of Windows.Forms.
27070
27071 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
27072
27073         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
27074         threadpool.c, threads.c: remove static data from rootset.
27075
27076 2004-07-09  Dick Porter  <dick@ximian.com>
27077
27078         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
27079         Don't do any more processing if the matched length was 0.  It was
27080         increasing the size of the string before.  Fixes bug 61167.
27081
27082 2004-07-09  Dick Porter  <dick@ximian.com>
27083
27084         * socket-io.h:
27085         * socket-io.c
27086         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
27087         Add support for SO_PEERCRED if its available.
27088
27089 2004-07-09  Peter Bartok <pbartok@novell.com>
27090         * loader.c: winelib.exe.so error message is now only displayed if
27091         MONO_DEBUG is set. To help us avoid questions when people are trying
27092         out the new Managed.Windows.Forms.
27093
27094 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
27095
27096         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
27097         for isinst and castclass wrappers.
27098
27099         * class-internals.h icall.c: Move registration and lookup of JIT icalls
27100         to libmetadata from the JIT, so they could be used by the marshalling
27101         code and the interpreter.
27102
27103         * marshal.c: Register marshalling related JIT icalls here instead of
27104         in mini.c. Use CEE_MONO_ICALL instead of the family of 
27105         CEE_MONO_PROC<x> opcodes to call marshalling functions.
27106
27107         * metadata.h: Remove unneeded marshalling conversions.
27108
27109         * opcodes.c: Update for new opcodes.
27110         
27111 2004-07-08  Martin Baulig  <martin@ximian.com>
27112
27113         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
27114         (mono_debug_get_domain_data): Make this function static.
27115
27116 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
27117
27118         * gc.c, object.h: add nice GC handle API for embedders.
27119
27120 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
27121
27122         * reflection.c: more changes for the new api
27123
27124         * object.c: When we reflect on a field w/ a constant value, it
27125         will not have a memory location, so we must access metadata. Also,
27126         allow easier reading of strings so that we can read them from
27127         the constant data.
27128
27129         * class.c (mono_class_layout_fields): no need for literal fields here.
27130
27131         * class-internals.h: api changes for const fields
27132
27133         * icall.c (ves_icall_get_enum_info): use new apis for const fields
27134
27135 2004-07-06  Martin Baulig  <martin@ximian.com>
27136
27137         * mono-debug.h: Increment version number to 44.
27138
27139         * mono-debug.c (mono_debug_add_wrapper): The second argument is
27140         now a gpointer, rewrote this whole method.
27141
27142         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
27143         function.  Add information about the wrapper in a new "misc table".
27144
27145         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
27146         for the new misc table.
27147
27148 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
27149
27150         * metadata-internals.h image.c: Add a cache for helper signatures.
27151
27152         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
27153
27154 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
27155
27156         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
27157         delegates from a delegate. Fixes #61033.
27158         
27159         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
27160         marshalling of stringbuilder arrays. Fixes #59900.
27161
27162 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
27163
27164         * icall.c: Add EnumBuilder:setup_enum_type icall.
27165
27166 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
27167
27168         * icall.c: Added a new icall for the property version of
27169         OffsetOfStringData.
27170
27171 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
27172
27173         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
27174         it has a constant size across platforms.
27175
27176         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
27177         stack trace.
27178
27179 2004-06-29  Martin Baulig  <martin@ximian.com>
27180
27181         * mono-debug.c (mono_debug_add_method): Protect the whole function
27182         in mono_debugger_lock(), not just parts of it.
27183
27184 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
27185
27186         * reflection.c: make sure padding bytes in heaps are zeroed.
27187
27188 2004-06-24  David Waite  <mass@akuma.org>
27189
27190         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
27191         image.c, loader.c, locales.c, marshal.c, metadata.c,
27192         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
27193         string-icalls.c, threads.c: change to C90-style comments from C99 /
27194         C++ -style
27195
27196 2004-06-24  Dick Porter  <dick@ximian.com>
27197
27198         * threads.c
27199         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
27200         return createdNew.  Fixes bug 60412.
27201
27202         * threads-types.h: 
27203         * icall.c: Add createdNew parameter to CreateMutex icall
27204
27205 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
27206
27207         * reflection.c, object-internals.h: save default value in params.
27208
27209 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27210
27211         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
27212         no need to build a new path combining that with the application base.
27213         Fixes bug #60442.
27214
27215 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
27216
27217         * reflection.c: fixed minor standard compliance issues.
27218
27219 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
27220
27221         * reflection.c: fixed issue with encoding some custom attributes
27222         (arrays in properties and fields, bug #60411).
27223
27224 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27225
27226         * reflection.c: fix start address when copying the public key token.
27227
27228 2004-06-23  Martin Baulig  <martin@ximian.com>
27229
27230         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
27231         the `exc' object in a static object to put it into the GC's root set.
27232
27233 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
27234
27235         * reflection.c: make mono_reflection_setup_internal_class ()
27236         callable a second time to setup a new parent class.
27237
27238 2004-06-23  Dick Porter  <dick@ximian.com>
27239
27240         * threads.c: Check for WAIT_IO_COMPLETION return values.
27241
27242 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
27243
27244         * appdomain.c: Removed the g_free on the public key token. Now copy 
27245         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
27246         * assembly.c: Added public key token string value when loading 
27247         assemblies. Fix bug #60439.
27248         * icall.c: Added missing informations (like public key) in 
27249         GetReferencedAssemblies. Fix #60519.
27250         * image.h: Changed definition for public key token from const char*
27251         public_tok_value to guchar public_key_token [17];
27252         * reflection.c: Updated for changes to public key token.
27253
27254 2004-06-22  Lluis Sanchez Gual
27255
27256         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
27257         for the field in base classes.
27258
27259 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
27260
27261         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
27262         mark headers as not supported, they are installed only for use by the
27263         debugger.
27264
27265 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
27266
27267         * *.c, *.h: avoid namespace pollution in public headers.
27268
27269 2004-06-21  Martin Baulig  <martin@ximian.com>
27270
27271         * exception.c (mono_get_exception_security): It's in
27272         "System.Security", not in "System".
27273
27274         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
27275         the exception classes.
27276
27277 2004-06-21  Martin Baulig  <martin@ximian.com>
27278
27279         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
27280         Protect the exception object from being finalized.
27281
27282 2004-06-21  Martin Baulig  <martin@ximian.com>
27283
27284         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
27285         public function.
27286
27287 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
27288
27289         * reflection.c: Load the assembly in mono_reflection_type_from_name,
27290         if it was not loaded before. Fix parts of #60439.
27291
27292 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
27293
27294         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
27295         code that was broken since Ben's change: wrappers are now
27296         dependent on the method signature only again.
27297
27298 2004-06-21  Martin Baulig  <martin@ximian.com>
27299
27300         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
27301         added interface support.
27302
27303 2004-06-21  Martin Baulig  <martin@ximian.com>
27304
27305         * class.c (mono_vtable_get_static_field_data): New public method.
27306
27307 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
27308
27309         * filewatcher.c : Windows build fix to be compliant with API changes.
27310
27311 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
27312
27313         * class.h, class.c: more accessors.
27314         * metadata.h, metadata.c: prepare for hiding MonoType and
27315         MonoMethodSignature: people should use the accessors from now on
27316         outside of the tree.
27317
27318 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
27319
27320         * *.c, *.h: more API cleanups.
27321
27322 2004-06-18  Jackson Harper  <jackson@ximian.com>
27323
27324         * assembly.c: Trace loading assemblies.
27325         * loader.c: Trace loading native libraries.
27326         * mono-config.c: Trace loading config files.
27327         
27328 2004-06-18  Dick Porter  <dick@ximian.com>
27329
27330         * locales.c: Tell ICU the lengths of strings, it can cope with
27331         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
27332
27333 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
27334
27335         * image.c: swapped name/filename;
27336
27337 2004-06-18  Martin Baulig  <martin@ximian.com>
27338
27339         * mono-debug-debugger.c (write_class): Write the parent class at
27340         the end of the header.
27341
27342 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
27343
27344         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
27345
27346 2004-06-17  Raja R Harinath  <rharinath@novell.com>
27347
27348         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
27349         (bundle_obj): New conditional define.
27350         (BUILT_SOURCES): Remove.
27351         ($(bundle_srcs)): Make parallel-make safe.
27352         (libmonoruntime_la_LIBADD): Make unconditional.
27353         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
27354         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
27355
27356 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
27357
27358         * culture-info-tables.h: It was inconsistent with the latest
27359           supp info files.
27360
27361 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
27362
27363         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
27364         be loaded.
27365
27366         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
27367         with gcc 2.95.
27368
27369 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
27370
27371         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
27372         cleaned up public header threads.h.
27373
27374 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
27375
27376         * Makefile.am, *.c, *.h: more API cleanups.
27377
27378 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
27379
27380         * Makefile.am: removed monosn from compilation.
27381         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
27382         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
27383         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
27384         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
27385         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
27386         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
27387
27388 2004-06-15  Jackson Harper  <jackson@ximian.com>
27389
27390         * assembly.c: Make locales lower case when searching the GAC for
27391         assemblies. gacutil will always make locales lowercase when
27392         installing so this effectively makes them case insensitive.
27393         
27394 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
27395
27396         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
27397         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
27398           parameter which allows to choose whether the wait can be interrupted or 
27399           not. Also added the method mono_monitor_enter(), which locks the monitor
27400           using an infinite wait and without allowing interruption.
27401           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
27402           interrupted.
27403         * object.h: Added new fields in MonoThread. suspend_event holds the event
27404           used to susped/resume the thread. synch_lock is the lock object to use for
27405           modifying the thread state.
27406         * threads.c: Use the new synch_lock object for locking, instead of "this",
27407           which can generate deadlocks.
27408           Moved thread state change in Thread.Sleep and Thread.Join from managed
27409           to unmanaged code. This avoids a deadlock when the thread was suspended
27410           just after acquiring the thread lock.
27411           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
27412           Implemented Thread.Suspend using an event instead of ThreadSuspend,
27413           which is not fully implemented in the io-layer.
27414         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
27415
27416 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
27417
27418         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
27419         threads-types.h: more API cleanups.
27420
27421 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
27422
27423         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
27424         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
27425         threadpool.c, threads.c: first pass at the exported API cleanup.
27426
27427 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
27428
27429         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
27430
27431 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27432
27433         * icall.c: added internalGetHome.
27434
27435 2004-06-14  Dick Porter  <dick@ximian.com>
27436
27437         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
27438         possible to return successfully when '.' or '..' were the only
27439         entries in a directory, but were skipped.  The MonoIOStat was not
27440         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
27441         Fixes bug 59574.
27442
27443 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
27444
27445         * reflection.c: make binaries run on .Net 1.1 by default.
27446
27447 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
27448
27449         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
27450
27451 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
27452
27453         * marshal.c: keep track of struct size with explicit layout
27454         (bug #59979).
27455
27456 2004-06-12  Martin Baulig  <martin@ximian.com>
27457
27458         * mono-debug-debugger.c: Comment out a debugging g_message().
27459
27460 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
27461
27462         * reflection.c, reflection.h: do not free custom attrs that are cached.
27463         * icall.c: use braces to make code clearer.
27464
27465 2004-06-11  Martin Baulig  <martin@ximian.com>
27466
27467         * class.h (MonoInflatedField): New type.
27468         (MonoClassField): Replaced `MonoType *generic_type' with
27469         `MonoInflatedField *generic_info'.
27470
27471         * icall.c
27472         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
27473
27474 2004-06-11  Martin Baulig  <martin@ximian.com>
27475
27476         * reflection.c (mono_image_create_method_token): Correctly encode
27477         varargs methods.
27478
27479 2004-06-11  Martin Baulig  <martin@ximian.com>
27480
27481         * metadata.c (mono_metadata_parse_method_signature): When parsing
27482         a MethodDef which has VarArgs, also set sentinelpos if we don't
27483         have any parameters.
27484
27485 2004-06-11  Martin Baulig  <martin@ximian.com>
27486
27487         * verify.c (mono_method_verify): In CEE_CALL, use
27488         mono_method_get_signature() to get the method's signature, unless
27489         we're a PInvoke method.
27490
27491 2004-06-10  Jackson Harper  <jackson@ximian.com>
27492
27493         * assembly.c: Use <path>/lib/mono/gac for the extra paths
27494         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
27495         logical name as the supplied path is just a prefix to the gac not
27496         the direct path to it.
27497         
27498 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
27499
27500         * reflection.c: make the token for a created method match
27501         the token of the MethodBuilder it was created from
27502         (IKVM requires this behaviour now).
27503
27504 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
27505
27506         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
27507         reflection.c, socket-io.c: leak fixes.
27508
27509 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
27510
27511         * icall.c: handle sentinel pos in vararg methods in position different
27512         from 0.
27513
27514 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27515
27516         * culture-info-tables.h: freshly generated.
27517
27518 2004-06-09  Martin Baulig  <martin@ximian.com>
27519
27520         * loader.c (mono_get_method_constrained): Call `mono_class_init
27521         (constrained_class)'.   
27522
27523 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
27524
27525         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
27526         any methods. Fixes #59629.
27527
27528 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27529
27530         * culture-info-tables.h: reflecting locale-builder updates.
27531
27532 2004-06-08  Dick Porter  <dick@ximian.com>
27533
27534         * object.h:
27535         * locales.c: Fixed compile warnings, including a real bug in
27536         CompareInfo_internal_compare.
27537         
27538 2004-06-08  Dick Porter  <dick@ximian.com>
27539
27540         * locales.c
27541         (ves_icall_System_Globalization_CompareInfo_internal_index):
27542         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
27543         Double-check the resuls of usearches, because ICU currently
27544         ignores most of the collator settings here.  Fixes bug 59720.
27545         
27546 2004-06-08  Dick Porter  <dick@ximian.com>
27547
27548         * locales.c
27549         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
27550         Fix memory leak and segfault-causing typo.  No idea how this one
27551         lasted so long without being noticed.
27552
27553 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
27554
27555         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
27556         any methods. Fixes #59629.
27557
27558 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27559
27560         * assembly.c:
27561         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
27562         own the critical section before). Removed dead code (that's done
27563         in the preload hook).
27564
27565         (mono_assembly_load_with_partial_name): call the preload hook.
27566
27567 2004-06-08  Martin Baulig  <martin@ximian.com>
27568
27569         * metadata.c (mono_metadata_signature_alloc): Default
27570         `sentinelpos' to -1.
27571
27572         * reflection.c (mono_image_get_array_token): Likewise.
27573
27574 2004-06-08  Martin Baulig  <martin@ximian.com>
27575
27576         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
27577
27578         * metadata.c (mono_metadata_parse_method_signature): When parsing
27579         a MethodDef which has VarArgs, set sentinelpos.
27580
27581         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
27582         `gint16' since we're using -1 for non-varargs methods.
27583
27584         * reflection.c
27585         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
27586         (method_encode_signature): Added varargs support.
27587         (method_builder_encode_signature): Likewise.
27588         (mono_image_get_varargs_method_token): New static method.
27589         (mono_image_create_method_token): New public method; this is
27590         called via an icall instead of mono_image_create_token() when
27591         calling a varargs method.       
27592
27593 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
27594
27595         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
27596
27597 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27598
27599         * culture-info-tables.h : Reflecting the latest locale-builder that
27600           fixed empty array representation ({} to {0}).
27601
27602 2004-06-07  Jackson Harper  <jackson@ximian.com>
27603
27604         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
27605         looking up extra gac paths. This allows MONO_GAC_PATH to act
27606         exactly like a prefix.
27607         
27608 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
27609
27610         * reflection.c (mono_reflection_type_from_name): Make a copy of the
27611         type name before modifying it. Fixes #59405.
27612
27613 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27614
27615         * culture-info.h: added fields for "all datetime patterns".
27616         * locales.c: (  ves_icall_System_Globalization_CultureInfo
27617           _construct_datetime_format ()): fill xxx_patterns fields.
27618         * object.h: added fields for "all datetime patterns" to
27619           MonoDateTimeFormatInfo.
27620         * culture-info-tables.h: reflecting locale-builder updates.
27621
27622 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
27623
27624         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
27625         the event has no add and remove methods. Fixes #59629.
27626
27627 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
27628
27629         * object.c: Fixed possible integer overflow when allocating large
27630         strings.
27631
27632 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
27633
27634         * culture-info-tables.h: reflecting locale-builder updates.
27635
27636 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
27637
27638         * culture-info-tables.h: reflecting locale-builder updates.
27639
27640 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
27641
27642         * culture-info-tables.h: reflecting locale-builder updates.
27643
27644 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
27645
27646         * threads.c: Made Thread.Sleep abortable.
27647
27648 2004-06-02  Martin Baulig  <martin@ximian.com>
27649
27650         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
27651
27652         * debug-mono-symfile.h: Bumped symbol file version number to 37.
27653
27654 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
27655
27656         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
27657
27658 2004-05-30  Jackson Harper  <jackson@ximian.com>
27659
27660         * reflection.c: Do not hardcode assembly versions or public key
27661         tokens anymore. All of this except the corlib section was dead
27662         code anyways.
27663         
27664 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
27665
27666         * object.c (mono_runtime_invoke_array): Automatically create boxed
27667         objects for byref valuetypes if needed. Fixes #59300.
27668         
27669         * object.c (mono_method_return_message_restore): Handle 
27670         MONO_TYPE_OBJECT as well.
27671
27672 2004-05-28  Jackson Harper  <jackson@ximian.com>
27673
27674         * reflection.c: The modified type encoding was causing build
27675         problems. Reverted for now.
27676         
27677 2004-05-28  Jackson Harper  <jackson@ximian.com>
27678
27679         * reflection.c/h: Take an assembly ref so that we dont create
27680         fully qualified names when encoding types in the same assembly as
27681         the custom attribute being emitted.
27682         * appdomain.c: Increment version number.
27683         
27684 2004-05-26  Duncan Mak  <duncan@ximian.com>
27685
27686         * icall.c
27687         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
27688         Set the full version number (major, minor, build, revision).
27689
27690 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
27691
27692         * marshal.c (emit_struct_conv): increment src/dst after blit
27693         (mono_marshal_get_managed_wrapper,
27694         mono_marshal_get_native_wrapper): make sure we have marshalling
27695         info before marshalling params (info computation affects
27696         blittable)
27697
27698         * class.c (class_compute_field_layout): correctly deal with
27699         blittable
27700         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
27701         value types (as per what windows dows by default)
27702         (mono_class_setup_mono_type): System.ValueType is blittable
27703         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
27704         blittable
27705
27706         * marshal.c (mono_marshal_load_type_info): flag types  as
27707         non-blittable if the native layout doesn't match the managed
27708         layout
27709
27710 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27711
27712         * appdomain.c: don't add stuff in the private search path that is
27713         above the application base. If application base is not set, there's
27714         no private search path.
27715
27716 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
27717
27718         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
27719         byref struct arguments in native->managed marshalling.
27720
27721 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
27722
27723         * marshal.c (mono_marshal_get_runtime_invoke): correctly
27724         cache methods using signature (special case for methods
27725         that are value type or string class)
27726         
27727         * image.c (mono_image_close): clean up allocated GSList's
27728         in runtime_invoke_cache.
27729
27730 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27731
27732         * mono-config.c: set the correct path for mono_cfg_dir on windows when
27733         there's no MONO_CFG_DIR environment variable defined.
27734
27735 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27736
27737         * threads.c: windows version must be >= 0x0500 to include OpenThread.
27738
27739 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
27740
27741         * threadpool.c: Really wait for 500ms after the async call, even if the wait
27742           is interrumped.
27743         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
27744           before waiting for it, and call CloseHandle after the wait to unref it.
27745           This will make sure that handles are not disposed too early.
27746
27747 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27748
27749         * appdomain.c:
27750         * appdomain.h:
27751         * icall.c: removed
27752         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
27753         needed now.
27754
27755         * object.c: se the application_base only for the domain that runs
27756         Main. Fixes bug #59216,
27757
27758 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27759
27760         * appdomain.c:
27761         * object.c: only the domain in which Main is run have
27762         SetupInformation.ConfigurationFile set, so moved a few lines from
27763         appdomain.c to object.c.
27764
27765 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27766
27767         * appdomain.c: we tried to load [name].(dll|exe), but according
27768         to bug #57710, we must also try [culture]/[name].(dll|exe) and
27769         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
27770         There's a test case attached to bug #58922.
27771
27772 2004-05-27  Dick Porter  <dick@ximian.com>
27773
27774         * icall.c:
27775         * file-io.c: Implemented icalls for locking and unlocking regions
27776         in a file.
27777         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
27778         FALSE on error (fixes both compiler warning and real bug.)
27779
27780 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
27781
27782         * culture-info-tables.h: reflecting locale-builder updates.
27783
27784           (Added missing ChangeLog entry for 05/26)
27785
27786 2004-05-27  Jackson Harper  <jackson@ximian.com>
27787
27788         * locales.c: Fix some cut and paste errors.
27789         
27790 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27791
27792         * mono-config.c: set the correct path for config. directory on windows.
27793
27794 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
27795
27796         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
27797           on win32.
27798
27799 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
27800
27801         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
27802         from pinvoke functions.
27803         
27804         * marshal.c (mono_ftnptr_to_delegate): Implement this.
27805
27806 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
27807
27808         * culture-info-tables.h: reflecting locale-builder updates.
27809
27810 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
27811
27812         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
27813         #59086.
27814
27815 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
27816
27817         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
27818         * icall.c: Modified icalls for RNG.
27819         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
27820         Windows (CryptoAPI).
27821
27822 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
27823
27824         * locales.c: Fix build.
27825
27826 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
27827
27828         * culture-info-tables.h: reflecting locale-builder updates.
27829
27830 2004-05-25  Jackson Harper  <jackson@ximian.com>
27831
27832         * locales.c: When creating the current culture use the $LANGs
27833         specific culture. So DateTimeFormat and NumberFormat entries are created.
27834         
27835 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
27836
27837         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
27838         a char array as parameter.
27839
27840 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
27841
27842         * image.c: In mono_image_open(), always use an absolute path name to
27843           look for already loaded images.
27844
27845 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
27846
27847         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
27848         missing in the windows build (like older cygwin include files).
27849
27850 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
27851
27852         * icall.c: Fixed check for possible integer overflow in Buffer_
27853         BlockCopy icall. Replaced comments style // by /* */.
27854
27855 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
27856
27857         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
27858         
27859         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
27860         check after MONO_VTADDR. Fixes pinvoke2.exe.
27861
27862         * marshal.h marshal.c metadata.h: Add beginnings of support for
27863         ftnptr -> delegate marshalling.
27864
27865 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
27866
27867         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
27868         * threads.c: Fix warnings.
27869
27870 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
27871
27872         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
27873         * icall.c: Registered icalls for Suspend and Resume.
27874         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
27875           Thread.Abort.
27876         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
27877         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
27878         * process.c: Use WaitForSingleObjectEx.
27879         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
27880           checkpoints.
27881         * threads.c, threads.h: Make use of new Ex wait methods. Improved
27882           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
27883           for Suspend and Resume. Added new mono_thread_stop, used for stoping
27884           background threads. Added basic support for Abort in Windows.
27885           Start new threads using a managed delegate invoke wrapper. This wrapper
27886           has an interruption checkpoint that is needed since an interruption
27887           can be requested before the thread leaves the unmanaged code that starts 
27888           the thread.
27889         * marshal.c: Added interruption checkpoint after every native call, and
27890           also before managed calls for wrappers called from unmanaged code to
27891           go into managed code.
27892         * object.h: Added new field in MonoThread to keep track of interruption
27893           requests.
27894
27895 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
27896
27897         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
27898         calls.
27899
27900 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27901
27902         * appdomain.c:
27903         * assembly.c:
27904         * gc.c:
27905         * locales.c:
27906         * mono-config.c:
27907         * rand.c: getenv -> g_getenv (windows!)
27908
27909         * process.c: complete_path is also used on non-windows platforms.
27910
27911 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27912
27913         * icall.c: new signature for Process_Start.
27914
27915         * process.[ch]: new signature for Process_Start. If we're on windows
27916         and UseShellExecute is false, we have to search for the program by
27917         ourselves if we don't get a full path.
27918
27919 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
27920
27921         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
27922         marshalling and call CleanUpNativeData if needed. Fixes #58646.
27923
27924 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27925
27926         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
27927         Fixes bug #58373.
27928
27929 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27930
27931         * process.c: use double quotes to quote program name and arguments on
27932         windows. Fixes bug #58575.
27933
27934 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27935
27936         * file-io.c: don't return "." and ".." when using windows Find*File.
27937
27938 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
27939
27940         * marshal.c: Don't pass wrappers to message init because method 
27941         addressed used to lookup metadata. part of remoting[2|3] fix.
27942
27943 2004-05-15  Jackson Harper  <jackson@ximian.com>
27944
27945         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
27946         path is essentially the same as MONO_PATH except that it points to
27947         GACs instead of lib directories.
27948         * loader.h: The user gac is gone so we dont need function to
27949         enable/disable it.
27950         * mono-config.c: user gac option is now gone.
27951         
27952 2004-05-15  Jackson Harper  <jackson@ximian.com>
27953
27954         * culture-info.h: Make defines more consistent, add calendar data
27955         to the culture info table.
27956         * culture-info-tables.h: Add basic calendar data. Basically
27957         everyone gets default gregorian until all the data is
27958         updated.
27959         * locales.c: Use the new consistent defines. Set calendar data for
27960         culture info objects.
27961         * object.h: add a field for calendar data to CultureInfo
27962         
27963 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
27964
27965         * image.c: image->runtime_invoke_cache is keyed on signatures now.
27966         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
27967         a signature.
27968         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
27969         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
27970         an extra param that is the pointer of the method to invoke. The IL for
27971         the invoke method is no longer specific to the method, but to the
27972         signature of the method. Thus, we can share the same code for multiple
27973         methods. This reduces the number of methods that have to be compiled.
27974
27975 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
27976
27977         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
27978
27979         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
27980
27981         * icall.c: Optimize Buffer.BlockCopy.
27982
27983 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27984
27985         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
27986         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
27987         quote). Changed them to "MMMM yyyy".
27988
27989 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
27990
27991         * rand.c
27992         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
27993
27994 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
27995
27996         * reflection.h: Updated after changes to managed structures.
27997
27998         * appdomain.c: Bump corlib version.
27999
28000 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28001
28002         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
28003         windows.
28004
28005 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28006
28007         * Makefile.am: link to ../os/libmonoos.la on windows.
28008
28009         * assembly.c:
28010                 -If MONO_DEBUG, warn about non-existing directories in
28011                 MONO_PATH.
28012                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
28013                 compile time variable.
28014                 -Removed init_default_path and call mono_set_rootdir from
28015                 libmonoos.a instead (windows only).
28016
28017         * assembly.h: declare mono_assembly_getrootdir().
28018
28019         * domain.c:
28020         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
28021
28022         * loader.c: s/getenv/g_getenv/
28023
28024 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
28025
28026         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
28027
28028         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
28029
28030         * metadata.h: Add new marshalling conversions.
28031
28032         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
28033         function.
28034
28035         * reflection.c (mono_reflection_get_type): Lookup the type in all
28036         modules of a multi-module assembly. Fixes #58291.
28037
28038 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
28039
28040         * threads.c: Before aborting a background, set the StopRequested
28041         state.  This avoids throwing the Abort exception.
28042         In mono_thread_manage, don't continue with the shutdown until all
28043         aborted threads have actually stopped.
28044
28045 2004-05-10  Jackson Harper  <jackson@ximian.com>
28046
28047         * locales.c: Remove the modifier from culture names.
28048         
28049 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28050
28051         * Makefile.am: monosn is not installed any more. It has been deprecated
28052         in favor of sn.
28053
28054 2004-05-07  Jackson Harper  <jackson@ximian.com>
28055
28056         * locales.c
28057         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
28058         Fix array construction, add bailout if the length is 0.
28059
28060 2004-05-07  Dick Porter  <dick@ximian.com>
28061
28062         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
28063         machine doesn't have a DNS entry.  Patch by Urs Muff
28064         (umuff@quark.com), fixes bug 57928.
28065
28066 2004-05-06  Jackson Harper  <jackson@ximian.com>
28067
28068         * reflection.c: Handle null PublicTokens properly. alloc mem for
28069         assembly names culture so we dont crash when freeing it.
28070         
28071 2004-05-06  Jackson Harper  <jackson@ximian.com>
28072
28073         * assembly.c: Check the usergac when loading with partial names.
28074         
28075 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
28076
28077         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
28078         does nothing for now (not required for Linux/Windows) but the class
28079         library can call it (and a newer or modified runtime could need it).
28080         * icall.c: Registred icall.
28081
28082 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28083
28084         * loader.c: prints a message on module loading error we set MONO_DEBUG
28085         environment variable.
28086
28087 2004-05-05  Jackson Harper  <jackson@ximian.com>
28088
28089         * appdomain.c: Handle PublicKeyToken=null properly.
28090         
28091 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
28092
28093         * environment.c|h: Added icall ves_icall_System_Environment_
28094         GetOSVersionString to get the current OS version as a string.
28095         * icall.c: Registred icall.
28096
28097 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
28098
28099         * object.c: in mono_object_get_virtual_method(), take into account that
28100         non-virtual methods don't have a slot in the vtable. Check needed when
28101         the object is a proxy.
28102
28103 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
28104
28105         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
28106         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
28107
28108         * object.c (mono_class_compute_gc_descriptor): Fix warning.
28109
28110         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
28111         passed when a valuetype is expected.
28112
28113         * object.c (mono_unhandled_exception): Only set the exit code if the
28114         exception happens in the main thread. Fixes thread5.exe.
28115
28116         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
28117         invalid names. Fixes #58047.
28118
28119 2004-05-03  Jackson Harper  <jackson@ximian.com>
28120
28121         * assembly.c: This line was committed accidently and is unneeded.
28122         
28123 2004-05-03  Jackson Harper  <jackson@ximian.com>
28124
28125         * icall.c: Add new icall for Assembly::LoadWithPartialName
28126         * assembly.c/.h: new function that probes the GAC to load partial
28127         assembly names by Paolo Molaro.
28128         
28129 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28130
28131         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
28132         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
28133         (type_get_fully_qualified_name): Added PublicKeyToken when building a
28134         full type name.
28135
28136 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28137
28138         * appdomain.c: fixed check for 'neutral' culture and removed warning.
28139         * reflection.c: fix bug when parsing a full type name and Version is not
28140         the last thing in the string.
28141
28142 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
28143
28144         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
28145         crashes when it is freed.
28146
28147 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28148
28149         * assembly.c: print the compat warning to stderr.
28150
28151 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
28152
28153         * assembly.c (mono_assembly_load_references): Add a compatibility
28154         hack to run old applications that might be still referencing the
28155         3300-based assemblies, only do this for System.xxx.
28156
28157 2004-05-01  Jackson Harper  <jackson@ximian.com>
28158
28159         * appdomain.c: If the culture is neutral we set it to "".
28160         
28161 2004-04-29  Jackson Harper  <jackson@ximian.com>
28162
28163         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
28164
28165 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
28166  
28167         * string-icalls.c: added low overhead function for copying chars
28168         * icall.c: added needed icall for the above function
28169  
28170 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28171
28172         * icall.c: fix return value of get_global_assembly_cache.  Implemented
28173         Environment.GetLogicalDrives.
28174
28175 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
28176
28177         * rand.c: try and talk to egd or prngd
28178         for random bytes if opening devices fail.
28179
28180 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
28181
28182         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
28183         alignment for the type using the native alignment of its members 
28184         instead of using klass->min_align.
28185
28186         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
28187
28188 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28189
28190         * file-io.c:
28191         * socket-io.c: added check for sys/aio.h.
28192
28193 2004-04-28  Dick Porter  <dick@ximian.com>
28194
28195         * threads.c: Don't abort a thread thats already aborting, when
28196         terminating everything.
28197
28198 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28199
28200         * icall.c: added 2 new async calls for Socket.
28201
28202         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
28203         IO on *nix systems.
28204
28205         * threadpool.c: removed unused variable.
28206
28207 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
28208
28209         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
28210
28211 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
28212
28213         * locales.c: put back string_invariant_tolower () and
28214         string_invariant_toupper ().
28215
28216 2004-04-26 David Waite <mass@akuma.org>
28217
28218         * file-io.h:
28219         * socket-io.h:
28220         * threads.h:
28221         * unicode.h: remove comma from end of enumeration declarations
28222
28223 2004-04-26 David Waite <mass@akuma.org>
28224
28225         * debug-mono-symfile.h:
28226         * decimal.c:
28227         * mono_debug.h:
28228         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
28229
28230
28231 2004-04-26  Jackson Harper  <jackson@ximian.com>
28232
28233         * appdomain.c: Increment version number.
28234         
28235 2004-04-26  Jackson Harper  <jackson@ximian.com>
28236
28237         * appdomain.c: Set assembly references public token value when
28238         PublicKeyToken is specified, not the hash_value. Free public token
28239         values when free assembly name data. Previously the public key
28240         token was hex decoded, however we are using hex encoded public key
28241         tokens, so this is not neccasary.
28242         * assembly.c: Lookup assemblies in the gac if their public token
28243         value is set. Add function to allow enabling user gac
28244         lookups. Specify whether or not the assembly was loaded from the
28245         GAC. Compare full assembly names when checking the cache for
28246         assemblies (Temporarily disabled see comment in code). Remove
28247         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
28248         specifies trace-loader they get extra info to stdout on the
28249         loading of assemblies.
28250         * image.h: Add a field for an assembly references public token
28251         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
28252         whether an assembly has been loaded from the GAC.
28253         * image.c: Remove a corlib -> mscorlib name mapping.
28254         * loader.h: Add function to enable/disable the user gac.
28255         * mono-config.c: Check if the usergac is enabled in the config
28256         file.
28257         * icall.c: New icall to determine whether or not an assembly has
28258         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
28259         * tabldefs.h: Add constant for assemblyref flag that specifies a
28260         full public key is used instead of a public token.
28261         * reflection.c: Remove mscorlib -> corlib mappings. Set
28262         PublicTokenValue instead of hash value. This value is a hex
28263         string so it does not need to be expanded.
28264
28265 2004-04-26  Martin Baulig  <martin@ximian.com>
28266
28267         * mono-debug-debugger.c (mono_debugger_initialize): Set
28268         `mono_debugger_initialized' before calling mono_debug_lock().
28269
28270 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
28271
28272         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
28273           InternalToUpper/InternalToLower.
28274         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
28275           removed invariant culture shortcut.  This is now done in managed code.
28276         * locales.c: (string_invariant_toupper/tolower) removed.
28277
28278 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28279
28280         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
28281         Added Poll internal call.
28282
28283         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
28284         call for Poll. Select was too heavy for polling a single socket.
28285
28286         * threadpool.[ch]: added mono_threadpool_cleanup.
28287         * threads.c: use it. Don't use Thread_Abort on windows.
28288
28289 2004-04-23  Martin Baulig  <martin@ximian.com>
28290
28291         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
28292
28293 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
28294
28295         * icall.c: Registred new icalls for key pair protection and added an
28296         icall for Environment.GetFolderPath on Windows.
28297         * security.c|h: Added new icalls for key pair protection.
28298
28299 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28300
28301         * socket-io.c: don't display the non-supported family warning for known
28302         families. Now this is not displayed on windows when checking support
28303         for IPv4/IPv6.
28304
28305 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28306
28307         * class.c: don't display the layout warning for static fields.
28308
28309 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
28310
28311         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
28312         * locales.c, locales.h: Added new icalls for culture-specific
28313         Char.ToLower and Char.ToUpper.
28314
28315 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28316
28317         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
28318         by David Waite.
28319
28320 2004-04-20  Martin Baulig  <martin@ximian.com>
28321
28322         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
28323         of the type name before passing it to mono_reflection_type_from_name().
28324
28325 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
28326
28327         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
28328         encodings here. Fixes #56965.
28329
28330 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
28331
28332         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
28333         fix test on strstr result not that I can see anything that
28334         relies on the result.
28335
28336 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
28337
28338         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
28339         Fixes #57081.
28340
28341         * marshal.c (mono_marshal_get_string_encoding): New helper function.
28342
28343         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
28344         function to determine which marshalling to use for strings. Fixes
28345         #56965.
28346
28347         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
28348
28349         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
28350
28351 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
28352
28353         * icall.c: #include mono-config.h
28354
28355 2004-04-15  Jackson Harper  <jackson@ximian.com>
28356
28357         * culture-info-tables.h: Fix date formats for en-US culture.
28358         
28359 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
28360
28361         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
28362         ThreadPool.SetMinThreads.
28363         * threadpool.c: Implemented ThreadPool.GetMinThreads and
28364         ThreadPool.SetMinThreads.
28365
28366 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
28367
28368         * mono-config.c: also load the .config file in the directory
28369         where the assembly was found.
28370
28371 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
28372
28373         * assembly.c: load per-assembly config files.
28374         * icall.c: decrapified code to get the config dir and moved to
28375         mono-config.c.
28376         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
28377         per-assembly config files. When doing a dll map lookup give precedence
28378         to the per-assembly data.
28379
28380 2004-04-14  Martin Baulig  <martin@ximian.com>
28381
28382         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
28383         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
28384         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
28385
28386         * mono-debugger-debugger.c: While the debugger is locked, remember
28387         whether the symbol tables have changes and send one single
28388         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
28389
28390 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
28391
28392         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
28393
28394         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
28395         function.
28396
28397         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
28398         account when marshalling string arrays. Fixes #56965.
28399
28400 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
28401
28402         * icall.c: Add new icalls mapping for security.
28403         * security.c|h: Add internal calls for WindowsIdentity,
28404         WindowsImpersonationContext and WindowsPrincipal.
28405
28406 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
28407
28408         * class.c: Added comment to ensure the System.MonoDummy class
28409         is removed when no longer necessary
28410
28411 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
28412
28413         * appdomain.c: Pass arguments to the bootstraping exceptions to
28414         minimize JITed methods at boot
28415
28416         * metadata.c (mono_exception_from_name_two_strings): Allow for the
28417         second string to be null.
28418
28419         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
28420         Change the protocol to minimize the JIT methods at startup.  Now
28421         it Returns the internal codepage, if the value of "int_code_page"
28422         is 1 at entry, and we can not compute a suitable code page
28423         number, returns the code page as a string.
28424
28425 2004-04-13  Jackson Harper  <jackson@ximian.com>
28426
28427         * culture-info-tables.h: Fix number of decimal digits for all
28428         english locales.
28429
28430 2004-04-13  Jackson Harper  <jackson@ximian.com>
28431
28432         * icall.c: Clairfy out of sync error message. It is not always
28433         your corlib that is out of sync.
28434
28435 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
28436
28437         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
28438         properties when only the set accessor is overriden. Fixes #55874.
28439
28440 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
28441
28442         * assembly.c (mono_assembly_load_references): Make this thread safe.
28443         Fixes #56327.
28444
28445 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
28446
28447         * monosn.c: Add missing initialization calls.
28448
28449 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
28450
28451         * locales.c:
28452         ves_icall_System_Globalization_CultureInfo_construct_number_format
28453         Fix g_assert so it compiles on fussier compilers re int/ptr
28454         mismatch
28455
28456 2004-04-08  Dick Porter  <dick@ximian.com>
28457
28458         * socket-io.h:
28459         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
28460         53992.  Also rearrange the code so that the internal calls return
28461         an error value and exceptions are thrown from managed code.
28462
28463         * icall.c: Add type info to the socket icalls.
28464
28465 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28466
28467         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
28468         owes me a beer.
28469
28470 2004-04-07  Martin Baulig  <martin@ximian.com>
28471
28472         * class.c (mono_class_from_generic_parameter): Don't default
28473         `klass->parent' to `mono_defaults.object_type'.
28474
28475 2004-04-07  Martin Baulig  <martin@ximian.com>
28476
28477         * reflection.c (mono_reflection_initialize_generic_parameter): Set
28478         `param->pklass->reflection_info'.       
28479
28480 2004-04-07  Jackson Harper  <jackson@ximian.com>
28481
28482         * culture-info-tables.h: Fix date separator symbol.
28483         
28484 2004-04-07  Martin Baulig  <martin@ximian.com>
28485
28486         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
28487         from System.Type to System.MonoType.
28488
28489 2004-04-07  Martin Baulig  <martin@ximian.com>
28490
28491         * reflection.h
28492         (MonoReflectionGenericParam): Added `has_reference_type' and
28493         `has_value_type' fields.
28494
28495         * reflection.c (mono_image_get_generic_param_info): Encode the
28496         correct flags if we have the `class' or `struct' constraint.
28497
28498 2004-04-07  Martin Baulig  <martin@ximian.com>
28499
28500         * reflection.h
28501         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
28502
28503 2004-04-07  Jackson Harper  <jackson@ximian.com>
28504
28505         * appdomain.c: Revert extra patches, just wanted to bump the
28506         version number.
28507         
28508 2004-04-07  Jackson Harper  <jackson@ximian.com>
28509
28510         * Makefile.am: Add culture-info private headers.
28511         * icall.c: Add new icalls for contructing locales.
28512         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
28513         * locales.h: Declare new culture info construction methods.
28514         * object.h: Add new fields used to avoid the CultureMap to
28515         MonoCultureInfo.
28516         * culture-info.h: Definition of structs used in the culture info
28517         tables.
28518         * culture-info-tables.h: Autogenerated tables that contain culture
28519         info data. This file was generated with the locale-builder tool.
28520         * appdomain.c: Incement corlib version number.
28521         
28522 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
28523
28524         * appdomain.c: (mono_runtime_init) move mono_thread_init
28525         to before mono_object_new calls so critical sections
28526         are initialized before use.
28527
28528 2004-04-07  Martin Baulig  <martin@ximian.com>
28529
28530         * icall.c
28531         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
28532         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
28533         (ves_icall_MonoGenericParam_initialize): Removed.
28534         (monogenericparam_icalls): Removed.
28535         (generictypeparambuilder_icalls): Added new table for
28536         System.Reflection.Emit.GenericTypeParameterBuilder.
28537
28538         * reflection.c
28539         (mono_reflection_define_generic_parameter): Removed.
28540         (mono_reflection_initialize_generic_parameter): This is now called
28541         from GenericTypeParameterBuilder's .ctor.
28542
28543 2004-04-06  Martin Baulig  <martin@ximian.com>
28544
28545         * class.c (mono_class_init): Don't inflate nested classes in a
28546         generic instance.
28547         (mono_type_get_name_recurse): Include the generic arguments for
28548         generic instances and generic type declarations.
28549         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
28550         (_mono_class_get_instantiation_name): Removed.
28551         (mono_class_create_generic): Always use `gklass->name' as our name.
28552
28553         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
28554
28555         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
28556         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
28557         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
28558         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
28559         closed generic methods here.
28560
28561         * reflection.c
28562         (mono_reflection_generic_inst_get_nested_types): Removed.
28563         (inflate_mono_method): Copy the generic parameters from the
28564         MonoMethodHeader into out MonoGenericMethod.
28565
28566 2004-04-06  Martin Baulig  <martin@ximian.com>
28567
28568         * row-indexes.h
28569         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
28570
28571         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
28572
28573         * reflection.c (build_compressed_metadata): If we have any entries
28574         in the GenericParam, MethodSpec or GenericParamConstraint tables,
28575         set the header version to 1.1.
28576
28577 2004-04-06  Martin Baulig  <martin@ximian.com>
28578
28579         * class.c (mono_class_init): If we're a generic instance,
28580         initialize our nested classes, too.
28581         (_mono_class_get_instantiation_name): Deal with the new `!%d'
28582         suffix. 
28583
28584 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28585
28586         * process.c: quote the argument passed to the shell on windows.
28587
28588 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
28589
28590         * threads.c (mono_alloc_special_static_data): Allow this to be
28591         called during startup.
28592
28593 2004-04-02  Martin Baulig  <martin@ximian.com>
28594
28595         * icall.c
28596         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
28597
28598 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
28599
28600         * icall.c: Fix build.
28601
28602 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
28603
28604         * Makefile.am: Added security.c|h.
28605         * icall.c: Added icall for get_UserName;
28606         * security.c: New file for security related icalls. Added function
28607         get_UserName for System.Environment (fix #56144).
28608         * security.h: New. Header file for security.c
28609
28610 2004-04-02  Dick Porter  <dick@ximian.com>
28611
28612         * icall.c: Deleted the icalls that were obsoleted some time ago
28613         by the ICU string code, and which were mixed into the icall
28614         rearranging.  Fixes bug 55969.
28615
28616         * string-icalls.h: 
28617         * string-icalls.c: Deleted the code that those icalls reference.
28618
28619 2004-04-01  Martin Baulig  <martin@ximian.com>
28620
28621         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
28622
28623         * class.c (mono_class_from_generic_parameter): Don't set 
28624         TYPE_ATTRIBUTE_INTERFACE.
28625         (my_mono_class_from_generic_parameter): Likewise.
28626
28627 2004-04-01  Martin Baulig  <martin@ximian.com>
28628
28629         * loader.c (find_method): Added an optional `MonoClass *ic'
28630         argument to search in a specific interface.
28631         (mono_get_method_constrained): New public function.
28632
28633 2004-04-01  Martin Baulig  <martin@ximian.com>
28634
28635         * reflection.c (mono_image_get_generic_field_token): Use the
28636         `handleref' cache here.
28637
28638 2004-04-01  Martin Baulig  <martin@ximian.com>
28639
28640         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
28641
28642         * reflection.c (create_generic_typespec): Use the `typespec' hash
28643         here, not the `typeref' one.    
28644
28645 2004-04-01  Martin Baulig  <martin@ximian.com>
28646
28647         * class.c (mono_class_inflate_generic_type): Moved the
28648         functionality into a new static inflate_generic_type() which
28649         returns NULL if it didn't do anything.  Only increment the
28650         `mono_stats.inflated_type_count' if we actually inflated
28651         something.
28652         (mono_class_get_full): Check the classes type to see whether we
28653         need to inflate it; also inflate MONO_TYPE_(M)VAR.
28654
28655 2004-04-01  Jackson Harper  <jackson@ximian.com>
28656
28657         * reflection.c: Set culture for assembly references.
28658         
28659 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
28660
28661         * reflection.[ch], icall.[ch], Fix support for pinning variables.
28662
28663 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28664
28665         * assembly.c:
28666         (do_mono_assembly_open): the critical section also covers
28667         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
28668
28669 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28670
28671         * threads.c:
28672         (mono_manage_threads): abort the background threads when finishing.
28673         Fixes bug #47232.
28674
28675 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28676
28677         * gc.c: only close the done_event handle if there was no timeout.
28678         C-ified comments.
28679
28680 2004-03-30  Martin Baulig  <martin@ximian.com>
28681
28682         * icall.c (icall_entries): It's called "System.Activator", not
28683         "System.Activation".    
28684
28685 2004-03-30  Martin Baulig  <martin@ximian.com>
28686
28687         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
28688         (mono_class_create_from_typespec): Likewise.
28689
28690 2004-03-30  Martin Baulig  <martin@ximian.com>
28691
28692         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
28693         `has_ctor_constraint' and `initialized'.
28694
28695 2004-03-30  Martin Baulig  <martin@ximian.com>
28696
28697         * reflection.c (encode_new_constraint): New static function to add
28698         the constructor constraint attribute to a type parameter.
28699         (encode_constraints): Call encode_new_constraint() if necessary.
28700
28701         * reflection.h
28702         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
28703
28704         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
28705         
28706 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
28707
28708         * reflection.c, icall.c: add support for pinning variables. 
28709
28710 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
28711
28712         * marshal.c (mono_marshal_get_managed_wrapper):
28713         init bool local with zero rather than null.
28714
28715 2004-03-29  Martin Baulig  <martin@ximian.com>
28716
28717         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
28718         the "official" behavior here.
28719         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
28720
28721 2004-03-29  Martin Baulig  <martin@ximian.com>
28722
28723         * icall.c: Reflect latest API changes.
28724
28725 2004-03-29  Martin Baulig  <martin@ximian.com>
28726
28727         * loader.c (mono_get_method_from_token): Also call
28728         mono_metadata_load_generic_params () for abstract and interface
28729         methods; replace the type arguments in the method signature with
28730         the ones which are loaded from the metadata.
28731
28732 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
28733
28734         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
28735         of the lock is not the current thread. MS.NET don't do it, in spite of
28736         what the documentation says. See bug #56157.
28737
28738 2004-03-28  Martin Baulig  <martin@ximian.com>
28739
28740         * class.c (mono_class_init): Don't call init_properties() and
28741         init_events() for generic instances; set `prop->parent' when
28742         inflating properties.
28743
28744         * reflection.c (mono_generic_inst_get_object): Call
28745         `mono_class_init (ginst->klass)'.
28746         (mono_type_get_object): Only create a MonoGenericInst if your
28747         generic type is a TypeBuilder.
28748         (do_mono_reflection_bind_generic_parameters): Only set
28749         `ginst->is_dynamic' if our generic type is a TypeBuilder.
28750
28751 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
28752
28753         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
28754         Fixes #56091.
28755
28756 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28757
28758         * icall.c: added Kill_internal icall.
28759         * process.[ch]: added Kill_internal icall.
28760
28761 2004-03-25  Martin Baulig  <martin@ximian.com>
28762
28763         * class.h (MonoStats): Added `generic_instance_count',
28764         `inflated_method_count', `inflated_type_count' and
28765         `generics_metadata_size'.       
28766
28767 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28768
28769         * reflection.c: no warnings now.
28770
28771 2004-03-25  Martin Baulig  <martin@ximian.com>
28772
28773         * class.c (mono_class_get_full): New public function; does a
28774         mono_class_get(), but also takes a `MonoGenericContext *'.
28775
28776         * loader.c (mono_field_from_memberref): Renamed to
28777         `field_from_memberref', made static and added `MonoGenericContext *'
28778         argument.
28779         (mono_field_from_token): Added `MonoGenericInst *' argument.
28780         (method_from_memberef): Likewise.
28781         (mono_get_method_from_token): Likewise.
28782         (mono_get_method_full): New public function; does a
28783         mono_get_method(), but also takes a `MonoGenericContext *'.
28784
28785         * verify.c (mono_method_verify): Get the method's generic context
28786         and pass it to mono_field_from_token(), mono_get_method_full() and
28787         mono_class_get_full().
28788
28789 2004-03-25  Martin Baulig  <martin@ximian.com>
28790
28791         * class.c (mono_class_inflate_generic_type): Take a
28792         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
28793         `MonoGenericMethod *'.
28794
28795 2004-03-25  Martin Baulig  <martin@ximian.com>
28796
28797         * loader.h (MonoMethodInflated): Store the MonoGenericContext
28798         instead of the MonoGenericMethod here.
28799
28800 2004-03-25  Martin Baulig  <martin@ximian.com>
28801
28802         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
28803         each time we create a new MonoGenericInst, we also create a new
28804         context which points back to us.
28805
28806         * class.c (inflate_method): Use `ginst->context' instead of
28807         creating a new context.
28808
28809         * loader.c (method_from_memberref): Use
28810         `klass->generic_inst->context' instead of creating a new context.
28811
28812 2004-03-25  Martin Baulig  <martin@ximian.com>
28813
28814         * class.h (MonoGenericContext): New struct.
28815         (MonoGenericMethod): Removed `generic_inst'.
28816
28817         * class.c (mono_class_inflate_generic_method): Take a
28818         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
28819
28820 2004-03-25  Martin Baulig  <martin@ximian.com>
28821
28822         * loader.h (MonoMethodInflated): New typedef.
28823
28824         * metadata.h (MonoMethodSignature): Removed `gen_method', make
28825         `generic_param_count' consume just 30 bits, added `is_inflated'
28826         and `has_type_parameters' flags (one bit each).
28827
28828         * class.c (mono_class_inflate_generic_method): Create a
28829         MonoMethodInflated instead of a MonoMethodNormal and set
28830         `is_inflated' in the method signature.
28831
28832         * class.h (MonoGenericMethod): Removed `generic_method'.
28833
28834 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
28835
28836         * image.c: Make sure the name of a MonoImage is always an absolute path.
28837           This fixes bug #54415.
28838
28839 2004-03-24  Martin Baulig  <martin@ximian.com>
28840
28841         * class.c (mono_class_setup_vtable): If we're a generic instance,
28842         use our generic type's vtable size.
28843
28844 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
28845
28846         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
28847         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
28848         problems.
28849
28850 2004-03-23  Martin Baulig  <martin@ximian.com>
28851
28852         * class.h (MonoDynamicGenericInst): Added `int count_events' and
28853         `MonoEvent *events'.
28854
28855         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
28856         (typebuilder_icalls): Added "get_event_info"; calls
28857         mono_reflection_event_builder_get_event_info(). 
28858
28859         * reflection.c (mono_reflection_generic_inst_initialize): Added
28860         `MonoArray *events'.
28861         (mono_reflection_event_builder_get_event_info): New function.
28862
28863 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
28864
28865         * object.h: add mono_type_initialization_init
28866
28867         * object.c (mono_runtime_class_init): 
28868         implement class constructor synchronization rules
28869         to cope with threading issues.  
28870         add mono_type_initialization_init
28871
28872         * appdomain.c (mono_runtime_init): call 
28873         mono_type_initialization_init
28874
28875         * class.h: removing initializing field from MonoVTable
28876
28877 2004-03-23  Martin Baulig  <martin@ximian.com>
28878
28879         * class.c (my_mono_class_from_generic_parameter): Use
28880         `param->name' if it's not NULL. 
28881
28882 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
28883
28884         * class.c: do not insert non-virtual methods in the vtable.
28885         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
28886         that means the method is non-virtual. This never would have
28887         happened before.
28888
28889 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
28890
28891         * profiler.c: Added lock for accessing coverage_hash.
28892
28893 2004-03-22  Martin Baulig  <martin@ximian.com>
28894
28895         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
28896         `method->method->signature->generic_param_count != 0' to make it
28897         work for interface methods.
28898
28899 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28900
28901         * process.c: quote the string passed to the shell using g_shell_quote.
28902
28903 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28904
28905         * threads.c:
28906         (mono_threads_manage): don't remove the finalizer thread and self
28907         from the threads hash table so that mono_thread_manage can be called
28908         more than once.
28909
28910 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28911
28912         * process.c: quote the arguments when UseShellExecute is true. Fixes
28913         bug #55790.
28914
28915 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28916
28917         * threads.c: set mono_thread_detach as a cleanup routine for every
28918         thread. This way it's always executed upon thread termination, either
28919         aborted or finished normally. No more xsp hangs!
28920
28921 2004-03-17  Martin Baulig  <martin@ximian.com>
28922
28923         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
28924         `int count_nested' and a `MonoType **nested'.
28925
28926         * reflection.c (mono_reflection_bind_generic_parameters): Moved
28927         most of the functionality into a new static
28928         do_mono_reflection_bind_generic_parameters() and don't take a
28929         `MonoType *nested_in' argument any more.  Don't compute nested
28930         types here.
28931         (mono_reflection_generic_inst_get_nested_types): New public method
28932         to get nested types.
28933
28934         * class.c (mono_class_create_generic): Set `klass->nested_in' if
28935         we're a nested class.
28936
28937         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
28938         mono_reflection_generic_inst_get_nested_types() to compute the
28939         nested types.
28940
28941 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
28942
28943         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
28944         descriptive error message under windows.
28945         
28946 2004-03-17  Martin Baulig  <martin@ximian.com>
28947
28948         * class.c (dup_type): Added `const MonoType *original' argument;
28949         copy the attrs from the original type.
28950
28951 2004-03-17  Martin Baulig  <martin@ximian.com>
28952
28953         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
28954         `m->generic_inst_cache' here.
28955
28956 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
28957
28958         * exception.h exception.c: Add stack_overflow_exception.
28959
28960 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28961
28962         * threadpool.c:
28963         (overlapped_callback): call SetEvent *after* invoking the callback.
28964         No need to call CloseHandle.
28965
28966 2004-03-16  Martin Baulig  <martin@ximian.com>
28967
28968         * reflection.c (mono_image_get_fieldref_token): Take a
28969         `MonoReflectionField *' instead of a `MonoClassField *' and a
28970         `MonoClass *'; store the `MonoReflectionField *' in the hash.
28971
28972 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28973
28974         * appdomain.c: don't add the culture to the filename we're looking for
28975         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
28976
28977 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28978
28979         * locales.c: don't ignore symbols when doing case insensitive compares.
28980         Thanks Dick! Fixes bug #54046.
28981
28982         * threads.c: surround 'threads' usage with enter/leave in
28983         mono_thread_manage.
28984
28985 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
28986
28987         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
28988         implicitly marshalled as [Out]. Fixes #55450.
28989
28990         (mono_marshal_get_runtime_invoke): Zero out the result if there is
28991         an exception.
28992
28993 2004-03-16  Martin Baulig  <martin@ximian.com>
28994
28995         * class.c (mono_class_from_generic_parameter): Use the actual
28996         parameter name. 
28997
28998 2004-03-16  Martin Baulig  <martin@ximian.com>
28999
29000         * reflection.c (type_get_signature_size): New static function.
29001         Compues the size of the type in a method signature.
29002         (method_get_signature_size): New static function; calls
29003         type_get_signature_size() to compute the actual size of the
29004         method's signature.
29005         (method_encode_signature): Use method_get_signature_size() to get
29006         the signature's size rather than using `nparams * 10'.
29007
29008 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29009
29010         * file-io.h: define here WapiOverlapped on windows. I don't want the
29011         regular OVERLAPPED one.
29012
29013         * file-io.c:
29014         * threadpool.c: somehow, BindIoCompletionCallback is not found.
29015         Disabling AIO on windows.
29016
29017 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29018
29019         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
29020         bug #55385.
29021
29022 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29023
29024         * appdomain.c: upgraded corlib version.
29025
29026         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
29027         and BeginWrite. Allow opening files for asynchrnous operations.
29028
29029         * file-io.h: new struct that maps FileStreamAsyncResult.
29030         * icall.c: added new icalls.
29031         * process.[ch]: support setting child process environment variables
29032         and use the SHELL or COMSPEC when UseShellExecute is true.
29033
29034         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
29035         callback for async. IO is here and also BindHandle.
29036
29037         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
29038         from here.
29039
29040 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
29041
29042         * reflection.c (create_custom_attr): Allow len == 0.
29043
29044         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
29045         computation on big-endian machines.
29046
29047 2004-03-13  Martin Baulig  <martin@ximian.com>
29048
29049         * class.h (MonoGenericInst): Added `int count_ifaces'.
29050
29051         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
29052         `ginst->count_ifaces' instead `klass->interface_count' since we
29053         may get called before the vtable is created.
29054
29055         * loader.c (mono_method_get_param_names): If we're a generic
29056         instance, return and don't initialize the class.
29057
29058         * reflection.c (mono_reflection_setup_generic_class): Don't call
29059         ensure_runtime_vtable().
29060         (mono_reflection_bind_generic_parameters): Set
29061         `ginst->count_ifaces'.
29062
29063 2004-03-11  Jackson Harper <jackson@ximian.com>
29064
29065         * icall.c:
29066         * unicode.c:
29067         * unicode.h: Remove unused System.Char icalls.
29068         
29069 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
29070
29071         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
29072         code when we P/Invoke the first library in Windows.Forms, instead
29073         of when we first open the assembly.
29074
29075         * assembly.c: Drop the lookup from here.
29076
29077 2004-03-10  Martin Baulig  <martin@ximian.com>
29078
29079         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
29080         class for properties, fields and events.  Finally fixes #54945.
29081
29082 2004-03-10  Martin Baulig  <martin@ximian.com>
29083
29084         * metadata.c (mono_metadata_class_equal): New static function;
29085         checks whether two generic instances or two generic parameters are
29086         equal.
29087         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
29088         compare classes.        
29089
29090 2004-03-10  Martin Baulig  <martin@ximian.com>
29091
29092         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
29093
29094         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
29095         argument and write it into the `reflection_info' field.
29096
29097         * icall.c
29098         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
29099         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
29100
29101 2004-03-09  Jackson Harper  <jackson@ximian.com>
29102
29103         * char-conversions.h: use 8 bits for numeric data its all we need
29104         * icall.c: numeric data is only 8 bits now.
29105
29106 2004-03-09  Martin Baulig  <martin@ximian.com>
29107
29108         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
29109
29110         * class.c (init_properties, init_events): Initialize the new
29111         `parent' field.
29112
29113         * reflection.c (typebuilder_setup_properties): Likewise.
29114         (typebuilder_setup_events): Likewise.
29115
29116         * reflection.h (MonoEventInfo): Replaced `parent with
29117         `declaring_type' and `reflected_type'.
29118
29119         * icall.c (ves_icall_get_property_info): Distinguish between
29120         declaring and reflected type.
29121         (ves_icall_get_event_info): Likewise.
29122
29123 2004-03-09  Martin Baulig  <martin@ximian.com>
29124
29125         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
29126         (ves_icall_Type_GetField): Correctly set field->klass.
29127
29128 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
29129
29130         * loader.h: Fix warning.
29131
29132 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
29133
29134         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
29135         library routine if present.  Notice that it will still continue
29136         executing even if its missing, for those working on the Gtk#
29137         edition of Windows.Forms.
29138
29139         * assembly.c (do_mono_assembly_open): If loading the
29140         System.Windows.Forms call mono_loader_wini_init.
29141
29142 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
29143
29144         * class.h: Added MonoRemoteClass struct.
29145         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
29146         function for MonoStrings.
29147         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
29148         Added internal call for getting the proxy type.
29149         * marshal.c: Get the type of transparent proxies from its remote_class.
29150         Added methods that generate the IL for type checks and casts:
29151         mono_marshal_get_isinst, mono_marshal_get_castclass, 
29152         mono_marshal_get_proxy_cancast.
29153         * marshal.h: Declaration of the previous new methods.
29154         * object.c: Added new moethods for creating and updating MonoRemoteClass
29155         instances: mono_remote_class, mono_upgrade_remote_class, 
29156         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
29157         * verify.c: FIx transparent_proxy_fields layout.
29158         * appdomain.c: Bump corlib version.
29159
29160 2004-03-04  Jackson Harper  <jackson@ximian.com>
29161
29162         * icall.c: Add icall to access char conversion tables.
29163         * char-conversions.h: Character conversion tables.
29164         * Makefile.am: Add char-conversions.h private header file.
29165         
29166 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
29167
29168         * appdomain.c (unload_thread_main): Increase unloading timeout to
29169         10 sec as a temporary workaround for Nant problems.
29170
29171 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
29172
29173         * gc.c: Add checks for GC_enable and GC_disable.
29174
29175         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
29176         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
29177         (bug #54988).
29178         
29179 2004-02-27  Martin Baulig  <martin@ximian.com>
29180
29181         * reflection.c (mono_reflection_bind_generic_parameters): Take a
29182         `MonoReflectionType *' instead of a `MonoType *'.
29183
29184 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
29185
29186         * gc.c (run_finalize): Avoid finalizing the object representing the
29187         finalizer thread.
29188         (finalizer_thread): Fix warning.
29189
29190 2004-02-25  Martin Baulig  <martin@ximian.com>
29191
29192         * class.c (_mono_class_get_instantiation_name): Added `int offset'
29193         argument for nested types.
29194         (mono_class_create_generic): Added support for nested generictypes.
29195
29196         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
29197         `GList *nested'.
29198
29199         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
29200
29201         * reflection.c (method_encode_signature): Increase the minimum
29202         value of `size' from 10 to 11.
29203         (mono_reflection_bind_generic_parameters): Take `int type_argc'
29204         and `MonoType **types' arguments instead of the `MonoArray
29205         *types'; added `MonoType *nested_in'.  Recursively instantiate
29206         nested classes. 
29207
29208 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
29209
29210         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
29211         stack_overflow_ex members which are used by exception handling.
29212
29213         * appdomain.c (mono_runtime_init): Initialize the new members.
29214
29215         * gc.c (mono_gc_enable): New helper function.
29216         * gc.c (mono_gc_disable): New helper function.
29217
29218 2004-02-23  Martin Baulig  <martin@ximian.com>
29219
29220         * icall.c: I must have been really stupid - make it actually work
29221         this time ;-)
29222
29223 2004-02-23  Martin Baulig  <martin@ximian.com>
29224
29225         * loader.c (method_from_memberref): Only inflate the method if
29226         it's in another klass.
29227
29228 2004-02-23  Martin Baulig  <martin@ximian.com>
29229
29230         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
29231         (mono_class_init): If we're a generic instance and an interface,
29232         compute `class->interface_id'; also create `class->interfaces'
29233         here and inflate them.
29234
29235         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
29236         `ginst->is_open'.
29237         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
29238
29239         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
29240
29241 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
29242
29243         * reflection.c (method_encode_code): Improved the error message
29244         generated by the exception.
29245
29246 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29247
29248         * icall.c: Martin did not do what he said in the ChangeLog for
29249         2004-02-18, but put back the changes for properties and events.
29250         Commenting those changes out again and adding comment to bug #54518.
29251         
29252         * process.c: removed warning.
29253
29254 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
29255
29256         * marshal.c (emit_struct_conv): Print an error message instead of
29257         asserting when a type does not have the StructLayout attribute.
29258
29259 2004-02-20  Martin Baulig  <martin@ximian.com>
29260
29261         * reflection.c (mono_type_get_object): Also use the cache for
29262         generic instances.
29263         (mono_reflection_bind_generic_parameters): Always compute
29264         `ginst->ifaces'.        
29265
29266 2004-02-20  Martin Baulig  <martin@ximian.com>
29267
29268         * class.h (MonoGenericMethod): Removed `klass'.
29269
29270         * class.c (mono_class_inflate_generic_method): Added `MonoClass
29271         *klass' argument.
29272
29273 2004-02-20  Martin Baulig  <martin@ximian.com>
29274
29275         * reflection.c (method_encode_methodspec): Actually use the
29276         uninflated signature for the memberref.
29277
29278 2004-02-20  Martin Baulig  <martin@ximian.com>
29279
29280         * class.h (MonoGenericMethod): Removed `declaring'.
29281
29282         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
29283         is NULL, compute it here.
29284
29285 2004-02-20  Martin Baulig  <martin@ximian.com>
29286
29287         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
29288
29289         * metadata.c (mono_metadata_generic_inst_hash): New method.
29290         (mono_metadata_generic_inst_equal): New method.
29291
29292         * reflection.c (mono_reflection_bind_generic_parameters): Use the
29293         `klass->image->generic_inst_cache' cache to avoid creating
29294         duplicate MonoGenericInst's.
29295
29296         * class.c (mono_class_inflate_generic_type): Use the cache.
29297
29298 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
29299
29300         * object.c: fixed gc descriptor calculation for embedded valuetypes.
29301
29302 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29303
29304         * icall.c: added Socket.WSAIoctl icall.
29305
29306         * socket-io.[ch]: implemented
29307         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
29308
29309 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
29310
29311         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
29312
29313 2004-02-18  Urs C Muff  <umuff@quark.com>
29314
29315         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
29316         this work on PPC and other big-endian architectures.
29317
29318         * debug-mono-symfile.h: Prepended the names of all the `guint32'
29319         fields with an underscore to make sure they're only accessed by
29320         the read32() macro.
29321
29322 2004-02-18  Martin Baulig  <martin@ximian.com>
29323
29324         * icall.c: Put the klass->refclass changes back for methods and
29325         fields, but not for properties and events.  We're currently not
29326         distinguishing between DeclaringType and ReflectedType for
29327         properties and events, that's what caused the regressions.
29328
29329 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29330
29331         * object.c:
29332         (mono_async_result_new): the handle can be NULL.
29333
29334         * threadpool.c: Use an event instead of a semaphore, don't initialize
29335         it until needed. This saves quite a few semaphores from being created
29336         when using the threadpool.
29337
29338 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
29339
29340         * object.c (mono_string_is_interned_lookup): Fix interning of long
29341         strings. Fixes #54473.
29342
29343         * domain.c (ldstr_equal): Optimize if the two strings are equal.
29344
29345         * icall.c: Revert the klass->refclass changes since they introduce
29346         regressions (bug #54518).
29347
29348 2004-02-18  Martin Baulig  <martin@ximian.com>
29349
29350         * class.c (mono_class_init): If we're a generic instance and don't
29351         come from a TypeBuilder, inflate our members here.
29352         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
29353         (mono_class_create_generic): New public method.
29354         (mono_class_initialize_generic): Removed.
29355         (get_instantiation_name): Renamed to
29356         _mono_class_get_instantiation_name() and made it public.
29357
29358 2004-02-18  Martin Baulig  <martin@ximian.com>
29359
29360         * class.c (mono_class_inflate_generic_type): Clear the new
29361         instance's `nginst->klass' when inflating a generic instance.
29362         (mono_class_is_subclass_of): Added (basic) support for generic
29363         instances.
29364
29365 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
29366
29367         * appdomain.h, domain.c: use a MonoCodeManager instead of a
29368         MonoMempool to hold compiled native code.
29369
29370 2004-02-17  Martin Baulig  <martin@ximian.com>
29371
29372         * class.h (MonoDynamicGenericInst): Added `count_properties' and
29373         `properties'.
29374
29375         * reflection.c (mono_reflection_generic_inst_initialize): Added
29376         `MonoArray *properties' argument.
29377
29378         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
29379
29380 2004-02-17  Martin Baulig  <martin@ximian.com>
29381
29382         * icall.c (ves_icall_Type_GetFields): Renamed to
29383         ves_icall_Type_GetFields_internal() and added a
29384         `MonoReflectionType *rtype' argument; pass it to
29385         mono_field_get_object() to set the field's "reflected" type.
29386         (ves_icall_Type_GetConstructors): Likewise.
29387         (ves_icall_Type_GetEvents): Likewise.
29388         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
29389         argument; pass it to mono_method_get_object() to set the method's
29390         "reflected" type.       
29391
29392 2004-02-17  Martin Baulig  <martin@ximian.com>
29393
29394         * class.h (MonoDynamicGenericInst): New type.
29395         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
29396
29397         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
29398         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
29399         (ves_icall_MonoGenericInst_GetFields): New interncall.
29400
29401         * class.c (mono_class_from_generic): Don't call
29402         mono_class_initialize_generic() if this is a dynamic instance;
29403         ie. it's being created from a TypeBuilder.
29404         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
29405         `class->byval_arg.type'.
29406
29407         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
29408         to `inflate_method' and made static.
29409         (mono_reflection_inflate_field): Removed.
29410         (mono_reflection_generic_inst_initialize): New public method.
29411
29412         * reflection.h (MonoReflectionGenericInst): Removed `methods',
29413         `ctors' and `fields'; added `initialized'.
29414
29415 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
29416
29417         * debug-helpers.c (mono_method_full_name): Fix output for empty
29418         namespaces.
29419
29420 2004-02-12  Martin Baulig  <martin@ximian.com>
29421
29422         * class.h (MonoClassField): Added `MonoType *generic_type'.
29423
29424         * reflection.c (mono_image_get_fieldref_token): Added support for
29425         instantiated generic types.
29426         (field_encode_inflated_field): Removed.
29427         (mono_image_get_inflated_field_token): Removed.
29428         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
29429
29430         * reflection.h (MonoReflectionInflatedField): Removed.
29431
29432 2004-02-12  Martin Baulig  <martin@ximian.com>
29433
29434         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
29435         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
29436
29437         * reflection.c (mono_image_get_methodspec_token): Take a
29438         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
29439         (mono_image_create_token): Check whether we have a
29440         `method->signature->gen_method' and call
29441         mono_image_get_methodspec_token() if appropriate.
29442         (inflated_method_get_object): Removed.
29443         (mono_reflection_bind_generic_method_parameters): Return a
29444         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
29445         (mono_reflection_inflate_method_or_ctor): Likewise.
29446
29447         * reflection.h (MonoReflectionInflatedMethod): Removed.
29448
29449 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
29450
29451         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
29452         for custom valuetype marshalling.
29453
29454         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
29455
29456 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29457
29458         * icall.c: fixed WSAGetLastError_internal name.
29459
29460 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
29461
29462         * threads.c (mono_thread_attach): Allow this to be called multiple
29463         times for a thread.
29464         
29465         * threads.c (build_wait_tids): Do not wait for ourselves.
29466
29467         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
29468         appdomain list is empty.
29469
29470         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
29471         memory returned by mono_string_builder_to_utf16, since it points into
29472         managed memory. Thanks to Bernie Solomon for noticing this.
29473
29474         * icall.c: Add AppDomainSetup icalls.
29475
29476         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
29477
29478         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
29479         types.
29480
29481         * reflection.c (reflection_methodbuilder_to_mono_method): Save
29482         custom attributes to the method_aux struct. Also fix array indexes etc.
29483
29484         * loader.c (mono_method_get_param_names): Make dynamic case work again.
29485         
29486 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
29487
29488         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
29489         (both static and runtime) and reduce startup time.
29490
29491 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
29492
29493         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
29494         AsAny marshalling conversion instead of crashing.
29495
29496         * marshal.c: Fix warnings.
29497
29498 2004-02-09  Martin Baulig  <martin@ximian.com>
29499
29500         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
29501
29502         * reflection.h (MonoReflectionInflatedMethod): Removed the
29503         `declaring' field, it's now in the unmanaged MonoGenericMethod.
29504
29505         * reflection.c (method_encode_methodspec): Removed the `method'
29506         argument; we get it from `gmethod->declaring'.
29507         (inflated_method_get_object): Removed the `declaring' argument.
29508
29509 2004-02-09  Martin Baulig  <martin@ximian.com>
29510
29511         * class.h (MonoGenericMethod): New type.
29512         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
29513         `generic_method'.
29514
29515         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
29516         a `MonoGenericMethod *gen_method' one.
29517
29518         * class.c (mono_class_inflate_generic_type): Take an additional
29519         `MonoGenericMethod * argument.  This is only non-NULL if we're
29520         inflating types for a generic method.   
29521         (mono_class_inflate_generic_signature): Renamed to
29522         inflate_generic_signature() and made static; take a
29523         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
29524         (inflate_generic_header): Take a `MonoGenericMethod *' argument
29525         instead of a `MonoGenericInst *' one.
29526         (mono_class_inflate_generic_method): Likewise.
29527
29528         * reflection.c (encode_generic_method_sig): Take a
29529         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
29530         (method_encode_methodspec): Likewise.
29531         (inflated_method_get_object): Likewise. 
29532
29533         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
29534         field with a `MonoGenericMethod *gmethod' one.  
29535
29536 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
29537
29538         * class.h (mono_class_has_parent): add parens to expansion
29539         so you can ! this.
29540
29541 2004-02-08  Martin Baulig  <martin@ximian.com>
29542
29543         * image.h (MonoImage): Removed `generics_cache'.
29544
29545         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
29546         instead of a `MonoType *' argument; removed the `inflate_methods'
29547         argument.  Don't inflate methods here.
29548
29549         * loader.c (find_method): If it's a generic instance, call
29550         mono_class_init() on the `sclass->generic_inst->generic_type'.
29551
29552         * metadata.c (mono_type_size): Make this work on uninitialized
29553         generic instances; call it on the `ginst->generic_type's class.
29554
29555         * reflection.c (mono_reflection_bind_generic_parameters): Call
29556         mono_class_from_generic() to create the `ginst->klass'.
29557
29558 2004-02-08  Martin Baulig  <martin@ximian.com>
29559
29560         * class.h (MonoClass): Changed type of `generic_inst' from
29561         `MonoType *' to `MonoGenericInst *'.
29562
29563 2004-02-08  Martin Baulig  <martin@ximian.com>
29564
29565         * icall.c (ves_icall_Type_BindGenericParameters): Just call
29566         mono_type_get_object(), this is now creating a `MonoGenericInst'
29567         for MONO_TYPE_GENERICINST.
29568         (ves_icall_MonoGenericInst_GetParentType): Likewise.
29569         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
29570
29571         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
29572         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
29573         (inflated_method_get_object): Added `MonoClass *refclass' argument.
29574         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
29575         and reflected type.
29576
29577         * reflection.h (MonoReflectionInflatedMethod): Removed
29578         `declaring_type' and `reflected_type'.
29579
29580 2004-02-08  Martin Baulig  <martin@ximian.com>
29581
29582         * class.h (MonoGenericInst): Added `MonoType *parent' and
29583         `MonoType **ifaces'.
29584
29585         * reflection.h (MonoReflectionGenericInst): Removed `klass',
29586         `parent' and `interfaces'.
29587
29588         * reflection.c (mono_reflection_bind_generic_parameters): Take a
29589         `MonoType *' argument and return a `MonoType *'.
29590
29591         * icall.c
29592         (ves_icall_MonoGenericInst_GetParentType): New interncall.
29593         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
29594
29595 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
29596
29597         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
29598         valuetype marshalling.
29599
29600 2004-02-06  Martin Baulig  <martin@ximian.com>
29601
29602         * class.c
29603         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
29604         (my_mono_class_from_generic_parameter): Likewise.
29605
29606 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
29607
29608         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
29609         contents of the symbol files lazily.
29610
29611         * object.h (MonoThread): Add 'name' and 'name_len' fields.
29612
29613         * threads.h threads.c icall.c: New icalls for getting and setting the
29614         threads name.
29615
29616 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
29617
29618         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
29619         Raise an exception when the domain is not found.
29620
29621 2004-02-03  Martin Baulig  <martin@ximian.com>
29622
29623         * reflection.c (mono_image_get_methodspec_token): Use the
29624         uninflated signature; fixes gen-33.
29625
29626 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
29627
29628         * gc.c threads.c: Make the finalizer thread a normal managed thread so
29629         the finalizer code can use thread functionality.
29630
29631         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
29632         the finalizer thread.
29633
29634         * threads.c: Make some functions more robust.
29635
29636         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
29637
29638         * metadata.h: Add new marshalling conventions.
29639
29640         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
29641         stringbuilder marshalling. Fixes #53700.
29642
29643         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
29644
29645         * reflection.c (mono_image_get_type_info): Save declarative security
29646         info.
29647
29648         * reflection.c (mono_image_get_field_info): Handle uninitialized 
29649         unmanaged fields as well.
29650
29651         * appdomain.c: Bump corlib version.
29652
29653 2004-02-01  Martin Baulig  <martin@ximian.com>
29654
29655         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
29656         method type arguments.  
29657
29658 2004-01-30  Duncan Mak  <duncan@ximian.com>
29659
29660         * marshal.h: Add prototype for
29661         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
29662         and
29663         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
29664         fix the build.
29665
29666 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
29667
29668         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
29669         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
29670
29671 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
29672
29673         * marshal.c (mono_marshal_get_native_wrapper): Add support for
29674         custom marshalling of valuetypes.
29675
29676         * marshal.c: Fix some warnings.
29677
29678 2004-01-29  Martin Baulig  <martin@ximian.com>
29679
29680         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
29681         for generic method parameters.
29682
29683         * reflection.c (method_encode_methodspec): Write the uninflated
29684         signature into the methodspec table.
29685         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
29686         is always the uninflated method.
29687         (reflection_methodbuilder_to_mono_method): Copy the generic
29688         parameters from the MethodBuilder into `header->gen_params'.
29689
29690 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
29691
29692         * class.c (mono_class_from_generic_parameter): Fix warning.
29693
29694 2004-01-27  Martin Baulig  <martin@ximian.com>
29695
29696         * class.c (mono_class_from_generic_parameter): Don't create
29697         `klass->methods' here.  
29698
29699 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
29700
29701         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
29702         extension since it does not work with libraries named lib<FOO>.dll.so.
29703
29704 2004-01-25  Martin Baulig  <martin@ximian.com>
29705
29706         * class.c (mono_class_inflate_generic_type): Added support for
29707         MONO_TYPE_GENERICINST.
29708
29709         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
29710         inflate methods on open constructed types.      
29711
29712 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29713
29714         * object.c: fire ProcessExit event in the root AppDomain after running
29715         Main. Fixes bug #53299.
29716
29717 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
29718
29719         * socket-io.c: include the new socket-wrappers.h header.
29720         Use the wrappers instead of the unix socket functions to make the code
29721         more clear.
29722
29723 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
29724
29725         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
29726
29727         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
29728         Fixes #22532.
29729
29730 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
29731
29732         * reflection.c (mono_image_create_pefile): Handle the case when the
29733         entry point is not a MethodBuilder.
29734
29735         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
29736         field to ReflectionMethod since it is not allways a builder.
29737
29738         * reflection.c (type_get_fully_qualified_name): New helper function to
29739         return the fully qualified name of a type.
29740
29741         * reflection.c (encode_marshal_blob): Always emit the fully qualified
29742         type name for custom marshallers.
29743
29744         * reflection.c (mono_marshal_spec_from_builder): Ditto.
29745
29746         * class.c (mono_class_setup_vtable): If a parent class already 
29747         implements an interface, use the implementing methods from that class.
29748         Fixes #53148.
29749
29750 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29751
29752         * threadpool.c: just return instead of ExitThread to allow for thread
29753         clean up earlier.
29754
29755 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
29756
29757         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
29758         when closing resource modules.
29759
29760         * reflection.c (mono_image_create_pefile): Handle the case when the
29761         entry point is not a MethodBuilder.
29762
29763         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
29764         field to ReflectionMethod since it is not allways a builder.
29765
29766 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
29767
29768         * marshal.c (mono_marshal_get_managed_wrapper): 
29769         mono_marshal_alloc takes native int so CONV_I
29770         the arg for 64bits.
29771
29772 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
29773
29774         * reflection.c (fixup_cattrs): New function to fixup the methoddef
29775         tokens in the cattr table. Fixes #53108.
29776
29777 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29778
29779         * loader.c: don't trim ".dll" before looking up in the config file.
29780         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
29781
29782 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
29783
29784         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
29785         Return the module which contains the resource as well.
29786         (ves_icall_System_Reflection_Module_Close): New icall.
29787
29788         * appdomain.c: Bump corlib version number.
29789
29790         * image.c (mono_image_addref): New public function.
29791
29792         * assembly.c: Call mono_image_addref.
29793
29794         * reflection.c (mono_module_get_object): Increase reference count of 
29795         the image.
29796
29797         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
29798         Fixes #22532.
29799
29800         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
29801         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
29802         proper exceptions on DllImport problems.
29803
29804 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
29805
29806         * class.c, metadata.c: eliminate CSIZE macro.
29807
29808 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
29809
29810         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
29811         * object.h: Added async_callback field in MonoAsyncResult.
29812         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
29813         * verify.c: Added async_callback in MonoAsyncResult layout.
29814
29815 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
29816
29817         * reflection.c (mono_reflection_get_custom_attrs): Add support
29818         for Modules.
29819
29820 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
29821
29822         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
29823         marshalling.
29824         (mono_marshal_method_from_wrapper): Add null pointer check.
29825
29826 2004-01-16  Martin Baulig  <martin@ximian.com>
29827
29828         * debug-mono-symfile.h: Set version number to 36 and reflect
29829         latest symbol writer changes.
29830
29831 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
29832
29833         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
29834         multi-dimensional arrays.
29835         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
29836         (mono_class_from_mono_type): Use bounded_array_class_get.
29837         
29838         * class.c (mono_bounded_array_class_get): New function which takes
29839         a 'bounded' bool argument to distinguish vectors from one dimensional
29840         arrays.
29841
29842         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
29843         bounded_array_class_get if the array has bounds.
29844
29845         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
29846         Search modules loaded using AssemblyBuilder:AddModule as well.
29847
29848 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29849
29850         * appdomain.c: increased corlib version.
29851         * filewatcher.c: removed g_print.
29852         * icall.c:
29853         (get_property_info): only allocate what is actually requested.
29854         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
29855
29856 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29857
29858         * Makefile.am: added filewatcher.[ch]
29859         * filewatcher.[ch]: FileSystemWatcher runtime support.
29860         * icall.c: added new FSW icalls.
29861
29862 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
29863
29864         * string-icalls.c: fix stringbuilder regression as suggested by
29865         Iain McCoy <iain@mccoy.id.au>.
29866
29867 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
29868
29869         * process.c (process_read_stringtable_block): Recognize '007f' as
29870         a language neutral stringtable block.
29871
29872 2004-01-12  Patrik Torstensson
29873
29874         * object.h (MonoStringBuilder) : Changed layout to support our
29875         new stringbuilder class.
29876         * marshal.c: Change marshalling to support the new layout of 
29877         string builder.
29878         * appdomain.c: increased version number because new layout of
29879         string builder.
29880
29881 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
29882
29883         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
29884         assembly name as an string instead of an AssemblyName, since it is
29885         easier to extract info from it.
29886
29887         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
29888         the culture subdirectories too. Fixes #52231.
29889
29890 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29891
29892         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
29893         It takes 2 new parameters with an optional name for the method to look
29894         for and case ignoring info.
29895
29896         * threadpool.c: removed unused variable.
29897
29898 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29899
29900         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
29901         It takes 2 new parameters with an optional name for the property to look
29902         for and case ignoring info.
29903         Fixes bug #52753.
29904
29905 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
29906
29907         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
29908         Fix #52451.
29909
29910 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29911
29912         * appdomain.c:
29913         * assembly.c: escape the uri before passing it to g_filename_from_uri.
29914         Fixes bug #52630.
29915
29916 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
29917
29918         * reflection.c: Add support for more than one unmanaged resource.
29919
29920         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
29921         in field->def_value, as done in all other cases.
29922
29923         * reflection.c (mono_reflection_get_custom_attrs): Add support for
29924         TypeBuilders.
29925
29926         * reflection.c (mono_reflection_create_runtime_class): Remove 
29927         errorneous assignment to klass->element_class, since it is already
29928         done in mono_reflection_setup_internal_class.
29929
29930 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29931
29932         * gc.c: added missing LeaveCriticalSection.
29933         * icall.c: indented a couple of lines.
29934         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
29935         if we call EndInvoke inside a callback. Fixes bug #52601.
29936
29937 2004-01-07  Martin Baulig  <martin@ximian.com>
29938
29939         * mono-debug-debugger.h
29940         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
29941
29942 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
29943
29944         * appdomain.c: Use messages in NotImplementedException.
29945
29946         * exception.c (mono_get_exception_not_implemented): Now this takes
29947         a message argument.
29948
29949         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
29950         exception instead of g_asserting an aborting when something is not
29951         implemented.
29952
29953         Add some inline docs.
29954
29955 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
29956
29957         * reflection.h: Update after changes to object layout.
29958
29959         * reflection.c: Implement saving of unmanaged aka win32 resources.
29960
29961         * appdomain.c: Bump version number.
29962
29963         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
29964         Handle missing domains gracefully.
29965
29966 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
29967
29968         * file-io.c : On Windows, there are much more invalid_path_chars.
29969
29970 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
29971
29972         * class.h, object.c: prepare for GetType () speedup.
29973
29974 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
29975
29976         * profiler.c: workaround for --profile null reference exception on
29977           cygwin. Patch by Patrik Torstensson.
29978
29979 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
29980
29981         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
29982         make work for unaligned access.
29983
29984 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
29985
29986         * class.c: small cleanup (class->fields [i] -> field).
29987         * image.c: check address of metadata is valid.
29988
29989 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
29990
29991         * assembly.h assembly.c (mono_assembly_loaded): New public function to
29992         search the list of loaded assemblies.
29993
29994         * reflection.c (mono_reflection_type_from_name): Use 
29995         mono_assembly_loaded instead of mono_image_loaded.
29996
29997         * reflection.c: Fix warnings.
29998
29999 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
30000
30001         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
30002         is dynamic. This is needed since an assembly can contain both dynamic and
30003         non-dynamic images.
30004
30005         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
30006         assembly->dynamic.
30007
30008         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
30009
30010         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
30011         to store modules loaded using AddModule.
30012
30013         * reflection.c (mono_image_fill_file_table): Generalize this so it works
30014         on Modules.
30015
30016         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
30017
30018         * reflection.c (mono_image_fill_export_table_from_module): New function to
30019         fill out the EXPORTEDTYPES table from a module.
30020
30021         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
30022         into a separate function. Also handle loaded non-dynamic modules.
30023
30024         * reflection.c (mono_image_basic_init): Fix memory allocation.
30025
30026         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
30027
30028         * assembly.c (mono_assembly_load_references): Make this public.
30029
30030 2003-12-19  Martin Baulig  <martin@ximian.com>
30031
30032         * class.c (mono_class_initialize_generic): Made this static, take
30033         a `MonoGenericInst *' instead of a `MonoClass *'.
30034         (mono_class_from_generic): Call mono_class_initialize_generic()
30035         unless we're already initialized or being called from
30036         do_mono_metadata_parse_generic_inst().
30037
30038         * class.h (MonoGenericInst): Added `initialized' and
30039         `init_pending' flags.
30040
30041         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
30042         `mono_class_init (gklass)' or mono_class_initialize_generic()
30043         here; set `generic_inst->init_pending' while parsing the
30044         `type_argv'.
30045
30046 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
30047
30048         * locales.c: include string.h for memxxx prototypes
30049
30050 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
30051
30052         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
30053         constructor when accessing literal fields.
30054
30055 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
30056
30057         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
30058
30059         * reflection.c (assembly_add_resource_manifest): New function to fill
30060         the MANIFESTRESOURCE table.
30061
30062         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
30063
30064         * reflection.h: Update to changes in class layout.
30065
30066         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
30067         Reenable call to mono_runtime_is_shutting_down ().
30068
30069         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
30070         determine if the runtime is shutting down.
30071
30072 2003-12-16  Jackson Harper <jackson@ximian.com>
30073
30074         * icall.c: comment out call to mono_runtime_is_shutting_down to
30075         fix build.
30076         
30077 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
30078
30079         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
30080         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
30081
30082 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
30083
30084         * reflection.c: move definition of swap_with_size
30085         to before its first call
30086
30087 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
30088
30089         * appdomain.c (mono_runtime_is_shutting_down): New public function.
30090
30091         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
30092         icall.
30093
30094         * object.c: Fix warnings.
30095
30096         * icall.c (ves_icall_Type_Get...): Only consider inherited static
30097         members if FlattenHierarchy is set.
30098
30099         * reflection.c (mono_image_add_decl_security): New function to emit
30100         declarative security.
30101
30102         * reflection.h reflection.c: Add support for declarative security.
30103
30104         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
30105         
30106 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
30107
30108         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
30109         
30110         * appdomain.c verify.c: Moved corlib version checking into its own
30111         function in appdomain.c since it needs to create vtables etc.
30112
30113 2003-12-13  Patrik Torstensson <p@rxc.se>
30114
30115         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
30116         instead of unwrapped server.
30117
30118 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
30119
30120         * verify.c (check_corlib): Fix field index.
30121
30122 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
30123
30124         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
30125         GetGacPath icall.
30126
30127 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
30128
30129         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
30130         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
30131         cope with sizeof(size_t) != sizeof(guint32).
30132
30133 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30134
30135         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
30136         in case of failure.
30137
30138 2003-12-10  Mark Crichton <crichton@gimp.org>
30139
30140         * icall.c: removed the GetNonZeroBytes.  We now handle this case
30141         in managed code.
30142
30143         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
30144
30145 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
30146
30147         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
30148         marked as deleted.
30149
30150 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
30151
30152         * verify.c (check_corlib): Handle the case when the version field is 
30153         initialized by a static constructor.
30154
30155 2003-12-08  Patrik Torstensson  <p@rxc.se>
30156
30157     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
30158
30159 2003-12-08  Martin Baulig  <martin@ximian.com>
30160
30161         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
30162         a MonoReflectionGenericParameter, also take the parameter index
30163         and name as arguments.
30164         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
30165         (ves_icall_MonoGenericParam_initialize): New interncall.
30166         (ves_icall_Type_make_byref_type): New interncall.
30167
30168         * reflection.h (MonoReflectionGenericParam): Derive from
30169         MonoReflectionType, not just from MonoObject.  Added `refobj' and
30170         `index' fields.
30171
30172         * reflection.c (mono_reflection_define_generic_parameter): Create
30173         and return a new MonoReflectionGenericParam; don't initialize the
30174         constraints here.
30175         (mono_reflection_initialize_generic_parameter): New public method;
30176         initializes the constraints and creates the `param->pklass'.
30177
30178 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
30179
30180         * reflection.h reflection.c: Use the new fields 'num_types', 
30181         'num_fields' and 'num_methods' to track the number of types etc.
30182
30183         * verify.c (check_corlib): Check corlib version number.
30184
30185 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
30186
30187         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
30188         function works on all methods.
30189
30190 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
30191
30192         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
30193         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
30194         the custom_type_info flag of the transparent proxy.
30195         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
30196         objects that supports IRemotingTypeInfo.
30197         * object.h: Added custom_type_info field in transparent proxy.
30198
30199 2003-12-06  Martin Baulig  <martin@ximian.com>
30200
30201         * class.c (mono_class_create_from_generic): Removed.
30202         (mono_class_from_generic): Check `ginst->klass' before doing
30203         anything else.  This is important to fully support "recursive"
30204         generic types.
30205
30206         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
30207         empty `generic_inst->klass' before doing anything else.
30208
30209 2003-12-06  Dick Porter  <dick@ximian.com>
30210
30211         * verify.c: 
30212         * object.h:
30213         * icall.c:
30214         * locales.c: Use C structs to access class fields.  Don't do a
30215         conversion between MonoString and UChar because both are
30216         platform-endian UTF-16.  Compare now takes startindex and count
30217         parameters.  Add a char overload for IndexOf.  Speed up the
30218         invariant string IndexOf.
30219
30220 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
30221
30222         * Makefile.am (monosn_LDADD): Fix parallel build.
30223
30224 2003-12-04  Martin Baulig  <martin@ximian.com>
30225
30226         * icall.c
30227         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
30228         (ves_icall_Type_make_array_type): New interncall.       
30229
30230 2003-12-04  Martin Baulig  <martin@ximian.com>
30231
30232         * locales.c: also change it in the !HAVE_ICU case.
30233
30234 2003-12-04  Dick Porter  <dick@ximian.com>
30235
30236         * icall.c:
30237         * locales.c: construct_compareinfo is now in CompareInfo, not
30238         CultureInfo.
30239
30240 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
30241
30242         * image.c (mono_image_load_file_for_image): Cache loaded images in the
30243         image->files array.
30244
30245         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
30246         table as well.
30247
30248         * assembly.c (mono_assembly_load_references): Only load references
30249         once.
30250
30251         * class.c (mono_class_from_name): Avoid linear search of the 
30252         EXPORTEDTYPE table.
30253
30254         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
30255
30256 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
30257
30258         * image.h (MonoImage): Add 'field_cache' field.
30259
30260         * loader.c (mono_field_from_token): Cache field lookups.
30261         
30262         * reflection.c (mono_module_get_object): Fix name property.
30263
30264         * icall.c (ves_icall_get_enum_info): Update after changes to 
30265         mono_metadata_get_constant_index ().
30266
30267         * icall.c: Get rid of get_type_info icall, use a separate icall for
30268         each type property to avoid needless memory allocations. Fixes #51514.
30269
30270         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
30271         to avoid needless binary searches.
30272
30273         * class.c (class_compute_field_layout): Move the initialization of
30274         field->def_value to mono_class_vtable ().
30275
30276         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
30277         non-corlib types.
30278
30279         * object.c (mono_object_allocate): Make it inline.
30280
30281         * object.c (mono_object_allocate_spec): Make it inline.
30282         
30283 2003-12-02  Dick Porter  <dick@ximian.com>
30284
30285         * locales.c (create_NumberFormat): NumberFormatInfo construction.
30286         Patch by Mohammad DAMT (mdamt@cdl2000.com).
30287
30288 2003-12-01  Dick Porter  <dick@ximian.com>
30289
30290         * threads.c: Fix signature and call in CreateMutex and
30291         CreateEvent.
30292
30293 2003-12-01  Dick Porter  <dick@ximian.com>
30294
30295         * icall.c: 
30296         * locales.c: Implement string compares and searching
30297
30298         * object.h: Add extra Thread field
30299
30300 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
30301
30302         * reflection.c (fixup_method): Add support for MonoCMethod.
30303
30304 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
30305
30306         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
30307
30308         * reflection.c (assembly_name_to_aname): Allow extra characters in
30309         assembly names. Fixes #51468.
30310
30311 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
30312
30313         * exception.c (mono_exception_from_name_domain): New helper function.
30314
30315         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
30316         exception object in the correct domain.
30317
30318         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
30319         formatting + make a copy a the input data.
30320
30321         * loader.c (mono_get_method_from_token): Methods which contain
30322         native code do not have entries in the ImplMap.
30323
30324         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
30325         Thanks to Gonzalo for spotting this.
30326         
30327         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
30328         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
30329
30330         * assembly.h (mono_assembly_load_from): Split the second part of 
30331         assembly loading into a new public function.
30332
30333         * exception.h (mono_get_exception_bad_image_format): New function.
30334
30335 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
30336
30337         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30338         Enumerate all modules inside a dynamic assembly. Fixes #51293.
30339         
30340         * icall.c: Add new icall for creating dynamic methods.
30341
30342         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
30343
30344         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
30345
30346         * reflection.c (mono_reflection_create_dynamic_method): New icall to
30347         create a dynamic method.
30348
30349         * reflection.c (resolve_object): New helper function.
30350
30351         * reflection.c: Generalize ReflectionMethodBuilder and the functions
30352         which manipulate it so they can also work on dynamic methods.
30353
30354         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
30355         creating the MonoReflectionMethodAux structure if it is not needed.
30356         
30357         * reflection.h verify.c: Update after changes to object layout.
30358
30359         * reflection.c (method_builder_encode_signature): Fix compilation on
30360         gcc 2.95.x.
30361
30362 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
30363
30364         * appdomain.h: Added support for context static fields. Added static_data
30365           field to MonoAppContext and renamed thread_static_fields to a more
30366           generic special_static_fields in MonoAppDomain, since it can now contain
30367           context static fields.
30368         * domain.c: Updated hashtable name.
30369         * object.c: Replaced field_is_thread_static() for a more generic
30370           field_is_special_static() which also checks for context static attribute.
30371           In mono_class_vtable(), added support for static context fields.
30372         * threads.c: Changed methods that manage thread static fields to more
30373           generic methods so they can be reused both for thread and context static
30374           data.
30375         * threads.h: Declared some new methods.
30376
30377 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
30378
30379         * reflection.h: Update after changes to the managed types.
30380
30381         * reflection.c (encode_custom_modifiers): New helper function.
30382
30383         * reflection.c (method_encode_signature): Emit custom modifiers.
30384
30385         * reflection.c (field_encode_signature): Emit custom modifiers.
30386
30387 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
30388
30389         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
30390
30391         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
30392         implementation.
30393
30394         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
30395         icall.
30396
30397         * object.c (mono_field_get_value_object): New function.
30398
30399         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
30400         specific.
30401
30402 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
30403
30404         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
30405         return a preallocated out-of-memory exception instance.
30406
30407         * object.c (out_of_memory): Use the new function.
30408
30409         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
30410         flag is before the custom modifiers. Fixes #49802.
30411
30412 2003-11-16  Martin Baulig  <martin@ximian.com>
30413
30414         * class.c (mono_class_is_open_constructed_type): Implemented the
30415         MONO_TYPE_GENERICINST case.
30416
30417 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
30418
30419         * assembly.c (mono_assembly_fill_assembly_name): New function to
30420         fill out the MonoAssemblyName structure.
30421         (mono_assembly_open): Use the new function.
30422
30423         * icall.c (fill_reflection_assembly_name): New helper function.
30424
30425         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
30426         new function.
30427
30428         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
30429
30430 2003-11-15  Martin Baulig  <martin@ximian.com>
30431
30432         * class.c (mono_class_is_open_constructed_type): New public
30433         function; checks whether a type is an open constructed type,
30434         ie. whether it still contains type parameters.
30435         (mono_class_inflate_generic_type): If we're a type parameter and
30436         the inflated type is also a MONO_TYPE_(M)VAR, return the original
30437         type.
30438
30439         * class.h (MonoGenericInst): Added `guint32 is_open'.
30440
30441         * loader.c (method_from_methodspec): Check whether we're an open
30442         or closed constructed type and set `ginst->is_open'.
30443
30444         * reflection.c (mono_reflection_bind_generic_parameters): Check
30445         whether we're an open or closed constructed type and set
30446         `ginst->is_open'.
30447         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
30448         from open constructed types.
30449
30450 2003-11-15  Martin Baulig  <martin@ximian.com>
30451
30452         * reflection.c (mono_reflection_bind_generic_parameters): If we're
30453         a generic instance (instead of a generic type declaration) with
30454         unbound generic parameters, bind them to our actual types.
30455
30456 2003-11-14  Martin Baulig  <martin@ximian.com>
30457
30458         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
30459
30460         * reflection.c (mono_reflection_bind_generic_parameters): If we're
30461         an interface type, populate `res->interfaces' with instantiated
30462         versions of all the interfaces we inherit.
30463
30464 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
30465
30466         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
30467         when MONO_PATH is set but doesn't contain the install dir.
30468
30469 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30470
30471         * icall.c:
30472         (ves_icall_Type_GetInterfaces): don't return an interface twice when
30473         it's also implemented in base classes. Fixes bug #50927.
30474
30475 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
30476
30477         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
30478         if this method is called from a finalizer. Fixes #50913.
30479
30480 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
30481
30482         * threads.c: Implement VolatileRead/VolatileWrite
30483
30484         * icall.c: Add new icalls for VolatileRead/VolatileWrite
30485
30486 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30487
30488         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
30489         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
30490         2.95.3.
30491
30492         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
30493         from Peter Ross (pro@missioncriticalit.com).
30494         
30495 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
30496
30497         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
30498
30499 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30500
30501         * assembly.c (mono_assembly_load_references): Disable check because it
30502         triggers on older corlibs which lots of people have.
30503
30504 2003-11-12  Jackson Harper  <jackson@ximian.com>
30505
30506         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
30507         load corlib.dll if mscorlib.dll is not found.
30508         * assembly.h: Remove corlib name define.
30509         * class.c:
30510         * domain.c:
30511         * image.c: Change corlib name to mscorlib.
30512         
30513 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30514
30515         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
30516
30517 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
30518
30519         * appdomain.h: Added loader_optimization here to sync with the C#
30520         code, and add disallow_binding_redirects field.
30521
30522 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
30523
30524         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
30525
30526         * reflection.c (mono_image_build_metadata): Fix crash on modules
30527         with no types.
30528
30529         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
30530
30531         * icall.c (ves_icall_get_method_info): Return callingConvention as
30532         well.
30533
30534         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
30535         namespaces from the EXPORTEDTYPE table as well.
30536
30537         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
30538         from all modules inside the assembly.
30539         
30540 2003-11-11  Martin Baulig  <martin@ximian.com>
30541
30542         * reflection.c (mono_reflection_bind_generic_parameters): Make
30543         this work for interfaces.
30544
30545 2003-11-11  Martin Baulig  <martin@ximian.com>
30546
30547         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
30548
30549 2003-11-11  Martin Baulig  <martin@ximian.com>
30550
30551         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
30552         "MonoInflatedMethod" and "MonoInflatedCtor".
30553
30554 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
30555
30556         * reflection.c (resolution_scope_from_image): Use the assembly table
30557         from the manifest module, since other modules don't have it.
30558
30559         * debug-helpers.c (mono_type_full_name): New helper function.
30560
30561         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
30562
30563         * image.c (mono_image_load_file_for_image): New public function which
30564         is a replacement for the load_file_for_image in class.c.
30565
30566         * assembly.c (mono_assembly_load_module): A wrapper for the function
30567         above which does assembly association and reference loading too.
30568
30569         * class.c (mono_class_from_name): Call mono_assembly_load_module.
30570
30571 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30572
30573         * appdomain.c: not all of the attributes for the full assembly name
30574         are required and the order doesn't matter. Fixes bug #50787.
30575
30576 2003-11-10  Dick Porter  <dick@ximian.com>
30577
30578         * locales.c: Use platform-endian UTF16
30579
30580 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
30581
30582         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
30583         
30584 2003-11-10  Martin Baulig  <martin@ximian.com>
30585
30586         * metadata.c
30587         (mono_metadata_load_generic_params): Make this actually work.
30588
30589         * reflection.c (mono_reflection_bind_generic_parameters): If our
30590         parent is a generic instance, pass all the `types' to it, no
30591         matter whether it has the same number of type parameters or not.
30592
30593 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
30594
30595         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
30596
30597         * assembly.c (mono_assembly_load_references): Move the image<->assembly
30598         assignment code to this function so it gets called recursively for all
30599         modules.
30600
30601         * image.c (load_modules): Remove the assembly assignment since it is
30602         now done by mono_assembly_load_references.
30603         
30604         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30605         Add 'module' argument.
30606         (mono_module_get_types): New helper function.
30607         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
30608
30609 2003-11-08  Martin Baulig  <martin@ximian.com>
30610
30611         * class.c (mono_class_inflate_generic_method): Interface method
30612         don't have a header.
30613
30614         * reflection.c (mono_image_get_methodspec_token): Take an
30615         additional `MonoGenericInst *' argument instead of reading it from
30616         the header; this is necessary to support interfaces.
30617         (mono_image_create_token): Pass the `MonoGenericInst *' from the
30618         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
30619         (inflated_method_get_object): Take an additional `MonoGenericInst *'
30620         argument.
30621
30622         * reflection.h (MonoReflectionInflatedMethod): Added
30623         `MonoGenericInst *ginst'.
30624
30625 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
30626
30627         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
30628
30629 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
30630
30631         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
30632
30633 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
30634
30635         * reflection.c 
30636         (reflection_methodbuilder_from_method_builder):
30637         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
30638         initialize a ReflectionMethodBuilder structure.
30639         (mono_image_get_methodbuilder_token):
30640         (mono_image_get_ctorbuilder_token): New functions to emit memberref
30641         tokens which point to types in another module inside the same assembly.
30642
30643         * reflection.c: Use the new helper functions.
30644         
30645         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
30646
30647         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
30648         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
30649
30650         * reflection.c (resolution_scope_from_image): Emit a moduleref if
30651         neccesary.
30652
30653         * reflection.c (mono_image_build_metadata): Emit metadata only for the
30654         current module. Emit the manifest only for the main module.
30655
30656         * reflection.c (mono_image_create_token): Add assertion when a 
30657         memberref needs to be created.
30658
30659         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
30660
30661         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
30662         larger buffer for the custom attribute blob. Fixes #50637.
30663         
30664 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30665
30666         * threadpool.c: notify listener on async processing handles after
30667         invoking the async callback. Thanks to Zoltan.
30668
30669 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30670
30671         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
30672         avoid code duplication.
30673
30674         * reflection.h (MonoDynamicImage): New type which is currently unused,
30675         but will be used through the ref.emit code in place of 
30676         MonoDynamicAssembly.
30677
30678         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
30679         object layout.
30680
30681         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
30682         a MonoDynamicImage instead of just a MonoImage.
30683         
30684         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
30685         icalls to ModuleBuilder but keep their semantics, so they will work
30686         with moduleb->assemblyb. This will change later.
30687         
30688 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30689
30690         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
30691         object layout.
30692
30693         * reflection.c (mono_image_build_metadata): Avoid creation of a default
30694         main module, since it is now done by the managed code.
30695
30696 2003-11-03  Martin Baulig  <martin@ximian.com>
30697
30698         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
30699         `ginst->klass' here.
30700         (method_encode_methodspec): Don't use the `ginst->generic_method's
30701         klass if it's a generic instance, use `ginst->klass' in this case.
30702
30703 2003-11-03  Martin Baulig  <martin@ximian.com>
30704
30705         * reflection.c (mono_image_get_generic_method_param_info):
30706         Removed, use mono_image_get_generic_param_info() instead.
30707         (mono_image_get_type_info): Write the GenericParam table before
30708         the Method table.  This is neccessary because in the GenericParam
30709         table, type parameters of the class (ie. '!0' etc.) must come
30710         before the ones from its generic methods (ie. '!!0' etc).
30711
30712 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30713
30714         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
30715
30716 2003-11-02  Martin Baulig  <martin@ximian.com>
30717
30718         * reflection.c (create_generic_typespec): Take a
30719         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
30720         the generic parameters from it.
30721
30722 2003-11-02  Martin Baulig  <martin@ximian.com>
30723
30724         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
30725         instead of a `MonoClassField *' since we just need the type.
30726         (create_generic_typespec): New static function.  Creates a
30727         TypeSpec token for a generic type declaration.
30728         (mono_image_get_generic_field_token): New static function.
30729         (mono_image_create_token): If we're a FieldBuilder in a generic
30730         type declaration, call mono_image_get_generic_field_token() to get
30731         the token.
30732
30733 2003-11-02  Martin Baulig  <martin@ximian.com>
30734
30735         * reflection.h
30736         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
30737         `MonoReflectionGenericInst *declaring_type' and
30738         `MonoReflectionGenericInst *reflected_type' fields.
30739
30740         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
30741         `MonoReflectionGenericInst *declaring_type' and a
30742         `MonoReflectionGenericInst *reflected_type' argument instead of a
30743         single `MonoReflectionGenericInst *type' one.  Set
30744         `res->declaring_type' and `res->reflected_type' from them.
30745         (mono_reflection_inflate_field): Likewise.      
30746
30747 2003-11-02  Martin Baulig  <martin@ximian.com>
30748
30749         * class.c (mono_class_setup_vtable): Don't store generic methods
30750         in the vtable.  
30751
30752 2003-11-02  Martin Baulig  <martin@ximian.com>
30753
30754         * reflection.h (MonoReflectionGenericInst): Added
30755         `MonoReflectionType *declaring_type'.
30756
30757         * reflection.c (mono_reflection_bind_generic_parameters): Use
30758         `if (tb->parent)' instead of `klass->parent'.
30759
30760 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
30761
30762         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
30763         with an empty ASSEMBLY table.
30764
30765         * reflection.c (mono_image_build_metadata): Avoid using the same loop
30766         variable in the inner and outer loops.
30767
30768 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
30769
30770         * metadata.h (mono_metadata_make_token): Put parentheses around macro
30771         argument.
30772
30773         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
30774         
30775         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
30776         icalls. Instead, do everything in managed code. This is needed since
30777         it is hard to restore the original domain etc. in unmanaged code in the
30778         presence of undeniable exceptions.
30779
30780         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
30781         New icalls to push and pop appdomain refs.
30782
30783 2003-10-31  Martin Baulig  <martin@ximian.com>
30784
30785         * class.c (inflate_generic_type): Renamed to
30786         mono_class_inflate_generic_type() and made it public.
30787
30788         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
30789         New interncall.
30790
30791         * loader.c (mono_field_from_memberref): Also set the retklass for
30792         typespecs.
30793
30794         * fielder.c (mono_image_get_inflated_field_token): New static
30795         method; creates a metadata token for an inflated field.
30796         (mono_image_create_token, fixup_method): Added support for
30797         "MonoInflatedField".
30798         (fieldbuilder_to_mono_class_field): New static function.
30799         (mono_reflection_inflate_field): New public function.
30800
30801         * reflection.h
30802         (MonoReflectionGenericInst): Added `MonoArray *fields'.
30803         (MonoReflectionInflatedField): New typedef.     
30804
30805 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
30806
30807         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
30808         for Solaris and other platforms without s6_addr16
30809
30810 2003-10-30  Martin Baulig  <martin@ximian.com>
30811
30812         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
30813         argument instead of two.
30814         (mono_class_inflate_generic_signature): Likewise.
30815         (inflate_generic_header): Likewise.
30816         (mono_class_inflate_generic_method): Likewise.  In addition, if
30817         `ginst->klass' is set, it becomes the new `method->klass'.
30818
30819         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
30820         field.
30821
30822         * reflection.c (encode_generic_method_sig): Write a 0xa as the
30823         first byte. [FIXME]
30824         (method_encode_methodspec): If we have generic parameters, create
30825         a MethodSpec instead of a MethodRef.
30826         (fixup_method): Added support for "MonoInflatedMethod" and
30827         "MonoInflatedCtor".
30828         (mono_image_create_token): Added support for "MonoInflatedMethod"
30829         and "MonoInflatedCtor".
30830         (inflated_method_get_object): New static function; returns a
30831         managed "System.Reflection.MonoInflatedMethod" object.
30832         (mono_reflection_bind_generic_method_parameters): Return a
30833         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
30834         (mono_reflection_inflate_method_or_ctor): Likewise.
30835         (mono_image_get_generic_method_param_info): Initialize unused
30836         fields to zero.
30837         (mono_image_get_generic_param_info): Likewise.
30838
30839         * reflection.h (MonoReflectionInflatedMethod): New public
30840         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
30841         "S.R.MonoInflatedCtor" classes.
30842
30843         * loader.c (method_from_memberref): If we're a TypeSpec and it
30844         resolves to a generic instance, inflate the method.
30845
30846 2003-10-28  Dick Porter  <dick@ximian.com>
30847
30848         * object.c (mono_runtime_run_main): Convert command-line arguments
30849         into utf8, falling back to the user's locale encoding to do so.
30850
30851 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
30852
30853         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
30854         at this time.
30855
30856         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
30857
30858         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
30859         up icalls at method definition time. Partially fixes #33569.
30860
30861 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
30862
30863         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
30864         marshalling of arrays. Fixes #50116.
30865
30866         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
30867
30868         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
30869         points to a vtable in the dying appdomain.
30870
30871         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
30872         listeners into unmanaged code inside the lock.
30873
30874         * object.c (mono_class_vtable): Turn off typed allocation in non-root
30875         domains and add some comments.
30876
30877 2003-10-25  Martin Baulig  <martin@ximian.com>
30878
30879         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
30880
30881         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
30882
30883         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
30884         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
30885         currently parsing.  Create the generic class and store it in
30886         `generic_inst->klass' before parsing the type arguments.  This is
30887         required to support "recursive" definitions; see mcs/tests/gen-23.cs
30888         for an example.
30889         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
30890         to support recursive typespec entries.
30891
30892         * class.c (mono_class_setup_parent): If our parent is a generic
30893         instance, we may get called before it has its name set.
30894         (mono_class_from_generic): Splitted into
30895         mono_class_create_from_generic() and mono_class_initialize_generic().
30896
30897 2003-10-25  Martin Baulig  <martin@ximian.com>
30898
30899         * icall.c (ves_icall_Type_BindGenericParameters): Return a
30900         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
30901         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
30902         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
30903
30904         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
30905         (create_typespec): Likewise.
30906         (mono_reflection_bind_generic_parameters): Return a
30907         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
30908         (mono_reflection_inflate_method_or_ctor): New public function.
30909
30910         * reflection.h (MonoReflectionGenericInst): New typedef.        
30911
30912 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
30913
30914         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
30915         inside the domain lock. Fixes #49993.
30916         
30917         * object.c (mono_class_vtable): When typed allocation is used, 
30918         allocate vtables in the GC heap instead of in the mempool, since the
30919         vtables contain GC descriptors which are used by the collector even
30920         after the domain owning the mempool is unloaded.
30921
30922         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
30923
30924         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
30925         reflect what it does. Also invalidate mempools instead of freeing
30926         them if a define is set.
30927
30928         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
30929         of the appdomain.
30930         
30931         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
30932         hold the finalizable objects in this domain.
30933
30934         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
30935         appdomain.
30936
30937         * appdomain.c (mono_domain_set): New function to set the current
30938         appdomain, but only if it is not being unloaded.
30939
30940         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
30941         appdomain which is being unloaded.
30942         
30943         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
30944         unloading of the root appdomain.
30945
30946         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
30947         icall to execute a method in another appdomain. Intended as a 
30948         replacement for InternalSetDomain, which can confuse the code 
30949         generation in the JIT.
30950
30951         * appdomain.c (mono_domain_is_unloading): New function to determine
30952         whenever an appdomain is unloading.
30953
30954         * appdomain.c (mono_domain_unload): New function to correctly unload
30955         an appdomain.
30956
30957         * assembly.c (mono_assembly_load_references): Check that an assembly
30958         does not references itself.
30959
30960         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
30961         domain manually, it asks the finalizer thread to do it, then waits for
30962         the result. Also added a timeout.
30963
30964         * icall.c: Register the new icalls.
30965
30966         * threads.h threads.c: Export the mono_gc_stop_world and 
30967         mono_gc_start_world functions.
30968         
30969         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
30970         function to fill out the mempool with 0x2a.
30971
30972 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
30973
30974         * reflection.h (MonoReflectionMethodAux): New structure to store
30975         information which is rarely used, thus is not in the MonoMethod
30976         structure.
30977
30978         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
30979         store the aux info.
30980
30981         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
30982         and marshalling info into the aux structure.
30983
30984         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
30985         from the aux structure.
30986
30987         * loader.c (mono_method_get_param_names): Retrieve the param names from
30988         the aux structure.
30989         
30990 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
30991
30992         * exception.h exception.c: Add AppDomainUnloadedException && fix 
30993         warning.
30994
30995 2003-10-21  Dick Porter  <dick@ximian.com>
30996
30997         * socket-io.c
30998         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
30999         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
31000
31001 2003-10-21  Martin Baulig  <martin@ximian.com>
31002
31003         * reflection.c (mono_reflection_bind_generic_parameters):
31004         `klass->parent' is NULL for interfaces.
31005
31006 2003-10-21  Martin Baulig  <martin@ximian.com>
31007
31008         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
31009
31010 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
31011
31012         * exception.c (mono_exception_from_name_msg): New helper function for
31013         creating exceptions and initializing their message field.
31014
31015         * exception.c: Simplify functions using the new helper.
31016
31017         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
31018         New function.
31019
31020         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
31021         mono_raise_exception, since otherwise gcc doesn't generate the function
31022         epilog for raise_exception, confusing the stack unwinding in the JIT.
31023         Fixes #45043.
31024
31025         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
31026         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
31027         Fixes #49499.
31028
31029 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31030
31031         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
31032         utf8.
31033
31034 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
31035
31036         * icall.c: Removed GetUninitializedObject method because
31037           AllocateUninitializedClassInstance does the same.
31038
31039 2003-10-18  Martin Baulig  <martin@ximian.com>
31040
31041         * class.c (inflate_generic_signature): Renamed to
31042         mono_class_inflate_generic_signature() and made it public.
31043         (my_mono_class_from_generic_parameter): New static function; if we
31044         don't already have the generic parameter's MonoClass, create a
31045         very simple one which is just used internally in the runtime and
31046         not passed back to managed code.
31047
31048         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
31049
31050         * metadata.h (MonoMethodSignature): Moved the
31051         `MonoGenericParam *gen_params' to the MonoMethodHeader.
31052         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
31053
31054         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
31055         ves_icall_MonoMethod_GetGenericArguments(); this is now an
31056         interncall on the MonoMethod class, not on MethodInfo.
31057         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
31058         calling mono_reflection_bind_generic_method_parameters() directly.
31059
31060         * loader.c (mono_method_get_signature): If this is a MethodSpec;
31061         return the already computed `method->signature'.
31062         (method_from_methodspec): New static function to load a method
31063         from a MethodSpec entry.
31064         (mono_get_method_from_token): Call the new method_from_methodspec()
31065         for MethodSpec tokens.  
31066         (mono_get_method_from_token): If we're a generic method, load the
31067         type parameters.
31068
31069         * reflection.c (mono_image_get_memberref_token): Allow
31070         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
31071         table.
31072         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
31073         (mono_image_create_token): First check whether it's a generic
31074         method (so we'd need to create a MethodSpec), then do the other
31075         two alternatives.
31076         (mono_reflection_bind_generic_method_parameters): Return a
31077         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
31078         called directly from the interncall.
31079
31080 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
31081
31082         * reflection.c (load_public_key): Move loading of the public key
31083         into managed code.
31084
31085         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
31086
31087         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
31088         fields.
31089
31090         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
31091         culture, hash_alg and public_key. Fixes #49555.
31092
31093 2003-10-17  Martin Baulig  <martin@ximian.com>
31094
31095         * class.h (MonoGenericInst): Moved this declaration here and added
31096         `MonoMethod *generic_method'.
31097
31098         * icall.c
31099         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
31100         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
31101
31102         * metadata.c (mono_metadata_type_equal): Two types of
31103         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
31104         index; ie. don't compare the address of the `MonoGenericParam'
31105         structure.
31106         (mono_metadata_load_generic_params): Removed the `MonoMethod
31107         *method' argument.
31108
31109         * metadata.h (MonoGenericInst): Moved declaration to class.h.
31110         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
31111
31112         * reflection.c (method_encode_signature): Encode the number of
31113         generic parameters.
31114         (encode_generic_method_sig): New static function.
31115         (method_encode_methodspec): New static function; creates an entry
31116         in the MethodSpec table for a generic method.
31117         (mono_image_get_methodspec_token): New static function.
31118         (mono_image_create_token): Call mono_image_get_methodspec_token()
31119         for generic methods.
31120         (mono_reflection_bind_generic_method_parameters): New public
31121         function.  Instantiates a generic method.
31122
31123 2003-10-16  Martin Baulig  <martin@ximian.com>
31124
31125         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
31126         *gen_params' here from MonoMethodHeader.
31127
31128         * metadata.c (mono_metadata_parse_method_signature): If we have
31129         generic parameters, initialize `method->gen_params' and then set
31130         the correct `type->data.generic_param' in all the parameters.
31131
31132 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
31133
31134         * threads.c (mono_threads_get_default_stacksize): New function to 
31135         return the default stacksize.
31136
31137         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
31138         termination of the finalizer thread, since the previous method had
31139         race conditions. Fixes #49628.
31140
31141         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
31142         as for the other managed threads.
31143
31144 2003-10-16  Martin Baulig  <martin@ximian.com>
31145
31146         * class.c (inflate_generic_signature): Copy `generic_param_count'
31147         and `gen_params'.
31148
31149         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
31150         New interncall.
31151
31152         * metadata.c (mono_metadata_parse_method_signature): Actually set
31153         the `method->generic_param_count' here.
31154         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
31155
31156 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
31157
31158         * object.h: Add a new field to TypedRef to simplify the implementation
31159         of the REFANY opcodes in the JIT.
31160
31161         * icall.c: Make use of the new field.
31162
31163         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
31164         dynamically.
31165
31166 2003-10-15  Martin Baulig  <martin@ximian.com>
31167
31168         * class.c (mono_class_from_gen_param): Renamed to
31169         mono_class_from_generic_parameter() and moved most of the
31170         functionality from mono_reflection_define_generic_parameter()
31171         here; ie. we create a "real" class here.
31172         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
31173         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
31174         previously been called.
31175
31176         * class.h (MonoGenericParam): Moved the declaration of this struct
31177         here from metadata.h and added `MonoMethod *method'.
31178
31179         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
31180         interncall.
31181
31182         * loader.c (mono_get_method_from_token): If we have any generic
31183         parameters, call mono_metadata_load_generic_params() to read them
31184         from the MONO_TABLE_GENERICPAR.
31185
31186         * metadata.c (mono_metadata_load_generic_params): Added
31187         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
31188
31189         * metadata.h (MonoMethodSignature): Replaced
31190         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
31191         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
31192
31193         * reflection.c (mono_reflection_define_generic_parameter): Moved
31194         most of the functionality into the new
31195         mono_class_from_generic_parameter(); set the `method' field if
31196         we're a method parameter.       
31197
31198 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
31199
31200         * marshal.c (emit_struct_conv): if native size is 0
31201         emit no code.
31202
31203 2003-10-14  Martin Baulig  <martin@ximian.com>
31204
31205         * icall.c: The generics API has changed in the spec since it was
31206         added to System.Type; these modifications make it match the spec
31207         again.
31208         (ves_icall_Type_GetGenericParameters): Renamed to
31209         `ves_icall_Type_GetGenericArguments'.
31210         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
31211         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
31212         `ves_icall_MonoType_get_HasGenericArguments'.
31213         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
31214         `ves_icall_MonoType_get_IsGenericParameter'.
31215         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
31216         this is no interncall anymore.
31217         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
31218         `ves_icall_TypeBuilder_get_IsGenericParameter'.
31219
31220 2003-10-14  Martin Baulig  <martin@ximian.com>
31221
31222         * reflection.c (mono_reflection_bind_generic_parameters): Also
31223         inflate generic methods if we're reading the class from IL.
31224
31225 2003-10-13  Martin Baulig  <martin@ximian.com>
31226
31227         * reflection.c (mono_reflection_define_generic_parameter): This
31228         method isn't called directly from the icall anymore; take a
31229         `MonoReflectionAssemblyBuilder *' so we can use this for type and
31230         method generic parameters.
31231         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
31232         (method_builder_encode_signature): Encode generic parameters.
31233         (mono_image_get_method_info): Write generic params to the
31234         MONO_TABLE_GENERICPARAM table.
31235
31236         * reflection.h (MonoReflectionMethodBuilder): Added
31237         `MonoArray *generic_params'.
31238
31239         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
31240
31241         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
31242         wrapper for mono_reflection_define_generic_parameter().
31243         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
31244
31245 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
31246
31247         * marshal.h: Add missing function to fix build.
31248
31249         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
31250         the SetLastError pinvoke attribute.
31251
31252         * marshal.c (mono_marshal_set_last_error): New helper function called
31253         by the generated code.
31254         
31255         * marshal.c (mono_mb_emit_branch): New helper function.
31256
31257         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
31258
31259         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
31260         classes as parameters and return values of delegates. Fixes #29256. 
31261
31262 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
31263
31264         * locales.c: use gint32 in non HAVE_ICU case
31265
31266 2003-10-11  Martin Baulig  <martin@ximian.com>
31267
31268         * mono-debug.c (mono_debug_add_method): Added a workaround for
31269         bug #48591.
31270
31271 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
31272
31273         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
31274         delegates passed to native code must use the STDCALL calling 
31275         convention. Fixes #35987.
31276
31277 2003-10-10  Martin Baulig  <martin@ximian.com>
31278
31279         * class.c (inflate_generic_type): If we're inflating for a generic
31280         type instance (and not for a generic method), return
31281         MONO_TYPE_MVAR unchanged.
31282
31283 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31284
31285         * string-icalls.c: Join ignores null strings in the source array.
31286         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
31287         * threads.c: GetAvailableTheads is slightly more accurate.
31288
31289 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
31290
31291         * threads.h threads.c : add mono_threads_set_default_stacksize
31292         and pass default to CreateThread calls.
31293
31294 2003-10-09  Dick Porter  <dick@ximian.com>
31295
31296         * icall.c:
31297         * locales.h:
31298         * locales.c: Internal calls for constructing CultureInfo and
31299         related objects from libicu (if its available.)
31300
31301 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
31302
31303         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
31304
31305 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31306
31307         * threadpool.c: added an argument to async_invoke_thread that is the
31308         item to process, pass the MonoAsyncResult to the thread start function
31309         when creating a new thread. This way we don't need to acquire any lock
31310         when we're creating a new thread. Readded a semaphore for faster
31311         response times (instead of that Sleep i added).
31312
31313 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
31314
31315         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
31316         get daylight change dates better on Windows, fix handling
31317         of platforms without tm_gmtoff.
31318
31319 2003-10-06  Martin Baulig  <martin@ximian.com>
31320
31321         * class.c (inflate_generic_method): Renamed to
31322         mono_class_inflate_generic_method() and made public.
31323         (mono_class_init): Don't inflate the generic methods here.
31324         (mono_class_from_generic): Added `gboolean inflate_methods'
31325         argument.  Inflate the methods here.
31326
31327         * loader.c (mono_method_get_param_names): Ignore instances of
31328         generic types for the moment.
31329
31330         * reflection.c (fixup_method): Added support for inflated methods.
31331         (mono_image_create_token): Use mono_image_get_methodref_token()
31332         for inflated methods.
31333         (mono_custom_attrs_from_param): Ignore instances of generic types
31334         for the moment.
31335         (mono_reflection_bind_generic_parameters): New public function.
31336         Moved all the functionality from
31337         ves_icall_Type_BindGenericParameters() here and added support for
31338         dynamic types.
31339         (mono_reflection_define_generic_parameter): Initialize
31340         `klass->methods' here.
31341
31342         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
31343         functionality into mono_reflection_define_generic_parameter().
31344         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
31345         TypeBuilder, return that TypeBuilder.
31346
31347 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31348
31349         * appdomain.c: removed mono_delegate_semaphore.
31350
31351         * threadpool.c:
31352         (mono_thread_pool_add): moved hash table creation inside and the thread 
31353         creation outside of the critical region.
31354         (mono_thread_pool_finish): removed obsolete code.
31355         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
31356         continue or exit the thread depending on the queue.
31357
31358 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
31359
31360         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
31361         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
31362         handle more bool marshalling options
31363
31364 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
31365
31366         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
31367         arrays of structs. Also add a more descriptive error message when
31368         a structure member is marshalled as LPArray.
31369
31370 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
31371
31372         * marshal.c (mono_marshal_get_native_wrapper): Add support for
31373         marshalling arrays of complex types. Fixes #29098. Also remove an
31374         usused and incomplete function.
31375
31376 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
31377
31378         * gc.c: report heap_size - free_bytes as total memory allocated
31379         (bug#49362).
31380
31381 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
31382
31383         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
31384         fix timezone handling problems on Windows.
31385         
31386         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
31387         asserts when the year is outside the range handled by ms the functions.
31388
31389         * class.c (setup_interface_offsets): If the class is an interface,
31390         fill out its interface_offsets slot.
31391
31392 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31393
31394         * threadpool.c: mark threadpool threads as background.
31395
31396 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
31397
31398         * decimal.c - define DECINLINE to nothing if not using GCC
31399
31400 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
31401
31402         * assembly.c: More refcount fixes.
31403
31404 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31405
31406         * string-icalls.c: if we're not trimming, return the same string.
31407         When not splitting, don't create a new string.
31408
31409 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31410
31411         * image.c:
31412         (mono_image_open): increment the ref_count inside the critical section.
31413
31414 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
31415
31416         * image.c (mono_image_open): Fix reference counting bug.
31417
31418 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
31419
31420         * marshal.c (mono_marshal_type_size) struct alignment changed for 
31421         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
31422         64bits. Avoid leak in mono_marshal_get_native_wrapper when
31423         mono_lookup_pinvoke_call throws.        
31424
31425 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
31426
31427         * reflection.c (mono_reflection_parse_type): Fix #49114.
31428
31429         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
31430         temporary workaround for cygwin header problem.
31431
31432         * object.c (mono_object_isinst): Synchronize this with the code
31433         generated by the JIT for casts.
31434
31435 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
31436
31437         * reflection.c (encode_type): Fix #38332.
31438
31439 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
31440
31441         * marshal.c (mono_marshal_method_from_wrapper): New function to return
31442         the original method from the wrapper method.
31443
31444 2003-09-25  Martin Baulig  <martin@ximian.com>
31445
31446         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
31447         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
31448         (ves_icall_Type_get_IsGenericInstance): New interncall.
31449
31450 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
31451
31452         * object.c: fix cast warning in big endian code.
31453
31454 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
31455
31456         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
31457         
31458 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31459
31460         * assembly.c: don't call check_env from mono_assembly_load. It's
31461         already done once in mono_assemblies_init and may cause headaches when
31462         multiple threads are loading assemblies.
31463
31464 2003-09-19  Martin Baulig  <martin@ximian.com>
31465
31466         * reflection.c (mono_reflection_define_generic_parameter): Don't
31467         allocate `klass->methods', set `klass->flags' to
31468         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
31469
31470 2003-09-18  Martin Baulig  <martin@ximian.com>
31471
31472         * class.c (mono_class_init): Don't create `class->methods' if it's
31473         already initialized.
31474
31475         * metadata.c (mono_metadata_load_generic_params): Make this
31476         actually work.
31477
31478         * reflection.c (mono_reflection_define_generic_parameter): Set
31479         parent class and interfaces from the constraints.
31480
31481         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
31482         to keep this struct in sync with the declaration in TypeBuilder.cs.
31483
31484 2003-09-17  Martin Baulig  <martin@ximian.com>
31485
31486         * metadata.h (MonoType): Replaced the data's `int type_param'
31487         field with `MonoGenericParam *generic_param'.
31488         (MonoGenericParam): Added `MonoClass *klass'.
31489
31490         * class.c (mono_class_from_gen_param): Removed the
31491         `MonoImage *image' and `int type_num' arguments.
31492
31493         * metadata.c (mono_metadata_parse_generic_param): New static
31494         method; creates a MonoGenericParam which just contains the index.
31495         (do_mono_metadata_parse_type): Call
31496         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
31497         MONO_TYPE_MVAR.
31498
31499         * reflection.c (mono_image_typedef_or_ref): Generic type
31500         parameters may be in the same assembly, but never use a typedef
31501         for them.
31502         (mono_reflection_define_generic_parameter): We're now creating a
31503         "real" class for the type parameter; it's now safe to call
31504         mono_class_from_mono_type() on the class'es type, it'll do the
31505         right thing.
31506
31507 2003-09-16  Martin Baulig  <martin@ximian.com>
31508
31509         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
31510         `symfile->range_entry_size' and `symfile->class_entry_size' here;
31511         the `symfile' data structure must be fully initialized before it
31512         gets added to the table.
31513
31514 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
31515
31516         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
31517
31518         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
31519         class init trampolines.
31520
31521 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
31522
31523         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
31524         to the built-in profiler to turn off time and allocation profiling
31525         respectively.
31526
31527 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
31528
31529         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
31530         g_direct_equal.
31531
31532         * debug-helpers.c (mono_method_full_name): Print the wrapper type
31533         in human readable form.
31534
31535 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
31536
31537         * reflection.c icall.c: Fixed warnings.
31538
31539         * image.c (load_class_names): Use a temporary hash table to hold the
31540         namespaces in order to avoid doing many string comparisons.
31541
31542         * image.h: Fix typo.
31543
31544         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
31545         Pass NULL instead of g_direct_equal to the GHashTable constructor 
31546         since the NULL case is short-circuited inside g_hash_table_lookup, 
31547         leading to better performance.  
31548
31549         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
31550         obtain the first custom attribute for a given index. Depends on the
31551         CustomAttribute table being sorted by the parent field.
31552
31553         * reflection.c (mono_custom_attrs_from_index): Use the new function 
31554         for better performance.
31555
31556 2003-09-07  Martin Baulig  <martin@ximian.com>
31557
31558         * class.c (mono_class_init): If we're a generic instance, inflate
31559         all our methods instead of loading them from the image.
31560         (mono_class_from_generic): Set `class->methods = gklass->methods'.
31561
31562 2003-09-07  Martin Baulig  <martin@ximian.com>
31563
31564         * mono-debug-debugger.c: Added support for constructors.
31565
31566 2003-09-06  Martin Baulig  <martin@ximian.com>
31567
31568         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
31569         New interncall.
31570
31571         * reflection.c (mono_reflection_setup_generic_class): Call
31572         ensure_runtime_vtable() to create the vtable.
31573
31574 2003-09-05  Martin Baulig  <martin@ximian.com>
31575
31576         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
31577         MONO_TYPE_MVAR.
31578
31579 2003-09-04  Martin Baulig  <martin@ximian.com>
31580
31581         * reflection.c (mono_reflection_define_generic_parameter): Generic
31582         parameters start with zero.
31583
31584 2003-09-04  Martin Baulig  <martin@ximian.com>
31585
31586         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
31587
31588         * reflection.h (MonoReflectionGenericParam): New typedef.
31589         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
31590         the generic parameters from the managed TypeBuilder.
31591
31592         * reflection.c (mono_reflection_define_generic_parameter): New function.
31593         (mono_reflection_create_runtime_class): Encode generic parameters.
31594         (mono_reflection_setup_generic_class): New function; this is
31595         called after adding adding all generic params to the TypeBuilder.
31596         (encode_type): Added MONO_TYPE_VAR.
31597
31598 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
31599
31600         * class.h class.c (mono_class_needs_cctor_run): Moved this method
31601         here from the JIT.
31602
31603         * assembly.h assembly.c: Moved the AOT loading code into an assembly
31604         load hook.
31605
31606 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
31607
31608         * reflection.h reflection.c class.h class.c: Delete duplicate 
31609         definition of mono_type_get_name () from reflection.c and export the
31610         one in class.c.
31611
31612         * class.c: Class loading fixes from Bernie Solomon 
31613         (bernard@ugsolutions.com).
31614
31615         * reflection.c: Endianness fixes from Bernie Solomon 
31616         (bernard@ugsolutions.com).
31617         
31618 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
31619
31620         * assembly.h assembly.c: Define a file format version for AOT
31621         libraries.
31622         
31623         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
31624
31625         * appdomain.h (MonoJitInfo): New field to determine whenever the
31626         code is domain neutral.
31627         
31628 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
31629
31630         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
31631
31632 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
31633
31634         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
31635         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
31636         Avoid caching the result since strings must be domain specific. Fixes
31637         #48050.
31638
31639 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
31640
31641         * marshal.c (mono_marshal_init): Make this callable multiple times
31642         since it is hard to find a correct place to call it.
31643
31644         * object.c (mono_runtime_class_init): Execute static constructors in
31645         the correct appdomain.
31646
31647         * image.c (build_guid_table): Handle the case when multiple images have
31648         the same GUID.
31649
31650 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31651
31652         * icall.c: added a couple of icalls for System.Web.
31653
31654 2003-08-28  Martin Baulig  <martin@ximian.com>
31655
31656         * icall.c (ves_icall_Type_BindGenericParameters): Use
31657         `klass->generic_inst' instead of `&klass->byval_arg' in the
31658         mono_type_get_object() call.  The returned type must be
31659         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
31660
31661 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
31662
31663         * NOTES: New file.
31664
31665         * object.c (mono_class_proxy_vtable): Make it thread safe.
31666
31667         * pedump.c: Fix warning.
31668
31669         * object.c appdomain.h: Get rid of metadata_section. 
31670         It is no longer needed and it was causing deadlocks with domain->lock.
31671
31672         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
31673
31674 2003-08-26  Martin Baulig  <martin@ximian.com>
31675
31676         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
31677
31678 2003-08-26  Martin Baulig  <martin@ximian.com>
31679
31680         * pedump.c (main): Call mono_metadata_init(),
31681         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
31682         and mono_loader_init().
31683
31684 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
31685
31686         * loader.h: Add missing include to fix build.
31687
31688         * image.h: mono_image_load_references is no more.
31689
31690         * assembly.c: Reworked assembly loading to make it really thread safe.
31691         After these changes, the assembly returned by mono_assembly_open is
31692         fully initialized, i.e. all its references assemblies are loaded.
31693
31694         * assembly.c (mono_image_load_references): Renamed to 
31695         mono_assembly_load_references, and made private, since clients no
31696         longer need to call it.
31697
31698         * class.c: Removed calls to mono_assembly_load_references, since it was
31699         a source of deadlocks.
31700
31701         * loader.h loader.c class.h class.c: Protect data structures using a 
31702         new lock, the loader lock.
31703
31704         * class.c (mono_class_setup_vtable): Create temporary hash tables and
31705         GPtrArrays only when needed.
31706
31707         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
31708         into empty structures by mcs. Fixes pinvoke7.cs.
31709         
31710         * domain.c (mono_init): Call a new initialization function.
31711
31712         * appdomain.c (mono_runtime_init): Call the new initializer function
31713         of the marshal module.
31714
31715         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
31716         inserted into empty structures by mcs. Fixes pinvoke7.cs.
31717
31718         * marshal.h marshal.c: Added locks around the wrapper caches to make
31719         this module thread safe.
31720
31721         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
31722         this argument. Fixes pinvoke1.exe.
31723
31724 2003-08-25  Lluis Sanchez <lluis@ximian.com>
31725
31726         * object.h: Added call_type field to MonoMethodMessage and the corresponding
31727         enumeration of values. Removed fields to store remote call output values in
31728         MonoAsyncResult. Not needed any more.
31729         * object.c: Initialize call_type and async_result fields in mono_message_init.
31730         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
31731         dispatching the message.
31732         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
31733         async call to finish. To do it use a message with EndInvoke call type.
31734
31735 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
31736
31737         * loader.h loader.c (mono_method_hash_marhal_info): New function which
31738         determines whenever a method has marshalling info.
31739
31740 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31741
31742         * assembly.c: fix the build on windows.
31743
31744 2003-08-22 Lluis Sanchez <lluis@ximian.com>
31745
31746         * object.cs: Fixed bug #47785.
31747
31748 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
31749
31750         * string-icalls.c (StringReplace): If their are no occurances of
31751         the old string found return a reference to the supplied
31752         string. This saves some memory and matches MS behavoir.
31753         
31754 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31755
31756         * socket-io.c: fixed compilation for systems that define AF_INET6
31757         and don't define SOL_IP/SOL_IPV6.
31758
31759 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
31760
31761         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
31762         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
31763
31764         * rawbuffer.c rawbuffer.h: Make this module thread safe.
31765
31766         * domain.c: Make this module thread safe.
31767
31768         * domain.c (mono_init): Call new initialization function.
31769
31770         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
31771         reference types too. Fixes #38812.
31772
31773         * image.c (mono_image_init): Fixed warnings.
31774
31775         * class.c (mono_class_from_typeref): Handle assembly load failure
31776         correctly.
31777
31778         * appdomain.c (add_assemblies_to_domain): Handle the case when
31779         the references of an assembly are not yet loaded.
31780
31781         * metadata.c image.c assembly.c: Moved initialization of global
31782         variables to a separate function called at startup since lazy 
31783         initialization of these variables is not thread safe.
31784         
31785         * image.c assembly.c: Made this module thread safe by adding locks in 
31786         the appropriate places.
31787
31788         * domain.c (mono_init): Call the new initialization functions of the
31789         three modules.
31790
31791 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
31792
31793         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
31794           make a direct call. It is proxy's work to make the call asynchronous.
31795           mono_delegate_end_invoke(): If the targe is a proxy, just collect
31796           the return values.
31797         * object.cs: mono_method_call_message_new(): read AsyncResult and
31798           state object from parameters list, if this info is requested.
31799         * object.h: Added fields to store remote call output values in
31800           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
31801
31802 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
31803
31804         * object.h: add needed fields to MonoThread.
31805         * threads.c, threads.h: allow registering a function to cleanup data
31806         allocated per thread by the JIT.
31807
31808 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
31809
31810         * loader.h: portability fix by Bernie Solomon
31811         * <bernard@ugsolutions.com>.
31812
31813 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
31814
31815         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
31816         return a MonoArray. This simplifies the code and also ensures that
31817         the cache allways contains an object reference as a value.
31818
31819         * icall.c (ves_icall_get_parameter_info): Simplified using the new
31820         function.
31821
31822 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31823
31824         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
31825         fixes a problem with byte ordering when getting the address family for
31826         a socket.
31827
31828 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
31829
31830         * .cvsignore: Added monosn.
31831
31832         * reflection.h reflection.c loader.c: Added support for parameter
31833         marshalling to dynamically created types. Fixes #47295.
31834
31835 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
31836
31837         * rand.c: remove useless warnings.
31838
31839 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
31840
31841         * class.c: implemented ldtoken for methods and fieldrefs.
31842
31843 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31844
31845         * threadpool.c: when mono_async_invoke was called, no one took care of
31846         monitoring the queue. So if the method invoked took some time and we
31847         got new async invoke requests after 500 ms (the thread created waited
31848         that long in WaitForSingleObject), the new async invoke was not called
31849         until the previous one finished.
31850
31851         This is fixed now. Thanks to Totte for helping with it.
31852
31853 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31854
31855         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
31856
31857 2003-08-11  Martin Baulig  <martin@ximian.com>
31858
31859         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
31860
31861 2003-08-06  Martin Baulig  <martin@ximian.com>
31862
31863         * mono-debug-debugger.c: Added support for static fields,
31864         properties and methods.
31865
31866 2003-08-06  Martin Baulig  <martin@ximian.com>
31867
31868         * mono-debug-debugger.c: Don't store the MonoString's vtable to
31869         make this work for applications with multiple application domains.
31870
31871 2003-08-04  Martin Baulig  <martin@ximian.com>
31872
31873         * mono-debug-debugger.c: Completely reworked the type support; the
31874         most important thing is that we're now just using one single
31875         `MonoType' instance per type.
31876
31877 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
31878
31879         * mono-endian.h, mono-endian.c, icall.c: Added icall
31880         ves_icall_System_Double_AssertEndianity to assert double word endianity
31881         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
31882
31883 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
31884
31885         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
31886         support, icalls and fixes.
31887
31888 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
31889
31890         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
31891         classes that are a punctuation character in .NET is not the same a
31892         g_unichar_ispunct.
31893
31894 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
31895
31896         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
31897
31898 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
31899
31900         * icall.c: Add new MemCopy internalcall.
31901         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
31902         Simplified code; It is not necessary to handle all the cases here,
31903         as the C# code takes care of it.  Only handle the case of the name
31904         resource embedded into the assembly.
31905
31906         Changed signature to return the data pointer and the size of the
31907         data. 
31908
31909 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
31910
31911         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
31912         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
31913
31914 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
31915
31916         * socket-io.c: ignore EINTR error in select.
31917
31918 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
31919
31920         * class.h, class.c: removed unused subclasses field in MonoClass.
31921
31922 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
31923
31924         * icall.c: improve fix of get_base_definition(). If the parent class
31925           doesn't have the mehod, look at the parent of the parent.
31926         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
31927           to check if a parameter is an in or out parameter
31928           (PARAM_ATTRIBUTE_IN is not set by default).
31929           mono_method_return_message_restore(): Use mono_class_value_size to
31930           get the size of a value type. mono_type_stack_size (parameterType)
31931           does not return the correct value if parameterType is byRef.
31932           mono_load_remote_field(), mono_load_remote_field_new(),
31933           mono_store_remote_field(), mono_store_remote_field_new():
31934           raise exception if the remote call returns an exception.
31935
31936 2003-07-28  Martin Baulig  <martin@ximian.com>
31937
31938         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
31939         method.  This is a wrapper around mono_runtime_invoke() which
31940         boxes the instance object if neccessary.
31941
31942 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
31943
31944         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
31945         metadata.h, row-indexes.h, verify.c: first cut of generics support.
31946
31947 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
31948
31949         * icall.c: disable mcs bug workaround.
31950
31951 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
31952
31953         * object.c (mono_runtime_class_init): Take the metadata_section
31954         mutex before obtaining the domain mutex.
31955
31956         * appdomain.h: Added definition of metadata_section mutex here. 
31957
31958         * object.c: define metadata_mutex here.
31959
31960 2003-07-24  Ravi Pratap  <ravi@ximian.com>
31961
31962         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
31963         fixed.
31964
31965 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
31966
31967         * reflection.c: Fix bug #46669
31968
31969 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31970
31971         * exception.c:
31972         * exception.h:
31973         * icall.c:
31974         * object.h: fill in the type name for TypeLoadException.
31975
31976 2003-07-23  Ravi Pratap  <ravi@ximian.com>
31977
31978         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
31979         relationship between TypeBuilders while compiling corlib) and bug
31980         45993 (Array types returned from the runtime while compiling
31981         corlib were from the loaded corlib).
31982
31983 2003-07-22  Martin Baulig  <martin@ximian.com>
31984
31985         * mono-debug-debugger.c: Reworked the type support a bit more;
31986         distinguish between types and classes.
31987
31988 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
31989
31990         * icall.c: add IsArrayImpl icall.
31991
31992 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
31993
31994         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
31995         initializing real_size only once. Also fix bug #46602.
31996
31997 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
31998
31999         * object.c: Renamed mono_metadata_section to metadata_section.
32000
32001 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
32002
32003         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
32004           empty array if the type is an array. Fixed.
32005           ves_icall_MonoMethod_get_base_definition: if the base method
32006           is abstract, get the MethodInfo from the list of methods of
32007           the class.
32008         * reflection.c: ParameterInfo.PositionImpl should be zero-based
32009           and it was 1-based. Fixed in mono_param_get_objects.
32010
32011 2003-07-20  Martin Baulig  <martin@ximian.com>
32012
32013         * mono-debug.h: Set version number to 31.
32014         (mono_debug_init): Added `MonoDomain *' argument.
32015
32016         * mono-debug-debugger.c: Reworked the type support; explicitly
32017         tell the debugger about builtin types; pass the `klass' address to
32018         the debugger.
32019
32020 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
32021
32022         * image.c: Allow new metadata tables to be loaded without a
32023         warning. Also update the warning message to give the new constant value.
32024                 
32025 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
32026
32027         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
32028         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
32029         array type representation changes.
32030
32031 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
32032
32033         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
32034         on Environment.Exit () call.
32035
32036 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
32037
32038         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
32039         requires a matching corlib.
32040
32041 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
32042
32043         * Changelog: My editor decided to add a CR to each line. Sorry about that.
32044           Committed again without the CRs.
32045         
32046 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
32047
32048         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
32049           getting it from the "this" socket instance. Did not work
32050           if the socket is a subclass of Socket.
32051           Also fixed bug #35371.
32052
32053 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
32054
32055         * metadata.c: fixed size for TypedByRef.
32056         * loader.c: when searching for a method, consider the vararg amrker.
32057         * unicode.c, decimal.c: constify some arrays.
32058
32059 2003-07-15  Dick Porter  <dick@ximian.com>
32060
32061         * socket-io.c: Fixed compilation for gcc < 3.2.
32062
32063         Fixed compilation for machines that don't have AF_INET6 (thanks to
32064         Bernie Solomon <bernard@ugsolutions.com> for that part.)
32065
32066         Fixed compile warnings.
32067         
32068         Fixed formatting and line endings.
32069
32070 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
32071
32072         * socket-io.h:
32073         * socket-io.c: Added IPv6 support.
32074
32075 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
32076
32077         * class.c (mono_class_is_assignable_from): New function to implement
32078         the is_assignable_from logic. Used by mono_object_isinst, 
32079         Type::IsAssignableFrom () and the interpreter.
32080
32081         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
32082         Object, even interfaces.
32083         
32084         * object.c (mono_object_isinst): Implement in terms of 
32085         is_assignable_from.
32086
32087         * icall.c (ves_icall_type_is_assignable_from): New icall.
32088
32089 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
32090
32091         * domain.c (foreach_domain): fix compiler warning.
32092
32093 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
32094
32095         * image.c (load_metadata_ptrs): use g_strndup because strndup is
32096         not available on all plattforms
32097
32098 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
32099
32100         * image.h image.c: Store the metadata version string in MonoImage.
32101         * icall.c: New icall to retrieve the image version.
32102         * reflection.c (create_dynamic_image): Fill in the image version field
32103         * reflection.c (build_compressed_metadata): Use the image version
32104         from the image structure.
32105
32106 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32107
32108         * appdomain.c: modified comment.
32109         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
32110         That will be its last iteration when mono_gc_cleanup is called from
32111         mono_runtime_cleanup and before the domain is unloaded.
32112
32113         Fixes bug #45962.
32114
32115 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
32116
32117         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
32118         attributes.
32119
32120 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32121
32122         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
32123         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
32124         Bernie Solomon <bernard@ugsolutions.com>.
32125
32126 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
32127
32128         * object.c, object.h: provide mono_object_new_fast() for faster
32129         allocation in some special cases.
32130
32131 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
32132
32133         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
32134         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
32135
32136 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
32137
32138         * threadpool.c: fix leaks.
32139
32140 2003-07-01  Dick Porter  <dick@ximian.com>
32141
32142         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
32143         using MonoGHashTables.  Fixes threadpool bug posted to list.
32144
32145 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
32146
32147         * image.h, image.c: added support to load an assembly from a byte array.
32148         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
32149         assembly bundle support.
32150
32151 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
32152
32153         * threadpool.c (mono_thread_pool_add): keep a reference to the
32154         AsyncResult to prevent GC
32155
32156 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
32157
32158         * class.c: leak fix.
32159
32160 2003-06-25  Dick Porter  <dick@ximian.com>
32161
32162         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
32163         for the async object, the WaitHandle object will close the handle.
32164         Fixes bug 45321.
32165
32166 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
32167
32168         * class.c: in mono_array_class_get (), lookup from the hash with the
32169         same type we insert: this works around a bug in
32170         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
32171         lluis. The real fix will have to wait for after the release.
32172
32173 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
32174
32175         * icall.c: fix memory leak when getting type members.
32176
32177 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
32178
32179         * reflection.c: added more pubtoken special cases.
32180
32181 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
32182
32183         * class.c: handle field offset correctly when class size
32184         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
32185
32186 2003-06-20  Martin Baulig  <martin@ximian.com>
32187
32188         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
32189         *image' field.
32190
32191 2003-06-20  Martin Baulig  <martin@ximian.com>
32192
32193         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
32194
32195 2003-06-20  Martin Baulig  <martin@ximian.com>
32196
32197         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
32198         just distinguish between variables in registers and variables at
32199         an offset relative to a register.
32200
32201 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32202
32203         * icall.c: #ifdef out latest changes until mcs is fixed.
32204
32205 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
32206
32207         * icall.c: return members in metadata order.
32208
32209 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
32210
32211         * icall.c: avoid infinite loop in GetTimeZoneData.
32212
32213 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
32214
32215         * icall.c: added Marshal.Prelink/All icalls.
32216
32217 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
32218
32219         * object.c, object.h: fix warnings and do some overflow checking
32220         when creating arrays.
32221
32222 2003-06-17  Dick Porter  <dick@ximian.com>
32223
32224         * file-io.h:
32225         * file-io.c: File attributes need to be tweaked slightly when
32226         passed from the managed to the w32 world.
32227
32228 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
32229         * profiler.h profiler-private.h profiler.c: Rework last patch
32230         based on suggestion by Paolo.
32231         
32232 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
32233
32234         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
32235         instruction level coverage data collection.
32236         * profiler.h profiler.c (: Added new callback function which can be
32237         used by the profiler to limit which functions should have coverage
32238         instrumentation.
32239         * profiler.c (mono_profiler_load): Call g_module_build_path to
32240         generate the file name of the profiler library.
32241
32242 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
32243
32244         * profiler.c, profiler.h, profiler-private.h: added basic block 
32245         coverage profiling API.
32246
32247 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
32248
32249         * reflection.c (mono_reflection_create_runtime_class): Add support
32250         for events in dynamically generated code.
32251
32252         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
32253         not allocated.
32254
32255 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
32256
32257         * icall.c: when getting timezone info, return reasonable values if we
32258         can't get the actual data.
32259
32260 2003-06-14  Dick Porter  <dick@ximian.com>
32261
32262         * threads.c (start_wrapper): Remove the reference to the thread
32263         object in the TLS data, so the thread object can be finalized.
32264         This won't be reached if the thread threw an uncaught exception,
32265         so those thread handles will stay referenced :-( (This is due to
32266         missing support for scanning thread-specific data in the Boehm GC
32267         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
32268
32269 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
32270
32271         * reflection.c: ensure streams and tables are first allocated with
32272         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
32273
32274 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32275
32276         * icall.c: fixed GetElementType for byrefs (bug# 44792).
32277
32278 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
32279
32280         * reflection.c (mono_reflection_create_runtime_class): Add support for
32281         properties to dynamically created classes.
32282         * reflection.c: Fix a few places where non-MonoObjects were inserted
32283         into the tokens hashtable.
32284
32285 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32286
32287         * object.c: some support to handle out of memory exceptions.
32288
32289 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
32290
32291         * marshal.c (mono_marshal_get_native_wrapper): support reference
32292         return types
32293
32294 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
32295
32296         * object.h, object.c: more portability stuff from Bernie Solomon.
32297         Unexport mono_object_allocate(). Added mono_object_unbox ().
32298         Set exitcode when an unhandled exception is thrown.
32299
32300 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
32301
32302         * marshal.c (mono_marshal_get_native_wrapper): use custom
32303         marshaler for return types.
32304
32305 2003-06-10  Dick Porter  <dick@ximian.com>
32306
32307         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
32308         ip_mreq is available
32309
32310 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
32311
32312         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
32313         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
32314         by Bernie Solomon <bernard@ugsolutions.com>.
32315
32316 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
32317
32318         * gc.c (mono_gc_init): Avoid error message on shutdown when
32319         GC_DONT_GC=1 is used.
32320
32321         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
32322         New icall to return the GUID of a module.
32323
32324 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
32325
32326         * class.c: ensure instance size always includes the parent's size
32327         even whem class size is set explicitly (fixes bug#44294).
32328
32329 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
32330
32331         * profiler.h, profiler.c: made the simple profiler thread-safe,
32332         get more accurate timing info. Allow the loading of an
32333         externally-developed profiler module.
32334
32335 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
32336
32337         * marshal.c (mono_marshal_get_native_wrapper): improved
32338         class/byref arguments.
32339         (mono_marshal_get_native_wrapper): better string marshaling support.
32340
32341 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
32342
32343         * class.c: ensure .pack and .size are handled correctly and
32344         simplified layout of static fields.
32345
32346 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
32347
32348         * appdomain.c
32349         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
32350
32351         * loader.c (mono_lookup_pinvoke_call): look for modules in the
32352         current directory (fix bug 44008)
32353
32354 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
32355
32356         * marshal.c (mono_marshal_get_native_wrapper): started support for
32357         custom marshalers.
32358         (mono_delegate_to_ftnptr): consider marshalling specifications
32359
32360 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
32361
32362         * reflection.c, reflection.h: emit custom marshal info.
32363
32364 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32365
32366         * object.c: free the GError.
32367         * icall.c: added CloseEvent_internal.
32368         * threads.[ch]:
32369         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
32370         call.
32371
32372 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
32373
32374         * loader.c (mono_method_get_signature): Add support for dynamic
32375         assemblies.
32376
32377 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
32378
32379         * reflection.c: fixed bug #43905.
32380
32381 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
32382
32383         * class.c, domain.c, icall.c, metadata.h, object.h: support for
32384         handling TypedReference and ArgIterator.
32385         * loader.c, loader.h: added function to get signature at call site.
32386
32387 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32388
32389         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
32390         data readonly. Buglets and warning fixes. Some MethodSpec support.
32391
32392 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
32393
32394         * class.h, class.c, object.c: remove relative numbering support.
32395
32396 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
32397
32398         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
32399         free the string, until we get a chance to fix Gtk#
32400
32401 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32402
32403         * marshal.c: revert last patch.
32404
32405 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
32406
32407         * icall.c: updates for new mono_class_vtable() not calling
32408         the type constructor anymore.
32409
32410 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
32411
32412         * object.h, object.c: separate vtable creation from type
32413         initialization. Make running the .cctor thread safe.
32414
32415 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
32416
32417         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
32418
32419 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
32420
32421         * loader.c (mono_get_method): consider calling convention
32422
32423 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
32424
32425         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
32426         to return the invisible global type for a module.
32427
32428         * reflection.c (mono_image_build_metadata): Emit global fields too.
32429
32430 2003-05-20  Peter Williams  <peterw@ximian.com>
32431
32432         * loader.c (mono_lookup_internal_call): Add a few newlines.
32433
32434 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
32435
32436         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
32437         literal strings.
32438
32439         * appdomain.c (set_domain_search_path): Recalculate search path when
32440         AppDomainSetup.PrivateBinPath changes.
32441
32442         * object.c (mono_class_compute_gc_descriptor): It turns out some
32443         parts of the class libs (like System.Thread) holds pointers to
32444         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
32445         to treat native int a pointer type here.
32446         
32447 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
32448
32449         * appdomain.h, domain.c: add hashtable for jump target resolution.
32450
32451 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
32452
32453         * reflection.h reflection.c icall.c: Added new icalls 
32454         GetManifestResourceInfoInternal, GetModulesInternal and support
32455         infrastructure.
32456
32457 2003-05-16  Dick Porter  <dick@ximian.com>
32458
32459         * icall.c:
32460         * file-io.h:
32461         * file-io.c: Implement System.IO.MonoIO::GetTempPath
32462
32463 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
32464
32465         * object.c: mono_store_remote_field: little fix to previous patch.
32466
32467 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
32468
32469         * class.c: add constructors to array classes.
32470         * icall.c: special case array construction for InternalInvoke (),
32471
32472 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
32473
32474         * class.h class.c reflection.c object.c: Added support for field
32475         defaults in dynamically generated classes.
32476
32477 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
32478
32479         * reflection.c: properly encode charset for ddlimport.
32480
32481 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
32482
32483         * threads.c: allow compiling without GC.
32484
32485 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
32486
32487         * appdomain.h, object.c, object.h, threads.c, threads.h: added
32488         handling of thread static data.
32489
32490 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
32491
32492         * reflection.h, reflection.c: added mono_custom_attrs_free ().
32493
32494 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
32495
32496         * class.c (mono_array_class_get): always set the serializable flags
32497         (mono_array_class_get): always set the SEALED attribute for array types
32498
32499 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
32500
32501         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
32502         attributes (fix for bug 42021).
32503
32504 2003-05-12  Dick Porter  <dick@ximian.com>
32505
32506         * gc.c: Don't run finalizers when the finalizer thread is
32507         finishing up, because the default domain has already been
32508         destroyed.
32509
32510 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
32511
32512         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
32513         value is null, we should throw an exception.   This is slightly
32514         different than the other conventions used for the constructor.
32515
32516 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32517
32518         * socket-io.c: fixed windows build.
32519
32520 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32521
32522         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
32523
32524 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
32525
32526         * object.c (mono_string_new_wrapper): Compatibility fix for MS
32527         compilers.
32528
32529 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
32530
32531         * class.c (mono_class_layout_fields): Add experimental GC aware
32532         auto layout facility. Requires class library changes to work correctly.
32533
32534         (mono_class_setup_vtable): Avoid overriding explicit interface
32535         method implementations. Fixes iface3.exe test.
32536
32537         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
32538         object reference.
32539         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
32540         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
32541
32542         * metadata.h: Add new type classification macro which determines
32543         whenever the type holds an object reference.
32544
32545 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
32546
32547         * marshal.c (mono_marshal_get_native_wrapper): cleanups
32548
32549 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
32550
32551         * gc.c (finalizer_thread): Work around a GC bug.
32552
32553 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
32554
32555         * marshal.c (emit_struct_conv): allow unions
32556
32557         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
32558
32559 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
32560
32561         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
32562
32563 2003-05-06  Martin Baulig  <martin@ximian.com>
32564
32565         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
32566
32567 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32568
32569         * socket-io.c:
32570         (Select_internal): allow NULLs, don't create arrays if not needed.
32571         Coupled with Socket.cs changes.
32572
32573         * threadpool.c:
32574         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
32575         register a finalizer for it that will close the semaphore handle. This
32576         fixes the leak and make Lupus' test run with > 4080 loops.
32577
32578 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
32579
32580         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
32581         Jerome Laban (bug #42287)
32582
32583 2003-05-02  Martin Baulig  <martin@ximian.com>
32584
32585         * debug-mono-symfile.h
32586         (MonoSymbolFile): Moved declaration into mono-debug.h.
32587         (MonoDebugMethodJitInfo): Likewise.
32588         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
32589         argument.
32590         (_mono_debug_address_from_il_offset): Take a
32591         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
32592
32593         * mono-debug.h
32594         (MonoDebugDomainData): New struct.
32595         (mono_debug_get_domain_data): New function.
32596         (mono_debug_add_method): Take an additional `MonoDomain *'
32597         argument.
32598         (mono_debug_source_location_from_address): Likewise.
32599         (mono_debug_il_offset_from_address): Likewise.
32600         (mono_debug_address_from_il_offset): Likewise.
32601
32602 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
32603
32604         * reflection.c: one more check for null type in custom attrs.
32605
32606 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32607
32608         * reflection.c: avoid warning (comparison is always false due to limited
32609         range of data type).
32610
32611 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32612
32613         * icall.c: throw an exception in Type.GetField if the argument 'name'
32614         is NULL.
32615
32616 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
32617
32618         * reflection.c: fixed handling of enums in named arguments to custom
32619         attributes (bug #42123).
32620
32621 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
32622
32623         * reflection.c: use the right array element type and handle
32624         a null for a Type argument, too.
32625
32626 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
32627
32628         * reflection.c: handle arrays as arguments to custom attributes.
32629
32630 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
32631
32632         * reflection.c: handle a string value in a custom attr
32633         ctor that takes an object.
32634
32635 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
32636
32637         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
32638         (fix bug #42063)
32639
32640 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
32641
32642         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
32643
32644 2003-04-27  Martin Baulig  <martin@ximian.com>
32645
32646         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
32647         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
32648         MONO_DEBUGGER_EVENT_BREAKPOINT.
32649         (mono_breakpoint_trampoline_code): Removed.
32650         (mono_debugger_event_handler): The last argument is now a
32651         `guint32'.
32652         (mono_debugger_insert_breakpoint_full): Removed the
32653         `use_trampoline' argument.
32654         (mono_debugger_method_has_breakpoint): Likewise.
32655         (mono_debugger_trampoline_breakpoint_callback): Renamed to
32656         mono_debugger_breakpoint_callback(); take the method and
32657         breakpoint number as arguments.
32658
32659 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
32660
32661         * metadata.c: fix off by one when loading parameters attributes.
32662
32663 2003-04-24  Martin Baulig  <martin@ximian.com>
32664
32665         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
32666
32667 2003-04-24  Martin Baulig  <martin@ximian.com>
32668
32669         * mono-debug-debugger.c: Moved all code which interacts with the
32670         Mono Debugger here.
32671
32672         * debug-mono-symfile.c: This code now just deals with the symbol
32673         file itself, the debugger code is now in mono-debug-debugger.c.
32674
32675 2003-04-23  Martin Baulig  <martin@ximian.com>
32676
32677         * mono-debug.c (mono_debug_source_location_from_il_offset):
32678         New method; like mono_debug_source_location_from_address(), but
32679         takes an IL offset instead of a machine address.
32680
32681 2003-04-23  Martin Baulig  <martin@ximian.com>
32682
32683         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
32684         `line' field; this is now computed by the debugger.
32685
32686 2003-04-23  Martin Baulig  <martin@ximian.com>
32687
32688         * mono-debug.[ch]: New files.  This is the new debugging interface.
32689
32690         * mono-debug-debugger.[ch]: New files.  Moved all code which
32691         interacts with the Mono Debugger here.
32692
32693 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
32694
32695         * domain.c (mono_init): initialize mono_defaults.monitor_class
32696
32697 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
32698
32699         * reflection.c (method_encode_code): Add a spicy exception to help
32700         future compiler authors.
32701
32702 2003-04-21  Martin Baulig  <martin@ximian.com>
32703
32704         * icall.c
32705         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
32706         Make this work with relative pathnames; g_filename_to_uri() needs
32707         an absolute filename.
32708
32709 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
32710
32711         * icall.c: Track name changes in Object and ValueType.
32712
32713 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
32714
32715         * metadata.c (mono_type_stack_size): size should be a multiple of
32716         sizeof (gpointer)
32717
32718 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32719
32720         * gc.c:
32721         (internal_domain_finalize): moved into mono_domain_finalize. No need
32722         to create another thread because the finalizers will be run in the
32723         finalizer thread.
32724         
32725         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
32726         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
32727         to be run (MS does this too).
32728
32729 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
32730
32731         * object.c (mono_class_compute_gc_descriptor): Update comment.
32732
32733         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
32734
32735         * image.h: Add synchronized wrapper cache.
32736
32737         * image.c (do_mono_image_open): Initialize cache.
32738
32739         * reflection.c (create_dynamic_mono_image): Initialize cache.
32740
32741 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32742
32743         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
32744         ves_icall_System_Buffer_ByteLengthInternal.
32745
32746 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32747
32748         * reflection.c: setup klass->nested_in earlier. Allow
32749         a dash in the assembly name.
32750
32751 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
32752
32753         * metadata.c (mono_type_to_unmanaged): dont access
32754         type->data.klass for MONO_TYPE_OBJECT
32755         (mono_type_to_unmanaged): consider System.Delegate class
32756
32757 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
32758
32759         * class.c: just setup supertypes in the proper place instead of
32760         initializing the full element class for arrays.
32761
32762 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
32763
32764         * class.c: ensure the element class of arrays is initialized.
32765         Setup the supertype info for array classes, too.
32766
32767 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
32768
32769         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
32770
32771 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32772
32773         * Makefile.am: re-added -m option when running cygpath. This way,
32774         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
32775         separator.
32776         * mono-config.c: same codepath for locating mono config file for WIN32
32777         and the rest.
32778         * assembly.c: if mono_assembly_setrootdir is called, don't override
32779         the value set.
32780
32781 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32782
32783         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
32784         MONO_ASSEMBLIES variable.
32785
32786 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
32787
32788         * icall.c: added Assembly::GetNamespaces() icall.
32789
32790 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32791
32792         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
32793
32794 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
32795
32796         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
32797         * object.c: fixed bug in the construction of vtable for proxies
32798
32799 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
32800
32801         * object.c (mono_array_new): Mark mono_array_new as an icall.
32802
32803 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32804
32805         * class.c: fixed test for public method when overriding interfaces.
32806         Closes bug #40970.
32807
32808 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
32809
32810         * appdomain.h, domain.c: added mono_domain_foreach() to
32811         be able to access the currently loaded appdomains.
32812         * object.c: make string interning work across sppdomains.
32813         Mark some functions for use as icalls.
32814
32815 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
32816
32817         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
32818
32819         * reflection.h reflection.c: Allocate long living data using 
32820         GC_MALLOC_ATOMIC so the collector does not need to scan it.
32821
32822         * reflection.c: Double the allocation size in streams instead of
32823         increasing it, to prevent unneccesary copying on large assemblies.
32824         
32825         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
32826         creation if the assembly does not have the Run flag set.
32827
32828 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
32829
32830         * class.h: avoid the C++ keywords in header files (Jerome Laban
32831         spotted and fixed this).
32832
32833 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32834
32835         * object.c:
32836         (mono_unhandled_exception): fill in the arguments for the
32837         UnhandledException event. Only trigger that event for the default
32838         domain (as MS does).
32839
32840 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
32841
32842         * object.c: Improve typed allocation stuff based on suggestions from
32843         Paolo. Also turn it on if the GC library supports it.
32844
32845 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
32846
32847         * object.c object.h class.h: Added experimental typed allocation
32848         facility using the interfaces in gc_gcj.h.
32849
32850         * os/gc_wrapper.h: Added new include files.
32851         
32852 2003-04-03  Martin Baulig  <martin@ximian.com>
32853
32854         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
32855         which is not yet enabled by default.
32856
32857         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
32858         functions.
32859         (mono_gc_lock, mono_gc_unlock): New static functions.
32860
32861         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
32862         functions; stop/start the world for the garbage collector.  This
32863         is using the windows API; we need to complete the SuspendThread()/
32864         ResumeThread() implementation in the io-layer to make this work on Unix.
32865         (mono_gc_push_all_stacks): New public function; tells the garbage
32866         collector about the stack pointers from all managed threads.
32867
32868 2003-04-03  Martin Baulig  <martin@ximian.com>
32869
32870         * object.h (MonoThread): Added `gpointer stack_ptr'.
32871
32872         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
32873
32874 2003-04-03  Martin Baulig  <martin@ximian.com>
32875
32876         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
32877
32878 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
32879
32880         * reflection.c (typebuilder_setup_fields): Initialize field.first and
32881         field.last.
32882
32883 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
32884
32885         * loader.c (mono_lookup_internal_call): Report the corlib that is
32886         out of sync.
32887
32888 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
32889
32890         * icall.c (ves_icall_type_GetTypeCode): fixed check for
32891         System.DBNull (it's class not valuetype).
32892
32893 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
32894
32895         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
32896         if the array method was already assigned a token (fixes bug#40646).
32897
32898 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
32899
32900         * reflection.c (mono_reflection_get_type): Attempt type resolve even
32901         if no assembly is given.
32902
32903 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
32904
32905         * metadata.h: Added the new tables.
32906
32907         * row-indexes.h: Added definitions for new tables.
32908
32909         * metadata.c: Add schemas for new tables, and add support for
32910         computing the sizes of them.
32911
32912         * class.c: Update for handling the new type cases.
32913
32914 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
32915
32916         * metadata.h (MONO_TYPE_IS_VOID): new macro
32917
32918 2003-03-31  Martin Baulig  <martin@ximian.com>
32919
32920         * threads.h (MonoThreadCallbacks): Added `thread_created'.
32921
32922         * threads.c (mono_thread_new_init): Call `thread_created' in the
32923         mono_thread_callbacks.
32924
32925 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
32926
32927         * loader.h: added marshalbyrefobject_class to mono_defaults
32928         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
32929         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
32930           generation of output parameters.
32931           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
32932         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
32933           contextbound and the target object belongs to the context of the caller.
32934         * object.h: added context and unwrapped_server variables in MonoRealProxy.
32935         * object.c: Implemented support for interfaces and abstract classes
32936           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
32937           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
32938
32939 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
32940
32941         * class.h class.c (mono_class_is_subclass_of): New function.
32942         
32943         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
32944         routines for most common case (calls from ArrayList::ToArray).
32945
32946         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
32947         routine so programs which call Environment::Exit() can be profiled.
32948
32949         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
32950         Added MONO_ARCH_SAVE_REGS.
32951
32952         * icall.c (ves_icall_type_is_subtype_of): Use new function.
32953
32954 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
32955
32956         * blob.h: Add a couple of new MonoType types definitions.
32957
32958         * tabledefs.h: Add a couple of new call convs.
32959
32960 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
32961
32962         * reflection.h (MonoReflectionDynamicAssembly): track changes in
32963         the layout of the class.
32964
32965         * reflection.c (alloc_table): double the size on overflow to avoid
32966         unnecessary copying.
32967
32968         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
32969         avoid filling out metadata tables and blobs. Also set mb->ilgen to
32970         null so it can be garbage collected.
32971         
32972 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
32973
32974         * reflection.c (mono_reflection_get_type): Return the resolved type
32975         only if it is in the assembly we searched.
32976
32977         * reflection.c (ensure_runtime_vtable): Initialize method slots.
32978
32979         * class.c (mono_class_setup_vtable): Set the slot of the overriding
32980         method.
32981
32982 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32983
32984         * appdomain.c:
32985         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
32986         the right one is 'file:///blah', but MS allows it.
32987         * assembly.c:
32988         (mono_assembly_open): allow 'file://blah'
32989
32990         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
32991
32992 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
32993
32994         * socket-io.c: fixes bug #40310.
32995
32996 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
32997
32998         * reflection.c (mono_reflection_parse_type): handle deeply nested
32999         types correctly.
33000
33001         * reflection.c (mono_image_create_token): Use unique token values
33002         since they will be put into a hash table.
33003
33004         * class.c (mono_class_setup_vtable): If a method occurs in more than
33005         one place in the vtable, and it gets overriden, then change the
33006         other occurances too.
33007
33008         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
33009         object as return type.
33010
33011 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33012
33013         * icall.c: Deleted "ToString" implementation for double and float
33014         because they are full implemented in managed code.
33015
33016 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33017
33018         * reflection.c, reflection.h: implemented and exported functions
33019         to retrieve info about custom attributes.
33020
33021 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33022
33023         * appdomain.c: moved Uri handling to assembly.c
33024         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
33025         work when using a file Uri in *nix and windows.
33026
33027         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
33028         GetReferencedAssemblies.
33029
33030 2003-03-18  Dick Porter  <dick@ximian.com>
33031
33032         * icall.c: Rename a couple of internal calls
33033
33034         * threads.c: Set the thread state to Stopped when a thread exits.
33035         Fixes bug 39377.
33036
33037 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
33038
33039         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
33040         New icall.
33041
33042         * object.c (mono_class_vtable): fix warning.
33043
33044 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
33045
33046         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
33047
33048         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
33049         memory.
33050         (method_encode_clauses): Create exception info structures in the right
33051         order.
33052         (mono_reflection_setup_internal_class): Initialize supertypes field.
33053
33054         * class.c object.c: Handle interfaces which implement other interfaces 
33055         correctly.
33056
33057         * class.h class.c: Move the supertypes array initialization code into 
33058         a separate function so it can be used for dynamic types too. Also call
33059         it earlier, in mono_class_init(), since it can be used before the
33060         type is initialized.
33061
33062 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33063
33064         * Makefile.am:
33065         * assembly.c:
33066         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
33067
33068         * appdomain.c:
33069         * appdomain.h:
33070         * marshal.c:
33071         * object.c: remove warnings.
33072
33073 2003-03-13  Martin Baulig  <martin@ximian.com>
33074
33075         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
33076         (MonoDebugLexicalBlockEntry): New types.
33077
33078         * debug-mono-symfile.c
33079         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
33080
33081 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33082
33083         * process.c: ret can be any non-zero value accroding to MS doc.
33084
33085 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
33086
33087         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
33088         fixing a warning for a miss-used prototype, would have cause
33089         random memory corruption.
33090
33091 2003-03-07  Martin Baulig  <martin@ximian.com>
33092
33093         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
33094         getting really annoying ....
33095
33096 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
33097
33098         * reflection.c (fixup_method): added support for array methods.
33099
33100 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
33101
33102         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
33103         (pointed out by Michael Adams).
33104
33105 2003-03-04  Dick Porter  <dick@ximian.com>
33106
33107         * icall.c: Temporarily reverted the Double and Single ToString()
33108         change, because it broke nunit.
33109
33110 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
33111
33112         * object.h, threads.h: make include files compatible with C++
33113         (patch by Jerome Laban <jlaban@wanadoo.fr>).
33114
33115 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33116
33117         * icall.c: Erased ToString helper functions for Double and Single.
33118         Now, that implementations ar all in managed code (Double and Single
33119         Formatters).
33120
33121 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
33122
33123         * appdomain.c: Added method for initializing the default context of
33124         a domain. Added internal call for getting the default context.
33125         * appdomain.h: Added context variable in MonoDomain struct.
33126         * domain.c: mono_domain_set also sets the default context of the domain
33127         * icall.c: Mapped internal method InternalGetDefaultContext.
33128         * object.c: mono_object_get_virtual_method returns always a remoting
33129         wrapper if the object is a transparent proxy.
33130         mono_runtime_invoke_array: when creating an object by calling the
33131         constructor, if the created object is a proxy, then the constructor should
33132         be called using the a remoting wrapper.
33133
33134 2003-03-03  Dick Porter  <dick@ximian.com>
33135
33136         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
33137         variable so it compiles on solaris.  Problem spotted by
33138         Christopher Taylor <ct@cs.clemson.edu>
33139
33140 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33141
33142         * appdomain.c:
33143         (get_info_from_assembly_name): don't leak value.
33144
33145         * icall.c:
33146         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
33147         result.
33148
33149 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
33150
33151         * assembly.c: export mono_image_load_references ().
33152         * class.c: handle function pointers. mono_class_from_name() now
33153         supports nested type names directly.
33154
33155 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
33156
33157         * reflection.h reflection.c: Encode already created dynamic methods 
33158         and fields correctly as a DEF instead of a REF.
33159
33160         * reflection.c: Get rid of the force_ref argument to 
33161         mono_image_typedef_or_ref since it was wrong in the first place.
33162
33163         * string-icalls.c: add error checking to string constructors according
33164         to the MSDN docs.
33165
33166         * reflection.c: Emit types in the order their TypeBuilders were 
33167         created. Previously, a new table index was assigned to each type before
33168         the tables were emitted. This was wrong because the signature blob
33169         might already refer to a type by its original table index.
33170
33171 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
33172
33173         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
33174         change.
33175         
33176 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33177
33178         * Makefile.am: make assemblies dir have \ instead of / on windows.
33179
33180 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
33181
33182         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
33183         iterate over the NESTEDCLASS table using a linear search since the
33184         table is not guaranteed to be sorted by the secondary key.
33185
33186         * class.c (mono_class_create_from_typedef): fixed up call to
33187         mono_metadata_nesting_typedef.
33188         
33189 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
33190
33191         * marshal.c (mono_string_to_byvalstr): clear the memory as
33192         suggested by Jerome Laban <jlaban@wanadoo.fr>
33193
33194 2003-02-26  Dick Porter  <dick@ximian.com>
33195
33196         * process.c: Cope with padding in .rsrc blocks
33197
33198 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
33199
33200         * metadata.h: reverted the filter_len change, it breaks reflection
33201         
33202 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
33203
33204         * metadata.h: added a new field to store the filter_len
33205         
33206
33207 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
33208
33209         * reflection.c: handle custom attributes for types and members
33210         created with Reflection.Emit (bug#38422).
33211
33212 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
33213
33214         * reflection.c: define RTSpecialName automatically for constructors for
33215         compatibility with MS.NET.
33216
33217         * reflection.c (mono_reflection_create_runtime_class): initialize
33218         nested_in field of dynamically created classes.
33219
33220 2003-02-22  Martin Baulig  <martin@ximian.com>
33221
33222         * debug-mono-symfile.h: Incremented version number.
33223
33224 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
33225
33226         * object.h icall.c process.c: fix warnings.
33227
33228 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
33229
33230         * appdomain.h appdomain.c:
33231         (mono_domain_try_type_resolve): split the 
33232         name_or_tb argument into a name and a tb argument.
33233         (mono_domain_has_type_resolve): new function to check whenever the
33234         application has registered a TypeResolve event handler.
33235         
33236         * icall.c reflection.h reflection.c: move the type resolve logic into
33237         mono_reflection_get_type () so it will be invoked when 
33238         Assembly::GetType () is called.
33239
33240         * reflection.c:
33241         (mono_reflection_get_type): renamed to get_type_internal.
33242         (mono_reflection_get_type): fixed type name generation so it works 
33243         for nested types too.
33244         (mono_reflection_get_type): call has_type_resolve () to avoid the 
33245         costly type name generation if there is no resolve event handler.
33246
33247 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33248
33249         * class.c, image.c: load exported types from file references.
33250
33251 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
33252
33253         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
33254           used to cache the managed methods used to create proxies and make 
33255           remote invocation of methods.
33256         * class.h: Added in MonoVTable a flag to indicate that a class needs 
33257           to be remotely created.
33258         * object.c: Modified the method mono_class_vtable(). It now initializes 
33259           the remote flag of the vtable. Modified mono_object_new_specific(), 
33260           so now it checks the remote flag.
33261         * icall.c: Added a couple of internal methods, one for enabling instance 
33262           creation interception for a type, and one for creating objects bypassing
33263           the remote check.
33264
33265 2003-02-18  Martin Baulig  <martin@ximian.com>
33266
33267         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
33268         New interncall to get a method's metadata token.
33269
33270         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
33271         New interncall for the debugger.
33272
33273 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
33274
33275         * class.c (mono_class_setup_vtable): allocate supertype array
33276
33277 2003-02-18  Martin Baulig  <martin@ximian.com>
33278
33279         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
33280
33281 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33282
33283         * reflection.c:
33284         (assembly_name_to_aname): jump over unknown properties (i've found
33285         something like: 'type, assembly, version=xxx, custom=null, public...',
33286         so now will ignore custom=null and still get the rest of the values).
33287
33288 2003-02-17  Dick Porter  <dick@ximian.com>
33289
33290         * threads.c: Have Thread.Start() wait for a semaphore to signal
33291         that the thread has set up all its local data.  This fixes bug
33292         34323, where Abort() raced the new thread's TLS data.
33293
33294         Also removes the handle_store() call from start_wrapper, because
33295         threads are now always created suspended and there is no longer a
33296         race between the parent and child threads to store the info.
33297
33298 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
33299
33300         * image.c: explain the #- heap issue in a message, hopefully
33301         avoiding FAQs on mono-list.
33302
33303 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33304
33305         * icall.c:
33306         (GetEntryAssembly): if the domain has not invoked
33307         AppDomain.ExecuteAssembly yet, return the assembly of the default
33308         AppDomain.
33309
33310 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
33311
33312         * class.c (mono_ldtoken): make it work in dynamic assemblies.
33313
33314 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
33315
33316         * metadata.c, reflection.c: simple speedup to type hash
33317         and equals code.
33318
33319 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
33320
33321         * image.c, image.h, class.c, assembly.c: move module loading
33322         to MonoImage. When loading metadata, consider alignemnet from
33323         the start of metadata, not from the metadata address in memory.
33324
33325 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
33326
33327         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
33328         AssemblyBuilder objects. Factored out custom attribute creation into
33329         a separate function.
33330         (create_custom_attr): new function to create custom attributes.
33331
33332 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
33333
33334         * Makefile.am: Got tired of typing the full pathname to pedump.
33335         Until there is another option, am installing this.
33336
33337 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
33338
33339         * class.c (class_compute_field_layout): always set field->parent 
33340         (mono_ldtoken): use mono_defaults.fieldhandle_class;
33341
33342 2003-02-11  Dick Porter  <dick@ximian.com>
33343
33344         * threads-types.h:
33345         * monitor.c: Rewrote Monitor, making lock much faster and
33346         Pulse/Wait work as specified.  Also uses much fewer handles, and only
33347         creates them as needed.
33348
33349         * exception.c: Added SynchronizationLockException
33350
33351         * threads.c: Deleted old Monitor implementation.  The new one is
33352         in a new file.
33353
33354 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
33355
33356         * class.c: handled TypedReference type code. Set the correct size for
33357         class data. Setup interface_offsets for interface classes, too.
33358
33359 2003-02-09  Martin Baulig  <martin@ximian.com>
33360
33361         * debug-mono-symfile.h: Reflect latest symbol writer changes.
33362
33363 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
33364
33365         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
33366         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
33367         * object.c: fixed mono_object_get_virtual_method () for interfaces.
33368         * verify.c: check for code that runs after the end of the method.
33369
33370 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33371
33372         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
33373         "System.Math::Round2".
33374         * sysmath.h: Added Floor, Round and Round2 definitions.
33375         * sysmath.c: Modified certain functions that were not 100% compliant
33376         with MS.NET (math precision) and added the implementation of Floor,
33377         Round and Round2.
33378
33379 2003-02-07  Martin Baulig  <martin@ximian.com>
33380
33381         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
33382
33383 2003-02-07  Martin Baulig  <martin@ximian.com>
33384
33385         * debug-mono-symfile.c: Reflected latest symwriter changes.
33386         (mono_debug_create_mono_symbol_file): Removed.
33387         (mono_debug_open_mono_symbol_file): Take an argument which
33388         specifies whether to create a dynamic symbol file.
33389
33390 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
33391
33392         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
33393
33394 2003-02-05  Martin Baulig  <martin@ximian.com>
33395
33396         * reflection.c (mono_image_build_metadata): Make this public,
33397         protect it against being called multiple times, don't create
33398         resources and don't build the compressed metadata here.
33399         (mono_image_create_pefile): Do this here.
33400
33401         * icall.c
33402         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
33403
33404 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33405
33406         * socket-io.c: fixed bug #36322.
33407
33408 2003-02-06  Piers Haken <piersh@friskit.com>
33409
33410         * appdomain.[ch]:
33411         * class.h:
33412         * debug-mono-symfile.c:
33413         * icall.c:
33414         * loader.c:
33415         * mono-config.c:
33416         * monosn.c:
33417         * reflection.c:
33418         * socket-io.c: warning cleanups
33419
33420 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
33421
33422         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
33423         function. works like remoting invoke, but does a check for the Proxy first.
33424
33425 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
33426
33427         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
33428
33429 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
33430
33431         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
33432         array of pointers.
33433         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
33434         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
33435
33436         * object.c (mono_store_remote_field_new): used by the new jit
33437         instead of mono_store_remote_field
33438         (mono_load_remote_field_new): used by the new jit
33439         instead of mono_load_remote_field
33440
33441 2003-02-05  Patrik Torstensson
33442
33443         * appdomain.c: changed unload to take the domain id instead
33444         of domain
33445         
33446         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
33447
33448
33449 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33450
33451         * appdomain.c: don't look for assemblies in ApplicationBase if
33452         PrivateBinPathProbe is set.
33453
33454 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33455
33456         * object.c: make the first argument in main_args contain the absolute
33457         path to the assembly. Fixes bug #37511.
33458
33459 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33460
33461         * icall.c: get correct UTC offset for countries not using daylight
33462         time saving. Fixes bug #30030.
33463
33464 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33465
33466         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
33467         and 1 are the family).
33468
33469 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
33470
33471         * icall.c (ves_icall_InternalExecute): removed wrong assertion
33472
33473         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
33474
33475 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
33476
33477         * reflection.c: added support for SignatureHelper tokens, which is
33478         needed by the Calli opcode.
33479
33480         * reflection.h: track changes to SignatureHelper class.
33481
33482         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
33483
33484 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33485
33486         * appdomain.c: fixed loading assemblies from PrivateBinPath.
33487
33488 2003-02-03  Patrik Torstensson
33489         * appdomain.[c|h], domain.c : 
33490          - Added support for getting a domain via domain id
33491          - Support for setting and getting domain from System.AppDomain 
33492            (used in cross appdomain channel)
33493          - Added support for get/set for a MonoAppContext on a thread 
33494            (Context class in System.Runtime.Remoting.Contexts),
33495          - Removed hack in Get/SetData and ExecuteAssembly.
33496         
33497         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
33498         the managed world to get control when a proxy is created.
33499
33500         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
33501         
33502 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
33503
33504         * icall.c
33505         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
33506         Populate the codebase field as well.
33507
33508 2003-02-02  Martin Baulig  <martin@ximian.com>
33509
33510         * debug-mono-symfile.c
33511         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
33512         (mono_debug_symfile_add_method): Allow interncalls.
33513
33514 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33515
33516         * icall.c: throw parse exception if strtod fails or the string is empty.
33517
33518 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
33519
33520         * marshal.c: handle object type separately from defined
33521         class types.
33522
33523 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
33524
33525         * marshal.c: handle NATIVE_LPSTR for strings when it's
33526         explicitly specified.
33527
33528 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
33529
33530         * reflection.c, reflection.h, icall.c: setup the reflection
33531         handle cache for ModuleBuilders and AssemblyBuilders.
33532
33533 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
33534
33535         * reflection.c (reflection_methodbuilder_to_mono_method): set
33536         pinvoke flag
33537
33538 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33539
33540         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
33541
33542 2003-01-29  Dick Porter  <dick@ximian.com>
33543
33544         * threads.c: No need for the fake_thread kludge now that Thread
33545         doesn't run a class constructor
33546         
33547 2003-01-29  Dick Porter  <dick@ximian.com>
33548
33549         * threads.c: Use g_direct_hash instead of the rather bogus
33550         g_int_hash
33551
33552 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
33553
33554         * marshal.c (mono_marshal_get_native_wrapper): add check for null
33555         (fix pinvoke12.exe)
33556         (mono_marshal_get_struct_to_ptr): generate valid IL code
33557         (mono_marshal_get_ptr_to_struct): generate valid IL code
33558         (*): correctly set sig->pinvoke, we need to memdup the signature
33559         to do that
33560
33561 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33562
33563         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
33564         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
33565
33566 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
33567
33568         * profiler.c: provide more callers information.
33569
33570 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
33571
33572         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
33573
33574         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
33575
33576         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
33577
33578 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33579
33580         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
33581         exception instead of going into an infinite loop on dates which it 
33582         can't yet handle.
33583
33584         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
33585         out-of-range exception if needed.
33586
33587         * class.c (mono_class_setup_vtable): allow a virtual method to provide
33588         an implementation for an interface method and to override an inherited
33589         method at the same time. 
33590         Imagine a scenario when a virtual method is used to override a
33591         virtual abstract method in a parent class, and this same method 
33592         provides an implementation for an method inherited from an interface. 
33593         In this case, the interface resolution code will set im->slot, which 
33594         means that the virtual method override pass will skip this method 
33595         which means a pointer to the abstract method inherited from the parent
33596         will remain in the vtable of this non-abstract class.
33597
33598         * class.c: (mono_class_setup_vtable): continue search for a real 
33599         method if only an abstract method is found.     
33600
33601 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
33602
33603         * reflection.c: add size to encoding for ByValStr and ByValArray
33604         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
33605
33606 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33607
33608         * class.c (mono_class_setup_vtable): pass the override info as an
33609         argument.
33610
33611         * class.c (mono_class_setup_vtable): set the slot of overriding methods
33612         correctly.
33613         
33614         * reflection.c (ensure_runtime_vtable); add support for method 
33615         overrides.
33616         
33617 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33618
33619         * reflection.c (resolution_scope_from_image): Hack to work to work with
33620         dynamic assemblies.
33621
33622         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
33623         added a 'force_ref' argument to force this function to allways return 
33624         a TypeRef. This is needed by mono_image_get_memberref_token ().
33625         
33626 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33627
33628         * reflection.c (mono_image_get_type_info): interfaces really don't have
33629         a parent.
33630
33631         * reflection.c (mono_image_basic_init): fill out missing fields of
33632         image structure.
33633
33634         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
33635         dynamic assemblies. This is required so dynamic assemblies show up in
33636         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
33637         Type::GetType() etc. This is consistent with MS behaviour.
33638
33639         * image.c image.h reflection.c: add newly created classes to the name 
33640         cache so mono_class_get () will find them.      
33641
33642 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33643
33644         First part of changes to get IKVM.NET running under mono.
33645         
33646         * appdomain.h, appdomain.c: added new function 
33647         mono_domain_try_type_resolve() which will emit TypeResolve events. 
33648         This function will call AppDomain::DoTypeResolve to do the actual work.
33649
33650         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
33651         moved existing code dealing with dynamic tokens to a new function 
33652         called mono_reflection_lookup_dynamic_token (). This function will 
33653         raise TypeResolve events when appropriate. Since reflection.c is not 
33654         part of libmetadata, a new hook function called 
33655         mono_lookup_dynamic_token() is added to class.c which will call this.
33656
33657         * assembly.h assembly.c: make the invoke_load_hook function public,
33658         so it can be called for dynamic assemblies.
33659
33660         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
33661
33662         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
33663         type isn't found.
33664
33665         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
33666         MonoGHashTable, since it contains pointers to objects which the GC 
33667         needs to track.
33668
33669         * assembly.c (search_loaded): remove unused variable.
33670         
33671 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
33672
33673         * object.c: fixed issue exposed by gcc-generated IL programs
33674         that use RVA data for pointers.
33675
33676 2003-01-25  Martin Baulig  <martin@ximian.com>
33677
33678         * threads.c (start_wrapper): Moved the initialization of
33679         `start_func' above the mono_new_thread_init() call to which we
33680         pass it as argument.
33681
33682 2003-01-24  Martin Baulig  <martin@ximian.com>
33683
33684         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
33685         the MonoThread pointer.
33686
33687 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
33688
33689         * icall.c: Rename `PowImpl' to Pow.
33690
33691 2003-01-23  Dick Porter  <dick@ximian.com>
33692
33693         * threads.c (start_wrapper): Create a Thread object if needed, so
33694         the Main() thread can do the class initialisation in a subthread
33695         that has been set up to allow managed code execution.
33696
33697         Pass the thread ID instead of the MonoThread pointer to the thread
33698         start and attach callbacks.  This change is required, because the
33699         jit thread start callback must be called _before_ the Thread
33700         object can be created.
33701         
33702         (mono_thread_init): Removed much object creation code that is no
33703         longer needed.  No managed code is called from here now.
33704
33705         * object.c (mono_runtime_exec_managed_code): Create a subthread
33706         for Main, and call back to the runtime to use it.
33707         Set the exit code when Main exits.
33708
33709         * gc.c: Make sure domain finalisation happens in a subthread.
33710         Re-enable threaded GC, fixing bug 31333 (again).
33711
33712         * environment.c: System.Environment internall calls (so far just
33713         ExitCode is here, the others are still in icall.c)
33714
33715         * appdomain.c (mono_runtime_cleanup): All threads running managed
33716         code should have finished before mono_runtime_cleanup() is
33717         reached, so no need to clean up threads.
33718
33719 2003-01-22  Martin Baulig  <martin@ximian.com>
33720
33721         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
33722         `gpointer func' arguments.      
33723         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
33724         but added `MonoThread *thread' argument.
33725         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
33726
33727         * threads.c (mono_new_thread_init): Added `gpointer func' argument
33728         and pass it to the mono_thread_start_cb callback.
33729         (mono_install_thread_callbacks): New public function to install a
33730         set of callbacks which are set by the debugger.
33731         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
33732
33733 2003-01-22  Martin Baulig  <martin@ximian.com>
33734
33735         * Makefile.am: Install debug-mono-symfile.h.
33736
33737 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
33738
33739         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
33740
33741 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
33742
33743         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
33744         * class.c (mono_ptr_class_get): correctly set access levels of pointers
33745         (mono_array_class_get): correctly set access levels of arrays
33746
33747 2003-01-20      Patrik Torstensson
33748         * image.h (MonoAssemblyName): changed major, minor, build, revision
33749         from signed to unsigned.
33750
33751 2003-01-20  sean kasun <skasun@azstarnet.com>
33752
33753         * reflection.c (load_cattr_value): Now this handles
33754         MONO_TYPE_SZARRAY.  Fixes bug #35629
33755
33756 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
33757
33758         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
33759         integer value
33760
33761 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33762
33763         * decimal.c: fixed bug #26056.
33764
33765 2003-01-17  Martin Baulig  <martin@ximian.com>
33766
33767         * gc.c: Raise an ExecutionEngineException instead of using g_error().
33768
33769 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33770
33771         * exception.[ch]:
33772         (mono_get_exception_type_initialization): new function.
33773
33774         * object.c: throw a TypeInitializationException when an exception is
33775         thrown invoking the class constructor.
33776
33777 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33778
33779         * reflection.c: fixed attribute reading.
33780
33781 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33782
33783         * icall.c:
33784         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
33785         provided, look for the type in the calling assembly and then in
33786         mscorlib; if the assembly name is provided, only try that one.
33787
33788 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
33789
33790         * object.c: register the vtable before there is a chance it's
33791         queried again recursively.
33792
33793 2003-01-13  Duncan Mak  <duncan@ximian.com>
33794
33795         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
33796         gc-internal.h. 
33797         
33798 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
33799
33800         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
33801
33802 2003-01-11  Martin Baulig  <martin@ximian.com>
33803
33804         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
33805         this to 20 for the release.
33806
33807 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
33808
33809         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
33810
33811         * loader.c (mono_method_get_marshal_info): bug fix
33812
33813         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
33814         structures with explicit layout
33815
33816 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
33817
33818         * profiler.c: made the output more readable (and sorted). 
33819         Added caller information for the allocation profiler.
33820
33821 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
33822
33823         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
33824
33825 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33826
33827         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
33828         to get value types.
33829         
33830 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
33831
33832         * object.c, profiler.h, profiler.c, profiler-private.h:
33833         Added object allocation profiler.
33834
33835 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
33836
33837         * reflection.h, reflection.c: handle global methods.
33838         Compress blob entries.
33839
33840 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
33841
33842         * marshal.c: fix compilation.
33843
33844 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
33845
33846         * loader.c (mono_method_get_marshal_info): impl.
33847
33848         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
33849
33850 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33851
33852         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
33853         for reference types.
33854
33855 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
33856
33857         * loader.c: fixed off by one error in loaded parameter names.
33858
33859 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
33860
33861         * marshal.c (mono_marshal_get_icall_wrapper): like
33862         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
33863         instead of a MonoMethod.
33864
33865 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33866
33867         * decimal.c: fixed bug #36537.
33868
33869 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
33870
33871         * marshal.c: throw a missing method exception if a
33872         P/Invoke method is not found.
33873
33874 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
33875
33876         * icall.c: allow a null this for constructors.
33877
33878 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
33879
33880         * icall.c: raise the proper exceptions if the arguments to the
33881         internal Invoke are incorrect.
33882
33883 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
33884
33885         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
33886
33887 2003-01-03  Martin Baulig  <martin@ximian.com>
33888
33889         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
33890
33891 2002-12-31  Martin Baulig  <martin@ximian.com>
33892
33893         * debug-mono-symfile.c: Completely rewrote the type section.
33894         Instead of using individual malloc()ed fields, we use one big
33895         continuous memory area and offsets into this area.
33896         See the comments in the source code for details.
33897
33898 2002-12-30  Martin Baulig  <martin@ximian.com>
33899
33900         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
33901
33902 2002-12-30  Martin Baulig  <martin@ximian.com>
33903
33904         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
33905         line number table in this data blob instead of using an external
33906         pointer.
33907
33908 2002-12-28  Martin Baulig  <martin@ximian.com>
33909
33910         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
33911
33912 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
33913
33914         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
33915         as a boxed return type.
33916
33917 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
33918
33919         * appdomain.c
33920         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
33921         g_build_filename to properly get separators on the filename created.
33922
33923         * object.h: Small change, introduce MonoMarshalByRefObject to
33924         track the layout of that structure in the C# universe as we make
33925         changes there.
33926
33927 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
33928
33929         * object.c: removed assert to allow static fields on interfaces.
33930         * loader.c: a TypeSpec may be used for any type, not just arrays.
33931
33932 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
33933
33934         * class.c, class.h: added mono_class_array_element_size ().
33935         Ignore static methods in interfaces.
33936
33937 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33938
33939         * threads.c: fixed the build under cygwin.
33940
33941 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
33942
33943         * reflection.c: handle nullref constants. Allocate keys for
33944         reflection handles with the GC.
33945
33946 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
33947
33948         * threads.c, threads.h: added mono_thread_get_abort_signal()
33949         to get a suitable signal for thread abort.
33950
33951 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
33952
33953         * metadata.c: fix handling of ExportedType table.
33954
33955 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33956
33957         * icall.c: added WriteWindowsDebugString internal call.
33958
33959 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33960
33961         * reflection.h: added fields to match C# implementation.
33962
33963 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33964
33965         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
33966
33967 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
33968
33969         * gc.h, gc-internal.h: Rename header for GC internal calls to
33970         gc-internal.h from gc.h as to not clash with Boehm GC having its
33971         header installed as <gc.h> in outside include paths.
33972         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
33973         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
33974
33975 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33976
33977         * icall.c: assign minor, build and revision in FillName.
33978
33979 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
33980
33981         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
33982         Added support for running code generated by Reflection.Emit.
33983
33984 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33985
33986         * appdomain.c: check for NULL argument in LoadFrom.
33987
33988 2002-12-10  Dick Porter  <dick@ximian.com>
33989
33990         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
33991
33992 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33993
33994         * appdomain.c: fix buglet when building exe file name.  Handle full
33995         assembly name (needed after latest changes to AssemblyName).
33996         * image.c:
33997         (mono_image_close): free some hashtables.
33998
33999 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
34000
34001         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
34002         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
34003         on some systems (redhat 7.3) 
34004
34005 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
34006
34007         * threads.c: delete the critical section of a sync block,
34008         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
34009
34010 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
34011
34012         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
34013
34014 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34015
34016         * appdomain.[ch]: handle the assembly preload event to try loading the
34017         assemblies using the paths we have in the current domain.
34018
34019         * assembly.[ch]: created an assembly preload hook that is called to try
34020         loading the assembly by other means that the ones provided here.
34021
34022         * domain.c: initialize the domain search path.
34023
34024         From now on, assemblies (TODO: except corlib and System) are loaded
34025         according to these rules when using mono_assembly_load ():
34026
34027                 1. It tries to load the assembly from the ApplicationBase
34028                 of the current domain appending .dll and .exe (TODO: have to
34029                 try loading from name/name.dll and name/name.exe).
34030
34031                 2. It tries the search path specified in PrivateBinPath for the
34032                 current domain (if any).
34033
34034                 3. Previous behavior.
34035
34036 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
34037
34038         * icall.c: implemented GetInterfaceMap() related icall.
34039         * domain.c, loader.h: load MethodInfo in mono_defaults.
34040
34041 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
34042
34043         * gc.c: disable the finalizer thread for now, untill all the issues
34044         with it are resolved.
34045
34046 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
34047
34048         * string-icalls.c: handle embedded nulls in string ctor when the
34049         length is specified.
34050
34051 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
34052
34053         * class.c: look for explicit interface implementation in parent
34054         classes, too.
34055
34056 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
34057
34058         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
34059
34060 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
34061
34062         * gc.c: protect handles with a critical section.
34063
34064 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34065
34066         * icall.c:
34067         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
34068         parameters. If no assembly specified, try getting the type from all
34069         the assemblies in the current domain, else, load the assembly and get
34070         the type from it.
34071
34072 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34073
34074         * marshal.c: applied patch from Aleksey Demakov that fixes
34075         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
34076
34077 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34078
34079         * icall.c: fixed get_location.
34080
34081 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
34082
34083         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
34084         declarations to make it work with older gcc. 
34085
34086         * loader.c (mono_get_method): set signature->pinvoke for native calls
34087
34088 2002-11-20  Dick Porter  <dick@ximian.com>
34089
34090         * threads.c (mono_thread_init): Set the main thread's handle
34091
34092 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
34093
34094         * gc.c: allow compilation without GC support. Changed to match the
34095         mono coding style.
34096
34097 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
34098
34099         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
34100
34101 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
34102
34103         * reflection.c: set a public key token on the core assemblies.
34104
34105 2002-11-18  Dick Porter  <dick@ximian.com>
34106
34107         * threads.c: Split out some thread initialisation so that other
34108         files can set the start callback function.
34109
34110         * gc.c: Run finalisers in a separate thread, to avoid stack
34111         overflow.  Fixes bug 31333.
34112
34113         * appdomain.c: Set up GC finalisation thread.
34114
34115         * reflection.c: 
34116         * object.c: 
34117         * domain.c: Use gc.h macros for GC_malloc
34118         
34119 2002-11-15  Dick Porter  <dick@ximian.com>
34120
34121         * threadpool.c: 
34122         * threads.c:
34123         * appdomain.c: Removed mono_runtime_init_with_attach(),
34124         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
34125         merging the extra parameter with the existing function.  Removed
34126         unneeded code in mono_thread_attach().
34127
34128 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
34129
34130         * image.c (mono_image_loaded_by_guid): a method to get loaded
34131         images by guid. 
34132         (load_metadata_ptrs): we store the guid as string.
34133
34134 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
34135
34136         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
34137
34138         * metadata.c (mono_guid_to_string): imported method form Zoltan
34139         Varga (slightly modified)
34140
34141         * assembly.c (mono_assembly_open): load precompiled code
34142
34143         * loader.h (MonoMethod): we store the method token for use in the
34144         aot compiler. 
34145
34146 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34147
34148         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
34149         the hook function called when an assembly is loaded.
34150         
34151         * domain.c: Modified file.
34152         (mono_domain_assembly_load): removed hash table insertion of assemblies.
34153
34154         Fixes bug #33196.
34155
34156 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
34157
34158         * reflection.c: Map PEFileKind to the value expected by the WinNT
34159         image loader. 
34160
34161 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34162
34163         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
34164         Read until the buffer is filled completely.
34165
34166 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34167
34168         * icall.c: implemented MonoType.InternalGetEvent ().
34169
34170 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34171
34172         * appdomain.c: implemented InitAppDomainSetup. Delayed
34173         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
34174         the entry_assembly.
34175
34176         * assembly.c: base_dir is now an absolute path ending with
34177         G_DIR_SEPARATOR.
34178
34179         * icall.c: modified get_location according to the above changes.
34180
34181         * object.c: init AppDomain.SetupInformation for the default domain after
34182         we have the entry assembly.
34183
34184         * domain.c: when unloading a domain, setup = NULL.
34185
34186 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
34187
34188         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
34189
34190 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
34191
34192         * object.h, object.c: introduced mono_object_get_virtual_method ()
34193         to lookup the method invoked on an object when a callvirt is done on
34194         a method.
34195         * icall.c: make MethodInfo::Invoke() always do a virtual call.
34196
34197 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34198
34199         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
34200         current domain when loaded an assembly and failed to load it.
34201
34202         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
34203
34204 2002-10-31  Dick Porter  <dick@ximian.com>
34205
34206         * icall.c: 
34207         * file-io.h: 
34208         * file-io.c: Return the error status in a parameter, as the
34209         GetLastError() value has long since been blown away if we try and
34210         look it up in a subsequent internal call invocation.  Delete the
34211         GetLastError() internal call, because it's useless.
34212
34213 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
34214
34215         * class.[ch]: added cast_class to fix bug 29517
34216
34217 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
34218
34219         * marshal.c: create valid IL code in the filter clause:
34220         the new JIT is less forgiving:-)
34221
34222 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34223
34224         * icall.c: removed get_property internal call.
34225
34226 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
34227
34228         * appdomain.h domain.c: Added an ID to appdomains.
34229         
34230         * threads.c threads.h icall.c: Implement icall
34231         Thread:GetDomainID(), and remove unused icall 
34232         CurrentThreadDomain_internal.
34233
34234 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34235
34236         * icall.c: Don't recurse through the base types in GetConstructor.
34237         Fixes bug #32063. 
34238
34239 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
34240
34241         * mempool.h, mempool.c: added mono_mempool_empty() and
34242         mono_mempool_stats().
34243
34244 2002-10-23  Dick Porter  <dick@ximian.com>
34245
34246         * file-io.c: 
34247         * file-io.h: 
34248         * icall.c: Added MonoIO.GetFileType internal call
34249
34250 2002-10-17  Dick Porter  <dick@ximian.com>
34251
34252         * appdomain.c (mono_runtime_cleanup): Don't signal the async
34253         delegate semaphore before waiting for all threads to finish,
34254         because new threads can also call async delegates.  Fixes bug
34255         32004.
34256
34257         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
34258         of 3 seconds, in case another async job is queued.  (This part is
34259         needed because the bug fix reintroduced the 3s exit lag.)  This
34260         makes the mono_runtime_shutdown flag superfluous.
34261
34262 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
34263
34264         * reflection.c: include ehader size in method section headers.
34265         Really check for suplicated modules entries.
34266
34267 2002-10-17  Martin Baulig  <martin@gnome.org>
34268
34269         * debug-mono-symfile.c: Added back support for locals.
34270
34271 2002-10-14  Martin Baulig  <martin@gnome.org>
34272
34273         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
34274         MONO_TYPE_VOID.
34275
34276 2002-10-14  Martin Baulig  <martin@gnome.org>
34277
34278         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
34279         mono_class_get() instead of looking in the class cache. 
34280
34281 2002-10-13  Martin Baulig  <martin@gnome.org>
34282
34283         * debug-mono-symfile.c: Set version number to 28, include the
34284         signature in method names.
34285
34286 2002-10-13  Martin Baulig  <martin@gnome.org>
34287
34288         * debug-mono-symfile.h: Set version number to 27.
34289
34290 2002-10-11  Martin Baulig  <martin@gnome.org>
34291
34292         * gc.c: Don't register/unregister NULL pointers as disappearing links.
34293
34294 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
34295
34296         * metadata.c, metadata.h: added helper function to allocate signatures.
34297
34298 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34299
34300         * icall.c: added internal call to get the location of machine.config.
34301
34302 2002-10-08  Martin Baulig  <martin@gnome.org>
34303
34304         * debug-mono-symfile.c: Ignore classes with a pending init for the
34305         moment.
34306
34307 2002-10-03  Dick Porter  <dick@ximian.com>
34308
34309         * threads.c: Freebsd pthread_t is a pointer
34310
34311 2002-10-03  Dick Porter  <dick@ximian.com>
34312
34313         * socket-io.c: Implemented GetHostName_internal
34314
34315 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34316
34317         * mono-config.c:
34318         (mono_config_parse_file): don't leak the text.
34319
34320 2002-10-02  Martin Baulig  <martin@gnome.org>
34321
34322         * debug-mono-symfile.c: Added support for methods.
34323
34324 2002-10-01  Martin Baulig  <martin@gnome.org>
34325
34326         * debug-mono-symfile.c: Don't emit methods and line numbers for
34327         the dynamic symbol file, just write the type table.  We can easily
34328         have an external helper program which creates a symbol file for an
34329         IL file.        
34330
34331 2002-10-01  Dick Porter  <dick@ximian.com>
34332
34333         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
34334         Only add the handle to the cleanup array when we're about to
34335         launch the thread.  Bug 31425 deadlocked when the test was run on
34336         mono under w32.
34337
34338 2002-10-01  Martin Baulig  <martin@gnome.org>
34339
34340         * debug-mono-symfile.c: Added support for properties.
34341
34342 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
34343
34344         * reflection.c: unaligned store fix from Mark Crichton
34345         <crichton@gimp.org>.
34346
34347 2002-09-27  Martin Baulig  <martin@gnome.org>
34348
34349         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
34350         New interncall.
34351
34352 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
34353
34354         * assembly.h, assembly.c: use a sane API to hook into the assembly
34355         loading process instead of a useless special-purpouse hack
34356         (ngen needs a hook, too, for example).
34357
34358 2002-09-27  Dick Porter  <dick@ximian.com>
34359
34360         * threads.c (mono_thread_init): Call GetCurrentProcess() so
34361         io-layer can set up some process handle info.  Not needed on w32,
34362         but doesn't hurt either.
34363
34364         * process.c: Pass the program name in the second parameter to
34365         CreateProcess, so the path is searched.  Include the working
34366         directory. Implemented process name, process enumeration, and some
34367         process detail internal calls.
34368         
34369         * icall.c: Added internal calls for process lookup, and some
34370         process details
34371
34372 2002-09-26  Martin Baulig  <martin@gnome.org>
34373
34374         * assembly.c (mono_install_open_assembly_hook): New global
34375         function to install a function to be invoked each time a new
34376         assembly is loaded.
34377         (mono_assembly_open): Run this callback function if set.
34378
34379         * debug-mono-symfile.c: Put back line numbers for the dynamic
34380         symbol file and also record the .il file as source file.  This
34381         allows us to install the temporary symbol file as `file.dbg' just
34382         like a compiler-generated one.
34383
34384 2002-09-26  Nick Zigarovich <nick@chemlab.org>
34385
34386         * Corrected typo in gc.c (BOHEM vs BOEHM).
34387
34388 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34389
34390         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
34391         GetProperties. Also avoid calling g_slist_length in GetProperties and
34392         GetMethods.
34393
34394 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
34395
34396         * reflection.c: avoid unaligned stores (bug spotted by
34397         Mark Crichton  <crichton@gimp.org>).
34398
34399 2002-09-25  Martin Baulig  <martin@gnome.org>
34400
34401         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
34402         instead of guint64 for addresses and added prologue/epilogue info.
34403
34404 2002-09-25  Martin Baulig  <martin@gnome.org>
34405
34406         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
34407         store line number info.  For the dynamic symbol file, we only need
34408         to provide the JIT generated dynamic line number info for the dynamic
34409         symbol file.
34410
34411 2002-09-25  Martin Baulig  <martin@gnome.org>
34412
34413         * debug-mono-symfile.h: Incremented version number.
34414
34415 2002-09-24  Martin Baulig  <martin@gnome.org>
34416
34417         * class.c (mono_debugger_class_init_func): New global function
34418         pointer variable.
34419         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
34420         call it.
34421
34422         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
34423         function.  This is called via the mono_debugger_class_init_func
34424         hook to add all types to the dynamic type table.
34425         (ves_icall_MonoDebugger_GetType): New interncall to get a class
34426         from its metadata token.
34427
34428         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
34429         New interncall for the debugger.
34430
34431 2002-09-24  Nick Drochak <ndrochak@gol.com>
34432
34433         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
34434         before using it in case it is null.
34435         
34436 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
34437
34438         * metadata.c: allow custom modifiers in local var signatures
34439         (bug spotted by Zoltan Varga).
34440
34441 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
34442
34443         * class.c: deal with the <Module> class that may have a NULL vtable.
34444         Eliminate warnings.
34445
34446 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34447
34448         * image.c, image.h: more strong name helpers.
34449         * monosn.c: more work: convert pem keys to cryptoapi format.
34450
34451 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
34452
34453         * string-icalls.c: speedup IndexOf.
34454
34455 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34456
34457         * icall.c: updates from Zoltan.2.Varga@nokia.com.
34458
34459 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
34460
34461         * icall.c: cleanup: use mono_object_domain ().
34462
34463 2002-09-23  Martin Baulig  <martin@gnome.org>
34464
34465         * debug-mono-symfile.c: Improved type support.
34466
34467 2002-09-22  Martin Baulig  <martin@gnome.org>
34468
34469         * debug-mono-symfile.c: Added support for reference types and strings.
34470
34471 2002-09-22  Martin Baulig  <martin@gnome.org>
34472
34473         * debug-mono-symfile.c: Started to work on the type table.
34474
34475 2002-09-21  Martin Baulig  <martin@gnome.org>
34476
34477         * debug-mono-symfile.c: Largely reworked the symbol table format.
34478         The symbol table is now incrementally updated each time a new
34479         method is added.  We're now also using our own magic and version
34480         so that you don't need to recompile all your classes if the
34481         dynamic table changes.
34482         (mono_debug_update_mono_symbol_file): Removed.
34483         (mono_debug_symfile_add_method): New function to add a method.
34484
34485 2002-09-21  Martin Baulig  <martin@gnome.org>
34486
34487         * icall.c
34488         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
34489         New interncall.
34490
34491         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
34492         New interncall to get a method from its metadata token.
34493
34494 2002-09-21  Martin Baulig  <martin@gnome.org>
34495
34496         * debug-mono-symfile.c: Create type table.
34497
34498 2002-09-20  Martin Baulig  <martin@gnome.org>
34499
34500         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
34501
34502 2002-09-20  Martin Baulig  <martin@gnome.org>
34503
34504         * debug-mono-symfile.c: Provide information about params and locals.
34505
34506 2002-09-20  Martin Baulig  <martin@gnome.org>
34507
34508         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
34509         New interncall.
34510
34511         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
34512         interncall to get a method from its metadata token.
34513
34514 2002-09-20  Martin Baulig  <martin@gnome.org>
34515
34516         * debug-mono-symfile.c: Added a few checks for method->header
34517         being non-NULL.  This should never happen, but for the moment
34518         let's use a g_warning() rather than a g_assert().
34519
34520 2002-09-19  Mark Crichton  <crichton@gimp.org>
34521
34522         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
34523         even if support for it isn't present.  Added an #ifdef to fix this.
34524
34525         * socket-io.c: Added checks back for Solaris support.
34526
34527 2002-09-19  Martin Baulig  <martin@gnome.org>
34528
34529         * debug-mono-symfile.c (read_string, write_string): Reflect latest
34530         changes in the symbol file format.
34531
34532 2002-09-18  Martin Baulig  <martin@gnome.org>
34533
34534         * debug-mono-symfile.c: Set version number to 21.
34535
34536 2002-09-18  Dick Porter  <dick@ximian.com>
34537
34538         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
34539         on netbsd.  Fixes bug 30051.
34540
34541 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34542
34543         * reflection.c:
34544         (set_version_from_string): little fix.
34545
34546 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34547
34548         * monosn.c, Makefile.am: added strong name utility.
34549         * reflection.h, reflection.c: implemented delayed signing,
34550         locale, version and hash id assembly attributes.
34551
34552 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
34553
34554         * loader.c, metadata.c: load param attributes in signatures.
34555
34556 2002-09-16  Martin Baulig  <martin@gnome.org>
34557
34558         * debug-mono-symfile.c: Added string table with all method names.
34559
34560 2002-09-14  Martin Baulig  <martin@gnome.org>
34561
34562         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
34563         fast method lookup.
34564
34565 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
34566
34567         * reflection.c: record the public key token of referenced assemblies.
34568
34569 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
34570
34571         * image.c, image.h: added functions to get the strong name and the
34572         public key of an assembly.
34573         * pedump.c: use them.
34574
34575 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
34576
34577         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
34578
34579 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
34580
34581         * marshal.c (mono_marshal_get_managed_wrapper): Added
34582         MONO_TYPE_BOOLEAN 
34583
34584 2002-09-11  Martin Baulig  <martin@gnome.org>
34585
34586         * gc.c: Call GC_unregister_disappearing_link() on all links when
34587         finalizing them, this is necessary to aviod a crash in boehm's
34588         finalize handler.
34589
34590 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34591
34592         * gc.c: handle GetTarget for finalized objects spotted and fixed by
34593         nick@chemlab.org.
34594
34595 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
34596
34597         * icall.c: implemented MonoType::Module.
34598         * reflection.c, reflection.h: mono_module_get_object () from
34599         Tomi Pakarinen <tomi.pakarinen@welho.com>.
34600
34601 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
34602
34603         * icall.c: ignore overridden methods in GetMethods ().
34604         Fix for FieldInfo::SetValue().
34605         * object.c: handle float/double in runtime invoke.
34606
34607 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
34608
34609         * object.c: allow a constructor to be called again on an object.
34610
34611 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34612
34613         * class.h, class.c: move field layout code to it's own function and
34614         export it. Get an interface id earlier. Move fields in MonoClass
34615         so they are more cache friendly and align the bitfields.
34616         * loader.c: temporary handle get_param_names() for a runtime method.
34617         * reflection.c, reflection.h: more code to handle runtime creation of
34618         types.
34619
34620 2002-09-09  Martin Baulig  <martin@gnome.org>
34621
34622         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
34623         signature with the pinvoke field being set for the actual call.
34624
34625 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
34626
34627         * icall.c: removed some unused icalls. Start of map of glib charsets
34628         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
34629
34630 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
34631
34632         * debug-helpers.c: break infinite loop (found and fixed by
34633         Holger Arnold <harnold@gmx.de>).
34634
34635 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
34636
34637         * icall.c: target may be null in create_delegate.
34638
34639 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34640
34641         * marshal.c: handle a boolean return type.
34642
34643 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34644
34645         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
34646
34647 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
34648
34649         * gc.c: fix weakreferences.
34650
34651 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
34652
34653         * icall.c: added icall to get default codepage.
34654
34655 2002-09-03  Dick Porter  <dick@ximian.com>
34656
34657         * threads.h: 
34658         * threads.c: Use MonoThread instead of MonoObject where
34659         apropriate.
34660
34661         Store running thread objects in a hash table, so that we have all
34662         the info to hand when waiting for them to finish
34663         (means we don't need OpenThread() any more, so mingw builds should
34664         be fully functional again.)
34665
34666         * verify.c:
34667         * object.h: Added thread ID to MonoThread
34668
34669 2002-09-03  Martin Baulig  <martin@gnome.org>
34670
34671         * icall.c (System.Reflection.Assembly::get_location): New interncall.
34672
34673 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34674
34675         * icall.c: fixed leak in get_temp_path. Thanks lupus.
34676
34677 2002-09-03  Martin Baulig  <martin@gnome.org>
34678
34679         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
34680         argument to store the end address of the disassembled instruction.
34681
34682         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
34683         here from debug-symfile.h.
34684         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
34685         JIT into this struct.
34686         (MonoSymbolFile): Added `char *image_file' field.
34687         (MonoDebugGetMethodFunc): Removed.
34688         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
34689         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
34690         (mono_debug_find_method): New method.
34691
34692         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
34693         create a full symbol file.
34694         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
34695         and static symbol files.
34696         (mono_debug_find_method): The symbol file keeps an internal method hash,
34697         call this to get a MonoDebugMethodInfo from a MonoMethod.
34698
34699         * debug-symfile.[ch]: Removed.
34700
34701 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
34702
34703         * image.c (do_mono_image_open): Remove linker version check.
34704
34705 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
34706
34707         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
34708         wrappers for instance methods.
34709         
34710 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34711
34712         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
34713
34714 2002-08-28  Dick Porter  <dick@ximian.com>
34715
34716         * Makefile.am: Export HOST_CC for w32 builds
34717
34718 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
34719
34720         * file-io.c process.c: MonoString are null terminated, no
34721         need for mono_string_to_utf16() anymore.
34722
34723 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
34724
34725         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
34726
34727 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
34728
34729         * icall.c, reflection.h: speedup System.MonoType.
34730
34731 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
34732
34733         * reflection.c: allow null as the value of a string argument in
34734         custom attributes constructors.
34735
34736 2002-08-27  Martin Baulig  <martin@gnome.org>
34737
34738         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
34739         `trampoline_address' field.
34740
34741 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
34742
34743         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
34744         check (fixes bug #29486) 
34745
34746 2002-08-27  Martin Baulig  <martin@gnome.org>
34747
34748         * debug-mono-symfile.c: Changed the file format in a way that allows us
34749         open it read-only and to use a specially malloced area for all the
34750         dynamic data.  We can now also generate a symbol file on-the-fly if we're
34751         debugging IL code and there is no MCS generated symbol file for it.
34752
34753 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
34754
34755         * object.c: added a define for a good string and array
34756         creation speedup (not enabled by default because we need to deal with
34757         the synch stuff).
34758
34759 2002-08-26  Martin Baulig  <martin@gnome.org>
34760
34761         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
34762         function to create a dynamic symbol file.  This is used by the
34763         debugger to create a symbol file for IL code on-the-fly.
34764
34765 2002-08-26  Martin Baulig  <martin@gnome.org>
34766
34767         * loader.c (mono_lookup_pinvoke_call): Include the error message
34768         from g_module_error() in the error message.
34769
34770 2002-08-24  Martin Baulig  <martin@gnome.org>
34771
34772         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
34773         function to update the symbol file.  The symbol file is mmap()ed
34774         writable, but private.  This allows us to install the symbol file
34775         together with the assembly.
34776
34777 2002-08-24  Martin Baulig  <martin@gnome.org>
34778
34779         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
34780         but they can read the new symbol file format which mcs is now creating.
34781
34782         * debug-symfile.c (mono_debug_find_source_location): Moved to
34783         debug-mono-symfile.c; this is now operating on the new symbol file.
34784
34785 2002-08-23  Martin Baulig  <martin@gnome.org>
34786
34787         * debug-helpers.c (mono_method_desc_from_method): New function to get
34788         a MonoMethodDesc from a MonoMethod.
34789
34790 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
34791
34792         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
34793         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
34794
34795 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
34796
34797         * string-icalls.[ch]: make helper methods static.
34798
34799 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34800
34801         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
34802         types to it and to SetValueInternal.
34803
34804         * object.c: Moved handle_enum label to its proper place. This was the
34805         f... bug! ;-)
34806
34807         This time i compiled mcs and gtk-sharp and they both work.
34808
34809 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34810
34811         * icall.c: reverted partially my previous patch until 
34812         object.c:set_value handles enums correcly.
34813
34814 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34815
34816         * icall.c:
34817         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
34818         (ves_icall_System_Environment_get_MachineName): removed warning when
34819         compiling under cygwin.
34820
34821 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
34822
34823         * object.c: fixed field_get_value() for reference types.
34824
34825 2002-08-22  Dick Porter  <dick@ximian.com>
34826
34827         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
34828         Don't free a buffer while it's still needed.  Patch from Jonathan
34829         Liger <Jonathan.liger@wanadoo.fr>
34830
34831 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
34832
34833         * icall.c (ves_icall_System_Environment_get_Platform): Add new
34834         internal call.
34835
34836 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
34837
34838         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
34839         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
34840
34841         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
34842         we call unmanaged code which throws exceptions.
34843
34844 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34845
34846         * appdomain.h: added per-domain entry_assembly.
34847         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
34848         arguments.
34849         * icall.c: Assembly::GetEntryAssembly icall.
34850         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
34851         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
34852
34853 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
34854
34855         * appdomain.h, gc.c: added mono_domain_finalize ().
34856
34857 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34858
34859         * object.c:
34860         (mono_print_unhandled_exception): changed g_warning by g_printerr
34861         because g_log has a 1024 characters limit (yeah, i got a big stack
34862         trace). Don't print exception name, that should be in ToString 
34863         returned string.
34864
34865 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34866
34867         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
34868         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
34869
34870 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34871
34872         * object.c:
34873         (mono_print_unhandled_exception): after previous commit, i realized
34874         that MS calls ToString on the exception. I changed this function to
34875         do that. This way we get stack_trace for free.
34876
34877 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34878
34879         * object.c:
34880         (mono_print_unhandled_exception): invoke Message property instead of
34881         getting 'message' field from Exception. Don't allocate memory for
34882         'trace' and 'message' if not needed.
34883
34884 2002-08-18  Dick Porter  <dick@ximian.com>
34885
34886         * unicode.c: Fix asserts to match Encoder.cs checks
34887
34888 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
34889
34890         * marshal.c: fix unaligned store issue and a few wrong
34891         opcode argument types.
34892
34893 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34894
34895         * icall.c: added GetUninitializedObjectInternal internal call.
34896
34897 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
34898
34899         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
34900         to the right domain.
34901
34902 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
34903
34904         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
34905
34906         * class.c (class_compute_field_layout): set blittable to false for Strings
34907
34908         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
34909
34910 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
34911
34912         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
34913         first chunk of code to create types at runtime. Code to
34914         handle ReflectedType/DeclaringType. Make reflection handles
34915         domain specific.
34916
34917 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
34918
34919         * class.c: set correct name in arrays.
34920
34921 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
34922
34923         * appdomain.c (mono_domain_transfer_object): make it work with
34924         valuetypes. bug fixes.
34925
34926 2002-08-12  Dick Porter  <dick@ximian.com>
34927
34928         * object.h: Rename some parameters to avoid c++ keywords (Patch
34929         from Joseph Wenninger <kde@jowenn.at>)
34930
34931 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
34932
34933         * icall.c: added icall to implement Assembly.GetFile*.
34934
34935 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
34936
34937         * reflection.h, reflection.c: code to embed managed resources.
34938
34939 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
34940
34941         * class.c: move all the type size stuff into
34942         class_compute_field_layout().
34943
34944 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34945
34946         * class.c: ensure enums have always the correct instance size.
34947         * unicode.c: remove wrong assert.
34948
34949 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
34950
34951         * assembly.c: fix mem corruption issue.
34952         * image.h, image.c: added mono_image_get_resource () to access
34953         managed resources.
34954         * icall.c: implemented Assembly.EntryPoint property and some
34955         Managed Resources related internalcalls.
34956
34957
34958 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
34959
34960         * image.c, image.h: impemented mono_image_get_entry_point ().
34961         * appdomain.c: use mono_image_get_entry_point.
34962
34963 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
34964
34965         * reflection.c: support the object type argument when loading
34966         custom attributes.
34967
34968 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
34969
34970         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
34971         String as return type.
34972
34973 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
34974
34975         * reflection.c: fix encoding of named args for custom attrs to match
34976         the ms implementation. Read them back when instantiating custom
34977         attributes.
34978
34979 2002-08-02  Radek Doulik  <rodo@ximian.com>
34980
34981         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
34982         by Dietmar as quick fix
34983         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
34984         16 as stack size, used on more places as quick fix before Dietmar
34985         will fix it properly
34986
34987 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
34988
34989         * object.h, object.c: added accessors for fields and properties.
34990
34991 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
34992
34993         * class.c, class.h: made mono_class_get_field_from_name ()
34994         loop on parent types.
34995         Added mono_class_get_property_from_name ().
34996
34997 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
34998
34999         * class.c, class.h: move the code to setup the type vtable in its own
35000         function so that it can be reused also for types created at runtime.
35001         Eliminate the "class" identifier from the header file.
35002         * reflection.c: setup the vtable for enums so that we can create
35003         objects for use in SetConstant ().
35004
35005 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
35006
35007         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
35008         instead of the delegate itself as this pointer (bug #28383)
35009
35010 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
35011
35012         * marshal.c (mono_marshal_get_managed_wrapper): added return type
35013         conversions.
35014
35015 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35016
35017         * loader.c: don't set the pinvoke bit on icalls.
35018
35019 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
35020
35021         * debug-helpers.c (mono_method_full_name): only print a number to
35022         indicate wrapper type (so that the output is more readable in traces).
35023
35024 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
35025
35026         * class.c (mono_class_init): include method override patch from Paolo
35027
35028 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
35029
35030         * icall.c: fixed GetTypeCode().
35031
35032 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
35033
35034         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
35035         use real delegate invoke function to make it work with multicast
35036         delegates (fix bug# 28291).
35037
35038 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35039
35040         * object.c: load constant strings.
35041
35042 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35043
35044         * reflection.c: no magic numbers.
35045         * tabledefs.h: security action enum.
35046
35047 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35048
35049         * assembly.c: fix possible memory corruption.
35050
35051 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
35052
35053         * reflection.h, reflection.c: added support for linking resources.
35054         * verify.c: check we have an updated corlib.
35055
35056 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
35057
35058         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
35059         string arrays.
35060         (mono_marshal_string_array): null terminate unmanaged string arrays.
35061         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
35062
35063 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35064
35065         * icall.c: Type.GetType () can now return also types from the
35066         calling assembly.
35067
35068 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
35069
35070         * loader.h, loader.c: stack walking support.
35071         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
35072         GetCallingAssembly.
35073
35074 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
35075
35076         * marshal.c: added optimisations for blittable types 
35077
35078         * class.c (mono_array_class_get): do not set blittable attribute on arrays
35079         (mono_class_setup_mono_type): set blittable attribute for single
35080         and double.
35081
35082         * marshal.c (mono_string_utf8_to_builder): impl.
35083         (mono_string_builder_to_utf8): impl.
35084         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
35085
35086 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
35087
35088         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
35089         (mono_marshal_get_managed_wrapper): impl. byref types
35090
35091 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35092
35093         * icall.c:
35094         (search_method): don't display debug message. 
35095
35096 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
35097
35098         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
35099
35100 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
35101
35102         * appdomain.c: set the missing filename when throwing exception.
35103
35104 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
35105
35106         * metadata.c (mono_type_size): code cleanup
35107         (mono_type_stack_size): removed some test code
35108
35109 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
35110
35111         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
35112         mono_get_exception_file_not_found now.
35113
35114         * exception.c (mono_exception_from_name_two_strings): New version
35115         that will call a constructor with two string arguments. 
35116         (mono_get_exception_file_not_found): New helper routine, used to
35117         report file-not-found errors.
35118
35119 2002-07-20  Dick Porter  <dick@ximian.com>
35120
35121         * process.h:
35122         * process.c: Pass file handles to CreateProcess
35123         
35124         * icall.c:
35125         * file-io.h:
35126         * file-io.c: Implemented CreatePipe
35127
35128 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
35129
35130         * metadata.c (mono_get_param_info): set alignment for value types
35131
35132 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35133
35134         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
35135         Constify mono_domain_assembly_open().
35136         * loader.c: handle null namespace in icalls.
35137
35138 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
35139
35140         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
35141         (emit_str_to_ptr_conv): marshal object as structs
35142
35143         * metadata.c (mono_type_to_unmanaged): marshal object as structs
35144
35145         * marshal.c (mono_marshal_get_runtime_invoke): support value types
35146
35147 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
35148
35149         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
35150         (mono_marshal_get_native_wrapper): we an now return value types
35151
35152 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35153
35154         * verify.c: more checks implemented.
35155
35156 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
35157
35158         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
35159         (fix bug #27695)
35160         (mono_marshal_get_native_wrapper): allow byref arguments
35161         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
35162         impl. PtrToStringXXX methods
35163         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
35164         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
35165         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
35166         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
35167         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
35168
35169 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35170
35171         * reflection.c: fix buglet in parsing an assembly name.
35172
35173 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
35174
35175         * marshal.c (emit_ptr_to_str_conv): first impl.
35176
35177 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
35178
35179         * object.c, class.h: cache the vtable in the class as suggested by
35180         vargaz@freemail.hu (Zoltan Varga).
35181
35182 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35183
35184         * class.h, loader.c: added mono_field_from_token().
35185         * verify.c: first cut of type checking code.
35186
35187 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
35188
35189         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
35190
35191 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
35192
35193         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
35194         (fix bug #27782)
35195         (mono_marshal_get_remoting_invoke): impl.
35196         (mono_delegate_begin_invoke): impl.
35197         (mono_mb_emit_save_args): impl.
35198         (mono_delegate_end_invoke): impl.
35199         (mono_marshal_get_delegate_begin_invoke):
35200         (mono_marshal_get_delegate_end_invoke):
35201         (mono_marshal_get_delegate_invoke): generate a special name for
35202         those methods (including the signature) and associate them whith
35203         the delegate class. 
35204
35205 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
35206
35207         * reflection.[ch]: 
35208         (mono_reflection_type_from_name): now it has a MonoImage parameter
35209         which is used as the default image to search the type in. If the image
35210         is NULL or getting the type from it fails, it defaults to corlib.
35211
35212         * icall.c: changed 1 call to mono_reflection_type_from_name to match
35213         new parameter.
35214
35215 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35216
35217         * reflection.c: update the parameter table index.
35218
35219 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35220
35221         * domain.c: don't include the mark byte in the string hash.
35222
35223 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35224
35225         * icall.cs: icall for Type.GetTypeCode ().
35226         * verify: a couple of fixes and disabled local initialization checks.
35227
35228 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
35229
35230         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
35231
35232         * debug-helpers.c (mono_method_full_name): print the type of the
35233         runtime wrapper
35234
35235         * metadata.c (mono_signature_hash): a hash function for signatures
35236         (mono_signature_hash): better hash algorithm
35237
35238         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
35239
35240         * debug-helpers.c (mono_method_full_name): this can now generate
35241         method names with signatures
35242
35243         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
35244         method dont have this pointers.
35245
35246 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
35247
35248         * reflection.c: fixup typebuilder tokens.
35249         * image.c: fix buglet.
35250         * marshal.h: remove whitespace.
35251         * metadata.h, metadata.c: reinstate code that was removed.
35252         * verify.c: handle catch directives and fix another couple of bugs.
35253
35254 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
35255
35256         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
35257         (mono_marshal_get_native_wrapper): make it comp. with the old code
35258         (mono_marshal_get_native_wrapper): support boolean
35259         (mono_marshal_get_managed_wrapper): support more types
35260
35261 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
35262
35263         * class.c (class_compute_field_layout): compute class->blittable attribute.
35264
35265 2002-07-09  Dick Porter  <dick@ximian.com>
35266
35267         * threads.c: Make the thread cleaning up cope with threads that
35268         call ExitThread()
35269
35270 2002-07-08  Radek Doulik  <rodo@ximian.com>
35271
35272         * reflection.c (method_encode_code): use non-translated values to
35273         compute finally_start, this fixes exception handling on ppc, yay!
35274
35275         * decimal.h (struct signscale): fix endianess
35276
35277 2002-07-07  Radek Doulik  <rodo@ximian.com>
35278
35279         * reflection.c: swap box_val and not val
35280
35281 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
35282
35283         * reflection.c, reflection.h: handle full assembly info in type name.
35284         Handle Type arguments when loading custom attributes.
35285         * icall.c: updated to use new mono_reflection_type_from_name () method.
35286
35287 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35288
35289         * loader.c:
35290         (method_from_memberref): also print assembly name when method not found.
35291
35292 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35293
35294         * icall.c:
35295         (ves_icall_TypeGetProperties): fixed bug #27473. 
35296
35297 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35298
35299         * reflection.c: display image name and token when cannot find the
35300         .ctor for an attribute.
35301
35302 2002-07-05  Martin Baulig  <martin@gnome.org>
35303
35304         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
35305
35306 2002-07-04  Dick Porter  <dick@ximian.com>
35307
35308         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
35309         compile on mingw.  This will cause mingw builds to not wait for
35310         subthreads to terminate after the main thread does.  I've lodged a
35311         bug with the mingw developers for them to wrap OpenThread().
35312
35313 2002-07-03  Dick Porter  <dick@ximian.com>
35314
35315         * threads.c: Store thread IDs instead of handles, because
35316         GetCurrentThread() returns a pseudohandle and therefore stores
35317         useless values.  mono_thread_cleanup() continues checking the
35318         array of threads until it is empty, to cope with subthreads
35319         spawning new threads after the main thread has finished.
35320
35321         * profiler.h:
35322         * profiler.c:
35323         * profiler-private.h: Pass the thread ID to thread profiler
35324         functions, instead of a handle
35325
35326 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35327
35328         * verify.c: fixes to make it more usable.
35329         * pedump.c: added --verify code to verify IL code in an assembly.
35330
35331 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35332
35333         * reflection.c: turn errors into warnings to allow compiling corlib.
35334
35335 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
35336
35337         * reflection.c: add special cases to compile corlib.
35338
35339 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35340
35341         * reflection.c: handle properties with only a set method.
35342
35343 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35344
35345         * opcodes.h: add enum with opcodes in opval order.
35346
35347 2002-07-01  Dick Porter  <dick@ximian.com>
35348         
35349         * object.h:
35350         * object.c (mono_runtime_run_main): Removed unneeded argument
35351
35352 2002-06-28  Martin Baulig  <martin@gnome.org>
35353
35354         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
35355
35356 2002-06-27  Dick Porter  <dick@ximian.com>
35357
35358         * threads.c: Store the handle in both the parent thread and in the
35359         subthread, to minimise the time between starting a new thread and
35360         storing its ID.
35361
35362 2002-06-26  Dick Porter  <dick@ximian.com>
35363
35364         * appdomain.c (mono_runtime_cleanup): Close the socket library
35365         after all the threads have finished, not before
35366
35367 2002-06-26  Martin Baulig  <martin@gnome.org>
35368
35369         * debug-symfile.c (mono_debug_find_source_location): Added
35370         `guint32 *line_number' argument.  If it's not NULL, store the line number
35371         there and return the file name without the line number.
35372
35373 2002-06-25  Dick Porter  <dick@ximian.com>
35374
35375         * icall.c:
35376         * process.h:
35377         * process.c: Process forking and other support functions
35378
35379 2002-06-25  Dick Porter  <dick@ximian.com>
35380
35381         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
35382         things dont happen when the image is closed.
35383         (mono_image_lookup_resource): Walk the resource section looking
35384         for a particular entry
35385
35386         * cil-coff.h: PE resource section decoding
35387
35388 2002-06-25  Dick Porter  <dick@ximian.com>
35389         
35390         * assembly.h:
35391         * assembly.c: 
35392         (mono_assembly_foreach): Accessor functions to walk the list of
35393         loaded assemblies
35394         (mono_assembly_set_main):
35395         (mono_assembly_get_main): Process methods need to know which
35396         assembly is the "main" one
35397
35398         * object.c (mono_runtime_run_main): Record the main assembly
35399
35400         * debug-helpers.c: Fix typo
35401
35402 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
35403
35404         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
35405         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
35406
35407 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35408
35409         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
35410
35411 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
35412
35413         * image.c (do_mono_image_open): Initialize reference count,
35414         otherwise we leak the MonoImage.
35415
35416 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
35417
35418         * reflection.c: small tweak to handle self-hosting.
35419
35420 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
35421
35422         * reflection.c: fix type name parse code.
35423
35424 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35425
35426         * reflection.c: break out of the loop.
35427         * image.c: special case corlib.
35428
35429 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35430
35431         * reflection.c: add all the custom attrs at the end to ensure the
35432         ctors have been properly initialized when the attributes are defined
35433         in the current assembly.
35434
35435 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35436
35437         * reflection.c: handle correctly multiple-nested types.
35438
35439 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
35440
35441         * row-indexes.h: fix typos.
35442         * reflection.c: adjust for typos and fix method_def_or_ref
35443         encoding in MethodImpl table.
35444
35445 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35446
35447         * reflection.c: fix entry point patching (thanks Serge!).
35448
35449 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
35450
35451         * verify.c: add check for System.Exception
35452
35453 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35454
35455         * image.c, class.c: minifix for code just c&p'ed.
35456         * reflection.c: warning fix.
35457         * object.h, loader.h, domain.c: load also StringBuilder.
35458
35459 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35460
35461         * marshal.h, marshal.c: some support code to handle complex marshaling.
35462
35463 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35464
35465         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
35466         Better signatures with vtable error dump.
35467
35468 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
35469
35470         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
35471
35472 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
35473
35474         * icall.c (ves_icall_Type_GetField): impl.
35475
35476 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35477
35478         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
35479         to retrieve a marshal description blob for a field or param.
35480
35481 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
35482
35483         * reflection.h, reflection.c: change order of nested type emission
35484         to avoid table corruption. The NestedTypes table is sorted.
35485         * icall.c: change order of GetConstructor results to workaround mcs bug.
35486
35487 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35488
35489         * reflection.h, reflection.c: handle field and param marshal
35490         information.
35491
35492 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35493
35494         * icall.c, marshal.c marshal.h: more Marshal class implementation.
35495
35496 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35497
35498         * reflection.c: fix call convention.
35499
35500 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35501
35502         * reflection.h, reflection.c: mono_image_get_memberref_token()
35503         takes a type instead of a class, now. Added
35504         mono_image_get_array_token() to create tokens for the special
35505         multi-dim array methods.
35506
35507 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
35508
35509         * assembly.c: handle modules (no assembly table). Split
35510         loading references in its own function.
35511         * class.c: handle moduleref resolution scope.
35512         * image.c, image.h: cache module name in image.
35513
35514 2002-06-07  Martin Baulig  <martin@gnome.org>
35515
35516         * reflection.c (mono_image_get_type_info): Only add a class layout entry
35517         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
35518
35519 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35520
35521         * icall.c: more signature fixes that used uint instead of int.
35522
35523 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35524
35525         * reflection.c: fixed signature of field refs.
35526
35527 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35528
35529         * class.c, reflection.c: handle typerefs of nested types
35530         (both on read and when writing files).
35531
35532 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
35533
35534         * icall.c: fix method signatures that tried to workaround the previous
35535         typo, d'oh!
35536
35537 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
35538
35539         * debug-helpers.c: fix typo.
35540
35541 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
35542
35543         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
35544         rewrote the PE/COFF writing code (our programs are understood by the
35545         ms runtime, now).
35546
35547 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
35548
35549         * gc.c, gc.h, icall.c: weakreference support.
35550
35551 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35552
35553         * Makefile.am, mono-config.c: use $(sysconfdir).
35554
35555 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35556
35557         * icall.c: changed default precision of Double.ToString() to 15.
35558         Fixed memory leak. Unified with Single.ToString.
35559
35560 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
35561
35562         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
35563
35564 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
35565
35566         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
35567         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
35568         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
35569         and myself.
35570
35571 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35572
35573         * debug-symfile.c, sysmath.c: yet more compilation fixes.
35574
35575 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35576
35577         * reflection.c, socket-io.c: more compilation fixes.
35578
35579 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35580
35581         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
35582         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
35583         unicode.c: warning and compiler compatibility fixes.
35584
35585 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
35586
35587         * class.h, metadata.c: fixed warnings/compilation errors.
35588
35589 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35590
35591         * Makefile.am, mono-config.c, mono-config.h: configuration file
35592         support routines.
35593         * loader.c, loader.h: make Dll mapping configurable at runtime in the
35594         config file. Export methods to insert and lookup mappings.
35595
35596 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
35597
35598         * reflection.c: handle types and boxed objects in custom attr
35599         constructors.
35600
35601 2002-05-30  Martin Baulig  <martin@gnome.org>
35602
35603         * debug-symfile.c
35604         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
35605
35606 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
35607
35608         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
35609         to lookup the implmap row for a P/Invoke method.
35610         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
35611         P/Invoke method from the runtime on an as needed basis.
35612
35613 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
35614
35615         * metadata.c (mono_metadata_parse_signature): impl.
35616
35617 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35618
35619         * class.c: handle .pack directive.
35620
35621 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
35622
35623         * object.c: initialize static fields with RVA data.
35624
35625 2002-05-25  Martin Baulig  <martin@gnome.org>
35626
35627         * debug-symfile.c
35628         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
35629
35630 2002-05-24  Martin Baulig  <martin@gnome.org>
35631
35632         * debug-symfile.c
35633         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
35634         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
35635         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
35636
35637 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
35638
35639         * object.c: special case string ctros in invoke.
35640         * gc.c: silly whitespace changes.
35641
35642 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
35643
35644         * threadpool.[ch]: impl. a threadpool that can
35645         be used by mint and mono.
35646
35647 2002-05-22  Martin Baulig  <martin@gnome.org>
35648
35649         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
35650         The first argument is now a `MonoReflectionModuleBuilder *', the return
35651         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
35652         `methods' field to get the method builder.  The `token' argument is the
35653         unfixed token.
35654
35655         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
35656         invalid characters instead of g_assert_not_reached()ing.  This seems
35657         to be the behaviour of mscorlib.
35658
35659 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
35660
35661         * object.c (mono_runtime_invoke_array): applied patch from Rachel
35662         Hestilow to fix bug #25104
35663
35664 2002-05-21  Martin Baulig  <martin@gnome.org>
35665
35666         * debug-symfile.c (mono_debug_find_source_location): New function.
35667         Looks up an IL offset in the line number table and returns the source
35668         location as a string.
35669
35670 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35671
35672         * icall.c:
35673         (mono_double_ToStringImpl): changed %f by %g until we have something
35674         better.
35675
35676 2002-05-21  Nick Drochak  <ndrochak@gol.com>
35677
35678         * icall.c : Use different name for Math.Pow's icall.  Needed to check
35679         parameters first in C#.
35680
35681 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35682
35683         * icall.c, reflection.h: added icall to get info about an event.
35684
35685 2002-05-20  Radek Doulik  <rodo@ximian.com>
35686
35687         * object.c (mono_value_box): don't use memcpy for boxing on BIG
35688         endian
35689         (mono_value_box): don't use memcpy for small sizes on
35690         architectures with unaligned access
35691
35692 2002-05-20  Martin Baulig  <martin@gnome.org>
35693
35694         * reflection.c (mono_reflection_setup_internal_class): Don't crash
35695         if `tb->parent == NULL'.
35696         (mono_reflection_create_internal_class): New function.  This is
35697         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
35698         for enum types.
35699
35700         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
35701         New interncall.
35702
35703 2002-05-19  Martin Baulig  <martin@gnome.org>
35704
35705         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
35706         argument to get the length, don't default to the array length.
35707
35708 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
35709
35710         * assembly.c (mono_assembly_setrootdir): New function used to
35711         override the MONO_ASSEMBLIES directory.
35712
35713 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
35714
35715         * icall.c: ValueType_GetHashCode() initialize local var.
35716
35717 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35718
35719         * reflection.c: sort custom attributes table.
35720
35721 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
35722
35723         * reflection.c: support named args in custom attributes (write support).
35724
35725 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
35726
35727         * reflection.c: fix finally position calculation.
35728
35729 2002-05-15  Radek Doulik  <rodo@ximian.com>
35730
35731         * reflection.c: fixed endianess at many places
35732
35733         * icall.c (ves_icall_InitializeArray): comment out debug msg
35734
35735 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
35736
35737         * object.c (mono_unhandled_exception): new function to handle
35738         unhandled exceptions.
35739         (mono_unhandled_exception): call the UnhandledException event.
35740         (mono_runtime_delegate_invoke): impl.
35741
35742 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
35743
35744         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
35745         returns the RVA, not the direct pointer to the data. Handle the case
35746         when the class size is fixed.
35747
35748 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
35749
35750         * reflection.c: fix some endianess issues.
35751
35752 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
35753
35754         * object.c (mono_runtime_invoke): is now able to catch exceptions.
35755
35756         * threads.c (mono_thread_init): added a callback which is invoked
35757         at thread start.
35758
35759 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
35760         
35761         * icall.c: make GetHashCode return non-negative values.
35762
35763 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
35764
35765         * object.c, icall.c, gc.c: revert to address-based hashcode.
35766
35767 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
35768
35769         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
35770
35771 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35772
35773         * icall.c, class.c: special case <Module>.
35774
35775 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
35776
35777         * icall.c: fix bug in GetNow().
35778
35779 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
35780
35781         * object.c (mono_runtime_class_init): make sure that we call all
35782         static class constructors.
35783
35784 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
35785
35786         * reflection.c: sort methodsemantics table.
35787
35788 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
35789
35790         * reflection.h, reflection.c: honour init locals setting.
35791
35792 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
35793
35794         * icall.c: copied Double ToStringImpl for Single ToStringImpl
35795
35796 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
35797
35798         * reflection.c: support ContructorBuilders in attribute blob creation.
35799
35800 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35801
35802         * reflection.c: some changes to build a binary that can be run
35803         directly in windows.
35804
35805 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
35806
35807         * loader.c: print a big message when an icall can't be found.
35808
35809 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35810
35811         * string-icalls.c: fix bug 24248.
35812
35813 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
35814
35815         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
35816         icall.c, reflection.h: separate assembly loading by pathname and by
35817         assembly name. Use the MONO_PATH env var to search for assemblies.
35818
35819 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35820
35821         * assembly.c, image.h: add some support for assemblies
35822         with multiple modules.
35823         * class.c, class.h: export mono_class_from_typeref().
35824         * loader.c: remove duplicated code and use mono_class_from_typeref(),
35825         instead.
35826
35827 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35828
35829         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
35830         documentation says (the ECMA one is correct).
35831
35832 2002-05-02  Dick Porter  <dick@ximian.com>
35833
35834         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
35835         Don't name the synchronisation mutex.
35836
35837 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
35838
35839         * rand.c
35840         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
35841         Make the prototypes match.
35842         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
35843         Same.
35844
35845         * icall.c
35846         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
35847         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
35848         all systems have tm.tm_zone, so use strftime() with %Z to print
35849         the timezone abreviation into a temp string.
35850
35851         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
35852         rather than mono_array_addr() on a MonoString on Big Endian
35853         machines.
35854
35855 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
35856
35857         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
35858         fix bug 24041
35859
35860 2002-04-30  Dick Porter  <dick@ximian.com>
35861
35862         * socket-io.c: Cope with SOCKET being an integer rather than a
35863         pointer now.
35864
35865         * threads.c: Added Thread_free_internal, to deal with thread
35866         handle cleanup.  Moved calls to handle_store() and handle_remove()
35867         to start_wrapper(), so each can only be called once.  Allocate
35868         synchronisation blocks with GC_malloc(), and use GC finalisation
35869         to close the handles.
35870
35871         * icall.c: added System.Threading.Thread::Thread_free_internal
35872
35873 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35874
35875         * icall.c: support Environment.Exit, CommandLineArgs().
35876
35877 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35878
35879         * object.c, object.h: added mono_runtime_run_main () and
35880         mono_runtime_get_main_args () for use in System.Environment.
35881
35882 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35883
35884         * gc.c: fix thinko, enable actual finalization since the jit is now
35885         fixed.
35886
35887 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35888
35889         * gc.c, object.c: take into account that an object may be offset wrt the address
35890         returned by GC_malloc().
35891
35892 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
35893
35894         * image.c: handle files without entries in the assembly table (modules).
35895
35896 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
35897
35898         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
35899         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
35900         allowed to be null when it's System.Object class setup.
35901
35902 2002-04-27  Martin Baulig  <martin@gnome.org>
35903
35904         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
35905         if `tb->parent == NULL' rather than crashing.
35906
35907 2002-04-28  Nick Drochak  <ndrochak@gol.com>
35908
35909         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
35910         calling acos() where asin() should have been called.
35911
35912 2002-04-26  Martin Baulig  <martin@gnome.org>
35913
35914         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
35915         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
35916         there's a subdirectory called `System', but we don't want to read that
35917         subdirectory as an assembly.
35918
35919 2002-04-25  Martin Baulig  <martin@gnome.org>
35920
35921         * debug-symfile.c: Reflect latest MonoString changes.
35922
35923 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
35924
35925         * rand.c, rand.h: instance method icalls need to have an explicit
35926         this pointer as first argument in the C implementation.
35927
35928 2002-04-25  Nick Drochak <ndrochak@gol.com>
35929
35930         * icall.c: Fix typo in map for GetNonZeroBytes
35931
35932 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
35933
35934         * string-icalls.c : String does now passes unit tests without any 
35935         errors, the following changes has been made:
35936         
35937         Implemented replace methods.
35938         Renaming of methods to (try) follow the standard.
35939         Fixed compare ordinal
35940         Made all memory allocated directly to function instead of via icall function.
35941         Small performance fix in is_in_array function
35942                         
35943  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
35944
35945         c (mono_string_Internal_ctor_charp_int_int):
35946         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
35947         sindex < 0, throw ArgumentOutOfRangeException instead of
35948         ArgumentNullException.
35949
35950         Added new check for length == 0, however
35951         I need to make it return String.Empty from the C code.
35952         
35953         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
35954         that calculate the length for us here.
35955         
35956         (mono_string_Internal_ctor_sbytep_int_int): Replaced
35957         mono_string_new_utf16 with mono_string_new, since value is utf8.
35958
35959 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35960
35961         * object.c: register the object for finalization if needed.
35962         Allocate one more char in the string for the terminating 0 char.
35963
35964 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35965
35966         * class.c, class.h, image.c: check if a type implemenst a destructor.
35967         Use the proper key for array class lookups.
35968         * icall.c: register the icalls in the System.GC class.
35969         * gc.c, gc.h: GC-related functions and icalls.
35970
35971 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35972
35973         * icall.c:
35974         * socket-io.c:
35975         * unicode.c: free some strings gotten from mono_string_to_utf8 and
35976         changed a couple of free () by g_free ().
35977
35978         * decimal.c: one-liner in the comments for decimal2string ().
35979
35980 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
35981
35982         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
35983
35984 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
35985
35986         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
35987         * object.c (mono_runtime_invoke_array) : handle null in params
35988
35989 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
35990
35991         * string-icalls.c: fixed bug in split (one off bug)
35992
35993 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
35994
35995         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
35996         * icalls.c: added String::Equals as internal method
35997
35998 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
35999
36000         * threads.c: fixed bug in the double interlocked functions
36001
36002 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
36003
36004         * threads.c: implemented all of the new interlocked icalls.
36005         * string-icalls.c: fix a bug in insert.
36006         * icalls.c: added the icalls for interlocked, removed old string functions.
36007         
36008 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
36009
36010         * loader.c: fix off-by-one error when reading argument names.
36011
36012 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36013
36014         * profiler.c: win32 counter implementation (untested).
36015         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
36016         (the latter needs testing and more complete impl. from win32 folks).
36017
36018 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
36019
36020         * object.c: mono_array_new_full workaround mono_array_class_get
36021         problem.
36022
36023 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36024
36025         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
36026         * object.h (mono_string_chars): Changed casting type.
36027
36028 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36029
36030         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
36031                            method signatures to use gunichar2 instead of gint16.
36032
36033 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
36034
36035         * object.h, object.c: domain-specific versions of mono_object_new and
36036         mono_array_new.
36037
36038 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
36039
36040         * object.c: changed String layout
36041
36042         * string-icalls.c (mono_string_Internal_ctor_chara): added
36043         internal string constructors.
36044
36045 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
36046
36047         * threads.c: pass 'this' to the thread start routine.
36048
36049 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36050
36051         * string-icalls.c: fix IndexOf and LastIndexOf. Now
36052         InternalCompareStr don't call twice mono_string_cmp_char for the last
36053         character. Improved performance in mono_string_cmp_char.
36054
36055 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
36056
36057         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
36058         code into its own library: libmonoruntime.
36059
36060 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
36061
36062         * object.h, object.c: changed array format so that szarrays do not
36063         require a bounds structure.
36064         * icall.c, appdomain.c: support for new szarray format.
36065
36066 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
36067
36068         * metadata.c: compare also the retuns type when comparing signatures:
36069         we didn't do this as an optimization since really overloaded methods
36070         must differ also in the arguments, but this doesn't work with
36071         low-level IL code (or when using explicit conversion operators: see
36072         bug#23498 for an example).
36073
36074 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
36075
36076         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
36077
36078 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
36079
36080         * icall.c: make MonoType::GetElementType its own icall.
36081
36082 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
36083
36084         * icall.c: remove MonoMethod_get_Name().
36085         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
36086         object.
36087
36088 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36089
36090         * string-icalls.c: optimized a few methods.
36091
36092 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36093
36094         * icall.c: added all new string internal calls
36095         * string-icalls.c: added, new string internal call implementation.
36096         * object.c: added mono_string_new_size for allocating a string a size
36097
36098 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
36099
36100         * object.c (mono_object_isinst): use the same code as in the
36101         optimized x86 version.
36102
36103 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
36104
36105         * profiler.c: TSC-based timer code (faster and more accurate).
36106         Not hooked up in configure, yet (set USE_X86TSC to 1).
36107
36108 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
36109
36110         * profiler.c, profiler.h: track time spent compiling methods.
36111         * threads.c: track thread creation/destruction.
36112
36113 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
36114
36115         * profiler.c, profiler.h, profiler-private.h: profiling interface
36116         and sample implementation. Moved here so that it can be used also by
36117         the jit.
36118
36119 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
36120
36121         * reflection.c, reflection.h: keep types and other handles separate in
36122         the hash tables for referred tokens. Add guid for modules.
36123
36124 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
36125
36126         * assembly.c: fix bugs found with valgrind.
36127         * metadata.h, metadata.c: added mono_metadata_guid_heap().
36128
36129 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
36130
36131         * threads: added icall support for getting current domain for
36132                    the thread.
36133  
36134 2002-04-13  Martin Baulig  <martin@gnome.org>
36135
36136         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
36137         (MonoDebugVarInfo): Added `index' field for register based addresses.
36138         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
36139         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
36140         `MonoDebugVarInfo *params' and `guint32 this_offset' with
36141         `MonoDebugVarInfo *this_var'.
36142
36143         * debug-symfile.c (relocate_variable): New static function to write
36144         a location description for a local variable or method parameter.
36145
36146 2002-04-12  Martin Baulig  <martin@gnome.org>
36147
36148         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
36149         stack offset and begin/end scope address of a local variable.
36150         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
36151         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
36152         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
36153
36154         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
36155         Added new relocation types for start/end scope of a local variable.
36156
36157 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
36158
36159         * object.h: add mono_object_domain() macro.
36160         * reflection.c: handle typespecs.
36161         * icall.c: MonoMethod::get_Name() implementation.
36162
36163 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36164
36165         * icall.c: String::GetHashCode() icall implementation.
36166
36167 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
36168
36169         * icall.c: String::IndexOfAny icall.
36170         * object.c, object.h: make array->max_length more useful.
36171         Intrduced mono_object_class() and mono_string_length() macros.
36172
36173 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36174
36175         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
36176         instead of g_unichar_isdigit.
36177
36178 2002-04-11  Nick Drochak  <ndrochak@gol.com>
36179
36180         * icall.c: Implement a simple Double.ToString().
36181
36182 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
36183
36184         * appdomain.h: only io-layer.h is supposed to be included.
36185         * icall.c: explicitly import environ. Fix warning.
36186
36187 2002-04-10  Nick Drochak  <ndrochak@gol.com>
36188
36189         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
36190                 return true even if it's not Daylight Savings time.
36191                 Only return false for the case where the function isn't
36192                 implemented for a plaform (read Windows).
36193
36194 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
36195
36196         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
36197         data with a mutex.
36198
36199 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
36200
36201         * mempool.c (mono_mempool_alloc): only use g_malloc when
36202         absolutely necessary.
36203
36204 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
36205
36206         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
36207
36208         * class.c (mono_class_vtable): use domain mempool to allocate vtable
36209         (mono_class_proxy_vtable): use domain mempool
36210
36211 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
36212
36213         * appdomain.h, appdomain.c: split initialization that requires the
36214         execution engine support into mono_runtime_init().
36215
36216 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
36217
36218         * class.c (mono_class_init): don't include vtable inside MonoClass
36219         to save some memory, gather some statistics.
36220         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
36221
36222 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
36223
36224         * icall.c: internalcall implementation for ValueType.Equals().
36225
36226 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
36227
36228         * object.c (mono_message_init): moved 
36229         (mono_runtime_exec_main): new arch. independent impl.
36230         (mono_runtime_invoke_array): new method - like
36231         mono_runtime_invoke, but you can pass an array of objects.
36232         (mono_remoting_invoke): new arch. independent impl.
36233         (mono_message_invoke): new arch. independent impl.
36234         (mono_runtime_class_init): new arch. independent impl.
36235         (mono_runtime_object_init): new arch. independent impl.
36236
36237 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36238
36239         * metadata.c, object.c, reflection.c: documented the exported
36240         functions.
36241
36242 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
36243
36244         * icall.c: simpler code to pass the assembly builder data to corlib.
36245         Implement GetNestedTypes() internalcall.
36246
36247 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
36248
36249         * class.c: warn if a type can't be loaded.
36250
36251 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
36252
36253         * image.h: typedef MonoImageOpenStatus
36254         * types.h: removed unused file
36255         
36256 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
36257
36258         * icall.c: Enum_ToObject accepts enum value arguments.
36259
36260 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
36261
36262         * class.c: move initialization of properties, events and nested
36263         classes, so that they happen for interfaces, too.
36264
36265 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
36266
36267         * icall.c: cleanup some ugly casts in Array_SetValue*.
36268
36269 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
36270
36271         * icall.c: the values array fro enums is of the correct type, now.
36272         Implement (correctly) getFullName instead of assQualifiedName for
36273         MonoType.
36274         * reflection.h, reflection.c: added mono_type_get_name ().
36275
36276 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
36277
36278         * assembly.c, image.h: for each MonoImage, record from wich assembly
36279         it was loaded.
36280         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
36281         Make Type.Assembly work.
36282
36283 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
36284
36285         * debug-symfile.h: use char* instead of gpointer to avoid
36286         unnecessary casts.
36287
36288         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
36289
36290         * icall.c (ves_icall_InternalExecute): impl. FielSetter
36291         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
36292
36293 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
36294
36295         * icall.c (mono_message_init): impl. (code cleanup)
36296         (ves_icall_InternalExecute): impl. FieldGetter
36297
36298         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
36299         defined we call all (non-static)methods through the vtable. 
36300
36301 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
36302
36303         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
36304         finalizer even though the memory is still referenced (and the chunk of
36305         memory is not freed).
36306
36307 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
36308
36309         * assembly.c: fix brokeness.
36310
36311 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
36312
36313         * class.c: kill some warnings. Check explicit interface method
36314         implementation also without considering the namespace.
36315         Load also literal strings in static class data.
36316
36317 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
36318
36319         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
36320         (default_assembly_name_resolver): Make the resolver take the
36321         "base" directory where the assembly was originally defined, so we
36322         can load DLLs that are in the same directory as the assembly that
36323         is being referenced.
36324
36325 2002-03-28  Dick Porter  <dick@ximian.com>
36326
36327         * file-io.h: 
36328         * file-io.c:
36329         * socket-io.c: 
36330         * unicode.h: 
36331         * unicode.c: Warning cleanups
36332
36333 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
36334
36335         * object.h, reflection.h: use the correct type instead of MonoObject.
36336
36337 2002-03-28  Martin Baulig  <martin@gnome.org>
36338
36339         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
36340         (mono_debug_update_symbol_file): Initialize classes if necessary.
36341
36342 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
36343
36344         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
36345         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
36346
36347 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
36348
36349         * assembly.h: fix function prototype.
36350         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
36351         * mono-endian.h: use const cast.
36352
36353 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
36354
36355         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
36356
36357 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
36358
36359         * loader.c: don't assert when a typeref can't be loaded, give
36360         a chance to the runtime to trow an exception instead.
36361         * loader.h: fix warning.
36362
36363 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
36364
36365         * class.c (mono_class_proxy_vtable): added proxy support
36366
36367 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
36368
36369         * icall.c: removed last of PAL calls, added System.Environment
36370         * file-io.h, file-io.c: MonoIO implementation
36371         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
36372
36373 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
36374
36375         * appdomain.c: do not use the byte marker in ldstr table lookup.
36376         * debug-helpers.c: allow two ':' to separate class and method name.
36377         * object.c: allocate arrays bounds with the GC, too.
36378         * verify: add a few more checks.
36379
36380 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
36381
36382         * reflection.c: output also literal strings. Allocate parameter data
36383         with GC_malloc() (thanks, Martin, for catching this!).
36384
36385 2002-03-26  Martin Baulig  <martin@gnome.org>
36386
36387         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
36388         include the `this' offset in the `param_offsets'.
36389
36390 2002-03-25  Martin Baulig  <martin@gnome.org>
36391
36392         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
36393         mono_debug_get_class() function to get the classes. Added new
36394         relocation types for arrays and strings.
36395         (mono_debug_get_class): New static function to search in all
36396         referenced assemblies for a metadata token.
36397
36398         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
36399
36400 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
36401
36402         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
36403         hold gc-allocated objects. Make the string heap a stream like the
36404         others. Removed duplicated code when writing stream info.
36405         Added asserts to catch possible buffer overflows. Set the sorted map
36406         for tables that need sorting. Added some documentation.
36407
36408 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
36409
36410         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
36411         for interned strings and vtables.
36412
36413 2002-03-24  Martin Baulig  <martin@gnome.org>
36414
36415         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
36416         it in the array since it was created with g_slist_prepend().
36417
36418 2002-03-24  Martin Baulig  <martin@gnome.org>
36419
36420         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
36421         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
36422         (mono_debug_method_from_token): Renamed to
36423         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
36424         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
36425
36426         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
36427         relocation types.
36428
36429         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
36430
36431 2002-03-24  Martin Baulig  <martin@gnome.org>
36432
36433         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
36434         (mono_debug_method_from_token): New func.
36435
36436         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
36437         New interncall, calls mono_debug_local_type_from_signature().
36438         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
36439         calls mono_debug_method_from_token().
36440
36441 2002-03-23  Martin Baulig  <martin@gnome.org>
36442
36443         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
36444         specifies the number of bytes to be converted, not the array size.
36445         Return the number of chars, not the number of bytes.
36446         (ves_icall_iconv_get_chars): The `byteCount' argument
36447         specifies the number of bytes to be converted, not the array size.
36448
36449 2002-03-23  Martin Baulig  <martin@gnome.org>
36450
36451         * reflection.h (MonoReflectionSigHelper): New type.
36452
36453         * reflection.c (mono_reflection_sighelper_get_signature_local),
36454         (mono_reflection_sighelper_get_signature_local): New functions.
36455
36456         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
36457         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
36458         interncalls.
36459
36460 2002-03-23  Martin Baulig  <martin@gnome.org>
36461
36462         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
36463         is_writeable is set.
36464         (mono_raw_buffer_update): New function to write the modified map
36465         back to disk.
36466
36467         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
36468
36469         * debug-symfile.c (mono_debug_update_symbol_file): Call
36470         mono_raw_buffer_update() when done writing.
36471
36472 2002-03-23  Martin Baulig  <martin@gnome.org>
36473
36474         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
36475
36476         * debug-symfile.c: Added support for arguments and local variables.
36477
36478 2002-03-23  Dick Porter  <dick@ximian.com>
36479
36480         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
36481         protected by ifdefs, hence breaking the w32 build.
36482
36483 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36484
36485         * object.c: implement is_interned() the right way.
36486
36487 2002-03-21  Martin Baulig  <martin@gnome.org>
36488
36489         * debug-symfile.[ch]: New files to handle debugging information
36490         files. There's also support to dynamically update these symbol
36491         files to include machine dependent information.
36492
36493 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
36494
36495         * threads.c (mono_thread_create): new function to create thread
36496         from C
36497
36498 2002-03-20  Martin Baulig  <martin@gnome.org>
36499
36500         * icall.c (ves_icall_InternalInvoke): Create a new object if the
36501         method is a constructor.
36502         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
36503         points to ves_icall_InternalInvoke().
36504
36505 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
36506
36507         * file-io.c: Flush shouldn't throw exceptions.
36508
36509 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
36510
36511         * file-io.c: FileStream flush support; FileSetLength now
36512         restores file pointer.
36513
36514 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
36515
36516         * class.c: set image for pointer classes.
36517
36518 2002/03/19  Nick Drochak <ndrochak@gol.com>
36519
36520         * sysmath.c: Forgot one.
36521
36522 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
36523
36524         * sysmath.c: Avoid redefining existing names.
36525
36526 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
36527
36528         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
36529         handled by runtime as icall rather than dllimport from libm.so
36530         * file-io.c, file-io.h: fixed handle argument type.
36531
36532 2002-03-18  Dick Porter  <dick@ximian.com>
36533
36534         * reflection.c (mono_image_get_type_info): rename interface to
36535         iface, because of "#define interface struct" on windows.
36536
36537 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
36538
36539         * class.c, class.h: rename and export mono_ptr_class_get().
36540         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
36541         * reflection.c, reflection.h, icall.c: better/saner type name
36542         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
36543         method signatures.
36544
36545 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
36546
36547         * class.c (mono_class_init): removed hardcoded GHC_SLOT
36548
36549         * icall.c (ves_icall_InternalInvoke): impl.
36550
36551 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
36552
36553         * reflection.c: output the interface map table, too.
36554
36555 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
36556
36557         * class.c (class_compute_field_layout): separate computation of 
36558         static field layout
36559
36560 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
36561
36562         * icall.c: added System.Buffer support.
36563         * file-io.c: moved file icalls from PAL to FileStream.
36564
36565 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
36566
36567         * icall.c (ves_icall_System_Object_GetHashCode): impl.
36568
36569 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
36570
36571         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
36572
36573 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
36574
36575         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
36576
36577 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
36578
36579         * debug-helpers.{c,h}: moved here from monograph some useful functions
36580         to locate a method by name/signature in a class or image. Included
36581         also a small and flexible IL disassembler.
36582
36583 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36584
36585         * reflection.c: fixup tokens in methods with small header size, too.
36586
36587 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
36588
36589         * object.c (mono_string_to_utf8): remove assert(!error), instead
36590         print a warning. 
36591
36592 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
36593
36594         * icall.c: update to the new mono_Array_class_get interface.
36595
36596 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
36597
36598         * appdomain.c, object.c: Boehm-GC enable.
36599         * icall.c: make get_data_chunk() support split data requests.
36600         Ensure a class is initialized in more cases. Return only the first
36601         property found in GetProperties() or the compiler gets confused. 
36602         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
36603         * reflection.h, reflection.c: add fixup mechanism for field and method
36604         tokens. Initialize assembly->typeref in a single place. Output
36605         properties after events. Support custom attributes for events, too.
36606         Typo fix for paramter custom attrs.
36607
36608 2002-03-07  Martin Baulig  <martin@gnome.org>
36609
36610         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
36611
36612 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
36613
36614         * class.c (mono_array_class_get): fix. for multi. dim. arrays
36615
36616 2002-03-06  Martin Baulig  <martin@gnome.org>
36617
36618         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
36619         non-zero lower bounds. See testcases #F10-#F13.
36620
36621 2002-03-05  Martin Baulig  <martin@gnome.org>
36622
36623         * exception.c (mono_get_exception_argument_out_of_range): New exception.
36624
36625         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
36626         ves_icall_System_Array_GetValue(), only calculate the absolute array position
36627         here.
36628         (ves_icall_System_Array_SetValue): Likewise.
36629         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
36630         as argument and does the actual work. This function is used when copying a
36631         multi-dimensional array.
36632         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
36633         now do all the widening conversions of value types.
36634         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
36635
36636 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36637
36638         * class.c: remove some magic numbers and use the smbolic names,
36639         instead. Added init_events() to load event info at class init time.
36640         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
36641         and mono_metadata_methods_from_event().
36642         * reflection.h, reflection.c: added support for writing out the evnets
36643         related information.
36644
36645 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
36646
36647         * reflection.h, icall.c: use a different method (GetInterfaces)
36648         to gather interface info and add isbyref, isprimitive and
36649         ispointer to the ves_icall_get_type_info() return value.
36650
36651 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
36652
36653         * class.h: stared adding support for events.
36654         * icall.c: split find_members implementation. Added debug icall to get
36655         the address of an object.
36656         * reflection.c: handle TypeBuilders in mono_type_get_object().
36657
36658 2002-03-01  Martin Baulig  <martin@gnome.org>
36659
36660         * icall.c (ves_icall_System_Array_GetLength): This must throw an
36661         ArgumentOutOfRangeException(), not an ArgumentException().
36662         (ves_icall_System_Array_GetLowerBound): Likewise.
36663         (ves_icall_System_Array_GetValue): Improved argument checking.
36664         (ves_icall_System_Array_SetValue): Improved argument checking.
36665
36666 2002-03-01  Martin Baulig  <martin@gnome.org>
36667
36668         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
36669         called with invalid arguments rather than just dying with g_assert().
36670         (ves_icall_System_Array_SetValue): Likewise.
36671         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
36672         raise a NotImplementedException instead.
36673         (ves_icall_System_Array_GetLength): Added argument checking.
36674         (ves_icall_System_Array_GetLowerBound): Added argument checking.
36675
36676 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
36677
36678         * object.h (mono_assert): new macros mono_assert and
36679         mono_assert_not_reached
36680
36681 2002-02-28  Martin Baulig  <martin@gnome.org>
36682
36683         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
36684         and "System::String::IsInterned" to "System::String::_IsInterned".
36685
36686 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
36687
36688         * icall.c: remove hacks for typebuilder. Added icall to create a
36689         modified type from a tybebuilder.
36690         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
36691         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
36692         to create a backing MonoClass for a TypeBuilder.
36693
36694 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36695
36696         * class.c, class.h: more refactoring of class init.
36697         Export mono_class_setup_mono_type() and mono_class_setup_parent().
36698
36699 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
36700
36701         * marshal.c, marshal.h: start of marshaling interface.
36702
36703 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
36704
36705         * icall.c: fix order in assembly qualified name icall.
36706
36707 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
36708
36709         * class.c: do not free str, since we store it in the hash table.
36710         * reflection.h: add label field to MonoILExceptionInfo.
36711         * reflection.c: handle references to more than one assembly. Handle
36712         case when there isn't a module created in the assembly.
36713
36714 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
36715
36716         * class.c: Fix typo. Start refactoring of class init code.
36717
36718 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
36719
36720         * appdomain.c: exit with 1 on error.
36721         * class.c: we already have the name in MonoClassField.
36722         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
36723         MonoStreamHeader instead of an offset of image->raw_metadata.
36724
36725 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
36726
36727         * appdomain.c (mono_init): Be even more descriptive about the error.
36728
36729 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
36730
36731         * appdomain.c: give the user an informative message when corlib can't
36732         be loaded.
36733
36734 2002-02-26  Martin Baulig  <martin@gnome.org>
36735
36736         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
36737         New icall to get the time zone data.
36738
36739 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36740
36741         * reflection.c: set virtual and raw size of section correctly.
36742         * threads.c: transfer domain information to newly created threads.
36743
36744 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
36745
36746         * class.c: when instancing a class in a domain, load the default
36747         vaules for static fields from the constant table. Fix System.Enum to
36748         not be an enum.
36749         * icall.c: implement Object::GetType() internalcall. Implemented
36750         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
36751         Fixed checking of binding flags in find_members().
36752         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
36753         * reflection.c: handle enumerations when writing to the constant
36754         table. Use a different object cache for types.
36755
36756
36757 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
36758
36759         * object.c (mono_object_isinst): fix for arrays
36760
36761         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
36762
36763 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
36764
36765         * object.c: don't use mprotect ()  and fix intern pool hash table
36766         lookup for big endian systems.
36767
36768 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36769
36770         * icall.c: change type_is_subtype_of () signature.
36771
36772 2002-02-21  Mark Crichton  <crichton@gimp.org>
36773
36774         * rand.c, rand.h: Added random number generator for
36775         System.Security.Cryptography classes.
36776
36777         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
36778
36779         * icall.c: Added System.Security.Cryptography calls.
36780
36781 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
36782
36783         * class.c, icall.c, metadata.c: better support for pointer types.
36784         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
36785         * reflection.c: Add support for getting custom attrs for properties
36786         and simplify some code.
36787
36788 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36789
36790         * icall.c: change getToken () and add custom attribute GetBlob()helper
36791         method.
36792         * reflection.h: add custom attrs array to the reflection builder structures.
36793         * reflection.c: encode and emit custom attributes for all the relevant
36794         reflection objects. Cache fieldref and methodref tokens. Change
36795         mono_image_create_token() interface to take a MonoDynamicAssembly.
36796         More complete custom attributes decoder. Load custom attributes for
36797         Assembly, Field, Method and Constructor objects, too. Make the
36798         returned array an Attribute[] one, not object[]. Added
36799         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
36800         custom attribute constructor.
36801
36802 2002-02-20  Dick Porter  <dick@ximian.com>
36803
36804         * icall.c:
36805         * rawbuffer.c:
36806         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
36807         problem code out for now).
36808
36809 2002-02-19  Radek Doulik  <rodo@ximian.com>
36810
36811         * object.c (mono_ldstr): use hash table to avoid multiple swapping
36812
36813 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
36814
36815         * icall.c: register the GetCustomAttributes method.
36816         * object.c, object.h: add mono_string_new_len ().
36817         * reflection.h, reflection.c: added mono_runtime_invoke(),
36818         mono_install_runtime_invoke(). Added
36819         mono_reflection_get_custom_attrs () to load custom attributes and
36820         create the attribute objects.
36821
36822 2002-02-19  Dick Porter  <dick@ximian.com>
36823         * threads-dummy-types.c:
36824         * threads-dummy-types.h:
36825         * threads-dummy.c:
36826         * threads-dummy.h:
36827         * threads-pthread-types.c:
36828         * threads-pthread-types.h:
36829         * threads-pthread.c:
36830         * threads-pthread.h:  Deleted obsolete files
36831
36832 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
36833
36834         * class.c (mono_class_vtable): runtime init the class when we
36835         allocate static class data.
36836
36837         * icall.c (ves_icall_System_Array_SetValue): check for null values.
36838
36839         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
36840         and String - but we will need generic marshalling support in the
36841         future. 
36842         (mono_init): set the domain name in a ms compatible way
36843
36844         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
36845         String[].
36846
36847 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
36848
36849         * object.c (mono_array_clone): use alloca() instead of g_malloc  
36850         for sizes
36851
36852         * appdomain.c (mono_domain_unload): impl.
36853
36854 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
36855
36856         * appdomain.c, object.c: fix intern pool implementation.
36857         * class.c: fix alignment code.
36858
36859 2002-02-16  Radek Doulik  <rodo@ximian.com>
36860
36861         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
36862         and s2 > s1, just copy lower bytes to be compatible with little
36863         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
36864         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
36865
36866         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
36867         force big_endian to be 1 for big endian machines 
36868         (ves_icall_iconv_new_decoder): ditto
36869
36870 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
36871
36872         * socket-io.c (convert_sockopt_level_and_name): If the system
36873         doesn't define SOL_IP or SOL_TCP, get them by hand using
36874         getprotobyname() and caching the values (because this could be a
36875         slow operation).
36876         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
36877         Use the appropriate struct when the system does support it. Ie,
36878         not all systems have struct ip_mreqn so use struct ip_mreq when
36879         appropriate.
36880
36881 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
36882
36883         * reflection.c: handle finally clauses.
36884
36885 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
36886
36887         * socket-io.c: use g_snprintf() instead of snprintf.
36888
36889 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
36890
36891         * reflection.c (mono_param_get_objects): Cast second argument to
36892         mono_method_get_param_names to a const char** to silence the
36893         compiler warning.
36894
36895         * appdomain.c (mono_domain_assembly_open): Put parens around the
36896         truth statement in the for-loop.
36897
36898         * unicode.c (iconv_convert): Got rid of a compiler warning about
36899         int i being unused when the system has a new iconv.
36900         (iconv_get_length): Same.
36901
36902         * image.c (load_class_names): Cast the second argument to
36903         g_hash_table_insert() to char* to hush compiler warnings about the
36904         arg being a const.
36905         (mono_image_open): Same here.
36906
36907         * socket-io.c: Don't conditionally include sys/filio.h or
36908         sys/sockio.h here anymore since we now get them from
36909         io-layer/io-layer.h
36910         (inet_pton): If the system doesn't support inet_aton, implement
36911         using inet_addr and also #define INADDR_NONE if it isn't defined
36912         by the system.
36913
36914 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
36915
36916         * metadata.c, metadata.h: added function to get packing and size info
36917         of a typedef.
36918         * reflection.h, reflection.c: handle field RVA data. Save info about
36919         the table layout if needed. Assign typedef indexes to all the types
36920         before dumping the info about them to avoid forward reference problems.
36921
36922 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
36923
36924         * socket-io.c (convert_sockopt_level_and_name): ifdef
36925         SO_ACCEPTCONN because it is not defined on my system (old debian)
36926
36927 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
36928
36929         * opcode.c: use stddef.h to get NULL.
36930
36931 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
36932
36933         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
36934         for FIONBIO, FIONREAD and SIOCATMARK.
36935         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
36936         define INADDR_NONE and besides, inet_addr() is deprecated and
36937         should not be used. Use inet_pton() instead - it also has the
36938         added bonus that it can easily handle IPv6 addresses as well.
36939         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
36940
36941 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
36942
36943         * decimal.c: remove _MSC_VER conditional.
36944
36945 2002-02-13  Dick Porter  <dick@ximian.com>
36946
36947         * socket-io.c: 
36948         * icall.c: Internal calls for Blocking, Select, Shutdown,
36949         GetSocketOption and SetSocketOption
36950
36951 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36952
36953         * assembly.cs: better resolver: use it instead of some kludgy
36954         code.
36955
36956 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
36957
36958         * reflection.c: the best way to speed-up the compiler is to avoid
36959         infinite loops.
36960
36961 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
36962
36963         * class.c (mono_class_vtable): changed the object layout
36964         (obj->vtable->class). 
36965         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
36966
36967 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36968
36969         * assembly.c: look for assemblies in the assembly dir, too.
36970
36971 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
36972
36973         * class.c: fix thinko in mono_class_from_type().
36974
36975 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36976
36977         * exception.h, exception.c: added TypeLoadException.
36978         * object.h, object.c: added mono_array_clone ().
36979         * icall.c: handle throwOnError in AssemblyGetType().
36980         Added Array.Clone().
36981         * opcode.h, opcode.c: use a single value for the opcode val.
36982         Compile fix for non-gcc compilers.
36983
36984 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
36985
36986         * opcodes.c, opcodes.h: export interesting info about opcodes.
36987
36988 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
36989
36990         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
36991         icalls. 
36992
36993         * class.c (class_compute_field_layout): set element_class for enums
36994         (mono_class_create_from_typedef): set element_class for normal classes
36995
36996         * icall.c (ves_icall_System_Enum_get_value): impl.
36997
36998         * class.c (mono_class_create_from_typedef): do not set valuetype
36999         flag for System.ValueType and System.Enum
37000
37001 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
37002
37003         * unicode.c (iconv_convert): fix big endian problem.
37004
37005 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
37006
37007         * class.c: add asserts if we are ever going to scribble over memory.
37008         * socket-io.c: not all systems have AF_IRDA defined.
37009
37010 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
37011
37012         * class.c (class_compute_field_layout): do not consider static
37013         fields to compute alignment
37014
37015 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
37016
37017         * appdomain.c (mono_appdomain_get): impl.
37018         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
37019
37020 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
37021
37022         * icall.c: ignore "file://" prefix when loading an assembly.
37023
37024 2002-01-23  Dick Porter  <dick@ximian.com>
37025
37026         * socket-io.c:
37027         * icall.c:
37028         * Makefile.am: Added socket support
37029
37030 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
37031
37032         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
37033         code back.  This should return the assemblies that are loaded by
37034         the runtime on behalf of an application domain. 
37035
37036         The current implementation is still broken, it just returns every
37037         assembly loaded, but until we get real applications domain this
37038         will do.
37039
37040 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
37041
37042         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
37043         AppDomain object.
37044
37045 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
37046
37047         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
37048         the mono_class_from_name lookup.
37049         (ves_icall_get_parameter_info): ditto.
37050         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
37051         method.
37052         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
37053
37054 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
37055
37056         * class.c: load also nested classes on class init.
37057         System.ValueType instance methods gets passed boxed
37058         values, unless methods in derived classed that get a pointer to the
37059         data.
37060         * icall.c: use better name parsing code in GetType().
37061         * image.c, image.h: add mono_image_loaded ().
37062         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
37063         * reflection.c, reflection.h: added mono_reflection_parse_type().
37064
37065 2002-01-22  Veronica De Santis <veron78@interfree.it>
37066
37067         * icall.c : Added mapping of internal calls for Manual and Auto reset events
37068         * threads.c : Added the implementation of internal calls for events
37069         * threads.h : Added prototypes of internal calls for events
37070         
37071 2002-01-21  Radek Doulik  <rodo@ximian.com>
37072
37073         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
37074
37075 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
37076
37077         * class.c (mono_class_init): set min_align to 1 (instead of 0)
37078         (mono_class_value_size): use min_align
37079
37080 2002-01-20  Dick Porter  <dick@ximian.com>
37081
37082         * threads.h:
37083         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
37084         so it compiles on w32.
37085
37086 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
37087
37088         * metadata.c (mono_type_stack_size): impl.
37089
37090         * class.c (mono_class_get_field): impl. memberref token
37091
37092 2002-01-16 Veronica De Santis <veron78@@interfree.it>
37093
37094         * icall.h : Added the internal calls mapping for CreateMutex_internal
37095                     and ReleaseMutex_internal.
37096         * threads.h : Added the prototype of mutexes internal calls.
37097         * threads.c : Added the implementations of mutexes internal calls.
37098
37099 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
37100
37101         * metaparse.h: removed unused file.
37102         * reflection.c, reflection.h: added stream_data_align () function 
37103         to align data in streams and keep stream aligned. Add support for
37104         exception support in method headers.
37105
37106 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
37107
37108         * unicode.c: make iconv_convert () return the number of bytess written
37109         in the output buffer.
37110
37111 2002-01-15  Dick Porter  <dick@ximian.com>
37112         * threads.c: Make the runtime's idea of infinite timeouts coincide
37113         with the class library's
37114
37115         Fix a particularly egregious bug in mono_thread_cleanup(). That
37116         code was so utterly bogus it must have been written on a Monday.
37117
37118 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
37119
37120         * reflection.h: add subtypes field to TypeBuilder.
37121         * reflection.c: encode constants for literal fields.
37122         Handle subtypes. Fix user string token (and add a zero byte)
37123         at the end.
37124         
37125 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
37126
37127         * class.c (mono_class_init): bug fix: assign slot numbers for
37128         abstract methods.
37129
37130 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
37131
37132         * reflection.c: don't try to output a code RVA for abstract methods.
37133         Small fixes for method header format. Output parameter info to the
37134         ParamDef table. Save method overriding info to MethodImpl table.
37135         Fix property support. Allow typedef.extends to be a type in the
37136         building assembly.
37137         * verify.c: fix off-by-one error.
37138
37139 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
37140
37141         * class.c: fix mono_class_from_mono_type () for szarray types.
37142         Remove unused cache check in mono_class_from_type_spec().
37143         * icall.c: *type_from_name () functions handle simple arrays and byref.
37144         * reflection.c: handle byref and szarray types. Handle methods without
37145         body (gets P/Invoke compilation working). Handle types and fields in
37146         get_token ().
37147         * reflection.h: add rank to MonoTypeInfo.
37148
37149 2002-01-10  Dick Porter  <dick@ximian.com>
37150
37151         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
37152         internal calls
37153
37154 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
37155
37156         * icall.c: initialize class in type_from_handle ().
37157         Loop also in parent classes for get_method ().
37158         * reflection.c: properly encode class and valuetype types.
37159         Start on encoding TypeBuilder types. Handle fieldrefs.
37160         Use correct length when registering a user string.
37161         Handle ConstructorBuilder and MonoMethod in get_token ().
37162         Make mono_type_get_object () aware of cached types.
37163         * object.c: back out change to mono_string_new ().
37164
37165 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
37166         * object.c: mono_string_new should return a NULL when the string 
37167         passed in is NULL -- not try to deference it.
37168         
37169 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
37170
37171         * icall.c: hack to make IsSubType work for TypeBuilders.
37172         * reflection.c: emit constructors before methods.
37173         Retrieve param names in mono_param_get_objects().
37174
37175 2002/01/05  Nick Drochak  <ndrochak@gol.com>
37176
37177         * Makefile.am: fix list of headers and sources so automake 1.5
37178         doesn't complain. Removed \# at end of list.
37179
37180 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
37181
37182         * reflection.c: get token for a method ref. Set return type of
37183         constructor to void.
37184         * loader.c: debug message.
37185         * class.c: typo fix.
37186
37187 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
37188
37189         * icall.c: fix array init with rank > 1. FindMembers
37190         loops in parent class as well.
37191         * image.c: do not insert nested types in name cache.
37192         * reflection.c: warning fix.
37193         * reflection.h: add override method (for interface impl).
37194
37195 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
37196
37197         * metadata.c: fix customattr decoding.
37198
37199 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
37200
37201         * rawbuffer.cs: Added native Win32 implementation, avoids using
37202         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
37203
37204 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
37205
37206         * class.c: make the low-level routines handle the cache.
37207
37208 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
37209
37210         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
37211
37212 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
37213
37214         * class.c: fix mono_array_element_size() for objects.
37215         * class.h, class.c: add properties to MonoClass and load them
37216         at init time.
37217         * icall.c: check with isinst() when assigning a value to an array
37218         instead of requiring the classes to match exactly.
37219         Implemented icall for System.Type::GetType().
37220         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
37221         enums. Handle bindingflags when looking for methods and fields.
37222         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
37223         and mono_metadata_methods_from_property().
37224         * reflection.h, reflection.c: added structures for propreties,
37225         parameters and enums. Implemented mono_property_get_object() and
37226         mono_param_get_objects().
37227
37228 2001-12-18  Dick Porter  <dick@ximian.com>
37229
37230         * file-io.c: Use mono_string_to_utf16() instead of
37231         mono_string_chars()
37232
37233         * object.c: Added mono_string_to_utf16(), which copies the non
37234         NULL-terminated MonoString into a new double-null-terminated
37235         buffer.
37236
37237 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
37238
37239         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
37240
37241 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
37242
37243         * file-io.c: raise exceptions if handle is invalid.
37244
37245 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
37246
37247         * assembly.c: yet another check for mscorlib.
37248         * class.c, class.h: load nesting info for classes.
37249         * icall.c: many new functions to support the Reflection classes.
37250         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
37251         * reflection.h, reflection.c: mono_image_create_token(),
37252         mono_assembly_get_object(), mono_type_get_object(),
37253         mono_method_get_object(), mono_field_get_object(): methods to return
37254         objects that parallel the C representation of assemblies, types,
37255         methods, fields.
37256
37257 2001-12-11  Dick Porter  <dick@ximian.com>
37258
37259         * icall.c:
37260         * file-io.c: Internal calls for file IO.
37261
37262 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
37263
37264         * tabledefs.h: missing FileAttributes.
37265         * verify.h, verify.c: use is_valid_string () to simplify and check for
37266         valid strings more correctly. Fix warnings and speeling.
37267         Check more tables: Filed, File, ModuleRef, StandAloneSig.
37268         Check code: branches, maxstack, method calls.
37269
37270 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
37271
37272         * object.c (mono_object_allocate): removed static, so that the jit
37273         can allocate value types.
37274
37275         * icall.c (ves_icall_System_DateTime_GetNow): impl.
37276
37277 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37278
37279         * class.c: init enum types right away and register the
37280         token->MonoClass map in mono_class_create_from_typedef ().
37281         * verify.h, verify.c: first cut of the verifier.
37282         * pedump.c: add --verify switch to verify metadata tables.
37283         * tabledefs.h: add some missing enums.
37284
37285 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
37286
37287         * class.c (mono_install_runtime_class_init): impl.
37288         (mono_class_init): renamed mono_class_metadata_init to
37289         mono_class_init, also removed the metadata_inited flag
37290
37291         * object.c (mono_object_isinst): use faster algorithm
37292
37293 2001-11-30  Radek Doulik  <rodo@ximian.com>
37294
37295         * mono-endian.h: reverted last change
37296         added function prototypes
37297
37298         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
37299         add mono-endian.c back
37300
37301         * mono-endian.c: returned back, as Paolo pointed out, it's needed
37302         for unaligned access, I've mistaked it with endianess. I am
37303         sorry.
37304         (mono_read16): fix reverted endianess
37305         (mono_read64): ditto
37306         (mono_read32): ditto
37307
37308 2001-11-30  Dick Porter  <dick@ximian.com>
37309
37310         * exception.c: Implement mono_exception_from_name()
37311
37312 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
37313
37314         * metadata.h, metadata.c: remove params_size and locals_size and their
37315         calculation from the metadata code: they are only usefult to the
37316         interp.
37317
37318 2001-11-29  Radek Doulik  <rodo@ximian.com>
37319
37320         * object.c (mono_ldstr): swap bytes here, it's probably not the
37321         best place, but works for me now, I'll redo it once I know mono
37322         better, also note that I add PROT_WRITE and don't reset back, also
37323         note that it's only affects big endians, so x86 should be OK
37324
37325         * mono-endian.h (read16): use just glib macros for both endians
37326
37327         * mono-endian.c: removed as glib macros are used in in
37328         mono-endian.h so we don't need to care about endianess for read
37329         macros as glib does that for us already
37330
37331 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
37332
37333         * class.h, class.h: take minimum alignment into consideration so
37334         that the fields of a class remain aligned also when in an array.
37335
37336 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37337
37338         * loader.h, loader.c: add mono_method_get_param_names().
37339         * class.c: 0-init class fields.
37340
37341 2001-11-26  Dick Porter  <dick@ximian.com>
37342
37343         * icall.c:
37344         * threads-types.h:
37345         * threads.c: New file that handles System.Threading on all platforms
37346
37347         * object.c: 
37348         * object.h: Remove the synchronisation struct from MonoObject,
37349         replace it with a pointer that gets initialised on demand
37350
37351         * Makefile.am: Replace all the system-specific threading code with
37352         a single file that uses the new wrapper library
37353
37354 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
37355
37356         * class.c, class.h: add mono_install_trampoline() so that the runtime
37357         can register a function to create a trampoline: removes the ugly
37358         requirement that a runtime needed to export arch_create_jit_trampoline.
37359         * object.h, object.c: added mono_install_handler() so that the runtime
37360         can install an handler for exceptions generated in C code (with
37361         mono_raise_exception()). Added C struct for System.Delegate.
37362         * pedump.c: removed arch_create_jit_trampoline.
37363         * reflection.c: some cleanups to allow registering user strings and
37364         later getting a token for methodrefs and fieldrefs before the assembly
37365         is built.
37366         * row-indexes.h: updates and fixes from the new ECMA specs.
37367
37368 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
37369
37370         * class.h, class.c: add enum_basetype field to MonoClass.
37371         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
37372         to get index in the constant table reated to a field, param or
37373         property.
37374         * reflection.h, reflection.c: handle constructors. Set public-key and
37375         version number of the built assembly to 0.
37376         * row-indexes.h: update from new ECMA spec.
37377
37378 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
37379
37380         * class.h, class.c: add a max_interface_id to MonoClass.
37381         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
37382         since it's used to do that. Added mono_type_type_from_obj().
37383         Make GetType() return NULL instead of segfaulting if the type was not
37384         found. Handle simple arrays in assQualifiedName.
37385         * object.h: add a struct to represent an Exception.
37386         * reflection.c: output call convention in method signature.
37387         Add code to support P/Invoke methods and fixed offsets for fields.
37388
37389 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
37390
37391         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
37392         the value.
37393         * icall.c: use mono_array_addr instead of array->vector: fixes the
37394         reflection image writing.
37395         * reflection.c: init call convention byte to 0 in method signature.
37396         Encode the property signature. Don't output property-related methods
37397         twice. Really process the properties for a type (don't cast a field to
37398         a property, my mom always told me that).
37399         Fix 64 bit issues in pointer alignment in a different and more
37400         readable way.
37401
37402 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
37403
37404         * loader.h: Removed type class from MonoDefaults, added monotype
37405
37406         * loader.c: Loaded MonoType, removed loading of Type
37407
37408         * icall.c (my_mono_new_object): Now returns a System.MonoType,
37409         and fills in System.Type._impl with a RuntimeTypeHandle rather
37410         than the actual MonoClass *
37411
37412         (ves_icall_type_from_handle): change from type_class to
37413         monotype_class
37414
37415         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
37416         implemented
37417
37418         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
37419         implemented
37420
37421         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
37422
37423         (ves_icall_System_Reflection_Assembly_GetType): implemented
37424
37425         (ves_icall_System_MonoType_assQualifiedName): implemented
37426
37427         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
37428
37429 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
37430
37431         * assembly.c (mono_assembly_open): Implement a cache for the
37432         assemblies. 
37433
37434         (mono_assembly_close): only destroy the assembly when the last
37435         reference is gone.
37436         
37437 2001-11-09  Dick Porter  <dick@ximian.com>
37438
37439         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
37440
37441 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
37442
37443         * class.c (mono_class_metadata_init): bug fix: compute the right slot
37444
37445 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
37446
37447         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
37448         from Martin Weindel.
37449         * object.h: add mono_string_chars ().
37450
37451 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
37452
37453         * reflection.c (build_compressed_metadata): Eliminates warnings
37454         and uses 64-bit clean code.
37455
37456         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
37457         (mono_type_equal): Change signature to eliminate warnings.
37458
37459 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37460
37461         * icall.c, loader.c: remove the internalcall array constructors.
37462         Changes to match the new MonoArray structure.
37463         * object.h, object.c: an array object doesn't allocate an extra
37464         vector. Add mono_array_new_full () to create jagged arrays easily.
37465
37466 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
37467
37468         * metadata.h, metadata.c: add mono_metadata_field_info () to
37469         retreive all the info about a field from vairous tables.
37470         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
37471         * class.h, class.c: augment MonoClassField with more info.
37472         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
37473         policy and load a field's RVA if needed.
37474
37475 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
37476
37477         * class.c (mono_class_metadata_init): create a trampoline for all
37478         virtual functions instead of actually compiling them.
37479
37480 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
37481
37482         * class.h, class.c: include name in MonoClassField.
37483         * class.c: fix fundamental type of System.Object and System.String.
37484         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
37485         tokens in ldtoken.
37486         * icall.c: remove internalcalls for the Reflection stuff that is now
37487         done in C# code.
37488         * loader.c: mono_field_from_memberref () implementation.
37489         * mono-endian.c: thinko (s/struct/union/g).
37490         * object.c, object.h: make the mono_string_* prototypes actually use
37491         MonoString instead of MonoObject.
37492         * reflection.c, reflection.h: updates for changes in the reflection
37493         code in corlib: we use C structures that map to the actual C# classes.
37494         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
37495         fat method header if needed and use the info from the ILGenerator for
37496         methods. Handle fields in types. Misc fixes.
37497
37498 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
37499
37500         * class.c (mono_class_metadata_init): bug fix: always allocate
37501         space for static class data
37502
37503 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
37504
37505         * class.c (mono_compute_relative_numbering): use relative
37506         numbering to support fast runtime type checks.
37507
37508 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
37509
37510         * class.c (mono_class_create_from_typeref): added debugging output
37511         to print class name when MonoDummy is returned instead of real class
37512
37513 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
37514
37515         * class.c (mono_class_metadata_init): interface offset table now
37516         contains pointers into the vtable - this is more efficient for the jit
37517
37518 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
37519
37520         * class.c (mono_class_metadata_init): use a temporary vtable (the
37521         old algorithm only worked for the interpreter, but not for the jit)
37522
37523 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
37524
37525         * loader.c (method_from_memberref): use mono_class_get to get the
37526         class of an array instead of using System.Array directly.
37527         (mono_get_method): also add MEMBERREF methods to the method cache
37528         which usefull for arrays.
37529
37530 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
37531
37532         * pedump.c (arch_compile_method): added to compute vtable entry
37533
37534         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
37535         number of interfaces.
37536         
37537         * class.h: merged MonoArrayClass into MonoClass
37538
37539         * class.c (mono_class_create_from_typedef): compute the vtable size and
37540         allocate space to include the vtable inside MonoClass
37541         (mono_class_metadata_init): initialize the vtable
37542
37543 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
37544
37545         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
37546         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
37547         * image.c: endian fixes by Laurent Rioux.
37548         * object.h, object.c: rename MonoStringObject to MonoString and
37549         MonoArrayObject to MonoArray. Change some function names to conform to
37550         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
37551         guint16* as first argument, so don't use char*.
37552         Provide macros to do the interesting things on arrays in a portable way.
37553         * threads-pthread.c: updates for the API changes and #include <sched.h>
37554         (required for sched_yield()).
37555         * icall.c: updates for the API changes above.
37556         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
37557         platforms that need them.
37558
37559 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
37560
37561         * class.c: set the correct type for all the fundamental
37562         type when loading the class.
37563
37564 2001-10-05  Dick Porter  <dick@ximian.com>
37565
37566         * threads-pthread.c (pthread_mutex_timedlock): Simple
37567         compatibility version for C libraries that lack this call.
37568
37569 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37570
37571         * class.c: MonoTypes stored in MonoClass are stored as
37572         fundamental MonoTypes when the class represents a
37573         fundamental type (System.Int32, ...).
37574         The TypeHandle return by ldtoken is a MonoType*.
37575         * icall.c: ves_icall_get_data_chunk () write out all the
37576         PE/COFF stuff. Implement ves_icall_define_method (),
37577         ves_icall_set_method_body (), ves_icall_type_from_handle ().
37578         * image.c: properly skip unknown streams.
37579         * loader.h, loader.c: add type_class to mono_defaults.
37580         * metadata.c, metadata.h: export compute_size () as
37581         mono_metadata_compute_size () with a better interface.
37582         Typo and C&P fixes.
37583         * pedump.c: don't try to print the entry point RVA if there is no entry point.
37584         * reflection.c, reflection.h: many cleanups, fixes, output method
37585         signatures and headers, typedef and typeref info, compress the metadata
37586         tables, output all the heap streams, cli header etc.
37587         * row-indexes.h: typo fixes.
37588
37589 2001-10-04  Dick Porter  <dick@ximian.com>
37590
37591         * object.h: Add a synchronisation mutex struct to MonoObject
37592
37593         * object.c (mono_new_object): Initialise the object
37594         synchronisation mutexes
37595
37596         * icall.c: System.Threading.Monitor internal calls
37597         
37598         * threads-pthread.h:
37599         * threads-pthread.c: System.Threading.Monitor internal calls
37600
37601         * threads-types.h: New file, includes the system-specific thread
37602         structures
37603         
37604         * threads-pthread-types.h:
37605         * threads-pthread-types.c: New files, handle pthread-specific
37606         synchronisation types
37607
37608         * threads-dummy-types.h: 
37609         * threads-dummy-types.c: New files of dummy support for
37610         thread-specific types
37611
37612         * metadata.c:
37613         * image.c:
37614         * pedump.c: include mono-endian.h not endian.h
37615         
37616         * Makefile.am: More threads files.
37617         Name mono-endian.h not endian.h
37618
37619 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
37620
37621         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
37622         stuff and implement a few more bits.
37623         * icall.c: a field needs to be dereferenced twice. Do not use the same
37624         name for two variables in the same scope.
37625         * image.c, image.h: cleanups.
37626
37627 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
37628
37629         * class.c (mono_class_metadata_init): bug fix: compute the right size
37630
37631 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
37632
37633         * icall.c: implemented some of the Reflection internalcalls.
37634         * image.c, image.h: start writing out the PE/COFF image.
37635         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
37636         that does the reverse than decode_blob_size ().
37637         * object.c: use mono_metadata_encode_value (). Move here
37638         temporary implementation of mono_string_to_utf8 ().
37639         * rawbuffer.c: make malloc_map static.
37640
37641 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37642
37643         * metadata.c: fix type comparison for arrays.
37644         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
37645         Added a couple of new classes to monodefaults.
37646         * icall.c: added a couple of Reflection-related internalcalls.
37647         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
37648         Added a byval_arg MonoType to MonoClass.
37649
37650 2001-09-28  Dick Porter  <dick@ximian.com>
37651
37652         * icall.c:
37653         * threads-pthread.h: 
37654         * threads-pthread.c: Implemented internal calls for
37655         LocalDataStoreSlot operations.  Applied mutexes around all shared
37656         data.  Reworked the thread creation and Start() operations to
37657         avoid a race condition.
37658         
37659         * threads-dummy.h:
37660         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
37661
37662 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
37663
37664         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
37665
37666 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
37667
37668         * class.c, loader.c: warn and return NULL instead of erroring out.
37669         * icall.c: added System.AppDomain::getCurDomain().
37670         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
37671
37672 2001-09-25  Dick Porter  <dick@ximian.com>
37673
37674         * threads-pthread.h:
37675         * threads-pthread.c: Implemented timed thread joining and added
37676         System.Threading.Thread::Join_internal internal call
37677
37678         * icall.c: Added System.Threading.Thread::Join_internal internal call
37679
37680         * threads-dummy.h:
37681         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
37682
37683 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
37684
37685         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
37686         mono_string_intern () to implement the semantics of the ldstr opcode
37687         and the interning of System.Strings.
37688         * icall.c: provide hooks to make String::IsIntern and String::Intern
37689         internalcalls.
37690
37691 2001-09-23  Dick Porter  <dick@ximian.com>
37692
37693         * threads-dummy.c: 
37694         * threads-dummy.h: New files of dummy threading routines
37695
37696         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
37697         support code based on system specifics
37698
37699         Rename PTHREAD_LIBS to THREAD_LIBS
37700         
37701 2001-09-23  Dick Porter  <dick@ximian.com>
37702
37703         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
37704         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
37705         internal calls.
37706         (mono_thread_init): Set up a Thread object instance to return when
37707         the main thread calls Thread.CurrentThread
37708         (mono_thread_cleanup): Wait for all subthreads to exit
37709
37710         * icall.c: New internal calls for System.Threading.Thread::Sleep
37711         (including Schedule) and CurrentThread
37712
37713         * threads.h: New file, to insulate thread-specific stuff from the
37714         rest of the code
37715
37716 2001-09-21  Dick Porter  <dick@ximian.com>
37717
37718         * threads-pthread.h: 
37719         * threads-pthread.c: New file, for handling pthreads-style
37720         threading support.  Start() now starts a new thread and executes
37721         the ThreadStart delegate instance.
37722
37723         * icall.c: Added the internalcall for
37724         System.Threading.Thread::Start_internal
37725
37726         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
37727
37728 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
37729
37730         * loader.c: work around the different signatures for delegates
37731         constructors csc generates in compiled code vs the ones compiled in mscorlib.
37732
37733 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
37734
37735         * class.h, class.c: add mono_class_get_field_from_name ().
37736         * *: Fix C comments and other ANSI C issues.
37737
37738 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
37739
37740         * endian.h, assembly.c: fix some endianness issues.
37741
37742 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
37743
37744         * loader.h, load.c: add delegate_class to mono_defaults.
37745         Handle runtime provided methods in mono_get_method ().
37746
37747 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
37748
37749         * loader.c (mono_get_method): use pinvoke for internal call
37750
37751         * icall.c: use pinvoke for internal call
37752
37753         * loader.c (method_from_memberref): set the method name
37754
37755 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
37756
37757         * metadata.c: help the compiler generate better code for
37758         mono_class_from_mono_type ().
37759
37760 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
37761
37762         * class.c (mono_class_metadata_init): delayed computing of the
37763         class size to mono_class_metadata_init ()
37764
37765 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
37766
37767         * class.c, class.h: add an interfaces member to MonoClass.
37768         * image.c, image.h: add assembly_name field to MonoImage
37769         from the assembly table.
37770         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
37771
37772 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
37773
37774         * class.c: Handle Array in mono_class_from_mono_type ().
37775         * metadata.c, pedump.c: some endian fixes.
37776
37777 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
37778
37779         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
37780         * metadata.c: fix small problem introduced with the latest commit.
37781
37782 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
37783
37784         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
37785         We don't need a MonoMetadata pointer anymore to compare signatures in
37786         mono_metadata_signature_equal (), update callers.
37787         Reduced memory usage an number of allocations for MonoMethodHeader and
37788         MonoMethodSignature.
37789
37790 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
37791
37792         * metadata.c: added compare for szarray.
37793
37794 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
37795
37796         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
37797         and add a couple more types to it and mono_defaults. Give an hint on
37798         classes that need implementing in our corlib and are referenced
37799         in mscorlib.
37800
37801 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
37802
37803         * class.h, class.c: keep track if a class is also an Enum.
37804         * loader.c: Implement a couple more types for use in libffi
37805         marshalling. Gives better diagnostics when failing to dlopen
37806         a library. Set method->klass for P/Invoke methods, too.
37807
37808 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
37809
37810         * class.c, class.h: add a MonoType this_arg to MonoClass that
37811         represents a pointer to an object of the class' type that
37812         can be used by the interpreter and later the type cache.
37813         Add best guess alignment info for valuetype objects.
37814
37815 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
37816
37817         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
37818         into MonoType: one less level of indirection and allocation and
37819         simplifies quite a bit of code. Added cache for MonoTypes that are
37820         used frequently, so that we don't need to allocate them all the time.
37821
37822 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
37823
37824         * class.c (mono_class_create_from_typedef): System.Enum is also a
37825         value type, although it does not derive from System.ValueType
37826         (maybe a bug in the ms compiler?)
37827
37828         * metadata.c (mono_type_size): return the right size for value types
37829
37830         * loader.c (mono_get_method): only initialize method header if not abstract
37831
37832         * class.c (mono_class_from_mono_type): use mono_default values. 
37833
37834 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
37835
37836         * *: use MonoClass pointers instead of <type_tokens>
37837         
37838         * class.h: new flag: metadata_inited.
37839
37840         * class.c (mono_class_metadata_init): impl.
37841         (mono_class_instance_size): impl.
37842         (mono_class_data_size): impl.
37843
37844 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37845
37846         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
37847         MonoClass now has the name and name_space fields. 
37848         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
37849         mono_get_method () takes and optional MonoClass as argument.
37850         Removed mono_typedef_from_name() and added mono_class_token_from_name()
37851         instead that takes advantage of a map from class names to typedef
37852         tokens in MonoImage.
37853
37854 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
37855
37856         * metadata.c: zero is not a valid alignment boundary.
37857         Merge MONO_TYPE_VOID in default decoding code.
37858
37859 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
37860
37861         * image.h: merged MonoMetadata into MonoImage
37862
37863         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
37864         identify the type of elements.
37865
37866 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
37867
37868         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
37869         * cil-coff.h: split MonoMSDOSHeader and add size info.
37870         * image.c: add some consistency checks.
37871         * metadata.c: fix row size computation: one programmer
37872         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
37873         add explanation for the locator routine.
37874         Fix decoding of size in method header.
37875         
37876 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
37877
37878         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
37879         (g_concat_dir_and_file): Bring g_concat_dir_and_file
37880         function from gnome-libs.  This uses the right path separator
37881         based on the OS, and also works around a bug in some systems where
37882         a double slash is not allowed. 
37883         (default_assembly_name_resolver): Use g_concat_dir_and_file
37884         (mono_assembly_open): ditto.
37885
37886 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
37887
37888         * metadata.c (mono_metadata_signature_equal): impl.
37889
37890         * *: void is now a realy MonoType (instead of using NULL)
37891         
37892         * metadata.c (do_mono_metadata_parse_type): use
37893         mono_metadata_parse_type to parse void value.
37894
37895 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
37896
37897         * metadata.c, metadata.h: in the signature and method header store
37898         only the space required for holding the loca vars and incoming arguments.
37899
37900 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
37901
37902         * metadata.c (do_mono_metadata_parse_type): treat void like any
37903         other type (instead of assigning NULL);
37904
37905 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
37906
37907         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
37908
37909 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
37910
37911         * image.c (do_mono_image_open): added a cache for arrays.
37912
37913 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
37914
37915         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
37916         decode a single column from a row in a metadata table and changes
37917         to take advantage of it in the typedef locator (gives a nice speed up).
37918         Store offset info for function params.
37919
37920 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
37921
37922         * image.h (MONO_IMAGE_IS_CORLIB): removed 
37923
37924 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
37925
37926         * assembly.c: how could mono_assembly_close () had ever worked?
37927         * metadata.c, metadata.h: provide offset info for local vars.
37928         Implement mono_type_size () to take care of alignment as well
37929         as size (it was mono_field_type_size in cli/class.c before).
37930
37931 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
37932
37933         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
37934
37935         * assembly.h (CORLIB_NAME): set to corlib.dll
37936
37937         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
37938
37939 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
37940
37941         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
37942         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
37943         tokentype.h: massive namespace cleanup.
37944
37945 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
37946
37947         * metadata.h, metadata.c: decode exception clauses when parsing method header.
37948
37949 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
37950
37951         * metadata.c (mono_metadata_free_type): added check for type !=
37952         NULL (void) before calling mono_metadata_free_type()
37953
37954 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
37955
37956         * metadata.h, row_indexes.h: added header with enumerations to use
37957         to index in the columns from tables in metadata and to decode coded
37958         tokens: we should start using this instead of embedding magic numbers
37959         all over the code.
37960
37961 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
37962
37963         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
37964         Move metadata_t info from cli_image_info_t to MonoImage, where
37965         it's easily accessible. Changed all the uses accordingly.
37966         Added the method and class caches to MonoImage.
37967         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
37968         and mono_metadata_decode_value () signature to be more consistent
37969         with the other parse functions (and simplify code). Taken advantage
37970         of zero-length array allocation with GCC. Removed reduntant (and
37971         wrong) MonoFieldType struct and use MonoParam instead. Changed
37972         mono_metadata_parse_field_type () to use common code for parsing.
37973         Added mono_metadata_typedef_from_field () and
37974         mono_metadata_typedef_from_method () to lookup a typedef index from a
37975         field or method token.
37976         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
37977
37978 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
37979
37980         * metadata.c (mono_metadata_parse_field_type): Implement. 
37981         (do_mono_metadata_parse_type): Split engine from
37982         mono_metadata_parse_type, so that we can create smaller structures
37983         for things that just have one pointer to the MonoType (look at
37984         the MonoFieldType)
37985
37986 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
37987
37988         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
37989         as Jan Gray found out, it is incorrect. 
37990
37991 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
37992
37993         * assembly.c: Implement asssembly loading.  This loads an image
37994         and loads all the referenced assemblies.  Come to think of it, we
37995         could always do lazy loading of the assemblies. 
37996
37997         * image.c (mono_image_open): Keep loaded images in a hashtable.
37998
37999         * image.h (MonoImage): Add reference count.
38000
38001 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
38002
38003         * assembly.c (mono_assembly_open): Keep track of the file name in
38004         case the assembly has no ASSEMBLY table.
38005
38006         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
38007         from get.c here.
38008
38009 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
38010
38011         * metadata.c, metadata.h: decode local vars in method header
38012         parse function. Change callers accordingly.
38013
38014 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
38015
38016         * metadata.h, cil-coff.h: protect against multiple inclusion.
38017         Added some new structures to hold information decoded from metadata:
38018         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
38019         and relevant decoding/free functions.
38020         * metadata.c: implement decoding functions. Add warning for out of bounds
38021         index in mono_metadata_locate(). Implement mono_get_method () to retreive
38022         all the info about a method signature and invocation. Remove check on
38023         uninitialized local var in parse_mh() and fix memory leak.
38024
38025 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
38026
38027         * metadata.h: More macros.
38028
38029         * tokentype.h: New file.
38030
38031 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
38032
38033         * assembly.c: added a consistency check and initialize
38034         some structures with g_new0().
38035         * metadata.c: fixed a couple more bugs in table size computation
38036         and add other checks for out-of bound access to metadata.
38037
38038 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
38039
38040         * metatada.c: fix bugs computing table sizes. Spew a
38041         warning when index in string heap is out of bounds.
38042
38043 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
38044
38045         * metadata.h: Add a couple of macros to manipulate tokens. 
38046
38047 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
38048
38049         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
38050         cli_section_tables).
38051
38052 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
38053
38054         * metadata.c (mono_metadata_user_string): New function, provides
38055         access to the UserString heap. 
38056
38057 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
38058
38059         * metadata.c: Add inline documentation.
38060
38061 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
38062
38063         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
38064         files. 
38065
38066 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
38067
38068         * typeattr.h: New file, TypeAttribute flags. 
38069
38070 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
38071
38072         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
38073         mono_assembly_ensure_section): Section loading code.
38074         (load_section_tables): Load the sections.
38075
38076         * mono/metadata/metadata.c (mono_metadata_locate_token,
38077         mono_metadata_locate): Functions to locate the information
38078         definition given a token or a table and an index.
38079         (mono_metadata_compute_table_bases): New.
38080         (compute_size): New function to compute the sizes of the various
38081         tables.
38082
38083         * mono/metadata/metadata.h: Finish listing the different index
38084         types. 
38085
38086         * mono/metadata/pedump.c: Improve to dump new information.
38087
38088 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
38089
38090         * mono/metadata/metadata.c: Entered all the tables matching
38091         Beta2. 
38092
38093         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2