2010-07-09 Mark Probst <mark.probst@gmail.com>
[mono.git] / mono / metadata / ChangeLog
1 2010-07-09  Mark Probst  <mark.probst@gmail.com>
2
3         * sgen-protocol.c, sgen-gc.c: Make binary protocol lock-freely
4         thread-safe.
5
6 2010-07-08 Neale Ferguson <neale@sinenomine.net>
7
8         * sgen-archdep.h: Add support for s390x
9         * domain.c: Use gsize so that 64-bit big endian systems produce 
10         bitmap.
11
12 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
13
14         * pedump.c (verify_image_file): Initialize the vtable as well.
15
16 2010-07-07  Geoff Norton  <gnorton@novell.com>
17
18         * sgen-gc.h:  Not every system has sys/signal.h.  Prefer the posix
19         header.
20
21 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
22
23         * assembly.c (mono_assembly_load_reference): Replace a g_warning
24         with a mono_trace calls. This makes compiling MD a lot less scary.
25
26 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
27
28         * verify.c (do_stobj): Improve error message.
29
30 2010-07-08  Mark Probst  <mark.probst@gmail.com>
31
32         * sgen-gc.c (OBJ_COMPLEX_ARR_FOREACH_PTR): Don't load the vtable
33         from the object because it might have pinned/forwarding bits set.
34
35 2010-07-06  Zoltan Varga  <vargaz@gmail.com>
36
37         * Makefile.am (sgen_sources): Add missing sgen files.
38
39 2010-06-07  Martin Baulig  <martin@ximian.com>
40
41         * mono-debug-debugger.c (mono_debugger_get_thread_abort_signal):
42         New helper function since mono_thread_get_abort_signal() is now
43         internal.
44
45 2010-06-07  Martin Baulig  <martin@ximian.com>
46
47         * mono-debug.h, debug-mono-symfile.h: Kill glib dependencies.
48
49 2010-07-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
50
51         * file-io.c: don't prepend anything to the names returned
52         from FindFirst/FindNext.
53
54 2010-07-02  Michael Hutchinson  <mhutchinson@novell.com>
55
56         * object-internals.h, object.h: Make mono_string_to_utf_8_checked 
57         public, as mono_string_to_utf_8 is deprecated.
58
59         * object.(c|h): Added mono_object_to_string, a public helper function 
60         that calls ToString on a MonoObject and returns a MonoString.
61
62         * object.c (mono_print_unhandled_exception): Use mono_object_to_string.
63
64 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
65
66         * filewatcher.h filewatcher.h decimal.c threads-types.h: Applied patch
67         from Elijah Taylor (elijahtaylor@google.com). Fix some definitions to
68         match their declarations and vice-versa.
69
70
71 Wed Jun 30 12:08:36 CEST 2010 Paolo Molaro <lupus@ximian.com>
72
73         * class-internals.h, domain-internals.h: mark functions that are
74         needed by the llvm module.
75
76 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
77
78         * assembly.c (framework_assemblies): Add 3.5 assemblies.
79
80         * domain-internals.h (MonoRuntimeInfo): Increase version_sets
81         by one to have room to remap 3.5 assemblies.
82
83         * domain.c (supported_runtimes): Add 3.5 remapping information.
84
85 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
86
87         * reflection.c (mono_image_create_token): Handle a
88         FieldBuilder from a different assembly.
89
90         Fixes #611836.
91
92 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
93
94         * verify.c (do_store_static_field): Improve error
95         message.
96
97 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
98
99         * assembly.c: Revert r159692 since it breaks loading 3.5
100         assemblies under 2.0.
101
102 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
103
104         * icall.c (ves_icall_Type_make_array_type): Raise a TLE if a
105         TypedByRef is passed.
106
107         * icall.c (ves_icall_Type_make_byref_type): Ditto.
108
109         * icall.c (ves_icall_Type_MakePointerType): Ditto.
110
111         Fixes #612780.
112
113 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
114
115         * assembly.c: Add a few more assemblies to the list of framework
116         assemblies.
117
118         Fixes #617714.
119
120 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
121
122         * class.c (mono_class_get_vtable_entry): Avoid a crash if mono_class_setup_vtable ()
123         fails.
124
125 2010-06-25  Mark Probst  <mark.probst@gmail.com>
126
127         * class.c (mono_class_inflate_generic_method_full_checked): Added
128         a comment regarding a hack in mini-trampolines.c.
129
130 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
131
132         * sgen-gc.c (mono_gc_wbarrier_value_copy_bitmap): Use SIZEOF_VOID_P instead of
133         sizeof(SIZEOF_VOID_P) which is 4.
134
135         * gc.c (mono_gc_init): Move the GC disabled check to *-gc.c.
136
137 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
138
139         * null-gc.c boehm-gc.c: Define the mono_gc_ pthread wrapper functions for these
140         GCs too.
141
142         * *-gc.c (mono_gc_wbarrier_value_copy_bitmap): Implement this for all GCs.
143
144         * sgen-gc.c (mono_gc_is_moving): New function returning whenever this GC can move
145         objects.
146
147         * *-gc.c (mono_gc_set_desktop_mode): New function setting up the GC to work in
148         desktop mode.
149
150 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
151
152         * *-gc.c (mono_gc_get_description): New function returning a human readable
153         description of the current GC.
154
155 2010-06-24  Miguel de Icaza  <miguel@novell.com>
156
157         * mono-hash.c: Moved here from mono/utils as this file is
158         GC-aware, and the utils directory is not.
159
160 2010-06-23  Miguel de Icaza  <miguel@novell.com>
161
162         * Makefile.am: Add support for building a sgen-aware versions of
163         the libraries: libmonoruntimesgen.la libmonoruntimesgen-static.la,
164         they share all the components of the default, but use a differen
165         set of CFLAGS to enable SGEN instead.
166
167         Put the BOEHM defines in the CFLAGS definition. 
168
169         * domain-internals.h (MonoJitInfo): this structure used to have
170         different sizes depending on the GC that was configured (Boehm vs
171         SGen).   I have removed this difference for the sake of avoiding
172         the complexity of dealing with the mono/arch directory requiring
173         GC-specific changes to their Makefiles.
174
175 2010-06-23  Mark Probst  <mark.probst@gmail.com>
176
177         * sgen-gc.c, sgen-los.c, sgen-marksweep.c: Fix warnings.
178
179 2010-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
180
181         * metadata.c (mono_metadata_type_hash): Don't hash
182         the type kind for dynamic types since it can change.
183
184 2010-06-22 Geoff Norton  <gnorton@novell.com>
185
186         * sgen-os-mach.c: We cannot call malloc from the gc, so we need to use
187         alloca instead to prevent a deadlock.
188
189 2010-06-22  Geoff Norton  <gnorton@novell.com>
190
191         * domain.c: Allow gettings the tls key, since we need it for
192         cross thread tls poking in sgen-mach
193         * sgen-gc.(c|h), gc-internal.h: Rework sgen into having some functions
194         in external files for platform specific STW support.
195         * sgen-os-mach.c: Add a new mach kernel backend implementation of STW.
196         * sgen-os-posix.c: Move the existing posix signal based STW here.
197
198 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
199
200         * marshal.c (mono_array_to_lparray): Allow MONO_TYPE_PTR. Fixes #615952.
201
202 2010-06-21 Rodrigo Kumpera  <rkumpera@novell.com>
203
204         * object-internals.h: Map new PropertyBuilder fields.
205
206         * reflection.c (property_encode_signature): Emit an instance
207         signature if property's callconv is hasthis.
208
209         * appdomain.c: Bump corlib version.
210
211 2010-06-20  Jb Evain  <jbevain@novell.com>
212
213         * metadata-verify.c: do not consider the assembly invalid if it
214         doesn't have a #Blob stream as resource assemblies don't
215         necessarily have one.
216
217 2010-06-17  Geoff Norton  <gnorton@novell.com>
218
219         * sgen-archdep.h: sgen support for arm linux and darwin.
220
221 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
222
223         * loader.c (mono_method_get_header): Avoid a crash if the declaring method
224         has a faulty header.
225
226 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
227
228         * sgen-gc.c (mono_gc_wbarrier_value_copy_bitmap): Work in a similar
229         way to mono_gc_wbarrier_value_copy but takes a bitmap that
230         indicates which slots need a write barrier.
231
232 2010-06-14  Jonathan Pryor <jpryor@novell.com>
233
234         * Makefile.am (EXTRA_DIST): Add runtime.h.
235
236 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
237
238         * object.c (build_imt_slots): Don't crash if callbacks.get_imt_trampoline is not set.
239
240 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
241
242         * object.c (mono_method_add_generic_virtual_invocation): Fix the computation of the
243         IMT slot which is passed to callbacks.get_imt_trampoline.
244
245 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
246
247         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
248         imt trampoline per imt slot when using LLVM.
249
250 2010-06-10  Jonathan Pryor <jpryor@novell.com>
251
252         * object.c (mono_runtime_run_main): Move fire_process_exit_event() into
253           runtime.c:mono_runtime_shutdown().
254         * runtime.c: Added; adds mono_runtime_shutdown(), which invokes the
255           AppDomain.ProcessExit event in all AppDomains.
256
257 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
258
259         * marshal.c (mono_marshal_get_runtime_invoke): Don't set *exc to NULL, it is now
260         done by the caller.
261
262 2010-06-05  Mark Probst  <mark.probst@gmail.com>
263
264         * sgen-los.c: Keep bitmaps on chunk usage in LOS sections to speed
265         up freeing.
266
267 2010-06-05  Mark Probst  <mark.probst@gmail.com>
268
269         * sgen-gc.c, sgen-los.c: New LOS allocator that allocates large
270         segments of memory at once, to reduce the number of mmap/munmap
271         calls.
272
273 2010-06-05  Mark Probst  <mark.probst@gmail.com>
274
275         * sgen-gc.c, sgen-protocol.c, sgen-protocol.h: Protocol degraded
276         allocations and distinguish between normal, degraded and pinned
277         allocations.
278
279 2010-06-05  Mark Probst  <mark.probst@gmail.com>
280
281         * sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c: Make degraded
282         allocations count toward major collections and trigger major
283         collections from degraded allocations if appropriate.
284
285 2010-06-05  Mark Probst  <mark.probst@gmail.com>
286
287         * sgen-marksweep.c (ms_get_empty_block): Update heap boundaries.
288
289 2010-06-05  Mark Probst  <mark.probst@gmail.com>
290
291         * sgen-gc.c: Enable mark&sweep again.
292
293 2010-06-05  Mark Probst  <mark.probst@gmail.com>
294
295         * sgen-gc.c: Increase the maximum small object size to 8000 bytes.
296
297 2010-06-05  Mark Probst  <mark.probst@gmail.com>
298
299         * sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c: Have only one
300         major heap allowance for minor collections, instead of two
301         separate ones for small and large objects.  This reduces the
302         number of major collections.
303
304 2010-06-04  Marek Habersack  <mhabersack@novell.com>
305
306         * icall.c (ves_icall_MonoType_GetEvent): be case insensitive is
307         the BFLAGS_IgnoreCase is raised
308
309 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
310
311         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Rewrite this so it returns
312         all information in a single structure. Return information about scopes as well.
313
314         * mono-debug.c (mono_debug_lookup_locals): Ditto.
315
316 2010-06-02  Geoff Norton  <gnorton@novell.com>
317
318         * appdomain.c: If we are running with IOMAP we might
319         have been provided a string that isn't case-aware for our file-
320         system, so we need to use io-portability to check if the file 
321         exists, rather than a simple glib test.
322
323         Fixes #608849
324
325 2010-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
326
327         * verify.c (verify_generic_parameters): Verify if
328         there are not loops in constraints.
329
330 2010-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
331
332         * verify.c (is_compatible_boxed_valuetype): Constaints
333         must be recursively checked if one generic argument
334         has a constraint on another.
335
336         Fixes #610625.
337
338 2010-05-31  Miguel de Icaza  <miguel@novell.com>
339
340         * console-unix.c (terminal_get_dimensions): Fix my previous
341         botched commit and return the actual value obtained from the ioctl.
342
343 2010-05-29  Mark Probst  <mark.probst@gmail.com>
344
345         * sgen-gc.c: Always use DESC_TYPE_RUN_LENGTH for objects without
346         references so that we don't have to do the cache-cold fetch of the
347         class in copy_object_no_checks().
348
349 2010-05-29  Robert Jordan  <robertj@gmx.net>
350
351         * marshal.c (mono_marshal_asany): marshal LPWSTRs using
352         mono_marshal_string_to_utf16_copy () to avoid memory allocation
353         mismatches under Windows. Fixes pinvoke2:test_0_asany.
354
355 2010-05-28  Mark Probst  <mark.probst@gmail.com>
356
357         * sgen-gc.c: Change default nursery size to 4MB, because it
358         improves performance on many applications and benchmarks.
359
360 2010-05-28  Mark Probst  <mark.probst@gmail.com>
361
362         * sgen-gc.c, sgen-scan-object.h: Value types in arrays are not
363         always aligned to ALLOC_ALIGN.  To handle this, shift the size in
364         the GC descriptor by one bit, and don't encode the size for value
365         types not containing references.  Also get rid of
366         DESC_TYPE_STRING.
367
368 2010-05-28  Mark Probst  <mark.probst@gmail.com>
369
370         * sgen-gc.c: Don't depend on the size encoded in a GC descriptor
371         other than for remset processing.
372
373 2010-05-28  Mark Probst  <mark.probst@gmail.com>
374
375         * sgen-gc.c: More and better remset consistency checks.
376
377 2010-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
378
379         * sgen-gc.c: Add a note about the int[] trick to avoid some
380         memset.
381
382 2010-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
383
384         * sgen-gc.c (sort_addresses): Use heap sort since it has better
385         performance.
386
387         This helps programs with lots of threads or thread with big stacks
388         since the bottleneck the pin queue can get quite big.
389
390 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
391
392         * sgen-gc.c (search_fragment_for_size): Move fragment setup into
393         a separate function called setup_fragment.
394
395         * sgen-gc.c (search_fragment_for_size_range): Variant of
396         search_fragment_for_size that does search for a secondary smaller
397         size.
398
399         * sgen-gc.c (mono_gc_alloc_obj_nolock): Use search_fragment_for_size_range
400         for tlab allocation so small fragments are used.
401
402         This patch uses small fragments for tlab allocation when possible in order
403         to improve nursery utilization. With a fixed size tlab this patch is not very
404         usefull but once size gets dynamically adjusted, this will be invaluable.
405
406         Performance under pystone 500k is unchanged. Nursery utilization improves by
407         3.5% and 18 more fragments are used per minor GC.
408
409         Performance under modified binary-tree is unchanged. Nursery utilization
410         improves by 0.5% and 3 more fragments are used per minor GC.
411
412         These numbers make sense since as more pinning happens, more fragments are
413         created and so are the chances of having a bunch of small ones.
414
415 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
416         * sgen-gc.c (mono_gc_alloc_obj_nolock): Avoid wasting space     from
417         the current fragment when allocating a TLAB.
418
419         Reduces number of pystone 500k minor collections by 7%.
420
421 2010-05-25  Martin Baulig  <martin@ximian.com>
422
423         Applying a patch from Lucas Meijer <lucas@lucasmeijer.com>.
424
425         * debug-mono-symfile.c: Release memory from symfiles that were
426         loaded from memory.
427
428 2010-05-24  Zoltan Varga  <vargaz@gmail.com>
429
430         * marshal.c (mono_marshal_free_dynamic_wrappers): Avoid an assert when this is called
431         during shutdown.
432
433 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
434
435         * marshal.c (mono_marshal_get_runtime_invoke): Simplify the code computing the
436         target class and remove some dead code.
437
438 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
439
440         * metadata.c: Add a 'transient' argument to the MonoType creation functions, so
441         the MonoTypes inside method headers can be freed when the header is freed.
442
443 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
444
445         * threadpool.c: Fix the DISABLE_SOCKETS build.
446
447 2010-05-19 Martin Baulig  <martin@novell.com>
448
449         Fix #604911.
450
451         * threads.c (wait_for_tids_or_state_change): Use an
452         alertable WaitForMultipleObjectsEx().
453         (wait_for_tids): Likewise.
454
455 2010-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
456
457         * marshal.c (mono_marshal_init): Register mono_gchandle_get_target
458         icall.
459
460         * marshal.c (mono_delegate_to_ftnptr): Use a gchandle instead of
461         gc tracked memory.
462
463         * marshal.c (mono_marshal_emit_managed_wrapper): Retrieve the first
464         argument from a gchandle.
465
466         * marshal.c: Get rid of the delegate_target_locations hash table.
467
468         Fixes #605295.
469
470 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
471
472         * sgen-gc.c: Use _fast variants for string and array length.
473
474 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
475
476         * sgen-gc.c: Fix counters to be 64 bits.
477
478         * sgen-gc.c (dump_heap): Fix formating strings.
479
480 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
481
482         * sgen-gc.c (global_remset_location_was_not_added): New
483         function that implements a 2 element LRU cache for just
484         added remsets. It is used to avoid adding duplicate ones.
485
486         * sgen-gc.c (add_to_global_remset): Check cache before
487         adding new entry.
488
489         * sgen-gc.c (scan_from_remsets): Don't process global remsets
490         that fail the cache test.
491
492         * sgen-gc.c (scan_from_remsets): Simplify the global remset
493         loop removing one condtion that is not possible.
494
495         A 2 element LRU cache was chosen by profiling IronPython 2.6
496         pytones with 1M passes and corlib compilation.
497
498         For the ipy test duplication was originally 940.92, measured
499         by "Store remsets" divided by "Unique store remsets".
500
501         With a 2-element LRU, duplication went to 1.007. Without the
502         check in scan_from_remsets 1.438.
503
504         With a 16-elements LRU, duplication reduction was negligibe.
505         A single element cache was basically of no use.
506
507         With corlib compilation duplication went from  1.4 to 1.02.
508
509         Performance results is a 20% time decrease for ipy and 2%
510         with corlib.
511 2010-05-16  Zoltan Varga  <vargaz@gmail.com>
512
513         * mono-debug.c (mono_debug_cleanup): Fix a crash in the previous change.
514
515 2010-05-15  Geoff Norton  <gnorton@novell.com>
516
517         * mono-debug.c: Fix a leak of the global table on shutdown.
518
519 2010-05-15  Geoff Norton  <gnorton@novell.com>
520
521         * debug-mono-symfile.(c|h): Add mono_debug_symfile_free_location
522         to clean up MonoDebugSourceLocation's.
523
524 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
525
526         * class.c (mono_class_create_from_typedef): Fail a class
527         if there is a loop with its parent.
528
529         Fixes #598239.
530
531 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
532
533         * loader.c (mono_loader_set_error_type_load): Convert
534         a g_warninig to mono_trace_warning.
535
536 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
537
538         * class.c (mono_class_get_full): Release strings on failure
539         to avoid leaking them.
540
541 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
542
543         * class.c (mono_class_create_from_typedef): Only return
544         the class if no exceptions were detected.
545
546         * class.c (mono_class_create_from_typedef): Don't remove
547         broken classes from class_cache. Just set failure and
548         bail out.
549
550         This fixes a memory a memory leak where resolving the same
551         broken class multiple times resulted in a memory leak.
552
553         The right behavior would be to actually return the class
554         a let the caller figure it out.
555
556 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
557
558         * mono-ptr-array.h: Add mono_ptr_array_sort.
559
560         * reflection.c (mono_image_build_metadata): Replace that ugly
561         qsort call with mono_ptr_array_sort.
562
563 2010-05-13  Mark Probst  <mark.probst@gmail.com>
564
565         * sgen-gc.c: Switch to the copying major collector, because
566         Mark&Sweep is still buggy.
567
568 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
569
570         * reflection.c (mono_image_build_metadata): Don't put managed
571         references on non-tracked memory.
572
573 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
574
575         * sgen-archdep.h (ARCH_COPY_SIGCTX_REGS): Fix this for amd64.
576
577 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
578
579         * icall.c: Switch to mono-ptr-array.h.
580
581 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
582
583         * Makefile.am: Add mono-ptr-array.h.
584
585         * mono-ptr-array.h: New header that implements
586         a GC tracked equivalent of g_ptr_array. 
587
588 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
589
590         * icall.c (ves_icall_Type_GetInterfaces): Rewrite this
591         method to avoid initializing the class.
592
593         Fixes #605115.
594
595 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
596
597         * icall.c (ves_icall_System_MonoType_getFullName): It
598         doesn't require to init the class.
599
600 2010-05-11  Miguel de Icaza  <miguel@novell.com>
601
602         * console-unix.c: Signal handlers now save and restore errno.   We
603         have never had a bug report about this, ioctl does change errno. 
604
605         Hide the unused method.   
606
607         Remove internal declarations from public headers.
608
609         Document what the signal handler is doing
610
611 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
612
613         * sgen-gc.c (clear_unreachable_ephemerons): Clear
614         unreachable keys with a tombstone.
615
616         * sgen-gc.c (mark_ephemerons_in_range): Ignore
617         tombstone keys.
618
619 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
620
621         * icall-def.h:
622         * gc-internals.h:
623         * gc.c: New GC:get_ephemeron_tombstone.
624
625 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
626
627         * appdomain.c (create_exceptions): Rename to
628         create_domain_objects. Create the ephemeron tombstone object.
629
630         * domains-internals.h (MonoDomain): Add new field for the
631         ephemeron tombstone.
632
633         * domain.c (mono_domain_free): Set ephemeron_tombstone to
634         NULL.
635
636 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
637
638         * sgen-gc.c (mono_gc_clear_domain): Both ephemerons
639         and dislinks must be processed before LOS since they
640         could end up with pointers to memory returned to the
641         OS.
642
643 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
644
645         * class.c (mono_class_alloc): New helper function to centralize memory allocation
646         for classes, allocates either from the image mempool or from the heap.
647
648         * class.c: Use mono_class_alloc to allocate memory owned by classes.
649
650         * metadata.c (free_generic_class_dependents): Free more items belonging to
651         generic classes.
652
653 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
654
655         * reflection.c (mono_reflection_method_get_handle): Handle MonoGenericMethod
656         as well. Fixes #604054.
657
658 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
659
660         * metadata-verify.c: MS doesn't mind duplicates in the
661         typeref table. Move it to full verification.
662
663         Fixes #600508.
664
665 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
666
667         * image.c (do_mono_image_load): Report verification
668         errors when loading an image fails.
669
670 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
671
672         * reflection.c (mono_type_get_object): Remove chunk of code
673         no longer in use.
674
675 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
676
677         * icall-def.h
678         * icall.c: Delete some unused icalls.
679
680 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
681
682         * appdomain.c (mono_domain_has_type_resolve): Check for
683         NULL domain objects to make pedump happy.
684
685         * object.c (mono_field_get_value): Assert on NULL object.
686         It's the caller resposibility to check for this.
687
688         * object.c (mono_field_get_value_object): Ditto.
689
690         Fixes #601384.
691
692 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
693
694         * icall.c (ves_icall_type_is_subtype_of): Non iface subtype
695         checks can avoid doing a mono_class_init.
696
697         * icall.c: Remove mono_class_init from a bunch of icalls that
698         don't need it.
699
700         Hopefully we're now lazy enough to fix most victims of #601431.
701
702 2010-05-07  Mark Probst  <mark.probst@gmail.com>
703
704         * sgen-gc.c: Remove REMSET_ROOT_LOCATION.
705
706 2010-05-07  Mark Probst  <mark.probst@gmail.com>
707
708         * sgen-gc.c: Remove unnecessary checks in domain clearing code.
709
710 2010-05-07  Marek Habersack  <mhabersack@novell.com>
711
712         * culture-info-tables.h: updated to include en-TT culture. Fixes
713         bug #594035
714
715 2010-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
716
717         Move mono_class_init from mono_type_get_object to icalls.
718         This causes massive memory savings for Assembly::GetTypes () and
719         make it fail a lot less due to missing dependencies.
720
721         This is a conservative, naive change as it doesn't remove some
722         mono_class_init from places that might not need them. Carefull
723         review of those should follow.
724
725         * reflection.c (mono_type_get_object): Don't mono_class_init the
726         returning type.
727
728         * reflection.c:
729         * cominterop.c:
730         * icall.c:
731         * marshal.c: Call mono_class_init in functions receiving a MonoType
732         object.
733
734         First step into fixing #601431.
735
736 2010-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
737
738         * gc-internal.h: Add new functions required for ephemeron support.
739
740         * gc.c: Implement ves_icall_System_GC_register_ephemeron_array.
741
742         * icall-def.h: Add GC::register_ephemeron_array.
743
744         * object.c (compute_class_bitmap): sys.rt.cs.Ephemeronis an opaque type
745         under sgen. Its fields must not be marked.
746
747         * sgen-gc.c (mono_gc_clear_domain): Call cleanup function for ephemerons.
748
749         * sgen-gc.c (finish_gray_stack): Mark all reachable ephemerons before
750         handling finalizable objects. Clean dead ones after all finalizable
751         handling.
752
753         * sgen-gc.c (dump_heap): Add new kind of internal memory.
754
755         * sgen-gc.c (null_ephemerons_for_domain): Remove from the list ephemeron
756         arrays from the dead domain.
757
758         * sgen-gc.c (clear_unreachable_ephemerons): Clear dead ephemerons entries.
759
760         * sgen-gc.c (mark_ephemerons_in_range): Mark/Copy all ephemeron values
761         whose keys are reachable.
762
763         * sgen-gc.c (mono_gc_ephemeron_array_add): Register the array into the
764         list of live ephemeron arrays.
765
766 2010-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
767
768         * class.c (mono_class_layout_fields): Don't perform alignment
769         if align is zero.
770
771         * class.c (mono_class_layout_fields): Init field related information
772         to sane defaults.
773
774 2010-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
775
776         * verify.c (mono_verifier_verify_class): Verify the constraint
777         of generic type definitions.
778
779 2010-05-04  Mark Probst  <mark.probst@gmail.com>
780
781         * sgen-marksweep.c: Simplify free list maintenance in sweep.
782
783 2010-05-02  Mark Probst  <mark.probst@gmail.com>
784
785         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Unify
786         major_do_collection() across the two major collectors.
787
788 2010-05-02  Mark Probst  <mark.probst@gmail.com>
789
790         * sgen-gc.c: Add heavy statistics counter for re-added global
791         remsets.
792
793 2010-05-02  Mark Probst  <mark.probst@gmail.com>
794
795         * sgen-marksweep.c, sgen-gc.c: Use one mark bit per ALLOC_ALIGN to
796         get rid of a division in critical code.
797
798 2010-04-29  Mark Probst  <mark.probst@gmail.com>
799
800         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Have separate
801         blocks for objects without references in mark&sweep, to improve
802         performance.
803
804 2010-04-28  Mark Probst  <mark.probst@gmail.com>
805
806         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Bring heavy
807         statistics up-to-date.
808
809 2010-04-27  Mark Probst  <mark.probst@gmail.com>
810
811         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Support
812         heap-dump for mark&sweep.
813
814 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
815
816         * loader.c (mono_method_get_header): Move the is_inflated case before the
817         wrapper case, as a method can be both.
818
819 2010-04-27  Mark Probst  <mark.probst@gmail.com>
820
821         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Don't do a
822         separate pass to scan pinned and large object but use the gray
823         queue like for regular objects.
824
825 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
826
827         * boehm-gc.c: Applied patch from Robert Nagy (robert@openbsd.org). Include
828         string.h for memmove.
829
830         socket-io.c: Applied patch from Robert Nagy (robert@openbsd.org).
831         ipaddress_to_struct_in6_addr() is only needed when
832         defined(HAVE_STRUCT_IP_MREQN) || defined(HAVE_STRUCT_IP_MREQ).
833
834 2010-04-25  Mark Probst  <mark.probst@gmail.com>
835
836         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Properly
837         separate copy_object functions for major vs nursery.  Allows us to
838         get rid of a few checks and the start and end parameters for many
839         functions.
840
841 2010-04-25  Mark Probst  <mark.probst@gmail.com>
842
843         * sgen-marksweep.c, sgen-gc.c, sgen-major-copying.c,
844         sgen-protocol.c, sgen-protocol.h, Makefile.am: Major Mark&Sweep
845         collector.
846
847 2010-04-25  Zoltan Varga  <vargaz@gmail.com>
848
849         * class.c (mono_class_create_from_typedef): Initialize class->nested_in after
850         calling setup_mono_type () since the nested parent could recursively reference
851         the nested class using generic constraints. Fixes #599469.
852
853 2010-04-24  Mark Probst  <mark.probst@gmail.com>
854
855         * sgen-gc.c, sgen-pinning.c, sgen-major-copying.c: Major collector
856         abstraction.
857
858 2010-04-24  Mark Probst  <mark.probst@gmail.com>
859
860         * sgen-gc.c: Remove more unneeded code.
861
862 2010-04-24  Mark Probst  <mark.probst@gmail.com>
863
864         * sgen-gc.c: Disable managed allocator and wbarrier when the
865         binary protocol is enabled.
866
867 2010-04-24  Mark Probst  <mark.probst@gmail.com>
868
869         * sgen-gc.c: Put nursery-fragment-cleaning into its own function.
870
871 2010-04-24  Mark Probst  <mark.probst@gmail.com>
872
873         * sgen-gc.c: Remove a few commented out and unneeded bits.
874
875 2010-04-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
876
877         * threadpool.c: patch from Robert Nagy that fixes a nullref and
878         uses mono_sem_wait instead of mono_sem_timedwait for openbsd.
879
880 2010-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
881
882         * icall.c (ves_icall_type_is_assignable_from): Properly handle byref
883         types.
884
885         Fixes #331126
886
887 2010-04-21  Mark Probst  <mark.probst@gmail.com>
888
889         * sgen-gc.c: Turn off semi-precise stack mark.
890
891 2010-04-20  Sebastien Pouliot  <sebastien@ximian.com>
892
893         * reflection.c (mono_custom_attrs_from_index): Use right function
894         to free 'list' (i.e. g_list_free) if the verifier fails.
895
896 2010-04-19 Rodrigo Kumpera  <rkumpera@novell.com>
897
898                 * verify.c: Handle the case where mono_type_get_underlying_type_any
899                 returns NULL. Remove duplicated code between MONO_TYPE_GENERICINST
900                 and MONO_TYPE_VALUETYPE in those case.
901
902                 Based on a slightly modified patch by Sebastien Pouliot  <sebastien@ximian.com>
903
904                 Hopefully Fixes #564253.
905
906 2010-04-19 Gonzalo Paniagua Javier <gonzalo@novell.com>
907
908         * domain-internals.h: made threadpool_jobs volatile.
909         * mono-wsq.c: add an assert to verify that the threadpool cleaned up
910         all local jobs.
911         * threadpool.c:
912                 -When two threads try to initialize the socket IO pool,
913                 the second one waits until the intialization is finished
914                 instead of continuing right away.
915                 -Add checks for domain unload: no items added in this case.
916                 -Only measure the time every 10 elements added to the queue.
917                 This is an experiment since linux x86 gettimeofday() sucks.
918                 -Create new thread if there are none waiting for work items.
919                 -There was a missing decrement of the busy threads.
920                 -Make sure the local queue is cleaned up before exiting the
921                 thread when the program ends.
922
923 2010-04-19 Rodrigo Kumpera  <rkumpera@novell.com>
924
925         * reflection.c (mono_type_get_object): Normalize generics types
926         as to how managed code expect them to be. A generic instance over
927         the GTD arguments must have the same mirror as the GTD itself.
928
929         Fixes #473289.
930
931 2010-04-19  Zoltan Varga  <vargaz@gmail.com>
932
933         * locales.c: Implement support for DISABLE_NORMALIZATION.
934
935 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
936
937         * marshal.c (mono_marshal_get_native_func_wrapper): Set the marshal info to NULL,
938         since it is not a MonoMethod.
939
940 2010-04-16  Sebastien Pouliot  <sebastien@ximian.com>
941
942         * icall-def.h: Add get_RequiresElevatedPermissions icall to
943         System.Security.SecurityManager - used only by Moonlight
944         * security-core-clr.c|h: Add Elevated Trust/Permission support
945         for CoreCLR / Moonlight
946
947 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
948
949         * boehm-gc.c (mono_gc_base_init): Applied patch from Robert Nagy
950         (robert@openbsd.org). Fix GC_stackbottom calculation on OpenBSD.
951
952 2010-04-16  Marek Habersack  <mhabersack@novell.com>
953
954         * mono-perfcounters.c: added code for the "Mono
955         Memory/Total Physical Memory" performance counter.
956
957         * mono-perfcounters-def.h: added definition of the "Mono
958         Memory/Total Physical Memory" performance counter.
959
960 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
961
962         * class.c (mono_class_get_method_by_index): Return NULL
963         on type load failures.
964
965 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
966
967         * class.c (mono_class_from_typeref): Check if the supplied
968         image has an assembly bound to it.
969
970         Fixes #567884.
971
972 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
973
974         * loader.c (mono_method_get_signature_full): Use new function
975         inflate_generic_signature_checked to check for errors.
976
977         Fixes #560839.
978
979 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
980
981         * loader.c (inflate_generic_signature): Add _checked variant
982         and move this function to use it.
983
984 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
985
986         * class.c (mono_class_setup_vtable_general): Use error checking
987         version of mono_class_inflate_generic_method_full.
988
989         Fixes #596975.
990
991 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
992
993         * class.c (mono_class_inflate_generic_type_no_copy): Do proper
994         error handling passing MonoError around.
995
996         Fixes #560336.
997
998 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
999
1000         * socket-io.c: make GetHostByName ("") work on windows.
1001         Fixes bug #456723.
1002
1003 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1004
1005         * object-internals.h:
1006         * threads.c: use a spin lock when accesing the per-thread appdomain
1007         list.
1008
1009 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1010
1011         * threads.c: no need to take the threads lock in push/pop appdomain.
1012
1013 2010-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1014
1015         * reflection.c (_mono_reflection_parse_type): MS supports
1016         non-assembly-qualified types in a generic type parameter list
1017         when enclosed in '[]' (which signals that they should be a fqn).
1018
1019         This breaks ECMA specs for how type names are encoded in cattr
1020         blobs but F# does it.
1021
1022         Fixes #576342.
1023
1024 2010-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1025
1026         * icall.c (ves_icall_InternalInvoke): Check if the vtable is sane
1027         for instance methods/ctors.
1028
1029         Fixes #422113.
1030
1031 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1032
1033         * reflection.c: Use the new verifier support for checking
1034         custom attributes.
1035
1036         Fixes #595306.
1037
1038 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1039
1040         * metadata-verify.c: Implement structural verification
1041         of custom attributes. This check requires access to the
1042         loader since to resolve the size of an enum we have to
1043         look it up.
1044         We don't check if named argumenments are encoded in a
1045         compatible fashion to their underlying field/prop.
1046         Maybe we should?
1047
1048         * verify-internals.h: Add two new cattr verification API.
1049
1050 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1051
1052         * metadata-verify.c (decode_signature_header): Fix signature.
1053
1054 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1055
1056         * verify.c (mono_verifier_is_enabled_for_method): Handle
1057         assembly less images.
1058
1059         * verify.c (mono_verifier_is_class_full_trust): Ditto.
1060
1061 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1062
1063         * loader.c (mono_method_signature_checked): Properly
1064         init MonoError.
1065
1066         * loader.c (mono_method_signature): It's the calee
1067         resposibility to init the error object.
1068
1069 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1070
1071         * metadata-verify.c (decode_signature_header): Do proper
1072         overflow checking.
1073
1074 Tue Apr 13 12:36:29 CEST 2010 Paolo Molaro <lupus@ximian.com>
1075
1076         * reflection.c: maintain the invariants required by
1077         mono_class_layout_fields() also in typebuilder_setup_fields ().
1078
1079 2010-04-11  Sebastien Pouliot  <sebastien@ximian.com>
1080
1081         * security-core-clr.c: Call mono_class_setup_methods in 
1082         get_default_ctor before checking klass->methods. Fix typo in
1083         comment
1084
1085 2010-04-10  Jb Evain  <jbevain@novell.com>
1086
1087         * domain.c (supported_runtimes): remove .net 4.0 beta 2 and
1088         add .net 4.0 RTM version.
1089
1090 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1091
1092         * reflection.c (resolve_object): Properly inflate generic
1093         methods when a context is supplied.
1094
1095         Fixes #591226.
1096
1097 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1098
1099         * verify.c (mono_method_verify): A switch op don't empty
1100         the stack for the next one. Fixes a bug when running fsi
1101         under --verify-all.
1102
1103 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1104
1105         * metadata-verify.c (is_valid_standalonesig_blob): Accept
1106         fields as valid standalone sig too. F# does generate them.
1107
1108         * metadata-verify.c (verify_typedef_table_full): Ignore
1109         what <module> extends.
1110
1111 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1112
1113         * verify.c (do_invoke_method): It's ok to do use call with
1114         virtual, non-final methods if their class is sealed.
1115
1116 2010-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1117
1118         * icall.c (ves_icall_MonoField_GetValueInternal): This function
1119         is a near identical copy of mono_field_get_value_object. So simply
1120         call it.
1121
1122         * object.c (mono_field_get_value_object): Handle literal fields
1123         on open generic classes.
1124
1125         Fixes #594942.
1126
1127 2010-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1128
1129         * reflection.c (mono_reflection_create_runtime_class): Setup
1130         parent/supertype information again since it can be changed
1131         without notice.
1132
1133 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1134
1135         * verify.c (verify_type_compatibility_full): Properly handle
1136         stores between arrays of primitives.
1137
1138         Fixes the verifier side of #555950.
1139
1140 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1141
1142         class.c (mono_bounded_array_class_get): Properly init
1143         cast_class to take the fact that uint[] and int[] can be
1144         casted between each other.
1145
1146         Fixes #555950.
1147
1148 2010-04-07  Geoff Norton  <gnorton@novell.com>
1149
1150         * domain.c: Avoid a deadlock on osx.  Fixes #565765
1151
1152 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1153
1154         * icall.c (ves_icall_System_Enum_ToObject): Avoid a crash for unfinished type
1155         builders. Fixes #594464.
1156
1157 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1158
1159         * icall.c (ves_icall_System_Environment_Exit): Shutdown the threadpool before
1160         waiting for all threads to suspend, as those threads can't be suspended.
1161
1162 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1163
1164         * threads.c (mono_thread_suspend_all_other_threads): Call ensure_synch_cs_set ()
1165         to avoid crashes on newly created threads.
1166
1167 2010-04-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
1168
1169         * file-io.c: reset the MonoIOStat structure in case of error.
1170         Fixes bug #582667.
1171
1172 2010-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
1173
1174         * class.c (print_implemented_interfaces): Print proper type name.
1175
1176         * class.c (mono_class_setup_vtable): Don't try that hard to produce
1177         the override map for generic instances since it later ignored.
1178
1179         * class.c (mono_class_implement_interface_slow): Don't break for
1180         dynamic generic instances.
1181
1182         * object.c (mono_runtime_invoke_array): Add an assert for allocation.
1183
1184         * reflection.c (mono_reflection_method_get_handle): New method that
1185         resolves a method handle.
1186
1187         * reflection.c (mono_reflection_get_dynamic_overrides): Handle the
1188         case when we override methods from a dynamic generic instance interface.
1189
1190         Fixes #575941.
1191
1192 2010-04-05 Gonzalo Paniagua Javier <gonzalo@novell.com>
1193
1194         * threadpool.c: don't attempt to close the pipe when it has not been
1195         created.
1196
1197 2010-04-05 Gonzalo Paniagua Javier <gonzalo@novell.com>
1198
1199         * threadpool.c: if there are no waiting threads, try to start a new
1200         one. This fixes the not-so-random hangs in System.ServiceModel tests.
1201         No need to use InterlockedCompareExchange to read volatile variables.
1202
1203 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1204
1205         * verify.c (verify_type_compatibility_full): Fail mixed valuetype
1206         and reference types that point to the same class.
1207
1208         Fixes #565598.
1209
1210 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1211
1212         * verify.c (verify_stack_type_compatibility_full): Ignore constraints
1213         when verifying compatibility between a generic instance and a generic
1214         parameter.
1215
1216         * verify.c (check_is_valid_type_for_field_ops): Improve error message.
1217
1218         * verify.c (stack_slot_stack_type_full_name): Improve verification type
1219         name.
1220
1221         Fixes #587849.
1222
1223 2010-04-04  Mark Probst  <mark.probst@gmail.com>
1224
1225         * sgen-gc.c: Remove superfluous scanning of alloc-pinned objects.
1226
1227 2010-04-04  Zoltan Varga  <vargaz@gmail.com>
1228
1229         * threads.c Applied some openbsd changes from Robert Nagy <robert@openbsd.org>.
1230
1231 2010-04-03  Marek Habersack  <mhabersack@novell.com>
1232
1233         * process.c: when cross-compiling with MinGW, force GetProcessId
1234         lookup using GetProcAddress.
1235
1236 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1237
1238         * sgen-gc.c: parse_environment_string_extract_number() must be
1239         static.
1240
1241 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1242
1243         * sgen-gc.c, sgen-gray.c: Macros for gray_object_enqueue() and
1244         gray_object_dequeue(), to make sure they're inlined.
1245
1246 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1247
1248         * sgen-gc.c, sgen-gray.c: Fix a few debug levels, put a few
1249         asserts in inner loops into DEBUG and lower MAX_DEBUG_LEVEL.
1250
1251 2010-04-02  Jb Evain  <jbevain@novell.com>
1252
1253         * exception.c: remove dead code.
1254
1255 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1256
1257         * *-gc.c: Fix the signature of mono_gc_get_used/heap_size () to be consistent
1258         with mono-gc.h.
1259
1260 2010-04-01  Sanjoy Das <sanjoy@playingwithpointers.com>
1261
1262         * sgen-gc.c: Make the nursery size adjustable by the
1263         MONO_GC_PARAMS environment variable.
1264
1265         Code is contributed under MIT/X11 license.
1266
1267 2010-04-01 Gonzalo Paniagua Javier <gonzalo@novell.com>
1268
1269         * threadpool.c: threadpool threads wait is alertable.
1270         Fixes bug #592964.
1271         Reduced the stack size of the *poll_wait thread.
1272
1273 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1274
1275         * exception.c|metadata-internals.h: Add new mono_get_exception_
1276         field_access_msg and mono_get_exception_method_access_msg 
1277         functions that accept a const char* parameter to provide more 
1278         details when the exception is thrown.
1279         * security-core-clr.c|h: Rework code to allow logging exceptions
1280         (export MONO_LOG_MASK="security") and to supply more details in
1281         [TypeLoad|MethodAccess|FieldAccess]Exception thrown. Also added
1282         mono_security_core_clr_is_field_access_allowed and 
1283         mono_security_core_clr_is_call_allowed to return an exception,
1284         with messages and logging, that can be emitted by method-to-ir.c
1285
1286 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1287
1288         * sgen-gc.c, sgen-pinning-stats.c: In the heap-dump, dump each
1289         pinned object.
1290
1291 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1292
1293         * appdomain.c (mono_domain_assembly_postload_search): Avoid a crash/assert if
1294         the assembly name is not well formed utf8. Fixes #567882.
1295
1296 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1297
1298         * reflection.c (mono_reflection_create_generic_class): Set the flags field of
1299         the generic parameters from the builder. Fixes #473298.
1300
1301 2010-03-31  Miguel de Icaza  <miguel@novell.com>
1302
1303         * object.c (mono_class_proxy_vtable): Eliminate warning. 
1304
1305         * marshal.c (emit_marshal_boolean): Eliminate possible
1306         uninitialized local warning. 
1307
1308 2010-03-30  Sebastien Pouliot  <sebastien@ximian.com>
1309
1310         * class.c (mono_class_init): Postpone coreclr inheritance check
1311         until the end of the initialization (so we can check up the 
1312         default ctor manually for the core-clr inheritance rules).
1313         * security-core-clr.c: Add the missing (undocumented) checks on
1314         default constructors when verifying inheritance rules.
1315
1316 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1317
1318         * domain-internals.h (MonoJitExceptionInfo): Add new field
1319         handler_end to the data union. To be used to point the end
1320         of a finally block.
1321
1322 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1323
1324         * reflection.c: Add support for new v4 type
1325         System.Reflection.MonoModule that is the concrete version
1326         of Module which is abstract unver v4.
1327
1328 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1329
1330         * class.c (mono_class_init): Don't set class failure after
1331         inited = 1 is set. It must be done before.
1332
1333 2010-03-30  Andreas Färber  <andreas.faerber@web.de>
1334
1335         * mono-config.c: Add support for OS "haiku"
1336         * ChangeLog: Fix UTF-8 encoding
1337
1338         Code is contributed under MIT/X11 license.
1339
1340 Tue Mar 30 15:53:06 CEST 2010 Paolo Molaro <lupus@ximian.com>
1341
1342         * console-unix.c: fixed include logic for sys/ioctl.h.
1343
1344 2010-03-30  Mark Probst  <mark.probst@gmail.com>
1345
1346         * threads.c: Fix bitmap generation for TLS marking on 64 bit
1347         systems.
1348
1349 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1350
1351         * icall.c (ves_icall_System_Enum_get_underlying_type): Don't crash on
1352         unfinished/broken typebuilders.
1353
1354 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1355
1356         * sgen-gc.c: Use the same heuristic for the LOS target that we use
1357         for the minor section allowance.
1358
1359 2010-03-29  Raja R Harinath  <harinath@hurrynot.org>
1360
1361         * metadata-verify.c (INVALID_METHOD_IMPLFLAG_BITS): Allow bit 6
1362         "NoOptimization".
1363
1364 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1365
1366         * sgen-gc.c: Count bytes allocated with heavy statistics.
1367
1368 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1369
1370         * sgen-gc.c: More detailed time statistics.
1371
1372 Mon Mar 29 11:52:34 CEST 2010 Paolo Molaro <lupus@ximian.com>
1373
1374         * gc-internal.h, sgen-gc.c, threads.c, utils/mono-hash.c:
1375         fix the user defined mark interface to pass a pointer
1376         to the object location and not the object itself.
1377
1378 2010-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
1379
1380         * reflection.c (mono_method_body_get_object): Release
1381         the method header before the call to CACHE_OBJECT since
1382         this is a macro that returns.
1383
1384 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1385
1386         * class.c (inflate_generic_type): mono_metadata_type_dup
1387         already dupes array information, the g_memdup was just
1388         leaking memory.
1389
1390 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1391
1392         * verify.c: Add stack_peek function. Fix CEE_DUP
1393         to not read from invalid memory if push did expand
1394         the stack.
1395
1396 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1397
1398         * verify.c: Remove old table verification code that has
1399         been superseeded by the new metadata verifier.
1400
1401         * verify.h: Remove mono_image_verify_tables from the public
1402         API.
1403
1404         * pedump.c: Fix for removed bits.
1405
1406 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1407
1408         * verify.c: Allocate stack slows lazily to reduce stack usage
1409         in case of methods with huge stacks. Reduces memory consumption
1410         for mcs yyparse from 459Mb to 1.8Mb.
1411
1412 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1413
1414         * threadpool.c: don't try executing items from domains being
1415         unloaded. Fixes appdomain-async-invoke test.
1416
1417 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1418
1419         * threadpool.c: spin while the threadpool initializes.
1420         * mono-wsq.c: if the WSQ has not been initialized or has been shut
1421         down, don't do anything.
1422
1423 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1424
1425         * threads.c (mono_thread_create_internal): Set the GC type of the
1426         threads_starting_up hash table.
1427
1428 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1429
1430         * threadpool.c: reset 'state' to avoid returning non-null when the
1431         event type is not found.
1432
1433 Fri Mar 26 19:03:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1434
1435         * sgen-gc.c: make copy_object () take the address of the
1436         slot holding the reference. This allows saving memory stores
1437         when not needed and it allows keeping track of oldspace->nursery
1438         references for the card table code.
1439
1440 2010-03-26  Andreas Färber  <andreas.faerber@web.de>
1441
1442         * null-gc.c (mono_gc_invoke_with_gc_lock): Fix function name.
1443
1444         Code is contributed under MIT/X11 license.
1445
1446 Fri Mar 26 11:33:17 CET 2010 Paolo Molaro <lupus@ximian.com>
1447
1448         * object.c, threads.c, threads-types.h, threads.h: make the
1449         managed thread local storage references precisely tracked.
1450
1451 2010-03-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
1452
1453         * threadpool.[ch]: reworked the threadpool:
1454                 -Threadpool threads use a work-stealing queue. Adding a work
1455                 item from a threadpool thread will queue it in the thread
1456                 local queue without locking (in most cases).
1457                 -epoll events are coalesced before being added to the IO
1458                 queue.
1459                 -Dynamically change the number of active threads
1460                 -Changed the global queue to be more GC friendly
1461
1462         * class-internals.h: add 2 new performance counters for the number of
1463         threads in the threadpool and the IO threadpool.
1464
1465         * object-internals.h: new field in MonoAsyncResult.
1466         * icall-def.h: new internal call for queueing work items.
1467
1468         * Makefile.am: add 2 new files.
1469
1470         * appdomain.c: bump up corlib version.
1471
1472         * mono-wsq.[ch]: an implementation of a work-stealing queue.
1473
1474         * mono-perfcounters-def.h:
1475         * mono-perfcounters.c: added 2 new performance counters.
1476
1477 2010-03-26  Mark Probst  <mark.probst@gmail.com>
1478
1479         * sgen-gc.c: More FIXME/TODO updates.
1480
1481 2010-03-25  Mark Probst  <mark.probst@gmail.com>
1482
1483         * gc-internal.h, sgen-gc.c, sgen-gc.h, boehm-gc.c, null-gc.c: New
1484         function mono_gc_invoke_with_gc_lock() which invokes a function
1485         with the guarantee that no collection will occur during its execution.
1486
1487 2010-03-25  Mark Probst  <mark.probst@gmail.com>
1488
1489         * sgen-gc.c: Update a few comments.
1490
1491 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1492
1493         * reflection.c: Add support for new v4 type
1494         System.Reflection.MonoAssembly that is the concrete version
1495         of Assembly which is abstract unver v4.
1496
1497 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1498
1499         * reflection.c (mono_reflection_get_custom_attrs_info): Protect
1500         code that uses System.Reflection.Emit in DISABLE_REFLECTION_EMIT.
1501
1502         Expose a few macros that are needed for SR but not SRE to the
1503         world (previous inside the SRE ifdef)
1504
1505 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1506
1507         * sgen-gc.c (gc_register_current_thread): We need
1508         stack_start_limit as well in the non-attribute pthread case.
1509
1510 2010-03-23 Rodrigo Kumpera  <rkumpera@novell.com>
1511
1512         * threads.c: Fix windows build.
1513
1514 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1515
1516         * thread-types.h: Add mono_thread_resume_interruption.
1517
1518         * threads.c: Add mono_thread_resume_interruption, this
1519         function should be called after the last protected handler
1520         found at interruption time has finished.
1521
1522 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1523
1524         * threads.c (ves_icall_System_Threading_Thread_ResetAbort):
1525         Check MonoInternalThread's ::state instead of ::abort_exc
1526         since the later can be lazily created.
1527
1528         This is specially problematic when running a finally block
1529         under AbortRequested state. ResetAbort must work, but the
1530         abort_exc object has not been created because interruption
1531         has not began.
1532
1533 2010-03-22  Geoff Norton  <gnorton@novell.com>
1534
1535         * locales.c: Its possible for CFStringGetCStringPtr
1536         to return null and not convert encodings.  Use
1537         CFStringGetCString instead.
1538
1539 Mon Mar 22 18:06:38 CET 2010 Paolo Molaro <lupus@ximian.com>
1540
1541         * class-internals.h, class.c, object.c: introduce compressed
1542         interface bitmaps (for now only under small config): this saves
1543         about 600 KB of runtime memory on gmcs bootstraps or monodevelop
1544         startups.
1545
1546 Mon Mar 22 16:03:34 CET 2010 Paolo Molaro <lupus@ximian.com>
1547
1548         * mono-debug.c: don't try to get the method header, it causes a
1549         deadlock and it is not used for anything anymore.
1550
1551 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1552
1553         * loader.c (mono_method_get_marshal_info): Fix the handling of dynamic methods
1554         broken by the last change.
1555
1556 2010-03-21  Andreas Färber  <andreas.faerber@web.de>
1557
1558         * socket-io.c: Don't depend on AF_SNA, AF_DECnet,
1559         SOCK_RDM.
1560         
1561         Code is contributed under MIT/X11 license.
1562
1563 2010-03-20  Sanjoy Das <sanjoy@playingwithpointers.com>
1564
1565         * sgen-gc.c (mono_gc_get_write_barrier): Handle non-aligned
1566         nursery.
1567
1568         Code is contributed under MIT/X11 license.
1569
1570 2010-03-19  Martin Baulig  <martin@ximian.com>
1571
1572         * mono-debug.c (MonoDebugWrapperData): Replace `cil_code' with a
1573         dummy field, containing an empty string.
1574         (mono_debug_add_method): Don't call mono_disasm_code() for wrappers.
1575
1576
1577 Fri Mar 19 17:26:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1578
1579         * class.c: setup_interface_offsets() refactor to not call
1580         mono_class_get_implemented_interfaces () more times than needed and
1581         to reduce the runtime memory requirements to be O(num_interfaces)
1582         instead of O(max_interface_id).
1583
1584 2010-03-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
1585
1586         * mono-mlist.[ch]: add mono_mlist_set_next ().
1587
1588 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1589
1590         * domain-internals.h: Add MonoTryBlockHoleJitInfo struct and
1591         associated changes to support holes in the protected range of a
1592         try block.
1593
1594         * domain.c: Add mono_jit_info_get_try_block_hole_table_info, which
1595         retrieves the holes table from a given MonoJitInfo.
1596
1597 Tue Mar 16 13:11:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1598
1599         * object.h, object-internals.h, object.c, icall.c, gc-internal.h,
1600         debug-helpers.c, cominterop.c, process.c, sgen-gc.c, socket-io.c:
1601         hide the contents of the MonoString and MonoArray structs from the
1602         public API. Change the accessor macros to accessors functions where
1603         needed. Adjusted the array API to allow for pointer-sized lengths and
1604         starting positions, so 64 bit arrays can be optionally provided in an
1605         API compatible way if needed on 64 bit systems.
1606
1607 Tue Mar 16 10:18:07 CET 2010 Paolo Molaro <lupus@ximian.com>
1608
1609         * class-internals.h, class.c, loader.c, marshal.c, metadata.c,
1610         reflection.c: the MonoMethodNormal struct is now unused, so remove it.
1611
1612 Mon Mar 15 18:28:00 CET 2010 Paolo Molaro <lupus@ximian.com>
1613
1614         * class-internals.h: remove the method header from MonoMethod since
1615         from now on it will be transient. We have a header pointer for method
1616         wrappers, since in that case we need to keep track of it. For this
1617         reason, all the Reflection.Emit generated methods use MonoMethodWrapper
1618         structs now. The same happens with MonoMethodInflated.
1619         * class.c: reset the sre_method flag for inflated method structures:
1620         this makes the code that cares look at the header in the MonoMethodInflated
1621         structure.
1622         * loader.c: lookup the method header in the appropriate field now that
1623         it is removed from MonoMethod.
1624         * metadata-internals.h: add a flag to the method header to know if it
1625         can be freed inside mono_metadata_free_mh ().
1626         * method-builder.c: updates after moving the header field from
1627         MonoMethod to MonoMethodWrapper.
1628         * reflection.c: MonoMethods generated from Reflection.Emit use
1629         MonoMethodWrapper structs if they need a method header now (later take
1630         advantage of this and remove all the current unsafe uses of method_aux_hash).
1631         * metadata.c: make method header parsing not leak when verification
1632         fails. Alloc it with g_malloc() and free it in mono_metadata_free_mh().
1633         These changes save a few hundred KB of runtime memory in a mcs
1634         bootstrap or a monodevelop startup.
1635
1636 2010-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1637
1638         * verify.c: Improve error message.
1639
1640 2010-03-12  Jb Evain  <jbevain@novell.com>
1641
1642         * reflection.c (add_exported_type): populate the exported
1643         table with the type's nested type.
1644
1645 2010-03-10  Mark Probst  <mark.probst@gmail.com>
1646
1647         * sgen-gc.c (STRING_SIZE): Semi-revert r153342.  I'm an idiot who
1648         can't read parentheses.
1649
1650 2010-03-10  Mark Probst  <mark.probst@gmail.com>
1651
1652         * threads.c (thread_cleanup): Add a guard to dereferencing
1653         "thread" to avoid an unlikely race condition.
1654
1655 2010-03-09  Sebastien Pouliot  <sebastien@ximian.com>
1656
1657         * assembly.c: Fix crash in moon-unit when aname->culture is NULL
1658         instead of an empty string.
1659
1660 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1661
1662         * object-internals.h (_G_BOOLEAN_EXPR): Fix the definition of this to explicitly
1663         convert to a boolean, recent gcc versions compile this differently.
1664
1665 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1666
1667        * sgen-gc.c (safe_object_get_size): Avoid a function call so this can really be
1668        inlined.
1669
1670 2010-03-09  Mark Probst  <mark.probst@gmail.com>
1671
1672         * sgen-gc.c (STRING_SIZE): Off by one.
1673
1674 2010-03-09  Mark Probst  <mark.probst@gmail.com>
1675
1676         * sgen-archdep.h: Fix the signal context register access for
1677         AMD64.
1678
1679 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1680
1681         * sgen-gray.c: Get rid of the unused 'start' field in GrayQueueSection.
1682
1683 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1684
1685         * verify.c: Store the initial basic block returned by mono_basic_block_split
1686         so we can release the whole list and not just the first one.
1687
1688 Mon Mar 8 17:30:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1689
1690         * verify.c, debug-helpers.c, profiler.c, loader.c,
1691         mono-basic-block.c, mono-debug.c, reflection.c: prepare to make
1692         MonoMethodHeader a transient entity.
1693
1694 2010-03-08  Zoltan Varga  <vargaz@gmail.com>
1695
1696         * sgen-gc.c (scan_needed_big_objects): Call drain_gray_stack () to avoid
1697         uncontrolled growth of the gray stack.
1698
1699         * sgen-gray.c: Rewrite this so it behaves like a stack, not a queue, so recently
1700         added items are removed first, improving cache locality. Avoid freeing queue
1701         segments in the fast path, use the list of segments as the free list, truncate
1702         it to its max size at the start of collection.
1703
1704 Mon Mar 8 10:13:52 CET 2010 Paolo Molaro <lupus@ximian.com>
1705
1706         * metadata-internals.h: more memory savings, both with small config and without.
1707
1708
1709 Sat Mar 6 19:12:12 CET 2010 Paolo Molaro <lupus@ximian.com>
1710
1711         * appdomain.c, domain-internals.h, domain.c, object.c:
1712         make class_vtable_hash into an array to reduce memory usage.
1713
1714 Sat Mar 6 18:16:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1715
1716         * mempool.c, class-internals.h, class.c, icall.c, metadata.c,
1717         object-internals.h, object.c, reflection.c, threadpool.c:
1718         reduce resource usage when the small config is selected.
1719         In particular, up to 64K of methods/fields/properties/events
1720         are allowed and "other" methods in events are ignored.
1721
1722 Fri Mar 5 19:05:47 CET 2010 Paolo Molaro <lupus@ximian.com>
1723
1724         * threads.c: reduce resource usage when compiled for a small config.
1725
1726 2010-03-05  Mark Probst  <mark.probst@gmail.com>
1727
1728         * sgen-gc.c: Also collect number of degraded-alloced objects with
1729         heavy statistics.
1730
1731 2010-03-04  Geoff Norton  <gnorton@novell.com>
1732
1733         * assembly.c: Only support OSX bundling if the bundle is 
1734         actually detectable.
1735
1736 2010-03-04  Geoff Norton  <gnorton@novell.com>
1737
1738         * loader.c: The marshal specs are freed at the end of the call
1739         but it explicitly frees the strings as well as the container,
1740         so we need to dup them too to avoid referencing free'd memory.
1741
1742 2010-03-04  Geoff Norton  <gnorton@novell.com>
1743
1744         * icall-def.h:
1745         * icall.c: Add a new private internal icall to construct
1746         an object from its type without running the ctor.
1747
1748 Thu Mar 4 15:37:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1749
1750         * profiler.c: allow multiple profiler engines to be loaded
1751         at the same time.
1752
1753 Wed Mar 3 20:19:45 CET 2010 Paolo Molaro <lupus@ximian.com>
1754
1755         * profiler-private.h, profiler.c, profiler.h, sgen-gc.c: introduce
1756         profiler event to track object moves.
1757
1758 Wed Mar 3 19:20:39 CET 2010 Paolo Molaro <lupus@ximian.com>
1759
1760         * object.c, profiler.c, profiler.h, string-icalls.c:
1761         remove the reduntant MONO_PROFILE_STRING_ALLOC profiler event.
1762
1763 2010-03-03  Miguel de Icaza  <miguel@novell.com>
1764
1765         * decimal.c (mono_double2decimal): Add support for reducing the
1766         scale of a decimal.  It turns the 0.6000000000000 into 0.6 as
1767         expected.
1768
1769 2010-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1770
1771         * icall-def.h:
1772         * icall.c: Implement System.MonoType::get_core_clr_security_level icall.
1773
1774 2010-03-03  Marek Habersack  <mhabersack@novell.com>
1775
1776         * mono-config.c (mono_config_parse_assembly_bindings): added -
1777         parses assembly binding redirections from appdomain's config
1778         file.
1779
1780         * metadata-internals.h: added definition of a new function -
1781         mono_config_parse_assembly_bindings - to support parsing assembly
1782         binding redirections defined in appdomain's config file.
1783
1784         * domain-internals.h: added two new fields to _MonoDomain - a list
1785         of assembly bindings and a flag to parse the config file only
1786         once.
1787
1788         * assembly.c (assembly_binding_maps_name): empty culture name and
1789         NULL culture name are considered equal.
1790         (mono_assembly_apply_binding): added support for domain specific
1791         assembly binding redirections, read from the appdomain's
1792         configuration file. Fixes bug #580185
1793
1794 Wed Mar 3 11:46:06 CET 2010 Paolo Molaro <lupus@ximian.com>
1795
1796         * appdomain.c, domain.c, icall.c, image.c, marshal.c, object.c,
1797         reflection.c, socket-io.c, threadpool.c, threads.c: removed 1.1/1.0
1798         support.
1799
1800 2010-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1801
1802         * reflection.c (mono_image_get_memberref_token): Extract mono_image_add_memberef_row
1803         from this function. The new function receive the parent token instead of a type.
1804
1805         * reflection.c (mono_image_get_methodref_token_for_methodbuilder):
1806         * reflection.c (mono_image_get_ctorbuilder_token): Use new function to encode
1807         typebuilders. This make it possible to properly encode generic type builders since
1808         their unmanaged type don't have generics data while unfinished.
1809
1810         Fixes #583655.
1811
1812 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1813
1814         * sgen-gc.c, sgen-protocol.c, sgen-protocol.h: New facility for
1815         writing binary log files (can be enabled by #define'ing
1816         BINARY_PROTOCOL) for better debugging of timing-dependent bugs or
1817         bugs in longer running programs.
1818
1819 Mon Mar 1 19:35:32 CET 2010 Paolo Molaro <lupus@ximian.com>
1820
1821         * metadata.c: added some API documentation.
1822
1823 2010-03-01  Robert Jordan  <robertj@gmx.net>
1824
1825         * filewatcher.h: Include glib.h to fix the MSVC build.
1826
1827 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1828
1829         * class-internals.h (MonoClass): Get rid of the reflection_info field, add
1830         a GC handle instead. This is a bit slower to access, but avoids burdening the
1831         GC with 100s of individual roots.
1832
1833         * reflection.c (mono_class_get_ref_info):
1834         (mono_class_set_ref_info):
1835         (mono_class_free_ref_info): New internal helper fuctions.
1836
1837         * reflection.c appdomain.c icall.c class.c: Use the new helper functions instead
1838         of accessing klass->reflection_info directly.
1839
1840         * sgen-gc.c (alloc_complex_descriptor): Fix the computation of the number of
1841         words.
1842
1843         * gc.c (alloc_handle): Create a GC descriptor for the 'entries' array, free
1844         the previous array.
1845
1846 2010-02-28  Zoltan Varga  <vargaz@gmail.com>
1847
1848         * marshal.c (get_runtime_invoke_type): Avoid sharing byref with I, as the latter
1849         needs an indirection.
1850
1851 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1852
1853         * generic-sharing.c: Removed, moved its contents to mini/mini-generic-sharing.c,
1854         so all generic sharing code is in one place.
1855
1856         * class.c (get_implicit_generic_array_interfaces): Fix the last change so
1857         we don't call setup_interface_offsets () for unfinished types.
1858
1859 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1860
1861         * class.c (mono_class_generic_sharing_enabled): Move this to
1862         generic-sharing.c.
1863
1864         * image.c: Add an unload hook which is called before an image is unloaded.
1865
1866         * generic-sharing.c: Use the unload hook to unregister per-image data, to avoid
1867         metadata.c having to depend on generic sharing.
1868
1869 Fri Feb 26 19:23:18 CET 2010 Paolo Molaro <lupus@ximian.com>
1870
1871         * class.c: reduce size of ridiculously large cache.
1872
1873 2010-02-26  Martin Baulig  <martin@ximian.com>
1874
1875         * mono-debug.h
1876         (MONO_DEBUGGER_MINOR_VERSION): Bump to 5.
1877
1878         * threads.c (mono_thread_internal_reset_abort): New method; resets
1879         the abort, but doesn't throw any exception if no abort was requested.
1880
1881 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1882
1883         * class.c (get_implicit_generic_array_interfaces): Call
1884         mono_class_setup_interface_offsets () before accessing
1885         eclass->interface_offsets_count. This only shows up on platforms without IMT for
1886         some reason.
1887
1888 Thu Feb 25 12:12:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1889
1890         * environment.c, environment.h, icall.c: make the GetOSVersionString()
1891         icall internal.
1892
1893 Thu Feb 25 11:37:50 CET 2010 Paolo Molaro <lupus@ximian.com>
1894
1895         * metadata.c, metadata.h: make MONO_TYPE_IS* functional without
1896         direct access to the MonoType fields.
1897
1898 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1899
1900         * threads.h: Move some internal functions which were added to this header by
1901         mistake to threads-types.h.
1902
1903         * class.c (mono_class_init): Get rid of mono_setup_vtable_in_class_init.
1904
1905 Wed Feb 24 17:45:27 CET 2010 Paolo Molaro <lupus@ximian.com>
1906
1907         * class-internals.h, class.h, object.h: make MonoRemoteClass
1908         and mono_remote_class() internal.
1909
1910 Wed Feb 24 17:05:18 CET 2010 Paolo Molaro <lupus@ximian.com>
1911
1912         * metadata-internals.h, class-internals.h, metadata.h: make the
1913         MonoType guts internal as well.
1914
1915 Wed Feb 24 16:02:42 CET 2010 Paolo Molaro <lupus@ximian.com>
1916
1917         * reflection.h: the MonoTypeNameParse guts are internal now.
1918         * assembly.c, assembly.h, image.h: the MonoAssemblyName guts
1919         are internal now, provide accessors as needed.
1920         * metadata.h, metadata-internals.h: the MonoMethodSignature
1921         guts are internal now.
1922         * Makefile.am: mempool.h is an internal header now.
1923         * *.h, *.c: remove glib.h usage from the public headers.
1924
1925 2010-02-24  Atsushi Enomoto  <atsushi@ximian.com>
1926
1927         * culture-info-table.h : regenerated.
1928
1929 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1930
1931         * metadata.c: Add mono_method_get_header_summary which returns minimal
1932         information about the header of a method. This is the information used
1933         by the inline oracle to reject methods.
1934
1935         This method doesn't decode local variables and doesn't cache it's result,
1936         so it should cause a minimal reduction in memory usage.
1937
1938         * metadata-internals.h: Add MonoMethodHeaderSummary structure and
1939         mono_method_get_header_summary.
1940
1941 2010-02-22  Jeffrey Stedfast  <fejj@novell.com>
1942
1943         * threads.c (mono_thread_exit): Make sure that the main thread is
1944         non-null before dereferencing it.
1945
1946 2010-02-21  Geoff Norton  <gnorton@novell.com>
1947
1948         * Makefile.am: Add CoreFoundation linkage on darwin to properly get the current
1949         locale.
1950         * locaes.c: When running on darwin, try to get the local from CoreFoundation 
1951         before falling back to the posix lookup.
1952
1953 2010-02-19  Zoltan Varga  <vargaz@gmail.com>
1954
1955         * threads.c (mono_thread_suspend_all_other_threads): Ignore threads which have
1956         the DONT_MANAGE flag set.
1957
1958 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
1959
1960         * domain.c: Remove old v1 version strings. Let the runtime
1961         default to 2.0 instead of failing because it can't find a
1962         working 1.0 instalation.
1963
1964 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
1965
1966         * domain.c: Add v4 RC version string.
1967
1968 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
1969
1970         * mono-basic-block.c (mono_opcode_value_and_size): Use pointer variant
1971         of overflow checking function.
1972
1973 2010-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
1974
1975         * reflection.c (mono_reflection_method_on_tb_inst_get_handle): Handle non
1976         generic methods.
1977
1978         * reflection.c (mono_reflection_get_custom_attrs_info): Handle compiler context
1979         cases for ParameterInfo.
1980
1981         Fixes #579493.
1982
1983 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1984
1985         * class.c (mono_class_get_cctor): Fix support for dynamic classes, which doesn't
1986         have has_cctor set. Fixes #575946.
1987
1988 2010-02-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
1989
1990         * appdomain.c: display a warning if the parsing the config file
1991         produces any error.
1992         Skip the BOM in UTF-8 files.
1993         Copy the AppDomainSetup before setting the privateBinPath so that the
1994         correct configuration file is read.
1995
1996 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1997
1998         * object.c: Instead of using one vtable trampoline, allow the JIT to use one
1999         vtable trampoline per vtable slot index. Not used yet.
2000
2001 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
2002
2003         * icall-def.h:
2004         * icall.c: add internal call that returns the system page size.
2005
2006 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
2007
2008         * debug-helpers.c (mono_method_desc_search_in_image): Handle short names like
2009         'int' for system classes.
2010
2011 Fri Feb 12 18:36:02 CET 2010 Paolo Molaro <lupus@ximian.com>
2012
2013         * icall.c, icall-def.h: new icall to check for sufficient
2014         stack space.
2015
2016 2010-02-12  Mark Probst  <mark.probst@gmail.com>
2017
2018         * reflection.c (ensure_complete_type): Check that reflection_info
2019         is set, too.  Fixes crash of corlib testsuite with -O=-all.
2020
2021 2010-02-11  Rodrigo Kumpera  <rkumpera@novell.com>
2022
2023         * attrdefs.h:
2024         * tabledefs.h: Add NoOptimization flag.
2025
2026 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2027
2028         * sgen-gc.c: Don't consider it a missing remset if the target
2029         object is pinned - we might have done the store but not added the
2030         remset yet.
2031
2032 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2033
2034         * sgen-gc.c: When checking for missing remsets, don't assert on
2035         the first one, but print them all and then assert.
2036
2037 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2038
2039         * sgen-gc.c (find_in_remset_loc): Handle the small bitmap case.
2040
2041 2010-02-09  Miguel de Icaza  <miguel@novell.com>
2042
2043         * console-unix.c: On OSX Control-Y is assigned to
2044         VDSUSP (non-Posix), the
2045         suspend-program-next-time-it-tries-to-read-input command (this is
2046         different than C-z, which suspends immediately).
2047
2048         Do the same thing that bash does and ignore this setting,
2049         making our repl/getline support pasting.
2050
2051 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2052
2053         * sgen-gc.c: Simple plausibility check for scan_starts.
2054
2055 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2056
2057         * sgen-gc.c: Round up when calculating the number of scan starts.
2058
2059 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2060
2061         * reflection.c: Export mono_get_object_from_blob.
2062
2063         * object-internals.h: Ditto.
2064
2065         * icall.c: New icall property_info_get_default_value to get the default
2066         value of a property. Since using this is not common, no caching is done.
2067
2068         * icall-def.h: Add new icall.
2069
2070 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2071
2072         * class.c: Add mono_class_get_property_default_value.
2073
2074         * class-internal.h: Export mono_class_get_property_default_value.
2075
2076 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2077
2078         * reflection.c (mono_image_get_property_info): Encode the default value of a property.
2079
2080 Wed Feb 10 14:48:45 CET 2010 Paolo Molaro <lupus@ximian.com>
2081
2082         * sgen-gc.c: introduced critical regions to allow some lockless
2083         operations and increase scalability.
2084
2085 2010-02-10  Geoff Norton  <gnorton@novell.com>
2086
2087         * reflection.c: Support building with DISABLE_REFLECTION
2088
2089 2010-02-09 Gonzalo Paniagua Javier <gonzalo@novell.com>
2090
2091         * threadpool.c: Fixes for SetMinThreads and SetMaxThreads.
2092         Closes bug #566057.
2093
2094         * exception.c: fix typo in comment.
2095
2096 2010-02-09  Rodrigo Kumpera  <rkumpera@novell.com>
2097
2098         * icall.c (param_info_get_type_modifiers): Handle the case when the member object is a
2099         property. This happens which instances returned by PropertyInfo::GetIndexParameters ().
2100
2101         * reflection.c (mono_reflection_get_custom_attrs_info): Ditto.
2102
2103         * object-internals.h: Export mono_class_is_reflection_method_or_constructor as part of
2104         the internal API.
2105
2106         Fixes #574434.
2107
2108 2010-02-09  Mark Probst  <mark.probst@gmail.com>
2109
2110         * threads.c: Removed two assertions that were too strict.  Added a
2111         clarifying comment.  Fixes #577090.
2112
2113 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
2114
2115         * domain.c (mono_jit_info_table_find): Avoid looking in the root domain, since
2116         the caller has no way of knowing the domain which owns the returned MonoJitInfo.
2117
2118         * appdomain.c (create_exceptions): Call mono_thread_push/popappdomain_ref ().
2119
2120         * verify.c (mono_type_get_stack_name): Fix a warning.
2121
2122 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
2123
2124         * marshal.c (mono_marshal_get_wrapper_info): Rename from
2125         mono_marshal_wrapper_info_from_wrapper.
2126
2127         * marshal.c (mono_marshal_set_wrapper_info): Rename from
2128         mono_marshal_method_set_wrapper_data, and export.
2129
2130         * boehm-gc.c sgen-gc.c null-gc.c: Get rid of mono_gc_get_allocator_type, store
2131         the allocator type in a AllocatorWrapperInfo structure instead, which is accesible
2132         by calling mono_marshal_get_wrapper_info ().
2133
2134         * sgen-gc.c (mono_gc_get_managed_allocator): Add a specialized allocator for
2135         small objects which does no size checks.
2136
2137 2010-02-05  Rodrigo Kumpera  <rkumpera@novell.com>
2138
2139         * icall-def.h: Rename get_MetadataToken to GetMetadataToken.
2140
2141 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2142
2143         * verify.c (mono_method_verify): Use the new basic block formation pass
2144         to avoid verifying dead basic blocks. This is the same behavior as the
2145         runtime MS verifier.
2146
2147 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2148
2149         * mono-basic-block.c:
2150         * mono-basic-block.h: New implementation of a basic block formation pass.
2151         The formation pass does static liveness analysis as well to detect dead
2152         basic blocks.
2153
2154 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2155
2156         * marshal.c (mono_marshal_get_native_wrapper): Emit a null check for the
2157         'this' argument in icalls.
2158
2159 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2160
2161         * reflection.c (resolve_object): Handle MonoArrayMethod. Fixes #575955.
2162
2163 2010-02-01  Mark Probst  <mark.probst@gmail.com>
2164
2165         * object.c, domain.c: When using SGen, we must register
2166         vtable->type as a root if it's not a MonoType, because then it
2167         wasn't pin-alloced.
2168
2169 2010-02-01  Mark Probst  <mark.probst@gmail.com>
2170
2171         * sgen-gc.c: Reset to_space_bumper to to_space_section->next_data
2172         at the start of nursery collections, because we might have had
2173         degraded allocations which changed next_data.
2174
2175 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2176
2177         * marshal.c (mono_marshal_get_managed_wrapper): Avoid constructing the
2178         custom attr so this function works in cross-compiling mode.
2179
2180 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2181
2182         * class.c (make_generic_param_class): Initialize interface offsets since we
2183         set klass->inited. Fixes #574819.
2184
2185 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2186
2187         * domain.c (mono_domain_free): Send the END_UNLOAD profiler event before
2188         calling the JIT domain cleanup hook.
2189
2190 2010-01-28  Rodrigo Kumpera  <rkumpera@novell.com>
2191
2192         * pedump.c (main): Properly set the verifier mode when running the metadata
2193         verifier.
2194
2195 2010-01-28  Rodrigo Kumpera  <rkumpera@novell.com>
2196
2197         * verify.c (verify_class_for_overlapping_reference_fields): Properly verify
2198         overlapping fields now that we're called before has_references is set.
2199
2200         * pedump.c (dump_verify_info): Clear any loader error before verifying another
2201         method. Otherwise all sort of weird stuff happens.
2202
2203 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2204
2205         * object.c (mono_field_get_value_object): Handle nullable types correctly.
2206         Fixes #572874.
2207
2208 2010-01-25  Zoltan Varga  <vargaz@gmail.com>
2209
2210         * icall.c (ves_icall_System_Array_SetValueImpl): Handle nullable types correctly.
2211         Fixes #573322.
2212
2213 2010-01-23  Mark Probst  <mark.probst@gmail.com>
2214
2215         * sgen-pinning.c (evacuate_pin_staging_area): Don't assume
2216         pin_staging_area_index is greater than 0.
2217
2218 2010-01-22 Miguel de Icaza (miguel@novell.com)
2219
2220         * loader.c: Since we do nothing with the error returned, pass NULL
2221         to ignore the error.
2222
2223 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2224
2225         * reflection.c (typebuilder_setup_fields): Pretend field setup already
2226         happened before starting to encode the actual fields. This avoid ciclic
2227         dependencies and eventual crashes.
2228
2229         Fixes #572660.
2230
2231 2010-01-21  Mark Probst  <mark.probst@gmail.com>
2232
2233         * sgen-gc.c, gc-internal.h, object.c: Make string allocation
2234         atomic and remove the half-constructed hack in SGen.
2235
2236 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2237
2238         * metadata-verify.c (parse_generic_inst): Fail a type signature if it 
2239         has a recursive reference to itself.
2240
2241         Fixes #571863.
2242
2243 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2244
2245         * loader.c (mono_method_signature): Fix error message.
2246
2247 2010-01-21  Mark Probst  <mark.probst@gmail.com>
2248
2249         * sgen-gc.c: Reuse to-space sections between nursery collections.
2250
2251 2010-01-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
2252
2253         * icall.c: don't raise AppDomain.TypeResolve when the type is loaded
2254         from the current assembly or mscorlib. Fixes bug #322957.
2255
2256 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2257
2258         * marshal.c: Calculate the target class of the delegete invoke wrappers using
2259         get_wrapper_target_class.
2260
2261 2010-01-19  Mark Probst  <mark.probst@gmail.com>
2262
2263         * sgen-gc.c: Fix warnings.
2264
2265 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2266
2267         * verify.c (store_local): Better error message.
2268
2269 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2270
2271         * object.c (mono_object_get_virtual_method): Handle generic interfaces with variant
2272         arguments.
2273
2274 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2275
2276         * icall.c (ves_icall_Remoting_RemotingServices_GetVirtualMethod): This
2277         function is generics variance aware.
2278
2279 2010-01-19  Sebastien Pouliot  <sebastien@ximian.com>
2280
2281         * security-core-clr.c (mono_security_core_clr_can_access_internals):
2282         Handle the case where 'basedir' can be NULL (e.g. SRE assemblies)
2283
2284 2010-01-19  Sylvain Dupont <duposyl@gmail.com>
2285
2286         * cominterop.c marshal.c: Added support for marshalling in, in/byref,
2287           in/out, in/out/byref parameters of type SAFEARRAY[VARIANT].
2288
2289         Code is contributed under MIT/X11 license.
2290
2291 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2292
2293         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Handle inflated generic methods
2294         on a GTD.
2295
2296 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2297
2298         * marshal.c (mono_marshal_wrapper_info_from_wrapper): New helper function to
2299         return a point to a wrapper specific info structure describing the wrapper.
2300         (mono_marshal_get_array_address): Store the rank+elem_size in the wrapper info.
2301  
2302 2010-01-18  Mark Probst  <mark.probst@gmail.com>
2303  
2304         * sgen-gc.c: Make minor collection section allowance adaptive,
2305         depending on the amount of memory reclaimed in the last major
2306         collection.  If more memory was reclaimed (i.e. more garbage
2307         produced), do the next collection earlier.
2308
2309 2010-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2310
2311         * metadata-verify.c (parse_type): Fail a type signature if it has a recursive reference
2312         to itself.
2313
2314         * metadata-verify.c (mono_verifier_verify_typespec_signature): Change signature to take
2315         the token as parameter.
2316
2317         * verify-internals.h: Ditto.
2318
2319         * metadata.c (mono_type_create_from_typespec): Pass token to verifier.
2320
2321         Fixes #571460.
2322
2323 2010-01-18  Mark Probst  <mark.probst@gmail.com>
2324
2325         * sgen-gc.c: Make store_remset_buffer_index long.
2326
2327 2010-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2328
2329         * class.c (mono_class_from_typeref): Fail loading of self-referencing typeref tokens.
2330
2331         Fixes #569579.
2332
2333 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2334
2335         * sgen-gc.c (mono_gc_base_init): Add 'conservative_stack_mark' option to turn
2336         off precise marking if it is available.
2337         (mono_gc_get_bitmap_for_descr): Fix the handling of run length descriptors.
2338
2339 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2340
2341         * sgen-gc.c (mono_gc_conservatively_scan_area): Resurrect this.
2342
2343         * sgen-pinning.c (evacuate_pin_staging_area): Don't assert if there are no
2344         pinned objects.
2345
2346         * sgen-gc.c (create_allocator): Add the missing n > MONO_ARRAY_MAX_INDEX check
2347         to the array allocator.
2348
2349 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2350
2351         * generic-sharing.c (instantiate_other_info): Don't create ftnptr's from the
2352         result of mono_compile_method (), it already includes an ftnptr.
2353
2354 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2355
2356         * metadata.c (get_image_set): Remove an assert which can happen in normal use.
2357
2358 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2359
2360         * metadata.c (mono_metadata_str_hash): New helper function to compute a stable
2361         hash value which doesn't depend on glib/eglib versions.
2362         (mono_metadata_type_hash): Use it.
2363
2364         * object.c (mono_method_get_imt_slot): Ditto.
2365
2366 2010-01-14  Rodrigo Kumpera  <rkumpera@novell.com>
2367
2368         * class.c (mono_type_has_exceptions): Check the generic instance. It can fail
2369         independently of the GTD.
2370
2371         * class.c (mono_class_setup_fields): Fail if field has negative offset.
2372
2373         * class.c (mono_class_setup_fields): Fail if valuetype has zero size. Add sizeof(MonoObject)
2374         to the upper limit since instance_size includes this amount.
2375
2376         * class.c (mono_class_layout_fields): Check if the types of the static fields have failed.
2377
2378         Fixes #569544.
2379
2380 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2381
2382         * object.c (build_imt_slots): Compute the vtable slot correctly for interfaces
2383         with static methods.
2384
2385         * object.c (build_imt_slots): Avoid asserting when static methods are
2386         encountered in an interface.
2387
2388 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2389
2390         * sgen-gc.c (to_space_expand): Fix assertion.
2391
2392 Wed Jan 13 15:42:28 CET 2010 Paolo Molaro <lupus@ximian.com>
2393
2394         * string-icalls.c: missing declaration fixes.
2395         * sgen-gc.c: portability fixes.
2396
2397 2010-01-12  Rodrigo Kumpera  <rkumpera@novell.com>
2398
2399         * class.c (mono_class_get_implemented_interfaces): Now take a MonoError argument.
2400
2401         * class.c:
2402         * cominterop.c:
2403         * icall.c:
2404         * object.c: 
2405         * class-internals.h: Adjust for new signature of mono_class_get_implemented_interfaces.
2406
2407 2010-01-12  Rodrigo Kumpera  <rkumpera@novell.com>
2408
2409         * class.c (mono_class_setup_interfaces): Now take a MonoError argument and
2410         it can fail loading the type.
2411
2412         * class.c: Add mono_class_inflate_generic_class_checked.
2413
2414         * class.c:
2415         * verify.c:
2416         * class-internals.h: Adjust for new signature of mono_class_setup_interfaces.
2417
2418 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2419
2420         * loader.c (mono_method_signature_checked): New internal function taking an
2421         MonoError argument.
2422
2423         * socket-io.c (AI_ADDRCONFIG): Applied patch from John Lightsey (jd@cpanel.net).
2424         Fixes build on rh 7.3.
2425
2426 2010-01-10  Aaron Bockover  <abockover@novell.com>
2427
2428         * assembly.c (mono_set_rootdir): Support finding the mono paths on OS X
2429         at runtime in the same way as on Windows, which yields a relocatable
2430         Mono. Uses dyld's _NSGetExecutablePath and realpath to resolve the path
2431         of the running mono process.
2432
2433         On TARGET_ARM, fallback () will always be executed.
2434
2435 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2436
2437         * icall.c (ves_icall_Type_GetInterfaceMapData): This function is generics variance aware.
2438
2439 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2440
2441         * class.c (mono_class_is_assignable_from_slow): Support variant
2442         generic delegates.
2443
2444         * class.c (mono_class_implement_interface_slow): Support types with
2445         variant generic arguments.
2446
2447 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2448
2449         * verify.c: Remove some code duplication.
2450
2451 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2452
2453         * object.c: Update docs.
2454
2455 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2456
2457         * object.c (add_imt_builder_entry): Improve DEBUG_IMT spew.
2458
2459         * object.c (build_imt_slots): Interfaces with variant generic arguments use the
2460         fallback trampoline as well.
2461
2462         * class.c (mono_class_interface_offset_with_variance): Add new non_exact_match
2463         out argument that is set to TRUE if the match was direct. 
2464
2465         * class.c (mono_class_is_assignable_from): Delegates require variance testing as well.
2466
2467         * class-internal.h: Update prototype of mono_class_interface_offset_with_variance.
2468
2469 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2470
2471         * class.c: Add mono_class_interface_offset_with_variance function that does same
2472         as mono_class_interface_offset but takes variance into account.
2473
2474         * class-internal.h: Export mono_class_interface_offset_with_variance.
2475
2476         * object.c: Fix and improve DEBUG_IMT. Added an assert for IMT thunk building.
2477
2478 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2479
2480         * object.c:
2481         * icall.c:
2482         * class.c: Add some FIXME for due to variant generic arguments.
2483
2484         object.c (mono_object_isinst_mbyref): Interfaces with variant generic arguments
2485         can't use the simple bitfield check, so call mono_class_is_assignable_from if
2486         the bitfield check fails.
2487
2488 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2489
2490         * class.c (mono_class_is_assignable_from): Rework the generics variance code
2491         to be easier to read and fix bugs in the case a non generic type implements a variant
2492         interface.
2493
2494         * class.c (mono_class_has_variant_generic_params): Make non static.
2495
2496         * class-internals.h: Export mono_class_has_variant_generic_params as part of
2497         the private API.
2498
2499 2010-01-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2500
2501         * assembly.c: fix MONO_PATH debug output.
2502
2503 2010-01-06  Atsushi Enomoto  <atsushi@ximian.com>
2504
2505         * culture-info-table.h : regenerated.
2506
2507 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2508
2509         * verify.c (mono_verifier_verify_class): Properly check for broken parent. Ignore
2510         types that are meant to not have a parent.
2511
2512 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2513
2514         * marshal.c (mono_marshal_get_runtime_invoke): Make a copy of the signature
2515         from the image mempool, so it is not leaked.
2516
2517 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2518
2519         * metadata-internals.h (_MonoImage): Remove unused generic_class_cache field.
2520
2521 2010-01-04  Sebastien Pouliot  <sebastien@ximian.com>
2522
2523         * verify.c (verify_valuetype_layout_with_target): Fix case
2524         that can lead to infinite recursion. Fix bug #567861
2525
2526 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2527
2528         * pedump.c: Run code verifier even if image verification fails
2529         due to a failed type we. This allows more errors to be shown.
2530
2531 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2532
2533         * class.c (count_virtual_methods): Remove the assert and now
2534         fail properly.
2535         
2536         * class.c (setup_interface_offsets): This can fail now.
2537
2538         * class.c (mono_class_setup_vtable_general): Check for parent vtable
2539         errors. Check setup_interface_offsets errors.
2540
2541         * class.c (setup_interface_offsets): Simplify the return error logic
2542         and remove class_init_ok.
2543
2544         Fixes #560327.
2545
2546 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2547
2548         * class.c (mono_class_init): Do class verification at the beginning. Add
2549         some asserts to avoid tripping into invalid memory.
2550
2551         * object.c (compute_class_bitmap): Replace a g_assert_not_reached with a
2552         g_error and a decent message.
2553
2554         * verify.c (mono_verifier_verify_class): Verify for invalid super type.
2555
2556         Fixes #567548.
2557
2558 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2559
2560         * mempool-internals.h (g_list_prepend_mempool): Define this and related functions
2561         as inline functions instead of defining them in mempool.c.
2562
2563         * metadata-internals.h (MonoImageSet): New structure representing a set of
2564         MonoImages, which own a collection of generic instances.
2565
2566         * metadata.c: Get rid of the global generic caches, instead assign each generic
2567         instance to the image set which consists of all the images referenced by the
2568         instance. This greatly speeds up mono_metadata_clean_for_image (), and allows
2569         the memory used by generic instances to be allocated from a per image-set mempool
2570         later.
2571
2572 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2573
2574         * marshal.c (mono_marshal_get_runtime_invoke): Fix a memory leak.
2575
2576 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2577
2578         * appdomain.c (zero_static_data): Fix a warning.
2579
2580         * locales.c (construct_culture_from_specific_name): Applied patch from
2581         José Antonio Sánchez Lázaro <jasl@darcysoft.es>. Fix a crash if a culture was
2582         not found. Fixes #567900.
2583
2584 2009-12-31  Sebastien Pouliot  <sebastien@ximian.com>
2585
2586         * loader.c (mono_method_get_signature_full): Remove two asserts.
2587         Return NULL instead so that the verifier can handle both cases 
2588         gracefully.
2589
2590 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2591
2592         * class.c (mono_class_setup_methods): Use checked version of mono_class_inflate_generic_method_full
2593         so we can properly fail types instead of crashing.
2594
2595         Fixes #567676.
2596
2597 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2598
2599         * reflection.c (reflection_methodbuilder_to_mono_method): Assert in case of a broken
2600         generic method.
2601
2602 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2603
2604         * marshal.c (mono_mb_emit_restore_result): Properly handle generic enums.
2605
2606 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2607
2608         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait): Don't close the
2609         wait handle if the wait is interrupted, since it is still in mon->wait_list, and
2610         we can't remove it from it since we don't hold the lock.
2611         (mon_new): Free the orphaned events here when a mon structure is added to the
2612         freelist. Fixes #561239. Thanks to Mike Rieker <wmrieker@nii.net> for tracking
2613         this down.
2614
2615 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2616
2617         * verify.c (init_stack_with_value_at_exception_boundary): Do stack overflow checking here
2618         as max stack might be zero.
2619
2620         Fixes #562320.
2621
2622 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2623
2624         Rework all uses of mono_class_setup_methods to accept that it can fail now.
2625
2626         * class.c (mono_class_setup_methods): This function now can fail the class. Do so for generic
2627         instances if the GTD did.
2628
2629         * class.c (mono_class_setup_properties): Ditto.
2630
2631         * class.c (mono_class_setup_events): Ditto.
2632
2633         * class.c (mono_class_setup_vtable): Fail early if the type is already broken.
2634
2635         * class.c (mono_class_setup_vtable_general): Add a few more missing broken type checks. Sanitize
2636         error setting.
2637
2638         * class.c (mono_class_init): Fail if GTD did.
2639
2640         * cominterop.c:
2641         * generic-sharing.c:
2642         * icall.c:
2643         * loader.c:
2644         * object.c:
2645         * verify.c: Properly handle failure of mono_class_setup_methods.
2646
2647 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2648
2649         * class-internals.c: Add mono_class_inflate_generic_method_full_checked and make
2650         mono_class_inflate_generic_method_full internal.
2651
2652         * class.c (inflate_generic_context): Now takes a MonoError argument.
2653
2654         * class.c (mono_class_inflate_generic_method_full): Now calls the _checked and abort on
2655         errors.
2656
2657 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2658
2659         * generic-sharing.c (instantiate_other_info): Avoid creating jump trampolines since
2660         they cannot be patched. Partly fixes #564408.
2661
2662 2009-12-24  Mark Probst  <mark.probst@gmail.com>
2663
2664         * metadata-internals.h, reflection.c: Use the
2665         MonoDynamicImage.handleref hash table only with unmanaged keys,
2666         and add a managed hash table handleref_managed for managed keys.
2667
2668 2009-12-24  Mark Probst  <mark.probst@gmail.com>
2669
2670         * sgen-gc.c: Unset to-space bumper between collections.  It might
2671         become invalid due to degraded allocations.
2672
2673 2009-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
2674
2675         * loader.c (mono_method_get_signature_full): Check if the returned signature is compatible
2676         with the one from the original method.
2677
2678         * metadata-verify.c (mono_verifier_is_sig_compatible): New function to verify signature
2679         compatibility.
2680
2681         * verify-internals.h: Add new function to the internal API.
2682
2683 2009-12-18  Dimitar Dobrev  <dpldobrev@yahoo.com>
2684
2685         * culture-info-tables.h: regenerated it to include the Georgian culture.
2686
2687 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2688
2689         * sgen-gc.c: Include mono/utils/memcheck.h.
2690
2691         * reflection.c (mono_reflection_get_type_internal_dynamic): Use assembly->domain
2692         instead of the current domain, since the two might not match if this is called
2693         from the debugger.
2694
2695         * metadata-internals.h (MonoDynamicAssembly): Add a 'domain' field to specify the
2696         domain which created this assembly.
2697
2698 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2699
2700         * debug-helpers.c (dis_one): Avoid a glib assert on empty strings.
2701
2702 2009-12-17  Mark Probst  <mark.probst@gmail.com>
2703
2704         * sgen-gc.c: Managed implementation of the specialized generic
2705         store write barrier.
2706
2707 2009-12-17  Rodrigo Kumpera  <rkumpera@novell.com>
2708
2709         * icall.c (ves_icall_Type_GetMethodsByName): Don't pin virtual methods if they are newslot.
2710         A private virtual newslot method is used to implement an interface method without exposing
2711         it to users. When querying for public instance methods, such method would hide a public one
2712         on a parent type.
2713
2714         Fixes #564379.
2715
2716 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2717
2718         * reflection.c (resolve_object): Fix the encoding of unmanaged calling
2719         conventions.
2720
2721 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2722
2723         * reflection.c (mono_type_get_object): Guard against NULL generic param owner.
2724
2725 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2726
2727         * class-internals.h (MonoDynamicGenericClass): Kill property and event related fields
2728         as they are no longer used.
2729         
2730          * metadata.c (free_generic_class_dependents): Remove reference to previous fields
2731
2732         * reflection.c (mono_reflection_generic_class_initialize): Ditto.
2733
2734 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2735
2736         * reflection.c (mono_type_get_object): If the type is VAR or MVAR check
2737         if the owner class has not been finished before returning reflection_info.      
2738
2739         Fixes #565127.
2740
2741 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2742
2743         * reflection.c (mono_custom_attrs_from_param): Avoid a crash if a dynamic
2744         param doesn't have custom attributes. Fixes #565117.
2745
2746         * class.c (mono_bounded_array_class_get): Make these classes PUBLIC. Fixes
2747         #565120.
2748
2749 2009-12-15  Rodrigo Kumpera  <rkumpera@novell.com>
2750
2751         * class.c (mono_class_setup_fields): Fail valuetypes that are bigger than 1Mb.
2752
2753 2009-12-15  Rodrigo Kumpera  <rkumpera@novell.com>
2754
2755         * pedump.c: Add partial-md mode that doesn't perform full metadata verification. It does the
2756         same amount done by a core-clr enabled runtime.
2757
2758 2009-12-15  Marek Habersack  <mhabersack@novell.com>
2759
2760         * appdomain.c (mono_make_shadow_copy): make sure access mode of
2761         the target files is reset to writable by owner and readable by
2762         everyone else to prevent problems when updating shadow copies of
2763         files whose source is read-only. Fixes bug #556884
2764
2765 2009-12-15  Mark Probst  <mark.probst@gmail.com>
2766
2767         * class.c (mono_generic_class_get_class): Allocate the generic
2768         class via malloc again, so that it can be freed when any one of
2769         the images of its constituent types is closed.
2770
2771         * metadata.c: When closing an image, don't free generic insts and
2772         generic classes right away, but put them into a list for later
2773         freeing.
2774
2775         * image.c, metadata-internals.h: Store the free list and in the
2776         second pass of closing an image, free it.
2777
2778 2009-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
2779
2780         * reflection.c (mono_generic_class_get_object): Assert if this is ever called.
2781
2782         * reflection.c (mono_reflection_register_with_runtime): Only register dynamic
2783         types in type_hash.
2784
2785         * reflection.c (resolve_object): Call ensure_complete_type on the inflated field.
2786
2787 2009-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
2788
2789         * reflection.c (mono_reflection_type_get_handle): Properly fail in case of a broken
2790         user type.
2791
2792         * reflection.c (mono_reflection_register_with_runtime): Throws in case a bad user type
2793         is used.
2794
2795 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2796
2797         * verify.c (mono_method_verify): The Unused opcodes produce an
2798         InvalidProgramException on .NET
2799
2800 2009-12-14  Sebastien Pouliot  <sebastien@ximian.com>
2801
2802         * loader.c (mono_method_get_header): Move assert after the verifier
2803         has been called on the method header.
2804
2805 2009-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
2806
2807         * object-internals.h: Remove useless field from MonoReflectionGenericClass.
2808
2809         * appdomain.c: Bump corlib version.
2810
2811 2009-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
2812
2813         To properly support user types, MonoGenericClass has to be used for regular, non SRE,
2814         types as well since otherwise generic instances would not return UT as arguments but
2815         their undelying system type.
2816
2817         * object-internals.h: Change field types of MonoGenericClass and *OnTypeBuilderInst
2818         to reflect the fact that they can have now multiple different types.
2819
2820         * reflection.c (mono_image_get_field_on_inst_token): Handle MonoField.
2821
2822         * reflection.c (mono_image_get_ctor_on_inst_token): Handle MonoCMethod.
2823
2824         * reflection.c (mono_image_get_method_on_inst_token): Handle MonoMethod.
2825
2826         * reflection.c (mono_reflection_register_with_runtime): Init super types
2827         if the image is not dynamic.
2828
2829         * reflection.c (mono_reflection_bind_generic_parameters): In case of a MonoGenericClass,
2830         check if the generic type definition is a TypeBuilder.
2831
2832         * reflection.c (mono_reflection_generic_class_initialize): If the generic type definition
2833         doesn't belong to a dynamic image, skip initialization.
2834
2835         * reflection.c (resolve_object): Properly handle *OnTypeBuilderInst types where their
2836         base definition is not a dynamic type.
2837
2838 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2839
2840         * object.c (mono_ldstr, mono_ldstr_metadata_sig): added calls to
2841         mono_profiler_string_allocation
2842
2843         * string-icalls.c (ves_icall_System_String_InternalAllocateStr):
2844         if string profiling is enabled, call
2845         mono_profiler_string_allocation
2846
2847         * profiler.h: added two MonoProfileFlags -
2848         MONO_PROFILE_IOMAP_EVENTS and MONO_PROFILE_STRING_ALLOC as well as
2849         installation functions for the hooks below.
2850
2851         * profiler-private.h, profiler.c: added two hooks:
2852         mono_profiler_string_allocation called whenever a string is
2853         allocated by InternalAllocateStr and mono_profiler_iomap called
2854         whenever IOMAP code performs an adjustement on a file path.
2855
2856 Fri Dec 11 18:24:04 CET 2009 Paolo Molaro <lupus@ximian.com>
2857
2858         * boehm-gc.c: fixed race condition while getting the target of a
2859         disappearing link (bug #522233).
2860
2861 2009-12-10  Rodrigo Kumpera  <rkumpera@novell.com>
2862
2863         * class.c (mono_type_get_full): Produce warning instead of simply swallowing
2864         the error.
2865
2866 2009-12-10  Rodrigo Kumpera  <rkumpera@novell.com>
2867
2868         * reflection.c: Add mono_reflection_register_with_runtime icall to
2869         allow a MonoGenericClass to register itself as the managed mirror of
2870         a given generic instance.
2871         This is a temporary workaround until all MGC instantiation happens in
2872         managed code.
2873
2874         * object-internals.h: Ditto.
2875
2876         * icall-def.h: Ditto.
2877
2878 2009-12-10  Mark Probst  <mark.probst@gmail.com>
2879
2880         * sgen-gc.c (find_in_remsets): Also search the generic store
2881         remsets.
2882
2883 2009-12-10  Mark Probst  <mark.probst@gmail.com>
2884
2885         * sgen-gc.c: Don't access class names in debugging code when
2886         unloading a domain, because they might not be valid anymore.
2887
2888 2009-12-10  Mark Probst  <mark.probst@gmail.com>
2889
2890         * domain.c, domain-internals.h: New function mono_domain_unset().
2891
2892         * appdomain.c (unload_thread_main): Detach the thread again at the
2893         end.
2894
2895         * threads.c: When a thread exists or is detached, unset its domain
2896         so that it's NULL when, for example, a pthread destructor runs.
2897
2898         * sgen-gc.c: Assert that there is no domain set after a thread is
2899         done.
2900
2901 2009-12-10  Mark Probst  <mark.probst@gmail.com>
2902
2903         * class.c (mono_generic_class_get_class),
2904         metadata.c (free_generic_class): Allocate generic MonoClass's from
2905         the image mempool, not via malloc.  The problem with malloc is
2906         that when unloading a domain those classes are freed before
2907         clearing the heap and SGen needs the classes.  Rewriting the
2908         unloading code to do the free later would be more work and there's
2909         no point in using malloc anyway.
2910
2911 2009-12-09  Sebastien Pouliot  <sebastien@ximian.com>
2912
2913         * loader.c (mono_method_signature): Always call mono_loader_unlock 
2914         before returning.
2915
2916 2009-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2917
2918         * metadata-verify.c: Add mono_verifier_verify_string_signature to check
2919         user string blobs.
2920
2921         * verify-internals.h: Add new function to the internal API.
2922
2923         * verify.c (do_ldstr): Call into mono_verifier_verify_string_signature to
2924         check if it's a valid string.
2925
2926         * object.c (mono_ldstr): Ditto.
2927
2928         Fixes #561943.
2929
2930 2009-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2931
2932         * icall.c (ves_icall_GetCurrentMethod): Drop all generic arguments
2933         from a method before returning it. This is the expected behavior.
2934
2935 2009-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2936
2937         * reflection.c (inflate_method): Handle the case of a regular system type.
2938
2939 2009-12-08  Mark Probst  <mark.probst@gmail.com>
2940
2941         * sgen-gc.c, sgen-pinning-stats.c, sgen-gray.c: More statistics
2942         gathering code.
2943
2944         * mempool.c, mempool-internals.h: New function
2945         mono_mempool_get_bytes_allocated().
2946
2947         * Makefile.am: sgen-pinning-stats.c added.
2948
2949 2009-12-08  Mark Probst  <mark.probst@gmail.com>
2950
2951         * sgen-gc.c (create_allocator): Only use the fast path if the
2952         object size is within the small object size limit.
2953
2954 2009-12-07  Mark Probst  <mark.probst@gmail.com>
2955
2956         * sgen-gc.c: Make sure section->data is aligned to 8 bytes by
2957         possibly adding padding to sizeof (GCMemSection).
2958
2959 2009-12-07  Mark Probst  <mark.probst@gmail.com>
2960
2961         * sgen-gc.c (mono_gc_wbarrier_nostore): Skip the remset if the
2962         reference is not in the nursery.
2963
2964 2009-12-07  Rodrigo Kumpera  <rkumpera@novell.com>
2965
2966         * class.c (mono_class_from_typeref): Bounds check idx against the 
2967         assemblyref table.
2968
2969 2009-12-07  Mark Probst  <mark.probst@gmail.com>
2970
2971         * sgen-gc.c, sgen-pinning.c: When pinning, make only one pass
2972         through the potential roots, then sort the results and find the
2973         pinned objects from there.
2974
2975         * Makefile.am: sgen-pinning.c added.
2976
2977 2009-12-07  Mark Probst  <mark.probst@gmail.com>
2978
2979         * sgen-gc.c: Record generic stores in specialized remset buffers.
2980
2981 2009-12-06  Mark Probst  <mark.probst@gmail.com>
2982
2983         * sgen-gc.c: Make pinned chunks the same size as major heap
2984         sections, and align them as well, so that we can check whether an
2985         object is in a pinned chunk or a major section in constant time.
2986
2987 2009-12-06  Mark Probst  <mark.probst@gmail.com>
2988
2989         * sgen-gc.c (build_nursery_fragments): Don't leak fragments.
2990
2991 2009-12-06  Mark Probst  <mark.probst@gmail.com>
2992
2993         * sgen-gc.c: Make all major heap sections the same size (currently
2994         128k) and allocate them on aligned addresses.  Small heap sections
2995         give us better granularity with pinned objects - we can free up
2996         much more memory.
2997
2998 2009-12-06  Mark Probst  <mark.probst@gmail.com>
2999
3000         * string-icalls.c (ves_icall_System_String_GetLOSLimit): Debug
3001         output removed.
3002
3003 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3004
3005         Applied patch from Laurent Etiemble (laurent.etiemble@gmail.com).
3006
3007         * mono/metadata/assembly.c: When opening an assembly image, pass the real
3008         names in addition to the runtime generated one.
3009
3010         * mono/metadata/image.h: Add a function to take the real name of the assembly
3011         image.
3012
3013         * mono/metadata/image.c: If a real name has been passed to load an assembly,
3014         use it instead of the runtime generated one.
3015
3016         Code is contributed under MIT/X11 license.
3017
3018 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3019
3020         * marshal.c (emit_marshal_vtype): Do the klass == date_time_class checks
3021         before the other checks to prevent problems if the DateTime class is blittable.
3022         Hopefully fixes #559600.
3023
3024 2009-12-05  Mark Probst  <mark.probst@gmail.com>
3025
3026         * string-icalls.c, string-icalls.h, icall-def.h: New icall that
3027         returns the largest string length that will not be put into the
3028         LOS.
3029
3030         * sgen-gc.c, gc-internal.h: New function that returns the largest
3031         object size that will not be put into the LOS.
3032
3033         * appdomain.c: Bump corlib version.
3034
3035 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3036
3037         * class-internals.h: Add MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
3038
3039         * generic-sharing.c: Handle MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
3040
3041 2009-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3042
3043         * reflection.c (inflate_method): Fix signature.
3044
3045         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Reflect change
3046         in managed code.
3047
3048 2009-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3049
3050         * reflection.c (inflate_method): Make this method work with TypeBuilder as well.
3051
3052 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3053
3054         * sgen-gc.c: Abstract to-space handling.
3055
3056 2009-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
3057
3058         * loader.c (find_method_in_class): Ignore methods with broken signatures.
3059
3060         Fixes #559906.
3061
3062 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3063
3064         * sgen-gc.c: Only add references from outside the nursery to
3065         within the nursery to the global remset list.
3066
3067 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3068
3069         * appdomain.c (create_exceptions): Set the domain temporarily if
3070         necessary to avoid cross-domain references.
3071
3072 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3073
3074         * verify.c (get_stack_type): Return that the type is invalid instead of
3075         asserting.
3076
3077         * verify.c (mono_method_verify): Verify that all locals and arguments
3078         have valid stack types.
3079
3080         Fixes #559913.
3081
3082 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3083
3084         * verify.c (mono_method_verify): Bounds check the filter offset. Make all
3085         bounds checking overflow aware.
3086
3087         Fixes #559910.
3088
3089 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3090
3091         * verify.c (do_invoke_method): Check for invalid method signatures.
3092
3093         Fixes #553450.
3094
3095 2009-12-02  Jb Evain  <jbevain@novell.com>
3096
3097         * appdomain.c (MONO_CORLIB_VERSION): bump.
3098         * icall-def.h (get_base_definition): renamed to get_base_method
3099         and add a boolean argument indicating we want the original
3100         method definition, or the immediate base method.
3101         * icall.c: apply the get_base_definition to get_base_method change.
3102
3103 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3104
3105         * class.c (mono_class_setup_fields): Fail an enum without an instance field.
3106
3107         Fixes #558042.
3108
3109 Wed Dec 2 16:35:49 CET 2009 Paolo Molaro <lupus@ximian.com>
3110
3111         * class.c: remove asserts for invalid type token in
3112         mono_class_name_from_token(), mono_assembly_name_from_token() and
3113         mono_class_create_from_typedef () (fixes bug #553318).
3114
3115 Wed Dec 2 15:48:19 CET 2009 Paolo Molaro <lupus@ximian.com>
3116
3117         * metadata.c, class.c, loader.c: remove assert after bsearch() for
3118         incorrect assemblies (bug #553322).
3119
3120 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3121
3122         * metadata.c (mono_metadata_inflate_generic_inst): Add MonoError parameter.
3123
3124         * metadata-internals.h: Change signature of mono_metadata_inflate_generic_inst. 
3125
3126         * class.c (inflate_generic_type): Use new version of mono_metadata_inflate_generic_inst.
3127
3128         * class.c (inflate_generic_context): Ditto.
3129
3130         * loader.c (method_from_methodspec): Ditto.
3131
3132         Fixes #558230.
3133
3134 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3135
3136         * class.c (mono_type_retrieve_from_typespec): Use MonoError machinery to report errors.
3137
3138         * class.c (mono_class_create_from_typespec): Ditto.
3139
3140         * class.c (mono_class_get_full): Fix for change on the above 2 functions.
3141
3142         * class.c (mono_type_get_full): Fix for change on the above 2 functions.
3143
3144         Fixes #558184.
3145
3146 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3147
3148         * verify.c (mono_class_has_default_constructor): Check fror broken signatures.
3149
3150         * verify.c (verify_delegate_compatibility): Ditto.
3151
3152         * verify.c (do_newobj): Ditto.
3153
3154         Fixes #558046.
3155
3156 2009-12-02  Mark Probst  <mark.probst@gmail.com>
3157
3158         * sgen-gc.c: Use a gray queue instead of requiring that gray
3159         objects are in a contiguous region.
3160
3161         * sgen-gray.c: The gray queue implementation.
3162
3163         * Makefile.am: sgen-gray.c added.
3164
3165 2009-12-02  Mark Probst  <mark.probst@gmail.com>
3166
3167         * appdomain.c: When unloading a domain, zero its static data and
3168         perform a minor collection when using SGen.  That will get rid of
3169         all the remsets pointing into that domain's static data.
3170
3171         * sgen-gc.c: Allow remsets into static data.  By doing this we
3172         need less checks so we're more efficient.
3173
3174 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3175
3176         * verify.c (mono_method_verify): Check for catch clauses with broken
3177         types.
3178
3179         Fixes #558465.
3180
3181 2009-12-01  Jb Evain  <jbevain@novell.com>
3182
3183         * class.c (make_generic_param_class): set the namespace of
3184         the generic parameter class from its owner, if available.
3185
3186 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3187
3188         * verify.c (code_bounds_check): Do proper overflow checking.
3189
3190         * verify.c (mono_method_verify): The number of switch entries is
3191         an unsigned int. Properly bounds check it.
3192
3193         Fixes #558594.
3194
3195 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3196
3197         * metadata.c: Kill mono_metadata_get_param_attrs_checked. Add
3198         mono_metadata_method_has_param_attrs which only checks if a given param
3199         list has a non zero flags entry.
3200
3201         * metadata.c (mono_metadata_get_param_attrs): Add param_count parameter
3202         to inform how many params should we expect to decode.
3203
3204         * loader.c (mono_method_signature): Use mono_metadata_method_has_param_attrs
3205         as it's faster than mono_metadata_get_param_attrs.
3206
3207         * metadata-internals.h: Fix mono_metadata_get_param_attrs signature and
3208         add mono_metadata_method_has_param_attrs.
3209
3210 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3211
3212         * class.c (mono_class_setup_vtable_general): Check for mono_method_get_vtable_slot
3213         failures.
3214
3215         * class.c (mono_method_get_vtable_slot): Don't assert if the computed method slot
3216         is -1 but its class is broken.
3217
3218         Fixes #558522.
3219
3220 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3221
3222         * metadata.c: Introduce mono_metadata_get_param_attrs_checked which checks
3223         for parameter overflow.
3224
3225         * metadata.c (mono_metadata_parse_method_signature_full): Use checked version
3226         of mono_metadata_get_param_attrs.
3227
3228         * metadata-internals.h: Add mono_metadata_get_param_attrs_checked to the internal
3229         API.
3230
3231         * loader.c (mono_method_signature): Use checked version of mono_metadata_get_param_attrs.
3232
3233 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3234
3235         * class.c (mono_class_setup_fields): Check for fields with broken types.
3236
3237         Fixes #558741.
3238
3239 2009-11-28  Rodrigo Kumpera  <rkumpera@novell.com>
3240
3241         * reflection.c (ensure_generic_class_runtime_vtable): Split this function in 2
3242         so we can avoid calling ensure_runtime_vtable multiple times for the GTD during
3243         its TypeBuilder::CreateType ().
3244
3245         * reflection.c (ensure_generic_class_runtime_vtable): Avoid initializing interfaces
3246         if not needed.
3247
3248         * reflection.c: Every time we change the interface array, set interfaces_packed to NULL
3249         to make setup_interface_offsets happy.
3250
3251         * reflection.c (remove_instantiations_of_and_ensure_contents): Fix instances again as corlib
3252         compilation now works.
3253
3254 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
3255
3256         * appdomain.c (create_exceptions): New helper function extracted from
3257         mono_runtime_init () to precreate objects used during exception handling.
3258         (mono_runtime_init): Call it.
3259         (mono_domain_create_appdomain_internal): Ditto. Fixes #555264.
3260
3261 2009-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3262
3263         * reflection.c (remove_instantiations_of_and_ensure_contents): Temp hack to fix corlib
3264         compilation until the proper one is found.
3265
3266 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
3267
3268         * class.c (mono_class_setup_vtable_general): Cache the result of
3269         get_virtual_methods () since it can be slow because of the metadata
3270         optimization.
3271
3272         * metadata-internals.h (_MonoImage): Change 'method_cache' to a GHashTable
3273         from a MonoValueHashTable for now, since the later is based on an earlier
3274         version of hpj's internal probing code and seems to have serious collision
3275         issues.
3276
3277         * loader.c (mono_get_method_full): Update after the change above.
3278
3279 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3280
3281         * class-internals.h (MonoCachedClassInfo): Add 'is_generic_container' field.
3282
3283 2009-11-26  Rodrigo Kumpera  <rkumpera@novell.com>
3284
3285         * reflection.c (get_field_on_inst_generic_type): Try to fallback using the field from
3286         the GTD instead of the DGC instead of crashing.
3287
3288         * reflection.c (ensure_generic_class_runtime_vtable): Only reinflate stuff that is
3289         required. Inflate fields if needed.
3290
3291         * reflection.c (remove_instantiations_of): Ensure generic instances are properly
3292         finished. Renamed.
3293
3294 2009-11-26  Rodrigo Kumpera  <rkumpera@novell.com>
3295
3296         * class.c (check_interface_method_override): Check for NULL signatures and fail
3297         the type.
3298
3299         * debug-helpers.c (mono_signature_get_desc): Return a fixed string for NULL signatures.
3300
3301         Fixes #553428.
3302
3303 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3304
3305         * class.c (mono_class_get_virtual_methods): Call decode_row_col to obtain
3306         the MONO_METHOD_FLAGS column instead of decoding the whole row.
3307
3308 2009-11-25  Rodrigo Kumpera  <rkumpera@novell.com>
3309
3310         * loader.c (field_from_memberref): Resolve the class first then the field
3311         signature. Remove a lot of duplicated code and make sure we don't pass valid
3312         values to mono_loader_set_error_field_load.
3313
3314         Fixes #553306.
3315
3316 2009-11-25  Rodrigo Kumpera  <rkumpera@novell.com>
3317
3318         * class.c (inflate_generic_type): Change code to use new signature of
3319         mono_error_set_bad_image.
3320
3321         Fixes #558124.
3322
3323 2009-11-25  Sebastien Pouliot  <sebastien@ximian.com> 
3324
3325         * verify.c (mono_method_verify): Don't free ctx.params items if 
3326         we aborted while inflating the ctx.locals. Complete previous fix
3327
3328 2009-11-25  Sebastien Pouliot  <sebastien@ximian.com>
3329
3330         * verify.c (mono_method_verify): Use the uninflated type name, 
3331         when the inflated is null, to report errors. Also take care when
3332         freeing, not to free everything since, in case of an error, some
3333         stuff would be copies (i.e. not allocated by the function itself)
3334         Fix bug #558145
3335
3336 2009-11-24  Rodrigo Kumpera  <rkumpera@novell.com>
3337
3338         * verify.c (stack_push, stack_pop, stack_pop_safe): Assert if we underflow
3339         or overflow. The caller must have done this check explicitly. This guard us
3340         from accessing invalid memory.
3341
3342         * verify.c (do_push_static_field): Check for stack overflow.
3343
3344         Fixes #553333.
3345
3346 2009-11-24  Rodrigo Kumpera  <rkumpera@novell.com>
3347
3348         * loader.c (find_method_in_class): Don't crash if the signature cannot
3349         be resolved.
3350
3351         * metadata.c (mono_metadata_parse_generic_param): Return NULL instead
3352         of asserting for the case of invalid params.
3353
3354         Fixes #553304.
3355
3356 2009-11-24  Sebastien Pouliot  <sebastien@ximian.com>
3357
3358         * image.c (mono_image_load_module): Fix crash when a bad assembly
3359         has no module at all (fix bug #553412) and also replace the 
3360         g_assert with a return NULL (documented return value for failure)
3361
3362 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
3363
3364         * debug-helpers.c (mono_type_get_desc): Handle typedbyref.
3365
3366 2009-11-23  Miguel de Icaza  <miguel@novell.com>
3367
3368         * file-io.c: Change FindFirst/FindNext/FindClose API to return the
3369         file attribute to managed code and avoid doing the mask/attribute
3370         checks here. 
3371
3372 2009-11-22  Miguel de Icaza  <miguel@novell.com>
3373
3374         * file-io.c: Surface a smart FindFirst/FindNext/FindClose API to
3375         the managed world.
3376
3377         * icall-def.h: New entry points.
3378         
3379 2009-11-19  Mark Probst  <mark.probst@gmail.com>
3380
3381         * process.c: Don't put references to managed objects into a
3382         g_ptr_array.
3383
3384 2009-11-18  Sebastien Pouliot  <sebastien@ximian.com>
3385
3386         * class.c (can_access_internals): Allow CoreCLR to participate in
3387         allowing (or not) [InternalsVisibleTo] between assemblies.
3388         * security-core-clr.c|h: Make sure that only trusted code (a 
3389         superset of platform code) can access the internals of platform
3390         code.
3391
3392 Mon Nov 16 16:28:11 CET 2009 Paolo Molaro <lupus@ximian.com>
3393
3394         * reflection.c: use the correct base class to get the virtual method
3395         "get_UnderlyingSystemType" and speed up the icall. Fixes bug #555013.
3396
3397 2009-11-16  Sebastien Pouliot  <sebastien@ximian.com>
3398
3399         * security-core-clr.c (get_caller_no_reflection_related): 
3400         [Mono]Type.InvokeMember is outside System.Reflection[.Emit] but
3401         it's still reflection and must be filtered correctly.
3402
3403 2009-11-16  Mark Probst  <mark.probst@gmail.com>
3404
3405         * object.c (compute_class_bitmap): Fix for large bitmaps.
3406
3407 2009-11-15  Zoltan Varga  <vargaz@gmail.com>
3408
3409         (mono_gc_get_suspend_signal): Fix the build with a system libgc.
3410
3411         * boehm-gc.c (mono_gc_base_init): Applied patch from DKoushik K. Dutta (
3412         koush@koushikdutta.com). Disable GC_no_dls on android.
3413
3414 2009-11-12  Mark Probst  <mark.probst@gmail.com>
3415
3416         * sgen-gc.c (find_tlab_next_from_address): Handle the case where
3417         tlab_next points outside the TLAB because the allocator was
3418         interrupted.
3419
3420 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3421
3422         * reflection.c (mono_image_module_basic_init): Handle exceptions correctly.
3423
3424 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3425
3426         * object-internals.h: Change signature for mono_string_to_utf8_image.
3427
3428         * object.c (mono_string_to_utf8_image): Change signature to take a MonoError
3429         argument.
3430
3431         * reflection.c: Take care of mono_string_to_utf8_image change and avoid raising
3432         exceptions due to mono_string_to_utf8.
3433
3434 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3435
3436         * object-internals.h: Change signature for mono_string_to_utf8_mp.
3437
3438         * object.c (mono_remote_class): Make sure all resources are released before
3439         raising an exception.
3440
3441         * object.c (mono_print_unhandled_exception): Avoid raising an exception.
3442
3443 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3444
3445         * mono-perfcounters.c (network_get_impl): Change variable initialization
3446         ordering to fix potential memory leak in case of exceptions.
3447
3448         * mono-perfcounters.c (mono_perfcounter_create): Properly handle badly
3449         encoded strings.
3450         
3451 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3452
3453         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): Change
3454         variable initialization ordering to fix potential memory leak in case
3455         of exceptions.
3456
3457 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3458
3459         * icall.c (mono_ArgIterator_Setup): Remove the MONO_ARCH_REGPARMS stuff, its not
3460         needed.
3461
3462 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3463
3464         * appdomain.c: Fix shadow path code to better deal with exceptions.
3465
3466 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3467
3468         * appdomain.c: Use checked version of mono_string_to_utf8 to avoid raising an
3469         exception in the middle of the runtime code.
3470
3471 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3472
3473         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): Don't
3474         leak memory with broken envvar value.
3475
3476 2009-11-06  Mark Probst  <mark.probst@gmail.com>
3477
3478         * reflection.c (mono_reflection_setup_internal_class): Because
3479         nested classes are not added to the name cache, we must put them
3480         in the reflection_info_unregister_classes list.
3481
3482 2009-11-05  Sebastien Pouliot  <sebastien@ximian.com>
3483
3484         * class.c: When CoreCLR is enabled don't call mono_init_com_types
3485         if MONO_CLASS_IS_IMPORT return true unless the type reside in 
3486         platform (trusted) code. Instead we return a TypeLoadException to
3487         be thrown later. This is the exception thrown by Silverlight 2 if
3488         a type, inside application (user) code is marked with [ComImport]
3489
3490 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3491
3492         * icall.c (ves_icall_System_Diagnostics_Debugger_IsAttached_internal): Call
3493         mono_is_debugger_attached () too.
3494
3495         * mono-debug.c (mono_is_debugger_attached): New helper function.
3496         (mono_set_is_debugger_attached): Ditto.
3497
3498 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3499
3500         * object-internals.h: Add mono_string_to_utf8_checked.
3501
3502         * object.c: Implement mono_string_to_utf8_checked.
3503
3504 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3505
3506         * class.c: Add missing check for load errors after every
3507         call to mono_class_setup_fields
3508
3509         Fixes #552282.
3510
3511 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3512
3513         metadata-verify.c (verify_tables_schema): Fix the error message.
3514
3515 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3516
3517         * metadata.c: Change event table schema to use TDOR for event type
3518         as this is what it's meant to be.
3519
3520         * metadata.c (mono_metadata_compute_size): Change MONO_TABLE_ASSEMBLYPROCESSOR
3521         to MONO_TABLE_ASSEMBLYREFPROCESSOR, which is table that has a MONO_MT_TABLE_IDX
3522         entry.
3523
3524         * metadata.c (mono_metadata_compute_size): Trim MT_TABLE_IDX of code that no
3525         longer makes sense: remove MONO_TABLE_EVENT and remove checks for non-existent
3526         rows in MONO_TABLE_GENERICPARAM.
3527
3528         Fixes #552289.
3529
3530 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3531
3532         * class.c (mono_image_add_to_name_cache): Assert on duplicate
3533         insertion.
3534
3535         * reflection.c (mono_reflection_setup_internal_class): Avoid
3536         registering a gc root the same MonoClass multiple times.
3537         Don't register nested types on the global scope as they should
3538         not be available there.
3539
3540 2009-11-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3541
3542         * culture-info-tables.h: regenerated.
3543
3544 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3545
3546         * debug-helpers.c: avoid g_strdup() in mono_type_full_name().
3547
3548 2009-11-04  Sebastien Pouliot  <sebastien@ximian.com>
3549
3550         * string-icalls.c|h: Remove string internal calls that are not 
3551         used anymore by the class libraries.
3552         * icall.c: Remove System_Reflection_FieldInfo_internal_from_handle
3553         which is not used in the class librairies.
3554         * icall-def.h: Update tables.
3555
3556 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3557
3558         * class.h: Move mono_class_inflate_generic_type_checked...
3559
3560         * class-internals.h: to here and make it internal. We don't want to
3561         further expose MonoGenericContext. 
3562
3563 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3564
3565         * verify.c (mono_method_verify): Improve error message.
3566
3567 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3568
3569         * reflection.c (fieldref_encode_signature): If field_image is NULL then
3570         the token is already properly encoded. Fixs 4.0 build.
3571
3572 2009-11-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3573
3574         * locales.c (construct_number_format): Check if the number index is
3575         valid before trying to use it, if not, just return.
3576         
3577 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3578
3579         * marshal.c (mono_marshal_get_runtime_invoke): Don't reset abort exceptions,
3580         since that loses the abort state. Fixes #539394.
3581
3582 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3583
3584         * marshal.c (mono_marshal_get_native_wrapper): For icall wrappers, add an
3585         explicit this argument to the call signature.
3586         (mono_marshal_get_icall_wrapper): Ditto.
3587
3588 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3589
3590         * reflection.c (fieldref_encode_signature): Add new field_image parameter
3591         to indicate which assembly to use when resolving a custom-mod.
3592
3593         Fixes handling of volatile fields used across assemblies as reported in #551513.
3594
3595 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3596
3597         * loader.c: Improve error messages.
3598
3599 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3600
3601         * class.c (mono_class_setup_methods): Only give a slot for virtual methods
3602         of interfaces. Fixes IKVM.
3603
3604         * class.c (mono_class_setup_vtable_general): Improve debug spew.
3605
3606 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3607
3608         * verify.c (verifier_inflate_type): Return the inflated type on success.
3609
3610 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3611
3612         * debug-mono-symfile.c (check_line): Fix the handling of IL offset 0.
3613
3614         * threads.c (mono_thread_attach): Call the profiler thread start callback.
3615
3616         * object-internals.h (_MonoThreadInternal): Add a 'flags' field.
3617
3618         * threads.c (build_wait_tids): Ignore threads which have the DONT_MANAGE
3619         flag set.
3620
3621         * profiler.c: Add new profiler callbacks for runtime invoke.
3622
3623         * object.c (mono_runtime_invoke): Call the runtime invoke callbacks.
3624
3625 2009-11-01  Mark Probst  <mark.probst@gmail.com>
3626
3627         * sgen-gc.c: Keep track of the reason for a major collection and
3628         write it to the heap-dump file.
3629
3630 2009-10-31  Miguel de Icaza  <miguel@novell.com>
3631
3632         * threads.c: refactor the code that initializes the
3633         thread_start_args into a reusable function and use this in the two
3634         methods that start up threads.
3635
3636 2009-10-31  Zoltan Varga  <vargaz@gmail.com>
3637
3638         * appdomain.c (mono_domain_try_unload): Applied patch from Romain Tartière.
3639         Fix returning when WaitForSingleObjectEx returns WAIT_IO_COMPLETION.
3640
3641 2009-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3642
3643         * mono-perfcounters.c: add the "_Total" instance for CPU counters.
3644         Until now, we only had the per-cpu(core) counters.
3645
3646 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3647
3648         * gc-internal.h, boehm-gc, sgen-gc.c, null-gc: Add
3649         mono_gc_get_suspend_signal(), which returns the suspend signal
3650         number used by the GC.
3651
3652 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3653
3654         * threads.c (start_wrapper): Avoid an assert if thread_start_args () is NULL.
3655
3656         * threads.c (start_wrapper): Call mono_profiler_thread_start () later after
3657         signalling start_notify.
3658
3659 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
3660
3661         * appdomain.c: do not test the st_mode field for shadow-copies.
3662         Fixes bug #545276.
3663
3664 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
3665
3666         * threadpool.[ch]: added hooks for thread start/finish and item
3667         processing begin/end. For monotouch use only.
3668
3669 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3670
3671         * threads.c (mono_thread_get_name): New helper function.
3672
3673         * reflection.c (resolve_object): Set handle_class for strings too.
3674         (mono_reflection_create_custom_attr_data_args): New helper function to decode
3675         a cattr blob into a set of arrays and structures without creating the custom
3676         attributes themselves.
3677         (create_custom_attr_data): Simplify using create_custom_attr_data_args.
3678
3679         * mono-debug.c (mono_debug_il_offset_from_address): New helper function.
3680
3681         * debug-mono-symfile.c (mono_debug_symfile_get_line_numbers): New helper
3682         function.
3683
3684 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3685
3686         * verify.c: Replace calls to mono_class_inflate_generic_type with
3687         mono_class_inflate_generic_type_checked. Fixes #480005.
3688
3689 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3690
3691         * class.c (mono_class_inflate_generic_type_with_mempool): Clear the error
3692         object since not all paths lead to callees initing it.
3693
3694 2009-10-23  Alp Toker  <alp@nuanti.com>
3695
3696         Fix embedding API breakage from r144688. mono-compiler.h is an internal
3697         header and should not be shipped:
3698
3699         * class.h: Back out MONO_DEPRECATED change. Currently depends on config.h
3700         which is specific to the mono build. Not going to work.
3701
3702 2009-10-23  Sebastien Pouliot  <sebastien@ximian.com>
3703
3704         * security-manager.c: Report if core-clr is active from
3705         ves_icall_System_Security_SecurityManager_get_SecurityEnabled
3706         to allow Moonlight BCL to behave appropriately (both in browser
3707         and outside, e.g. smcs)
3708
3709 2009-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
3710
3711         * mono-config.c: ignore UTF-8 BOM and report parser errors.
3712         Fixes bug #549108.
3713
3714 2009-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3715
3716         * class.c: fix typo.
3717
3718 2009-10-22  Rodrigo Kumpera  <rkumpera@novell.com>
3719
3720         * class-internals.h: Change signature of mono_class_inflate_generic_type_with_mempool to take
3721         a MonoError parameter.
3722
3723         * class.h: Mark mono_class_inflate_generic_type deprecated, add new mono_class_inflate_generic_type_checked
3724         version that can does proper error handling.
3725
3726         * class.c (inflate_generic_type): Add a MonoError parameter. Don't assert on error, use new mono error machinery.
3727
3728         * class.c (mono_class_inflate_generic_type_with_mempool): Add new MonoError parameter.
3729
3730         * class.c, generics-sharing.c: Changes to handle mono_class_inflate_generic_type_with_mempool new signature.
3731
3732 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
3733
3734         * debug-helpers.c (dis_one): Fix the disassembly of empty strings when
3735         NO_UNALIGNED_ACCESS is defined.
3736
3737 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3738
3739         * marshal.c (mono_string_builder_to_utf16): Applied patch from
3740         Hib Eris  <hib@hiberis.nl>. Return empty string for empty string builders.
3741         Fixes #549173.
3742
3743 2009-10-22  Mark Probst  <mark.probst@gmail.com>
3744
3745         * sgen-gc.c: Shorten sections whenever possible.
3746
3747 2009-10-22  Mark Probst  <mark.probst@gmail.com>
3748
3749         * sgen-gc.c: Use our portable semaphore #defines.
3750
3751 2009-10-22  Mark Probst  <mark.probst@gmail.com>
3752
3753         * sgen-gc.c: A debug option for dumping the heap layout to a file
3754         after each collection.
3755
3756 2009-10-21  Mark Probst  <mark.probst@gmail.com>
3757
3758         * sgen-gc.c: Make managed write barriers atomic via
3759         thread-restarts.
3760
3761 2009-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3762
3763         * verify.c (verify_delegate_compatibility): Properly verify delegate creation of static
3764         methods. Fixes #543021.
3765
3766 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
3767
3768         * socket-io.[ch]: fix VS build.
3769
3770 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
3771
3772         * icall-def.h:
3773         * socket-io.[ch]: implemented SendFile.
3774
3775 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
3776
3777         * class.c (mono_class_create_from_typedef): Initialize class->element_class
3778         before the interfaces to avoid crashes later if class initialization fails.
3779         Fixes #548417.
3780
3781         * marshal.c (emit_marshal_vtype): Implement byref marshalling of DateTime.
3782         Fixes #548276.
3783
3784 2009-10-20  Marek Safar  <marek.safar@gmail.com>
3785
3786         * domain.c: Bump 4.0 version.
3787
3788 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3789
3790         * assembly.c (mono_assembly_load_reference): Fix leak when 'status'
3791         code is known. (parse_public_key) Remove duplicate (unneeded) NULL
3792         check since 'pubkey' can't be NULL at this stage
3793         * icall.c (ves_icall_System_Array_FastCopy): Add comment about
3794         the check. (ves_icall_Type_GetInterfaceMapData) Remove duplicate
3795         initialization of 'iter'
3796
3797 2009-10-16  Bill Holmes  <billholmes54@gmail.com>
3798
3799         * cominterop.c : Search the interface parts of vtable to find 
3800           method matches.  Fixes 547030.
3801
3802         Code is contributed under MIT/X11 license.
3803
3804 2009-10-15 Gonzalo Paniagua Javier <gonzalo@novell.com>
3805
3806         * marshal.c: BeginInvoke cannot be called on multicast delegates with
3807         multiple targets. Fixes bug #574426.
3808
3809 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3810
3811         * profiler.h: Put here the definition of
3812         MONO_PROFILER_MAX_STAT_CALL_CHAIN_DEPTH
3813         (and fix the build...).
3814
3815 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3816
3817         * profiler.c, profiler.h, profiler-private.h:
3818         Added support for different ways of getting call chains in stat mode.
3819
3820 2009-10-12  Mark Probst  <mark.probst@gmail.com>
3821
3822         * object.c, object-internals.h: New function for computing the
3823         size of an array, factored out of mono_array_new_full().  Use
3824         SGen's functions for allocating arrays and vectors.
3825
3826         * sgen-gc.c, gc-internal.h: Special functions for allocating
3827         arrays and vectors without race conditions.  A managed array
3828         allocator method.
3829
3830         * boehm-gc.c, null-gc.c: Don't provide a managed array allocator.
3831
3832 2009-10-12  Mark Probst  <mark.probst@gmail.com>
3833
3834         * object.c, object.h, icall.c: Write barriers do the copying now,
3835         as well, so no need for an additional memcpy.
3836
3837         * sgen-gc.c: Lock when storing remsets.  Do the memory
3838         copying/moving in the write barriers.
3839
3840         * null-gc.c, boehm-gc.c: Write barriers must copy here, too.
3841
3842         * reflection.c: Added an assert.
3843
3844 2009-10-12  Mark Probst  <mark.probst@gmail.com>
3845
3846         * threads.c, process.c: A few missing write barriers.
3847
3848 2009-10-12  Joel W. Reed <joelwreed@gmail.com>
3849
3850         * mono-perfcounters.c, mono-perfcounters-def.h: Add
3851         network performance counters for bytes sent per second, bytes
3852         received per second, and bytes total per second.
3853
3854         Code is contributed under MIT/X11 license.
3855
3856 2009-10-09  Mark Probst  <mark.probst@gmail.com>
3857
3858         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
3859         Fix warning.
3860
3861 2009-10-09  Mark Probst  <mark.probst@gmail.com>
3862
3863         * threads.c, object-internals.h, object.c: Move code for
3864         transferring an object to a different domain (via
3865         serialization/remoting) to object.c.
3866
3867         * object.c (call_unhandled_exception_delegate): If the exception
3868         is in a different domain than the delegate, transfer the exception
3869         to that domain.
3870
3871 2009-10-07  Zoltan Varga  <vargaz@gmail.com>
3872
3873         * marshal.c (emit_marshal_vtype): Emit marshalling of DateTime to OLE DATE.
3874         Fixes #322934.
3875
3876 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3877
3878         * domain.c (DEFAULT_RUNTIME_VERSION): Change this to v2.0.
3879
3880 2009-10-06  Mark Probst  <mark.probst@gmail.com>
3881
3882         * object.c (mono_method_return_message_restore): Handle the case
3883         where the argument is an instance of a generic type.  Fixes
3884         #544446.
3885
3886 2009-10-06  Mark Probst  <mark.probst@gmail.com>
3887
3888         * object.c (set_value): Write barrier fix - we must pass the
3889         count, not the size.
3890
3891 2009-10-05  Zoltan Varga  <vargaz@gmail.com>
3892
3893         * domain.c (mono_init_internal): Print a useful error message when encountering
3894         an old mscorlib, instead of crashing. Fixes #544307.
3895
3896 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3897
3898         * appdomain.c (copy_app_domain_setup): Fix a warning.
3899
3900         * debug-helpers.c (dis_one): Ditto.
3901
3902 2009-10-04  Mark Probst  <mark.probst@gmail.com>
3903
3904         * domain-internals.h, appdomain.c: The AppDomainSetup is copied
3905         into the new domain, instead of referencing the original one.
3906
3907         * marshal.c, marshal.h: Make mono_marshal_xdomain_copy_value()
3908         non-static.
3909
3910         * appdomain.c: Corlib version bump.
3911
3912 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3913
3914         * threadpool.c: one more...
3915
3916 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3917
3918         * threadpool.c: forgot a LeaveCriticalSection when telling the idle
3919         threads to die because we're shutting down. delgate5.exe works again.
3920
3921 2009-10-01  Bill Holmes  <billholmes54@gmail.com>
3922
3923         * cominterop.c (mono_marshal_free_ccw_entry): Updating the
3924           ccw_interface_hash table when a ccw is finalized.
3925
3926         Code is contributed under MIT/X11 license.
3927
3928 2009-09-30  Mark Probst  <mark.probst@gmail.com>
3929
3930         * assembly.c, domain.c, image.c, metadata-internals.h: Split
3931         domain and image unloading into two steps.  We must do this
3932         because clearing the domain in SGen requires the class metadata to
3933         be intact, but we need to free the mono_g_hash_tables in case a
3934         collection occurs during domain unloading and the roots would trip
3935         up the GC.
3936
3937 2009-09-30  Mark Probst  <mark.probst@gmail.com>
3938
3939         * object-internals.h: Remove serialized culture fields from
3940         MonoInternalThread.
3941
3942         * icall-def.h, thread-types.h, threads.c: Remove serialized
3943         culture icalls.
3944
3945         * appdomain.c: Corlib version bump.
3946
3947 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3948
3949         * marshal.c (emit_marshal_object): Emit out marshalling of stringbuilders.
3950         Fixes #543133.
3951
3952 2009-09-30  Mark Probst  <mark.probst@gmail.com>
3953
3954         * sgen-gc.c: Try to shorten the new section after a major
3955         allocation to avoid ever-growing sections.
3956
3957 2009-10-13  Martin Baulig  <martin@ximian.com>
3958
3959         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
3960         `MONO_DEBUGGER_EVENT_TRAMPOLINE' into
3961         `MONO_DEBUGGER_EVENT_OLD_TRAMPOLINE' and added a new
3962         `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
3963
3964         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 4.
3965
3966 2009-09-29 Gonzalo Paniagua Javier <gonzalo@novell.com>
3967
3968         * threadpool.c: fixed the order in which 'completed' and the wait
3969         handle, if any, are set.  Fixes bug #542933 and delegate2.exe
3970         No need to use the wait_handle field of ASyncCall. Make sure the
3971         threadpool is active when adding a job or queueing an idle thread.
3972
3973 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3974
3975         * object.c (mono_unhandled_exception): Fix a crash if there is no main thread.
3976
3977         * threads.c (build_wait_tids): Fix a crash if there is no main thread, like
3978         when using --compile-all.
3979
3980 2009-09-27  Mark Probst  <mark.probst@gmail.com>
3981
3982         * metadata.c (free_generic_class): Unregister the field_objects
3983         roots if we're using SGen.
3984
3985 2009-09-27  Mark Probst  <mark.probst@gmail.com>
3986
3987         * reflection.c (mono_dynamic_image_free): Deregister the GC root
3988         for GenericParamTableEntry.gparam.
3989
3990 2009-09-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
3991
3992         * marshal.c: don't create the handle when calling. It is created later
3993         if needed.
3994
3995 2009-09-26  Mark Probst  <mark.probst@gmail.com>
3996
3997         * sgen-gc.c: Warning fixes.
3998
3999 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4000
4001         * sgen-gc.c: New debug option "xdomain-checks", which scans the
4002         whole heap for cross-domain references before each collection.
4003
4004         * sgen-scan-object.h: The scan action can now use SCAN to scan the
4005         object.
4006
4007         * threadpool-internals.h, threadpool.c: New function
4008         mono_thread_pool_is_queue_array() for checking whether a given
4009         array is used as a (cross-domain) queue by the thread pool code.
4010
4011 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4012
4013         * sgen-gc.c: New function mono_gc_scan_for_specific_ref() which
4014         searches the whole heap for objects containing a specific
4015         reference.  Only for debugging.
4016
4017 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4018
4019         * appdomain.c (MONO_CORLIB_VERSION): Bumped.
4020
4021         * icall-def.h, threads.c, threads-types.h: New icalls for copying
4022         byte arrays between domains.
4023
4024 2009-09-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
4025
4026         * threadpool.c:
4027         * class-internals.h:
4028         * mono-perfcounters-def.h:
4029         * mono-perfcounters.c:
4030         -There is a list of idle threads
4031         -Each of those idle threads wait on their own WaitHandle instead
4032         of all of them using the same semaphore. When a new work item is
4033         added, the job is assigned directly to an idle thread or a newly
4034         created one if possible and then the handle for that thread is
4035         signaled. Compare that to the current approach where all the
4036         threads in the pool compete to dequeue a job from the same
4037         queue.
4038         -New struct ThreadPool that brings together the bunch of static
4039         variable for each threadpool (IO and regular).
4040         -New performance counters: # of items added and its rate per
4041         threadpool. The rate will be used later, perhaps together with
4042         other perf. counters, to decide when idle threads should exit.
4043
4044 2009-09-25  Jonathan Chambers  <joncham@gmail.com>
4045
4046         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal): 
4047         Fix typo on Windows build.      
4048         (ves_icall_System_Net_Sockets_Socket_Accept_internal): Fix typo on Windows build.
4049         
4050         Code is contributed under MIT/X11 license.
4051
4052 2009-09-25  Mark Probst  <mark.probst@gmail.com>
4053
4054         * object-internals.h: The Thread class is split up into Thread and
4055         InternalThread now.  We have exactly one InternalThread per
4056         thread, and at most one Thread per appdomain per thread.  Most
4057         data is stored in InternalThread.  All InternalThread objects live
4058         in the root domain.
4059
4060         * class-internals.h: Add internal_thread_class to MonoDefaults.
4061
4062         * appdomain.c (mono_domain_unload), attach.c (receiver_thread),
4063         domain.c, gc.c, icall-def.h, monitor.c, object.c, sgen-gc.c,
4064         socket-io.c, threadpool.c, thread-types.h, threads.c: Changes
4065         resulting from the split of the Thread class.
4066
4067         * gc-internal.h: Prototype for new function for checking whether a
4068         thread is the finalizer thread.
4069
4070         * appdomain.c: Corlib version bump.
4071
4072 2009-09-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4073
4074         * appdomain.c|h: Add a mono_domain_try_unload method which is
4075         equivalent to mono_domain_unload, except that it returns an exception
4076         instead of throwing it. Make mono_domain_unload use the
4077         mono_domain_try_unload method to avoid code-duplication.
4078
4079 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
4080
4081         * debug-helpers.c (dis_one): Avoid unaligned accesses on platforms where that is
4082         a problem.
4083
4084 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
4085
4086         * marshal.c (emit_ptr_to_object_conv): Generate an exception instead of
4087         aborting when a conversion is not implemented.
4088
4089 2009-09-23  Miguel de Icaza  <miguel@novell.com>
4090
4091         * verify.c: when comparing culture strings, use g_ascii_strcmp
4092
4093         * assembly.c (mono_public_tokens_are_equal): Change g_strcasecmp
4094         when comparing public key tokens to use memcmp on 16 bytes.   I do
4095         not believe this ever worked as advertised in the past.
4096
4097         The standard Public Key is 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00
4098         which would have always failed earlier.
4099
4100 2009-06-25  Miguel de Icaza  <miguel@novell.com>
4101
4102         * gc.c: Raise a NullArgumentException if the object passed is
4103         null.
4104
4105 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
4106
4107         * image.c (mono_image_close): Atomically decrement the reference count and
4108         remove the image from the hash tables, to prevent another thread from seeing a
4109         dying MonoImage. Fixes #541194.
4110
4111 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4112
4113         * threadpool.c: actually use the minimum number of 'completion ports'
4114         (for us is just a potential worker thread).
4115
4116 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4117
4118         * threadpool.c: remove ares_htable. It does not make sense any more
4119         since the same objects are now stored in GC-tracked arrays while they are
4120         in the queue.
4121
4122 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4123
4124         * threadpool.c: increase the minimum length of the queues to 128.
4125         Remove warning.
4126
4127 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
4128
4129         * marshal.c (mono_marshal_get_string_ctor_signature): New internal function to
4130         return the modified signature used by string ctors.
4131
4132 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
4133
4134         * marshal.c (mono_marshal_get_runtime_invoke_dynamic): New internal function
4135         to return a runtime-invoke wrapper which uses DYN_CALL to call the wrapped
4136         method, to be used by full-aot.
4137
4138 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
4139
4140         Since the runtime supports lazy initialization of a type's vtable and this can cause a type
4141         to fail, we need to ensure that the vtable is properly initialized at spots were the type must
4142         be known to be good.
4143
4144         * class.c (mono_class_init): Fail array types if their element type fails initialization
4145         as well.
4146
4147         * object.c (mono_class_create_runtime_vtable): Fail array types if their element type fails
4148         initialization, additionally we request the element_type vtable to be initialized as well.
4149
4150         This is fine and should not increase the working set in any meaningful way since it's reasonable
4151         to assume       that most code will create an array and eventually populate it, which will require the
4152         type's vtable to be initialized.
4153
4154         * loader.c (field_from_memberref): Add a comment for a possibly useless mono_class_init call.
4155
4156 2009-09-17  Atsushi Enomoto  <atsushi@ximian.com>
4157
4158         * normalization-tables.h : regenerated.
4159
4160 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
4161
4162         * mono-debug.c (mono_debug_add_method): Increase the size of the buffer,
4163         a leb128 encoding can take up to 5 bytes.
4164
4165 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
4166
4167         * class.c (verify_class_overrides): Remove useless argument.
4168
4169         * class.c (mono_class_setup_vtable_general): Move the overrides check to happen
4170         before interface enumeration as this is no longer required.
4171
4172 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
4173
4174         * class.c: New function mono_class_is_assignable_from_slow that is safe to be
4175         used under mono_class_init context. This functions avoid any code path that
4176         calls mono_class_init, which leads it to be slow as some things like the interface
4177         bitmap are not available.
4178
4179         * class.c (verify_class_overrides): Use mono_class_is_assignable_from_slow instead
4180         of it's own broken version. Fixes the verifier part of #538588.
4181
4182         * class-internals.h: Export mono_class_is_assignable_from_slow as part of the internal
4183         API.
4184
4185 2009-09-15  Mark Probst  <mark.probst@gmail.com>
4186
4187         * class.c (mono_class_init): Always set an exception in a class if
4188         vtable setup fails.  Fixes #538577.
4189
4190         * generic-sharing.c: Raise an exception if mono_class_vtable()
4191         returns NULL.
4192
4193 2009-09-13  Zoltan Varga  <vargaz@gmail.com>
4194
4195         * marshal.c (mono_marshal_get_runtime_invoke): Don't share instance 
4196         methods of vtypes, as they could be incorrectly shared with static methods
4197         taking an IntPtr argument.
4198
4199 2009-09-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
4200
4201         * domain.c:
4202         * object.c:
4203         * class-internals.h: renamed waithandle_class to
4204         manualresetevent_class.
4205         * marshal.c: propagate the exception if a remoting BeginInvoke call
4206         fails.
4207
4208 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4209
4210         * object.c: Properly handle vtable failures.
4211
4212 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4213
4214         * socket-io.c: Assert on vtable failure.
4215
4216         * mono-mlist.c: Assert on vtable failure.
4217
4218 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4219
4220         * marshal.c: Assert on vtable failure.
4221
4222 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4223
4224         * icall.c: Properly handle vtable failures.
4225
4226 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4227
4228         * debug-helpers.c (mono_class_describe_statics): Properly handle vtable failures.
4229
4230 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4231
4232         * cominterop.c (ves_icall_System_ComObject_CreateRCW): Property handle vtable failures.
4233
4234         * console-unix.c (do_console_cancel_event): Same.
4235
4236 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4237
4238         * class-internals.h: Add mono_class_vtable_full function that allows control
4239         if an exception should be raised or not.
4240
4241         * object.c (mono_class_vtable): Call into mono_class_vtable_full. Fix this function
4242         to do what its documentation say, that is to return NULL and set exception_type on
4243         failure.
4244
4245         * object.c (mono_class_create_runtime_vtable): Add new raise_on_error parameter
4246         and change the code to honor it.
4247
4248 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4249
4250         * verify.c: Fix typo in error message.
4251
4252 2009-09-10  Sebastien Pouliot  <sebastien@ximian.com>
4253
4254         * security-core-clr.c: Fix default_platform_check so it can run
4255         the runtime coreclr tests (without an infinite recursion when
4256         throwing an exception).
4257
4258 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4259
4260         object.c (mono_delegate_ctor_with_method): Guard against null method.
4261
4262 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4263
4264         * marshal.c (mono_marshal_get_xappdomain_dispatch): Add an assert
4265         that should be replaced with error handling later.
4266
4267 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4268
4269         * marshal.c (mono_delegate_end_invoke): Fix warning.
4270
4271 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4272
4273         * loader.c (mono_field_from_token): Properly handle invalid
4274         dynamic tokens.
4275
4276 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4277
4278         * pedump.c (verify_image_file): Skip types that can't be
4279         decoded.
4280
4281 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4282
4283         * verify.c: Look for recursive valuetypes only against the
4284         type been initialized as this is a lot simpler and works.
4285
4286 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4287
4288         * verify.c: Ensure that fields are properly loaded before
4289         checking them.
4290
4291 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
4292
4293         * object.c (mono_object_get_virtual_method) : Call 
4294           mono_cominterop_get_invoke if the object is a COM object.
4295
4296         Code is contributed under MIT/X11 license.
4297
4298 2009-09-09  Rodrigo Kumpera  <rkumpera@novell.com>
4299
4300         * verify.c: Check for recursive valuetype definitions.
4301
4302 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
4303
4304         Use inheritance-aware interface offsets. Inherited types use the same offsets
4305         of their parents. This reduce offset duplication in case more than one type in
4306         the inheritance tree explicitly implements the same interface.
4307
4308         This also removes a source of vtable bubbles found in #532409. An abstract type
4309         isn't required to provide abstract methods to all interfaces it implements, which
4310         resulted in a bubble with the previous scheme as the child would get a non-full
4311         vtable from its parent. We fail all concrete types with vtable bubbles, so this
4312         should be fixed.
4313
4314         This change causes an increase of 1.7% in vtable memory usage for IronPython pystone but
4315         it's expected to not cause any significant increase beyond that.
4316
4317         * class.c (setup_interface_offsets): Compute super class iface offsets
4318         first to force sharing.
4319
4320         * class.c: Add VTABLE_SELECTOR macro to the vtable debug macros to help
4321         dumping only the relevant ones.
4322
4323         * class.c (mono_class_setup_vtable_general): Give newslot, non final, virtual
4324         methods a new slot regardless if they belong to an interface or not. This allows
4325         an inherited type to override the iface method separately from the class one.
4326
4327 2009-09-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
4328
4329         * threadpool.c: make the Sleep() alertable to prevent delays exiting
4330         applications that take less than 2s to execute.
4331         Bug #524984 fixed.
4332
4333 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
4334
4335         * object-internals.h (MonoRuntimeCallbacks): Add a 'get_runtime_build_info' callback.
4336
4337         * object.c (mono_get_runtime_callbacks): New helper function to return
4338         the runtime callbacks.
4339
4340         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Use the result of
4341         mono_get_runtime_build_info () as the display name.
4342         
4343 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4344
4345         * marshal.c (emit_marshal_array): Call conv.ovf.i on the array parameter
4346         argument, since NEWARR expects a native int. Fixes #481559.
4347
4348 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4349
4350         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Guard
4351         against broken SRE methods.
4352
4353 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4354
4355         * class.c (mono_type_get_full): Don't call mono_metadata_free_type on
4356         a NULL variable. Abort early on failure.
4357
4358 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4359
4360         * class.c (can_access_type): Fail visibility test for non nested
4361         types with nested visibility.
4362
4363 2009-09-02  Sebastien Pouliot  <sebastien@ximian.com>
4364
4365         * assembly.c (parse_public_key): Avoid allocating (and not 
4366         freeing) the public key array when it's not requested by the 
4367         caller.
4368         * threads.c (mono_thread_manage, mono_thread_create_internal, 
4369         ves_icall_System_Threading_Thread_Thread_internal): Free 
4370         allocated memory on error.
4371
4372 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4373
4374         * icall.c, icall-def.h: Remove some dead code from early SRE changes.
4375
4376 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4377
4378         * class.c (mono_class_setup_fields): Remove duplicated local variable
4379         named gklass.
4380         Rename gklass to gtd to reflect the fact that it points to the generic
4381         type definition.
4382         Remove the duplicated call to mono_class_setup_fields on gtd and move
4383         the error check to the beginning.
4384
4385 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4386
4387         * marshal.c (mono_array_to_lparray): Do DISABLE_COM properly.
4388         Remove cruft of the previous patch.
4389
4390 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4391
4392         * metadata-verify.c (verify_method_table): Check for abstract + final.
4393         Fixes #534175.
4394
4395 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4396
4397         * verify.c (verify_class_fields): Check for duplicate fields.
4398
4399 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4400
4401         * metadata-verify.c: Verify the typeref table for duplicates.
4402
4403 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4404
4405         This reverts r140936 and properly handles interfaces with static methods. The
4406         right fix is to ensure vtables without bubles which is an easier to verify
4407         constraint. We should avoid such special cases as of the reverted patch as those
4408         only make the runtime more brittle.
4409
4410         * class.c (mono_class_setup_vtable_general): Revert previous change that handle
4411         static methods on interfaces.
4412
4413         * class.c (setup_interface_offsets): Use the number of virtual methods when
4414         calculating interface offsets instead of the number of methods. This way we
4415         avoid bubles on the layout.
4416
4417 2009-08-31  Rodrigo Kumpera  <rkumpera@novell.com>
4418
4419         * metadata-verify.c (verify_metadata_header): Some very smart
4420         obfuscators like to add extra stream headers. Ignore them.
4421
4422 2009-08-30  Zoltan Varga  <vargaz@gmail.com>
4423
4424         * class.c (mono_class_setup_vtable_general): Verify interfaces with static
4425         methods correctly.
4426
4427 2009-08-29  Rodrigo Kumpera  <rkumpera@novell.com>
4428
4429         * metadata-verify.c: Verify for duplicated types.
4430
4431 2009-08-28  Rodrigo Kumpera  <rkumpera@novell.com>
4432
4433         * metadata-verify.c (verify_typedef_table): Verify for nested types
4434         without an entry on the nested class table.
4435
4436 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4437
4438         * cominterop.c (cominterop_get_ccw): Applied patch from tom hindle
4439         <tom_hindle@sil.org>. Add locking around hash table accesses.
4440
4441 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4442
4443         * verify.c (mono_verifier_verify_class): Verify all interface if
4444         really are interfaces. Fixes #534184.
4445
4446 2009-08-27  Rodrigo Kumpera  <rkumpera@novell.com>
4447
4448         * pedump.c: Initialize all types during metadata validation so we report
4449         errors only detected as part of class initialization.
4450
4451 2009-08-26  Rodrigo Kumpera  <rkumpera@novell.com>
4452
4453         * metadata-verify.c (verify_method_table): PInvoke requires method to
4454         be static. Fixes #534189
4455
4456 2009-08-26  Zoltan Varga  <vargaz@gmail.com>
4457
4458         * threads.c (mono_thread_suspend_all_other_threads): Handle 'threads_starting_ip'
4459         being NULL.
4460
4461 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4462
4463         * class.c (mono_class_setup_vtable_general): Verify the resulting vtable
4464         for holes or bad methods. Fixes #525314.
4465
4466 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4467
4468         * class.c (setup_interface_offsets): Don't allocate slot
4469         for the same interface multiple times. This creates bubbles
4470         that waster space and make vtable verification harder.
4471
4472         The same interface get a slot multiple times since we need
4473         to get the closure of all implemented interfaces, which means
4474         the same interface is reported multiple times.
4475
4476 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4477
4478         * verify.c (mono_verifier_verify_class): Don't check the fields
4479         of generic instances since the context on which they got expanded
4480         might lead to false positives.
4481
4482         Such thing happens when a generic type is inflated in the context
4483         of a generic method and the inflated type of a field turns into a
4484         generic method argument, which causes the checking code to think
4485         it's an invalid class when it's not.
4486
4487 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4488
4489         * verify.c (mono_type_is_valid_in_context): Verify if type
4490         is NULL and remove duplicate test.
4491
4492 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4493
4494         * verify.c (mono_verifier_verify_class): Check fields for
4495         invalid generic arguments.
4496
4497 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4498
4499         * class.c (verify_class_overrides): Verify if for static
4500         and non virtual methods.
4501
4502 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4503
4504         * icaa.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor):
4505         Check for errors after retrieving the vtable.
4506
4507 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4508
4509         * class.c (mono_class_setup_vtable_general): Verify
4510         if method overrides are valid before processing them.
4511
4512 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4513
4514         * marshal.c (mono_array_to_lparray): Fix minimal build with
4515         cominterop disabled.
4516
4517         * marshal.c (mono_free_lparray): Same.
4518
4519 2009-08-21  Mark Probst  <mark.probst@gmail.com>
4520
4521         * threadpool.c (mono_thread_pool_init): Use mono_object_hash() as
4522         the hash function for the ares_htable.
4523
4524 2009-08-20  Rodrigo Kumpera  <rkumpera@novell.com>
4525
4526         * metadata-verify.c (verify_assembly_table): Accept 0x10 as a valid
4527         bit for assembly flags. MS is ok with it but there is no spec anywhere
4528         on its mean
4529
4530 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4531
4532         * class.c (mono_class_create_from_typedef): Emit profiler events
4533         in all cases.
4534
4535 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4536
4537         * icall.c (ves_icall_Type_GetMethodsByName): Don't leak loader errors.
4538         Release memory on failure.
4539
4540 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4541
4542         * class-internals.h: Add mono_metadata_load_generic_param_constraints_full
4543         to the internal API.
4544
4545         * metadata.c (get_constraints): Use a single-linked table as we don't
4546         traverse it backward. Fail and return FALSE if only of the contraint types
4547         is not found.
4548
4549         * metadata.c (mono_metadata_load_generic_param_constraints_full): Identical
4550         to mono_metadata_load_generic_param_constraints except for having a return value.
4551         This has to be done since the later is part of the public API.
4552
4553         * class.c (mono_class_create_from_typedef): Properly check the loading of constrains
4554         and fail the type.
4555
4556         * loader.c (mono_get_method_from_token): Properly check the loading of constraints
4557         and fail the method.
4558
4559 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4560
4561         * metadata-verify.c (is_valid_method_header): Add work-around to deal
4562         with MS broken behavior of emmitting EH section sizes without the
4563         header size added.
4564
4565 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4566
4567         * metadata.c (mono_type_create_from_typespec): Don't allocate image
4568         memory until we're sure that we'll need it. This avoids leaking for
4569         broken types or duplicated instantiation.
4570
4571 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4572
4573         * metadata-verify.c (is_valid_method_header): Fix stupid formating
4574         mistake.
4575
4576 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4577
4578         * metadata-verify.c (is_valid_method_header): Fix number of clauses
4579         and expected size calculation.
4580
4581 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4582
4583         * class.c (mono_class_get_field_idx): Add fixme for broken
4584         behavior for types with multiple fields with the same name.
4585         I would rather fix it, but have no idea on how to generate
4586         such artifact for testing.
4587
4588 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4589
4590         * verify.c (verifier_load_field): We should allow references to
4591         fields to be made using the generic type definition. It's up to
4592         the loader system to fail invalid ops.
4593
4594         * verify.c (get_boxable_mono_type): Only uninstantiated GTDs
4595         are invalid.
4596
4597 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4598
4599         * class.c: Fix usage of mono_metadata_interfaces_from_typedef_full.
4600
4601         * metadata-internals.h: Fix declaration of 
4602         mono_metadata_interfaces_from_typedef_full.
4603
4604         * metadata.c (mono_metadata_interfaces_from_typedef_full): Add extra
4605         heap_alloc_result parameter that controls if the result should be
4606         g_malloc'd.
4607
4608         * metadata.c (mono_metadata_interfaces_from_typedef): Let the resulting
4609         array be g_malloc'd and properly document this public API function.
4610
4611 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4612
4613         * cil-coff.h: Fix METHOD_HEADER_FORMAT_MASK to be 2 bits and
4614         remove METHOD_HEADER_TINY_FORMAT1.
4615
4616         * reflection.c: Remove reference to METHOD_HEADER_TINY_FORMAT1.
4617
4618         * metadata.c (mono_metadata_parse_mh_full): Kill tiny format1.
4619
4620         Both spec and MS uses only 2 bits to enumerate the kind of header.
4621         So given that 0x6 and 0x2 are equal under a 2 bits mask, tiny format1
4622         is superfluous, only used for tiny headers with odd code lengths.
4623
4624         This change also make sure that mono doesn't wronly interpret bit 2
4625         of fat header flags, which is currently reserved.
4626
4627 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4628
4629         * metadata.c (do_mono_metadata_parse_type): Do error
4630         checking for element types. Don't abort if presented
4631         with a broken type kind.
4632
4633 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4634
4635         * metadata.c (mono_metadata_parse_method_signature_full):
4636         Gracefully fail bad vararg signatures.
4637
4638 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4639
4640         * profiler.c:
4641         * class.c: Fix warnings for uninitialized variables.
4642
4643 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4644
4645         * icall.c: Fix _NSGetEnviron method declaration warning.
4646
4647 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4648
4649         * icall.c:
4650         * reflection.c: Make bitwise checks explicit.
4651
4652 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4653
4654         * debug-helpers.c:
4655         * marshal.c: Fix printf warnings.
4656
4657 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4658
4659         * reflection.c (encode_cattr_value): Fix a warning.
4660
4661 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4662
4663         * metadata.c (mono_metadata_parse_array_full): Fix memory leak
4664         of array bounds.
4665
4666 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4667
4668         * loader.c (mono_method_signature): Don't assert on broken
4669         signature. Print a more useful error message.
4670
4671 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4672
4673         * loader.c (mono_method_get_marshal_info): Assert if
4674         signature is invalid. Bounds check stores to the
4675         mspecs array;
4676
4677 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4678
4679         * loader.c (field_from_memberref): Fix warning.
4680
4681 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4682
4683         * loader.c (mono_method_get_param_names): Check if signature
4684         is null. Don't store beyond the size of the name array.
4685
4686 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4687
4688         * loader.c (mono_get_method_constrained): Check if signature
4689         is null.
4690
4691 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4692
4693         * loader.c (mono_loader_set_error_bad_image): Improve
4694         error messages.
4695
4696 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4697
4698         * loader.c (mono_get_method_full): Convert an assertion
4699         into a loader error.
4700
4701 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4702
4703         * class-internals.h, class.c: Better naming and documentation.
4704
4705 2009-08-17  Zoltan Varga  <vargaz@gmail.com>
4706
4707         * boehm-gc.c (mono_gc_add_weak_track_handle): Don't do any work if
4708         obj is NULL.
4709
4710 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4711
4712         * loader.c (mono_method_get_signature_full): Fail gracefully if signature
4713         parsing fails.
4714
4715 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4716
4717         * loader.c (mono_loader_error_prepare_exception): Handle missing field
4718         errors with no class set.
4719
4720         * loader.c (field_from_memberref): If the field signature is of the wrong
4721         type fail with a MissingFieldException instead of a BadImageException as
4722         this is the behavior observed on MS. 
4723
4724 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4725
4726         * loader.c (field_from_memberref): Don't crash if either the field
4727         signature or the typespec class are invalid.
4728
4729 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4730
4731         * verify.c (verifier_load_field): Don't allow field related
4732         ops to reference fields on generic type definition.
4733
4734 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4735
4736         * metadata-verify.c: Add new warning level for errors specified
4737         by ECMA 335 but that MS ignores.
4738
4739         * metadata-verify.c (verify_method_table): Make compiler controled
4740         visibility + (rt)specialname error a warning as MS ignores this. Ignoring
4741         this check is safe because the end result will only be some visibility
4742         exceptions been thrown.
4743
4744 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4745
4746         * verify.c (get_boxable_mono_type): Don't allow the
4747         use of the generic type definition on boxed type positions.
4748
4749         Fixes #531237.
4750
4751 2009-08-14  Mark Probst  <mark.probst@gmail.com>
4752
4753         * threadpool.c: Make sure no cross-domain references remain in
4754         ares_htable or the arrays that are thrown away when resizing.
4755
4756 2009-08-14  Mark Probst  <mark.probst@gmail.com>
4757
4758         * appdomain.c, metadata-internals.h, image.c: In MonoImage add a
4759         list of classes for which we have to unregister reflection_info
4760         with the GC and which are not in the namespace cache.
4761
4762         * reflection.c (mono_reflection_initialize_generic_parameter): Add
4763         the class to the list.
4764
4765 2009-08-14  Mark Probst  <mark.probst@gmail.com>
4766
4767         * domain.c (mono_domain_free): Unregister the GC roots in
4768         MonoDomain.
4769
4770 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
4771
4772         * reflection.c (mono_reflection_type_get_handle): Fix typo.
4773
4774 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
4775
4776         * class.c: Add mono_class_get_field_from_name_full which does
4777         the same as mono_class_get_field_from_name but does check field
4778         signature as well.
4779
4780         * class-internals.h: Export mono_class_get_field_from_name_full as
4781         part of the internal API.
4782
4783         * loader.c (field_from_memberref): Search fields by name and signature
4784         as it's valid to have two fields with same name but different types.
4785
4786         Fixes #528055.
4787
4788 2009-08-10  Rodrigo Kumpera  <rkumpera@novell.com>
4789
4790         * icall-def.h: Add a bunch of temporary icalls to MonoGenericClass.
4791
4792         * reflection.c (mono_reflection_type_get_handle): Handle MonoGenericClass.
4793
4794         * reflection.c (encode_cattr_value): Use mono_reflection_type_get_handle to encode
4795         System.Type.
4796
4797 2009-08-13  Zoltan Varga  <vargaz@gmail.com>
4798
4799         * gc.c (GCHandle_CheckCurrentDomain): Moved this here from icall.c.
4800
4801         * boehm-gc.c (mono_gc_add_weak_track_handle): Handle nulls.
4802
4803 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4804
4805         * sgen-gc.c, sgen-scan-object.h: Object scanning code factored out
4806         to sgen-scan-object.h, which can be included and parameterized via
4807         macros.
4808
4809         * Makefile.am: sgen-scan-object.h added.
4810
4811 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4812
4813         * gc.c: #define GC_dont_gc if we're compiling with SGen.
4814
4815 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4816
4817         * domain.c (mono_domain_free): Free a domain's mono_g_hash_tables
4818         before clearing a domain in the GC.
4819
4820 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4821
4822         * exception.c (mono_exception_from_name_domain): Actually create
4823         the exception in the specified domain.
4824
4825         * appdomain.c (mono_domain_create_appdomain_internal): Create the
4826         OutOfMemoryException a bit later so that the domain is inialized
4827         "enough" that it works.
4828
4829 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4830
4831         * threads.c (thread_cleanup): Clean up the cached_culture_info
4832         array to prevent cross-domain references.
4833
4834 Tue Aug 11 14:38:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4835
4836         * metadata.c: more documentation for MonoType accessors.
4837
4838 2009-08-11  Raja R Harinath  <harinath@hurrynot.org>
4839
4840         Fix incorrect size definitions where the tail array isn't a list
4841         of pointers
4842         * class-internals.h (MONO_SIZEOF_MARSHAL_TYPE): Use offsetof to
4843         define size.
4844         * domain-internals.h (MONO_SIZEOF_JIT_INFO): Likewise.
4845         * metadata.h (MONO_SIZEOF_TYPE): Likewise.
4846         * reflection.h (MONO_SIZEOF_CUSTOM_ATTR_INFO): Likewise.
4847
4848 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4849
4850         * reflection.h:
4851         * reflection.c: MONO_SIZEOF_CUSTOM_ATTR_INFO.
4852
4853 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4854
4855         * metadata.c:
4856         * loader.c:
4857         * metadata-internals.h:
4858         * method-builder.c:
4859         * reflection.c: use MONO_SIZEOF_METHOD_HEADER.
4860
4861 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4862
4863         * cominterop.c:
4864         * metadata.c:
4865         * metadata.h:
4866         * loader.c:
4867         * marshal.c:
4868         * reflection.c: #define for sizeof in MonoType and
4869         MonoMethodSignature.
4870
4871 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4872
4873         * domain.c:
4874         * domain-internals.h: add and use #define's instead of sizeof()
4875         for MonoJitInfo and MonoJitInfoTable.
4876
4877 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4878
4879         * object.c:
4880         * class.h: use #define instead of sizeof() for MonoRemoteClass.
4881
4882 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4883
4884         * metadata.c:
4885         * metadata.h:
4886         * object.c:
4887         * class-internals.h:
4888         * generic-sharing.c:
4889         * marshal.c: use a #define instead of sizeof() for a few
4890         structures that use a zero-length array.
4891
4892 2009-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
4893
4894         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Add new fields
4895         to handle inflated generic methods.
4896
4897         * appdomain.c: Bump corlib version.
4898
4899         * reflection.c (mono_image_get_method_on_inst_token): Handle generic method
4900         instances.
4901
4902         * reflection.c (fixup_method): Same
4903
4904         * reflection.c (resolve_object): Same.
4905
4906         * reflection.c (inflate_method): Replace a g_assert_not_reached with a
4907         g_error and a decent message.
4908
4909 2009-08-06  Massimiliano Mantione  <massi@ximian.com>
4910
4911         * bohem-gc.c (mono_gc_add_weak_track_handle): Get the domain
4912         from the object because it could not yet be available globally
4913         (it happens if the profiler tries to create a gchandle on the
4914         MonoThread object of a thread that is still registering itself
4915         with the runtime).
4916
4917 2009-08-04  Rodrigo Kumpera  <rkumpera@novell.com>
4918
4919         * reflection.c (mono_generic_class_get_object): Initialized the
4920         managed type arguments array.
4921
4922         * object-internals.h (MonoReflectionGenericClass): Add type_arguments field.
4923
4924         * appdomain.c: Bump corlib version.
4925
4926 2009-08-04  Zoltan Varga  <vargaz@gmail.com>
4927
4928         * threads.c (thread_cleanup): Free serialized_ui_culture_info. Fixes
4929         #527902.
4930
4931 2009-08-03  Zoltan Varga  <vargaz@gmail.com>
4932
4933         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
4934         Avoid a crash if synch_cs is not set.
4935         
4936         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
4937         Handle the case when the handle is 0.
4938
4939         * appdomain.c: Bump corlib version.
4940
4941 2009-08-02  Zoltan Varga  <vargaz@gmail.com>
4942
4943         * reflection.c (mono_type_get_object): Fix a warning.
4944
4945 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4946
4947         * sgen-gc.c (mono_gc_wbarrier_value_copy): Don't compute the GC
4948         descriptor here.  We assume it's already been computed.
4949
4950         * generic-sharing.c (instantiate_other_info): Compute the GC
4951         descriptor for info type MONO_RGCTX_INFO_KLASS.
4952
4953 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4954
4955         * reflection.c (mono_type_get_object): MonoDomain is an unmanaged
4956         type, so don't use MONO_OBJECT_SETREF to set a field.
4957
4958 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4959
4960         * gc.c: We were missing one case where invoking a finalizer would
4961         not reset the domain.  Also, in the finalizer thread loop, assert
4962         that we're in the root domain.
4963
4964 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4965
4966         * icall.c (ves_icall_MonoType_GetArrayRank): Throw ArgumentException
4967         if the type is not an array.
4968
4969 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4970
4971         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Return the
4972         method bound to the declaring type of the method. Raise an exception
4973         if the type is not a generic param.
4974
4975 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4976
4977         * class.c (print_unimplemented_interface_method_info): Print the
4978         full type name.
4979
4980         * class.c (mono_class_setup_vtable_general): When dealing with a
4981         generic instance first check if the generic type definition is
4982         not broken.
4983
4984 2009-02-11 Tom Hindke <tom_hindle@sil.org>
4985
4986         * marshal.c (mono_array_to_lparray): Implemented so managed object types are converted to native types.
4987
4988         * marshal.c: Added new method mono_free_lparray to free memory allocated by mono_array_to_lparray
4989
4990         * marshal.c (emit_marshal_array): call emit mono_free_lparray where approprate.
4991
4992         * marshal.c (conv_to_icall): added MONO_MARSHAL_FREE_LPARRAY case
4993
4994         * metadata.h (MonoMarshalConv enum): added MONO_MARSHAL_FREE_LPARRAY
4995
4996         Code is contributed under MIT/X11 license
4997
4998 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4999
5000         * verify.c: Fix naming of stelem and ldelem.
5001
5002 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5003
5004         * generic-sharing.c: Replace the templates lock with the loader
5005         lock because of very hard to resolve deadlock issues.
5006
5007 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
5008
5009         * icall.c (ves_icall_Type_GetMethodsByName): Use 
5010         mono_class_get_vtable_size () instead of accessing klass->vtable_size
5011         directly. Fixes #525338.
5012
5013         * class.c (mono_class_get_vtable_size): New helper function.
5014
5015         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle_type): Fix the second argument, its a MonoType* not a MonoClass*. Check whenever
5016         the field belongs to the type. Fixes #525733.
5017
5018 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5019
5020         * sgen-gc.c: When we stop a thread and its stack top is not within
5021         its allocated stack (because it's in an altstack signal handler),
5022         restart it and stop it again, until it is.
5023
5024 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5025
5026         * sgen-gc.c: Take a thread's stack top and registers from the
5027         sigcontext in the suspend signal handler.
5028
5029         * sgen-gc.h, sgen-archdep.h, Makefile.am: Move arch-dependent
5030         stuff to sgen-archdep.h.
5031
5032         * gc.c, gc-internal.h: Remove the get_ip_from_sigctx installer and
5033         caller, because have code in sgen-archdep.h to acquire that data.
5034
5035 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
5036
5037         * profiler.c, profiler.h, profiler-private.h:
5038         Added support for keeping track of code chunks and buffers.
5039
5040 2009-07-29 Rodrigo Kumpera  <rkumpera@novell.com>
5041
5042         * metadata-verify.c: Fix endianness problems on decoding functions.
5043         Based on a patch by Ulrich Weigand <uweigand@de.ibm.com>
5044
5045 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
5046
5047         * icall.c (ves_icall_Type_make_array_type): Handle the new encoding
5048         schema for vectors and one dimension SZARRAY.
5049
5050 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
5051
5052         * reflection.c (mono_reflection_type_get_handle): Handle the new encoding
5053         schema for vectors and one dimension SZARRAY.
5054
5055 2009-07-27  Mark Probst  <mark.probst@gmail.com>
5056
5057         * icall-def.h, thread-types.h, threads.c: New separate icalls for
5058         Interlocked.(Compare)Exchange with object arguments, which invoke
5059         write barriers.
5060
5061 2009-07-26  Miguel de Icaza  <miguel@novell.com>
5062
5063         * icall.c (ves_icall_Type_GetNestedType): Throw an exception when
5064         passed invalid arguments.   Fixes another crasher in the
5065         Silverlight test suite.
5066
5067         * class.c (mono_class_array_element_size): Return 0 for the size
5068         of the class;  This fixes the crasher exposed by :
5069
5070         typeof (void).MakeArrayType ();
5071
5072         * icall.c (ves_icall_MonoType_GetEvent): Do not dereference method
5073         if there is no method to dereference.    Put all the code that
5074         depends on this inside the if (method) block.
5075
5076         This fixes the crasher exposed by Microsoft's Silvelright CLR test
5077         suite  ./Reflection/Emit/TypeBuilder/TypeBuilderGetEvent.exe
5078
5079         With this change, we pass the test.
5080         
5081         * reflection.c (mono_reflection_sighelper_get_signature_local):
5082         Only dereference the assembly if it has been set.    Fixes a
5083         crasher exposed by #525328
5084
5085 2009-07-25  Mark Probst  <mark.probst@gmail.com>
5086
5087         * sgen-gc.c, object.h, null-gc.c, boehm-gc.c, marshal.c: Really
5088         don't perform the store in mono_gc_wbarrier_generic_nostore().
5089         Remove the second argument (value), which is not needed.
5090
5091 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
5092
5093         * null-gc.c (mono_gc_wbarrier_generic_nostore): Define this to fix
5094         the build.
5095
5096         * boehm-gc.c: Ditto.
5097         
5098 2009-07-24  Mark Probst  <mark.probst@gmail.com>
5099
5100         * sgen-gc.c, marshal.c, object.h: Make the managed write barrier
5101         not perform the store itself.  Introduce
5102         mono_gc_wbarrier_generic_nostore(), which is the same as
5103         mono_gc_wbarrier_generic_store(), except it doesn't perform the
5104         store.
5105
5106 2009-07-24  Mark Probst  <mark.probst@gmail.com>
5107
5108         * icall.c (ves_icall_System_Array_SetGenericValueImpl):
5109         mono_gc_wbarrier_value_copy() doesn't perform the copy itself, so
5110         we still need the memcpy().
5111
5112 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5113
5114         * sgen-gc.c: Align array bounds calculation to mono_array_size_t
5115         so that big arrays are handled correctly.  Always use
5116         safe_object_get_size() to calculate array object sizes, which
5117         takes bounds into account.
5118
5119 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5120
5121         * sgen-gc.c (mono_gc_wbarrier_value_copy): Make sure the class's
5122         GC descriptor is computed before we use it.
5123
5124 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5125
5126         * icall.c (ves_icall_System_Array_SetGenericValueImpl): Use a
5127         write barrier if necessary.
5128
5129 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5130
5131         * icall-def.h, icall.c, thread-types.h: New separate icall for
5132         VolatileWrite(object&,object) that uses a write barrier.
5133
5134         * console-unix.c, file-io.c, icall.c, threads.c: Use write
5135         barriers in icalls which write to "ref" or "out" arguments.
5136
5137 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
5138
5139         * marshal.c (mono_marshal_get_runtime_invoke): Do the work done in the exception
5140         handler in a separate icall, to reduce the size of the wrappers.
5141
5142 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5143
5144         * metadata-verify.c (is_valid_typespec_blob): Fix error message.
5145
5146 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5147
5148         * metadata-verify.c (parse_field): Allow byref field.
5149
5150         * metadata-verify.c (parse_locals_signature): Allow byref locals.
5151
5152         * metadata-verify.c (is_valid_typespec_blob): Allow byref typespec.
5153
5154 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5155
5156         * verify.c (do_cast): Fail for any non reference type that isn't boxed.
5157         Fixes #522784.
5158
5159 2009-07-20  Robert Jordan  <robertj@gmx.net>
5160
5161         * cominterop.c (cominterop_get_managed_wrapper_adjusted):
5162         Fix invalid IL in valuetype handling (STOBJ must push the
5163         corresponding class). Fixes bug #523149.
5164
5165         Code is contributed under MIT/X11 license.
5166
5167 2009-07-20  Geoff Norton  <gnorton@novell.com>
5168
5169         * gc.c: Use proper semaphores where available on posix and darwin.
5170
5171 2009-07-19  Geoff Norton  <gnorton@novell.com>
5172
5173         * gc.c: Unnamed posix semaphores are broken on darwin-arm too.
5174
5175 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
5176
5177         * refletion.c (is_sre_usertype): Change name to is_usertype and
5178         invert it's result so it returns true if the type is an user type
5179         and not the opposite.
5180
5181         * reflection.c (is_*_type): Change all of those to use new macro
5182         check_corlib_type_cached that cached the type lookup so we don't
5183         need to do string comparisons all the type. Changed the signature
5184         to take a MonoClass instead.
5185
5186         * reflection.c: Change mono_image_create_token and resolve_object
5187         to use is_sre_* functions.
5188
5189 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5190
5191         * sgen-gc.c: Check for writes to the stack in the managed
5192         wbarrier as well.
5193
5194 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5195
5196         * sgen-gc.c: When a thread is unregistered, don't free its remsets
5197         but put them on a list which is processed with the other thread's
5198         remsets.
5199
5200 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5201
5202         * sgen-gc.c: Fix and enable the internal allocator instead of
5203         using malloc/free (which causes deadlocks).
5204
5205 2009-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
5206
5207         * refletion.c: Fix builds with SRE disabled by adding a minimal
5208         implementation of mono_reflection_type_get_handle.
5209
5210 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
5211
5212         * refletion.c: Make mono_reflection_type_get_handle non static.
5213
5214         * object-internals.h: Export mono_reflection_type_get_handle.
5215
5216         * icall.c (ves_icall_MonoGenericClass_InflateType): Resolve the
5217         unmanaged handle using mono_reflection_type_get_handle.
5218
5219 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
5220
5221         * refletion.c: Replace all reads of MonoReflectionType::type with
5222         calls to mono_reflection_type_get_handle. Only the functions that
5223         deal with constructing TypeBuilder::type have not been changed
5224         because they have to deal with NULL values.
5225
5226         This is a first step into supporting reflection types that don't
5227         map directly into their unmanaged counterpart.
5228
5229 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
5230
5231         * metadata-verify.c (parse_locals_signature): Don't complain
5232         on signature with zero locals since MS generates it and doesn't
5233         bother with.
5234
5235 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
5236
5237         * reflection.c (mono_image_get_array_token): Resolve return
5238         type using mono_reflection_type_get_handle.
5239
5240         * reflection.c (mono_image_get_array_token): Resolve array method
5241         parent type using mono_reflection_type_get_handle.
5242
5243 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
5244
5245         * reflection.c (mono_image_basic_init): Applied patch from
5246         <Dax@daxxfiles.net>. Set the public key token from the assembly
5247         builder. Fixes #518909.
5248
5249         * appdomain.c: Bump corlib version.
5250
5251 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
5252
5253         * class.c (mono_class_needs_cctor_run): Make this return false if
5254         the class has no cctor.
5255
5256 2009-07-13  Mark Probst  <mark.probst@gmail.com>
5257
5258         * sgen-gc.c: When the minor GC needs to allocate a new section,
5259         invoke the major GC afterwards.
5260
5261 2009-07-14  Bill Holmes  <billholmes54@gmail.com>
5262
5263         * process.c  (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal) :
5264           Applying the window_style field to the SHELLEXECUTEINFO struct.
5265
5266         Code is contributed under MIT/X11 license.
5267
5268 2009-07-13  Mark Probst  <mark.probst@gmail.com>
5269
5270         * sgen-gc.c: Fix the race condition in the unmanaged allocator by
5271         locking earlier.  Fix it in the managed allocator by making sure
5272         that no thread is stopped there before the GC runs.  If we do stop
5273         a thread there, we restart it and let it run a but, until it stops
5274         somewhere else.
5275
5276         * gc-internal.h, gc.c: Function for getting the IP from a signal
5277         context via a function registered by mini.
5278
5279 2009-07-11  Zoltan Varga  <vargaz@gmail.com>
5280
5281         * object-internals.h (MonoIntPtr): New structure describing a boxed
5282         IntPtr.
5283
5284         * object.c (mono_runtime_invoke_array): Handle ptr arguments and
5285         returns. Fixes #519953.
5286
5287         * marshal.c (mono_marshal_get_runtime_invoke): Handle pointer returns.
5288
5289 2009-07-09  Mark Probst  <mark.probst@gmail.com>
5290
5291         * class-internals.h, generic-sharing.c: New RGCTX info type for
5292         getting a remoting invoke with check wrapper.
5293
5294 2009-07-07  Geoff Norton  <gnorton@novell.com>
5295
5296         * icall-def.h: Fix the enable-minimal build.
5297
5298 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5299
5300         * object-internals.h: Add MonoReflectionDerivedType.
5301
5302         * reflection.c: Implement support for PointerType.
5303         Fixed tons of warnings.
5304
5305 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5306
5307         * object-internals.h: Add MonoReflectionByRefType.
5308
5309         * reflection.c: Implement support for ByRefType.
5310
5311 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5312
5313         * icall-def.h: Add System.Reflection.Emit.DerivedType::create_unmanaged_type.
5314
5315         * object-internals.h: Add MonoReflectionArrayType and
5316         mono_reflection_create_unmanaged_type.
5317
5318         * reflection.c: Implement support for ArrayType.
5319
5320 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5321
5322         * metadata-verify.c (is_valid_method_header): Parse EH block
5323         flags correctly.
5324
5325 2009-07-03  Mark Probst  <mark.probst@gmail.com>
5326
5327         * sgen-gc.c (finish_gray_stack): Set the to_space pointer after
5328         processing the disappearing links, and process disappearing links
5329         in a loop until no new objects are copied.
5330
5331 2009-07-03  Mark Probst  <mark.probst@gmail.com>
5332
5333         * object.c (handle_enum): Invoke the write barrier when copying
5334         value type instances.
5335
5336         * sgen-gc.c: Register remsets for unmanaged write barriers only
5337         when the address written to is actually on the heap.  This makes
5338         set_value() in object.c work without requiring that the result be
5339         on the heap.
5340
5341 2009-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
5342
5343         The runtime wrappers are all bound to a given type that must
5344         exist in the same image. For regular images we use the <Module>
5345         type, which is required to exist for all images.
5346
5347         The <Module> type can't be used for dynamic images because it
5348         might not exist at the time the wrapper is required, so we create
5349         a synthetic type to use instead.
5350
5351         The current code works because of the 2 stage setup of MonoClass,
5352         but once this is gone it will no longer work.
5353
5354         * icall-def.h: Add ModuleBuilder::set_wrappers_type.
5355
5356         * metadata-internals.h (MonoDynamicImage): Add wrappers_type.
5357
5358         * object-internals.h: Export mono_image_set_wrappers_type icall
5359         as part of the internal API.
5360
5361         * marshal.c (get_wrapper_target_class): If the image is dynamic,
5362         use MonoDynamicImage::wrappers_type instead of the <Module> type.
5363
5364         reflection.c: Add mono_image_set_wrappers_type qhixh sets the dynamic
5365         image wrappers_type to the provided value.
5366
5367 2009-07-01 Rodrigo Kumpera  <rkumpera@novell.com>
5368
5369         * appdomain.c (deregister_reflection_info_roots): No need
5370         to use the image lock here.
5371
5372 2009-07-02  Mark Probst  <mark.probst@gmail.com>
5373
5374         * sgen-gc.c (collect_nursery): Also scan from write-barrier roots.
5375
5376 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
5377
5378         * threads.c: Store the thread start argument in a hash table instead of
5379         registering it as a root, as libgc doesn't support unregistering roots
5380         under windows, leading to 'too many root sets' errors when many threads
5381         are created.
5382
5383         * gc.c (mono_gc_run_finalize): Avoid finalizing dynamic methods during
5384         shutdown, they can still be referenced by the other dying objects.
5385         Fixes #514506.
5386
5387 2009-06-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
5388
5389         * socket-io.c: DontLinger does not allow LingerOptions.
5390
5391 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5392
5393         * metadata-verify.c: The spec doesn't mention that it's possible to add
5394         custom attribute to a generic parameter. Fixed.
5395
5396 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5397
5398         * class.c (inflate_generic_type): Don't crash while trying to output a message
5399         on why we're aborting.
5400
5401 2009-06-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
5402
5403         * socket-io.c: DontLinger can take an int or a boolean too.
5404
5405 Fri Jun 26 17:00:04 CEST 2009 Paolo Molaro <lupus@ximian.com>
5406
5407         * gc.c: check for a null argument to SuppressFinalize () and
5408         ReRegisterForFinalize ().
5409
5410 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5411
5412         * loader.c (method_from_methodspec): Call into the verifier to check
5413         the signature.
5414
5415         * metadata-verify.c: Addmono_verifier_verify_methodspec_signature.
5416
5417         * verify-internals.h: Export mono_verifier_verify_methodspec_signature as
5418         part of the internal API.
5419
5420 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5421
5422         * metadata.c (mono_type_create_from_typespec): Call into the verifier to check
5423         the signature.
5424
5425         * metadata-verify.c: Add mono_verifier_verify_typespec_signature.
5426
5427         * verify-internals.h: Export mono_verifier_verify_typespec_signature as
5428         part of the internal API.
5429
5430 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5431
5432         * metadata.c (mono_metadata_parse_mh_full): Call into the verifier to check
5433         the signature.
5434
5435         * metadata-verify.c: Add mono_verifier_verify_standalone_signature. Fix
5436         blob verification.
5437
5438         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
5439         part of the internal API.
5440
5441 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5442
5443         * metadata-verify.c: Use is_valid_blob_object to verify blob validity
5444         when doing basic verification. 
5445
5446         This check must be done since the runtime peeks into signatures in much
5447         more places than it does decoding so it makes sense to ensure that all
5448         pointers to blob objects are well formed.
5449
5450 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5451
5452         * metadata-verify.c (is_valid_blob_object): Add extra minsize argument.
5453         Use proper overflow dectection. Fix usage of it.
5454
5455 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5456
5457         * loader.c (field_from_memberref): Call into the verifier to check
5458         the signature.
5459
5460         * loader.c (mono_method_get_signature_full): Same.
5461
5462         * loader.c (method_from_memberref): Same.
5463
5464         * metadata-verify.c: Add mono_verifier_verify_memberref_signature.
5465
5466         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
5467         part of the internal API.
5468
5469 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5470
5471         * threadpool.c (mono_thread_pool_add): If the domain is unloading
5472         or unloaded, still return an AsyncResult, but don't add it to the
5473         threadpool.
5474
5475 2009-06-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
5476
5477         * threads.c: fix missing colon when DEBUG is defined.
5478
5479 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5480
5481         * threadpool.c: Don't add new calls to a threadpool if the domain
5482         of the call is unloading or unloaded.  When dequeuing a job, null
5483         the reference in the queue.
5484
5485 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5486
5487         * sgen-gc.c (null_link_in_range): Add the dislink for the old
5488         generation if an object was moved.
5489
5490 2009-06-25  Sylvain Dupont <duposyl@gmail.com>
5491
5492         * cominterop.h cominterop.c marshal.c: Added support for marshalling out 
5493           parameters of type SAFEARRAY[VARIANT].
5494
5495         * reflection.c (encode_marshal_blob): Properly generate element type
5496           (SafeArraySubType marshal attribute option).
5497
5498         Code is contributed under MIT/X11 license.
5499
5500 Thu Jun 25 15:48:09 CEST 2009 Paolo Molaro <lupus@ximian.com>
5501
5502         * reflection.c: in mono_method_clear_object () really ensure all the
5503         objects are removed.
5504
5505 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5506
5507         * loader.c (mono_method_signature): Call into the verifier to check
5508         the method signature.
5509
5510         * metadata-verify.c (verify_method_table): Move signature verification
5511         to verify_method_table_full.
5512
5513         * metadata-verify.c: Add mono_verifier_verify_method_signature.
5514
5515         * verify-internals.h: Export mono_verifier_verify_method_signature as
5516         part of the internal API.
5517
5518 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5519
5520         * loader.c (mono_method_get_header): Call into the verifier to
5521         check the method header.
5522
5523         * metadata-verify.c: Add mono_verifier_verify_method_header.
5524
5525         * verify-internals.h: Export mono_verifier_verify_method_header as
5526         part of the internal API.
5527
5528 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5529
5530         * class.c (mono_class_find_enum_basetype): Call into the verifier to
5531         check the field signature. Replace an assert with an explicit check.
5532
5533         * class.c (mono_class_setup_fields): Call into the verifier to check
5534         the field signature.
5535
5536         * metadata-verify.c: Add mono_verifier_verify_field_signature.
5537
5538         * verify-internals.h: Export mono_verifier_verify_field_signature as
5539         part of the internal API.
5540
5541 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5542
5543         * class.c (mono_class_find_enum_basetype): Simplify this function
5544         by moving code outside of the loop and not decoding static fields.
5545
5546 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5547
5548         * metadata-verify.c (verify_typedef_table): Check the extends
5549         token here. Move to here a flags check from verify_typedef_table_full.
5550
5551 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
5552
5553         * metadata-verify.c (is_valid_method_header): Fix a warning.
5554
5555         * metadata-internals.h (MonoImage): Remove the unused 
5556         static_rgctx_invoke_wrapper_cache.
5557
5558         * image.c marshal.c: Ditto.
5559
5560 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5561
5562         * image.c (do_mono_image_load): Enable table data verification.
5563
5564 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5565
5566         * metadata-verify.c (is_valid_constant): Fix nullref check.
5567
5568 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5569
5570         * metadata-verify.c (is_valid_constant): Fix string bounds check.
5571
5572 2009-06-22  Mark Probst  <mark.probst@gmail.com>
5573
5574         * sgen-gc.c: Managed allocation with pthreads TLS.
5575
5576         * threads.c, threads-types.h: Functions for the JIT to tell the
5577         runtime whether it supports the MONO_TLS opcode.
5578
5579 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5580
5581         * metadata-verify.c (verify_param_table): Fix a crash for assemblies
5582         without methods.
5583
5584 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5585
5586         * metadata-verify.c (is_valid_constant): Fix the string length check.
5587         Use safe overflow checking. Add decent error messages.
5588
5589 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5590
5591         * metadata-verify.c: Move remaininh blob checks to the offline
5592         verification path.
5593
5594 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5595
5596         * metadata-verify.c: Move more blob checks to the offline verification
5597         path.
5598
5599 2009-06-22  Bill Holmes  <billholmes54@gmail.com>
5600
5601         * object-internals.h : Adding interrupt_on_stop field.
5602
5603         * threads.c (mono_thread_request_interruption) : On Windows exit the
5604           thread if interrupt_on_stop is set.
5605
5606         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
5607          Removing old interrupt logic and setting the interrupt_on_stop for the
5608          thread when calling accept.
5609
5610         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal) :
5611          setting the interrupt_on_stop for the thread when calling accept.
5612
5613         Contributed under MIT/X11 license.
5614
5615 2009-06-20  Martin Baulig  <martin@ximian.com>
5616
5617         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 3.
5618
5619 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
5620
5621         * appdomain.c (mono_try_assembly_resolve): Don't call managed code when
5622         running in no-exec mode.
5623
5624 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5625
5626         * metadata-verify.c (verify_method_table): Move header
5627         checking to verify_method_table_full.
5628
5629         * metata-verify.c (mono_verifier_verify_full_table_data):
5630         Call verify_method_table_full.
5631
5632 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5633
5634         * metadata-verify.c (verify_field_table): Move signature
5635         checking to verify_field_table_full.
5636
5637         * metata-verify.c (mono_verifier_verify_full_table_data):
5638         Call verify_field_table_full.
5639
5640 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5641
5642         * metadata-verify.c (verify_typedef_table): Move remaining
5643         stuff to verify_typedef_table_full.
5644
5645 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5646
5647         * metadata-verify.c: Kill is_corlib from VerifyContext.
5648         It is only used by the offline mode.
5649         So we better remove it from the runtime path.
5650
5651 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5652
5653         * metadata-verify.c: Add new mono_verifier_verify_full_table_data
5654         function that perform the offline metadata verification steps.
5655
5656         * metadata-verify.c (verify_typedef_table): Move some checks to
5657         verify_typedef_table_full and make it been called by new function
5658         mono_verifier_verify_full_table_data.
5659
5660         * pedump.c: Call mono_verifier_verify_full_table_data.
5661
5662         * verify-internals.h: Export mono_verifier_verify_full_table_data as
5663         part of the internal API.
5664
5665 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5666
5667         * metadata-verify.c (typedef_is_system_object): Fix System.Object
5668         check.
5669
5670         * metadata-verify.c (verify_implmap_table): Fix implmap invalid
5671         flags bits. SupportLastError was confused as bit 7 instead of 6.
5672
5673         * metadata-verify.c (verify_implmap_table): Fix import scope verification
5674         to check against the module ref table instead of module.
5675
5676         * metadata-verify.c (verify_implmap_table): Fix corlib check.
5677
5678         * pedump.c: Call mono_image_load_names.
5679
5680 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5681
5682         * image.c: Extract mono_image_load_names from do_mono_image_load.
5683
5684         * metadata-internals.h: Export mono_image_load_names as part of
5685         the internal API.
5686         
5687 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
5688
5689         * metadata.c (mono_metadata_cleanup): Free the generic method cache
5690         first, as it could reference data in the other caches.
5691
5692 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
5693
5694         * metadata-verify.c: Finished with method header verification.
5695
5696 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
5697
5698         * metadata-verify.c: Added more header verification code.
5699         Now only EH clauses are missing.
5700
5701 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
5702
5703         * marshal.c (get_runtime_invoke_type): Don't share primitive types
5704         for return values.
5705
5706 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
5707
5708         * metadata-verify.c: Initial method header verification.
5709
5710 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
5711
5712         * metadata-verify.c (verify_import_table): The IAT contents
5713         might end been patched by the windows DL when running with
5714         coree enabled.
5715
5716 2009-06-15 Rodrigo Kumpera  <rkumpera@novell.com>
5717
5718         * class.c (mono_class_from_typeref): If the enclosing type is not
5719         found return null instead of crashing. Fixes #508487.
5720
5721 2009-06-15  Atsushi Enomoto  <atsushi@ximian.com>
5722
5723         * normalization-tables.h : updated to the latest unicode charcter
5724           data.
5725         * appdomain.c : bump corlib version.
5726
5727 2009-06-14  Zoltan Varga  <vargaz@gmail.com>
5728
5729         * class.c (mono_class_from_name): Fix support for assembly references
5730         in the EXPORTEDTYPE table. Fixes #511704.
5731
5732 2009-06-13  Geoff Norton  <gnorton@novell.com>
5733
5734         * domain.c: Ensure that mono_domain_assembly_open actually opens the
5735         assembly in the target domain.
5736
5737 2009-06-12  Robert Jordan  <robertj@gmx.net>
5738
5739         * cominterop.c (cominterop_get_ccw): Increment mspec's SizeParamIndex
5740         because "this" of the managed signature has become an
5741         ordinary parameter in the unmanaged signature.
5742
5743 2009-06-12  Zoltan Varga  <vargaz@gmail.com>
5744
5745         * class-internals.h (struct _MonoGenericContainer): Add an 'image'
5746         field for owner-less generic containers.
5747
5748         * reflection.c (mono_reflection_initialize_generic_parameter): Set the
5749         image field of the owner-less generic containers created here.
5750
5751         * metadata.c (mono_metadata_load_generic_params): Ditto, the
5752         contain is ownerless until the caller sets its owner.
5753
5754         * metadata.c (type_in_image): Handle owner-less generic containers
5755         correctly.
5756         
5757 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
5758
5759         * image.c (mono_image_close): Support debug_assembly_unload for
5760         dynamic images too.
5761
5762 2009-06-11 Andrés G. Aragoneses  <aaragoneses@novell.com>
5763
5764         * class.c: Fix some typos in comments.
5765
5766 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
5767
5768         * reflection.c (add_custom_modifiers): Avoid reading invalid memory.
5769
5770         * threads.c (mono_thread_execute_interruption): Avoid creating the
5771         abort exception object while holding the synch_cs lock.
5772
5773 2009-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5774
5775         * metadata-verify.c: Verify basic cattr content.
5776
5777 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
5778
5779         * reflection.c (add_exported_type): Don't set the FORWARDER flag on
5780         nested types.
5781         
5782         * reflection.c (mono_image_fill_export_table_from_type_forwarders): Add
5783         support for nested types. Fixes #511704.
5784
5785 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5786
5787         * metadata-verify.c: Verify methodspec signatures.
5788
5789 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5790
5791         * metadata-verify.c: Verify typespec signatures.
5792
5793 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
5794
5795         * metadata.c (free_inflated_method): Call 
5796         mono_marshal_free_inflated_wrappers (), which was missed earlier.
5797
5798 2009-06-08  Miguel de Icaza  <miguel@novell.com>
5799
5800         * mono-config.c: Small change to report the PPC64/ILP32 model.
5801
5802 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5803
5804         * metadata-verify.c (parse_type): Check szarray.
5805
5806 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5807
5808         * metadata-verify.c (parse_type): Check fnptr.
5809
5810 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5811
5812         * metadata-verify.c (parse_type): Check generic instances.
5813
5814 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5815
5816         * metadata-verify.c (parse_type): Check array shape.
5817
5818 2009-06-05  Robert Jordan  <robertj@gmx.net>
5819
5820         * class.c (mono_class_create_from_typedef): Check only for
5821         mscorlib's System.Array.
5822
5823 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5824
5825         * metadata-verify.c (parse_type): Check pointer, class/valuetype
5826         and generic params. 
5827
5828         * metadata-verify.c (parse_field): Check the signature.
5829
5830 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5831
5832         * metadata-verify.c: Implement locals signature check.
5833
5834 2009-06-04  Marek Safar  <marek.safar@gmail.com>
5835
5836         * domain.c: Add .NET 4.0 Beta 1 version.
5837
5838 2009-06-04  Bill Holmes  <billholmes54@gmail.com>
5839
5840         * cominterop.c (cominterop_ccw_queryinterface): Fix for bug 499566.
5841           For QueryInterface on CCWs consider the base class
5842           interfaces as well.
5843
5844         Code is contributed under MIT/X11 license.
5845
5846 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
5847
5848         * wrapper-types.h: Delete STATIC_RGCTX_INVOKE.
5849
5850         * marshal.c (mono_marshal_ret_static_rgctx_invoke): Remove, no longer
5851         used.
5852
5853         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
5854         adding a static-rgctx invoke wrapper, it is done by the runtime trampolines.
5855
5856         * generic-sharing.c (inflate_other_data): Ditto.
5857         
5858 2009-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5859
5860         * metadata-verify.c: Implement property signature check.
5861
5862 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5863
5864         * sgen-gc.h: Register saving support for PPC.
5865
5866 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5867
5868         * sgen-gc.c: Fixed a pthread TLS screwup.
5869
5870 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5871
5872         * sgen-gc.c: Do TLS using pthread API if __thread keyword is not
5873         supported.
5874
5875 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5876
5877         * sgen-gc.c: Disable TLA and managed allocation if the __thread
5878         keyword is not supported.
5879
5880 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
5881
5882         * marshal.c metadata.c: Applied patch from Ulrich Weigand 
5883         <uweigand@de.ibm.com>: Free the wrappers of inflated generic methods when
5884         the inflated method is freed. Fixes #508389.
5885
5886         The code is contributed under the MIT/X11 license.
5887         
5888 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
5889
5890         * marshal.c (get_wrapper_target_class): New helper function.
5891         (mono_marshal_get_runtime_invoke): Place runtime-invoke wrappers into
5892         the <Module> class of the image. Fixes #509049.
5893
5894 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5895
5896         * threads.c (ves_icall_System_Threading_Thread_Sleep_internal):
5897         Check if the thread was interrupted and proccess it straight away.
5898         Makes abortion much more responsive.
5899
5900 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5901
5902         * threads.c (mono_thread_execute_interruption): Use atomic cas with
5903         MonoThread::interruption_requested to match it's counterpart.
5904
5905         Fixes a hang in abort-stress-1 on a 2 core x86.
5906
5907         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
5908         Fix warning.
5909
5910 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5911
5912         Change MonoImage::name_cache to be protected by the image lock
5913         instead of the loader lock.
5914
5915         * appdomain.c (deregister_reflection_info_roots): Protect access
5916         to name_cache.
5917
5918         * class.c (mono_image_init_name_cache): Change from the loader lock
5919         to the image lock. Check if the cache wasn't already created.
5920
5921         * class.c: Change from the loader to the image lock.
5922
5923         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Fix
5924         the code to hold the image lock while iterating over name_cache and
5925         not go into mono_array_new holding it.
5926
5927         * metadata-internals.h: Add a comment about this change.
5928
5929 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5930
5931         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
5932         Under the 2.0 profile raise the loader error.
5933
5934         Fixes #508532.
5935
5936 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5937
5938         * marshal.c (mono_marshal_get_runtime_invoke): Emit the right kind
5939         of ldind opcode for generic instances so we don't fail for direct wrappers.
5940         This only affect direct calls.
5941
5942 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
5943
5944         * reflection.c (create_dynamic_mono_image): Fix warnings.
5945
5946         * generic-sharing.c (other_info_equal): Ditto.
5947         
5948 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5949
5950         * metadata-verify.c: Implement field signature check.
5951
5952 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5953
5954         * metadata-verify.c: Implement standalone signature check.
5955
5956 2009-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5957
5958         * metadata-verify.c: Implement methodref signature check.
5959
5960 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
5961
5962         * object-internals.h (MonoRuntimeCallbacks): New structure containing
5963         callbacks supplied by the runtime.
5964
5965         * object.c (mono_install_callbacks): New internal function to install
5966         the callbacks.
5967
5968         * object.c (mono_create_ftnptr): Move the implementation of this to
5969         mini/.
5970
5971         * object.c (mono_get_addr_from_ftnptr): Ditto.  
5972
5973 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5974
5975         * metadata-verify.c (parse_return_type): Proper byref check.
5976         * metadata-verify.c (is_valid_method_signature): Check for zero arity
5977         generic signatures and method params.
5978
5979 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5980
5981         * metadata-verify.c (decode_signature_header): Fix bounds check.
5982
5983         * metadata-verify.c (parse_custom_mods): Check custom mods.
5984
5985         * metadata-verify.c (parse_type): Do initial basic verification
5986         of valid values.
5987         
5988         * metadata-verify.c (is_valid_method_signature): Parse the generic
5989         param count.
5990
5991 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
5992
5993         * icall.c (ves_icall_Type_GetMethodsByName): Virtual methods should be
5994         discarded based on their most specific definition so we set the method_slots
5995         array before checking if the method is acceptable or not.
5996
5997         Fixes #506757.
5998
5999 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6000
6001         * icall.c: Free the old array when resizing a mono_ptr_array.
6002
6003 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6004
6005         * reflection.c (create_dynamic_mono_image): Use mono_object_hash()
6006         for the hashes whose keys are managed objects.
6007
6008 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6009
6010         * object-internals.h, threads.c: Set the execution context on
6011         thread start here, not in corlib.
6012
6013         * appdomain.c: Bump corlib version.
6014
6015 2009-05-27  Martin Baulig  <martin@ximian.com>
6016
6017         * mono-debug.c (mono_debug_init): Use `MONO_DEBUG_FORMAT_DEBUGGER'
6018         if `_mono_debug_using_mono_debugger' is set to make things work
6019         properly when embedding Mono.
6020
6021 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
6022
6023         * class.c (mono_class_setup_fields): Don't mark simd types as having
6024         16 bytes alignment as the whole runtime doesn't support.
6025
6026 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
6027
6028         * metadata-verify.c (safe_read): Use endian safe read macros.
6029
6030 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
6031
6032         * object.c (mono_create_ftnptr): Don't allocate from the code mempool since
6033         it is read-only when using full aot.
6034
6035 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6036
6037         * metadata-verify.c (is_valid_method_signature): Verify parts
6038         of the return type. Provide an error message in case of failure.
6039
6040 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6041
6042         * metadata-verify.c (is_valid_method_signature): Verify the call conv.
6043
6044 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6045
6046         * metadata-verify.c: Include the size prefix in the bounds check.
6047
6048 2009-05-22  Miguel de Icaza  <miguel@novell.com>
6049
6050         * icall.c: Remove warnings.
6051
6052         * mono-config.c: Allow for CONFIG_CPU to be set in config.h and
6053         prevent auto-detection based on GCC defines.
6054
6055         Add PS3
6056
6057         * metadata-verify.c: Do not include signal.h
6058
6059         * generic-sharing.c, marshal.c: Add returns to avoid some warning
6060         messages.  Not sure why the g_assert_not_reached is not enough to
6061         quiet the compiler.
6062         
6063
6064         * appdomain.c: Remove code that is not used when
6065         DISABLE_SHADOW_COPY is set.
6066
6067         * image.c: use g_getenv
6068
6069 2009-05-21  Miguel de Icaza  <miguel@novell.com>
6070
6071         * reflection.c: Remove code that it not used with
6072         DISABLE_REFLECTION_EMIT is defined.
6073
6074 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
6075
6076         * marshal.c (mono_marshal_get_runtime_invoke): Share more runtime
6077         invoke wrappers.
6078
6079 2009-05-20  Miguel de Icaza  <miguel@novell.com>
6080
6081         * socket-io.c
6082         (ves_icall_System_Net_Sockets_Socket_Available_internal): Remove
6083         the ifdef here and instead put that on io-layer
6084
6085 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6086
6087         * metadata-verify.c: Verify the generic param constraint table.
6088
6089 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6090
6091         * metadata-verify.c (verify_generic_param_table): Fix
6092         thinko on the valid flags bits for generic params.
6093
6094 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6095
6096         * metadata-verify.c: Verify the methodspec table.
6097
6098 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6099
6100         * metadata-verify.c: Verify the generic param table.
6101
6102 2009-05-19  Mark Probst  <mark.probst@gmail.com>
6103
6104         * sgen-gc.c: Store and use the count with REMSET_VTYPE.
6105
6106 2009-05-19  Mark Probst  <mark.probst@gmail.com>
6107
6108         * sgen-gc.c: Use generation enum more consistently and use the
6109         correct generation in mono_gc_register_for_finalization().
6110
6111 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
6112
6113         * metadata-verify.c: Verify the nested class table.
6114
6115 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
6116
6117         * metadata-verify.c: Verify the manifest resource table.
6118
6119 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
6120
6121         * debug-helpers.c (dis_one): Add little-endian support for ldstr.
6122
6123 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
6124
6125         * class.c (mono_class_get_vtable_entry): Avoid adding static-rgctx
6126         wrappers, this is now done in the JIT.
6127         
6128         * class.c (mono_set_generic_sharing_supported): New internal function.
6129         (mono_class_generic_sharing_enabled): Move the #ifdef stuff to the JIT.
6130
6131 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6132
6133         * metadata-verify.c: Verify the exported type table.
6134
6135 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6136
6137         * pedump.c (main): Fake an assembly for netmodules to make the verifier happy.
6138
6139 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6140
6141         * metadata-verify.c: Verify the file table.
6142
6143 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6144
6145         * metadata-verify.c (verify_assembly_table): Fix an error message.
6146
6147         * metadata-verify.c: Verify the assemblyref table.
6148
6149 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6150
6151         * metadata-verify.c (verify_assembly_table): Fix the valid
6152         bits mask for flags.
6153
6154 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
6155
6156         * debug-helpers.c (mono_method_full_name): Print generic parameters of
6157         generic methods as well.
6158
6159 2009-05-15  Geoff Norton  <gnorton@novell.com>
6160
6161         * gc.c: MachO/Darwin supports and uses semaphores fine for this 
6162         use-case and is significantly more performant than the wapi layer.
6163
6164 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6165
6166         * metadata-verify.c: Verify the assembly table.
6167
6168 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6169
6170         * metadata-verify.c: Fix rows limit check.
6171
6172 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6173
6174         * metadata-verify.c: Verify the fieldrva table.
6175
6176 2009-05-13  Mark Probst  <mark.probst@gmail.com>
6177
6178         * sgen.c: Speed up weak links and finalizers by grouping them by
6179         generation.
6180
6181 2009-05-13  Mark Probst  <mark.probst@gmail.com>
6182
6183         * marshal.c (delegate_hash_table_add): When overwriting an entry,
6184         free the old GCHandle (only applies to SGen).
6185
6186 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
6187
6188         * loader.c (mono_get_method_from_token): Avoid the expensive call to
6189         mono_metadata_load_generic_params () for non-generic methods.
6190
6191 2009-05-12  Mark Probst  <mark.probst@gmail.com>
6192
6193         * monitor.c, monitor.h (mono_monitor_get_object_monitor_weak_link):
6194         New function for returning a monitor's weak link if it has one.
6195
6196         * sgen-gc.c: Remove an object's monitor's weak link (if it has
6197         one) when clearing a domain.  These can still be around because
6198         the object might not have been collected.
6199
6200 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
6201
6202         * gc.c: Fix a warning.
6203
6204 2009-05-12  Kornél Pál  <kornelpal@gmail.com>
6205
6206         * gc.c (mono_gc_init): Set gc_thread on creation. This avoids the
6207         prevous wait that resulted in a deadlock on Windows when initializing
6208         the runtime form DllMain. Also results in improved startup time.
6209         (finalizer_thread): Get rid of thread_started_event.
6210         * threads.c, threads-types.h (mono_thread_create_internal): Return the
6211         resulting MonoThread.
6212
6213         Contributed under MIT/X11 license.
6214
6215 2009-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
6216
6217         * metadata-verify.c: Verify the implmap table.
6218         Don't require that #US and #Strings be present.
6219
6220 2009-05-11  Sebastien Pouliot  <sebastien@ximian.com>
6221
6222         * security-core-clr.c: Delegate checks are done at creation time,
6223         not a invocation time. Fix exception for Telerik Silverlight demo
6224
6225 2009-05-11  Mark Probst  <mark.probst@gmail.com>
6226
6227         * sgen-gc.c (need_remove_object_for_domain): Remove the special
6228         case for the Thread class.
6229
6230         * threads.c: Do clean-up of abort exception/state in
6231         thread_cleanup() instead of Thread.free_internal().  Also clean up
6232         current_appcontext.  The reason we have to do that is because
6233         those references might point into another domain and if that
6234         domain is unloaded before the thread is finalized, they point to
6235         invalid data.
6236
6237 2009-05-10  Andreas Faerber  <andreas.faerber@web.de>
6238
6239         * null-gc.c (mono_gc_weak_link_add, mono_gc_clear_domain): Fix
6240         stub signatures.
6241         
6242         Contributed unter MIT/X11 license.
6243
6244 2009-05-09  Miguel de Icaza  <miguel@novell.com>
6245
6246         * verify.c, metadata-verifier.c: Add support for disabling the
6247         verifier in some builds.
6248
6249         [ Sorry, my previous commit accidentally commited some work in
6250         progress ]
6251
6252 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
6253
6254         * class.c (mono_class_setup_fields): Set class->field.first for
6255         generic instances.
6256
6257 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
6258
6259         * metadata-verify.c: Verify the typespec table.
6260
6261 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
6262
6263         * metadata-verify.c: Verify the module table.
6264
6265 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6266
6267         * metadata-verify.c: Verify the methodimpl table.
6268
6269 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6270
6271         * metadata-verify.c: Verify the property table.
6272
6273 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
6274
6275         * debug-helpers.c (mono_method_desc_match): Add support for generic
6276         glob patterns.
6277
6278 2009-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
6279
6280         * metadata-verify.c: Verify the propertymap table.
6281
6282 2009-05-04 Rodrigo Kumpera  <rkumpera@novell.com>
6283
6284         * metadata-verify.c: Verify the event table.
6285
6286         * metadata-verify.c (search_sorted_table): Fix offset
6287         calculation.
6288
6289 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
6290
6291         * domain-internals.h (struct _MonoJitInfo): Add a 'from_llvm' flag.
6292
6293 2009-05-01  Mark Probst  <mark.probst@gmail.com>
6294
6295         * gc.c (mono_gc_run_finalize): Don't set the domain too late,
6296         because mono_delegate_free_ftnptr() needs it.
6297
6298 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6299
6300         * metadata-verify.c: Verify the eventmap table.
6301
6302 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6303
6304         * metadata-verify.c: Verify the standalonesig table.
6305
6306 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6307
6308         * metadata-verify.c: Verify the field layout table.
6309
6310 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6311
6312         * class.c (mono_type_get_name_recurse): Don't crash
6313         for ownerless generic params.
6314
6315         * debug-helpers.c (mono_type_get_desc): Correct the format
6316         for ownerless generic params.
6317
6318 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6319
6320         * metadata-verify.c: Verify the class layout table.
6321
6322 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6323
6324         * metadata-verify.c: Verify the decl security table.
6325
6326 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6327
6328         * domain.c (mono_domain_set_internal_with_options): Don't do
6329         anything if the old domain is the same as the old one.  Fixes
6330         #499326.
6331
6332 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6333
6334         * appdomain.c: Deregister the reflection_info roots when unloading
6335         a domain.
6336
6337         * sgen-gc.c, domain.c, gc-internal.h: mono_gc_clear_domain() nulls
6338         memory allocated by a domain and frees its disappearing links.
6339
6340         * boehm-gc.c, null-gc.c: Empty implementation of
6341         mono_gc_clear_domain().
6342
6343 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6344
6345         * appdomain.c (clear_cached_vtable): Free the static fields memory
6346         block.
6347
6348 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6349
6350         * gc.c: Set the correct domain when invoking finalizers.
6351
6352         * appdomain.c: Set the correct domain when creating threads.
6353
6354 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6355
6356         * sgen-gc.c: Fix skip size for vectors.
6357
6358 2009-05-03  Martin Baulig  <martin@ximian.com>
6359
6360         * mono-debug-debugger.c
6361         (mono_debugger_check_breakpoints): Check class init handlers even
6362         if we don't have any method load handers.
6363
6364 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
6365
6366         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid 
6367         returning refonly assemblies if refonly is FALSE. Fixes #499013.
6368
6369 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
6370
6371         * metadata-verify.c: Verify the field marshal table.
6372
6373 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
6374
6375         * metadata-verify.c: Verify the custom attribute table.
6376
6377 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6378
6379         * metadata-verify.c: Verify the constant table.
6380
6381 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6382
6383         * metadata-verify.c: Verify the memberef table.
6384
6385 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6386
6387         * metadata-verify.c (get_coded_index_token): Remove
6388         dead argument.
6389
6390 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6391
6392         * metadata-verify.c: Verify the interfaceimpl table.
6393
6394 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6395
6396         * verify.c: Improve error message.
6397
6398         * debug-helpers.c (mono_type_get_desc): Harden the code that
6399         deals with VAR and MVAR.
6400
6401 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
6402
6403         * image.c (mono_image_fixup_vtable): Avoid casting an lvalue. Fixes 
6404         part of #498692.
6405
6406 2009-04-23 Tom Hindle <tom_hindle@sil.org>
6407
6408         * cominterop.c (ves_icall_System_Runtime_InteropServices_Marshal_ReleaseComObjectInternal):
6409         changed to match .Net behaviour of not aborting on additional calls to ReleaseComObject.
6410
6411 2009-04-28  Sebastien Pouliot  <sebastien@ximian.com>
6412
6413         * security-core-clr.c: Avoid redundant checks for platform code, 
6414         e.g. check for method and for class (very common) and check
6415         for class and outer class (less common)...
6416
6417 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
6418
6419         * reflection.c: Avoid returning random cattrs for synthetic methods.
6420         Fixes #498545.
6421
6422 2009-04-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
6423
6424         * assembly.c: assemblies in the GAC should never be shadow-copied.
6425
6426 2009-04-26  Mark Probst  <mark.probst@gmail.com>
6427
6428         * domain.c, domain-internals.h: Disable
6429         track_resurrection_{objects,handles}_hash in MonoDomain if using
6430         SGen.
6431
6432 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6433
6434         * metadata-verify.c: Verify the param table.
6435
6436 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6437
6438         * metadata-verify.c (verify_typedef_table): Range check FieldList and
6439         MethodList.
6440
6441         * metadata-verify.c (verify_method_table): Proper check the ParamList
6442         field.
6443
6444 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6445
6446         * metadata-verify.c (verify_method_table): Check for runtime
6447         implemented functions such as delegate .ctors. Remove spurious
6448         printf.
6449         
6450 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6451
6452         * pedump.c: Proper initialize the runtime forcing the 2.0 profile.
6453
6454 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6455
6456         Don't allocate MonoGenericInfo for ownerless generic params.
6457         * class-internals.h (MonoGenericParam::info): Move field to ...
6458         (MonoGenericParamFull): ... this.  New struct.
6459         (MonoGenericContainer::type_params): Change type to
6460         MonoGenericParamFull.
6461         (MonoGenericParam, MonoGenericContainer): Update accessors.
6462         * metadata.c (mono_metadata_parse_generic_param): Don't initialize
6463         'info' field for ownerless generic param.
6464         (mono_metadata_load_generic_params): Update to changes.
6465         * reflection.c (mono_reflection_create_generic_class): Likewise.
6466         (reflection_methodbuilder_to_mono_method): Likewise.
6467         (mono_reflection_initialize_generic_parameter): Likewise.
6468
6469 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6470
6471         Don't use MonoGenericParamInfo for ownerless generic params.
6472         * class.c (get_anon_gparam_class, set_anon_gparam_class): New.  Don't
6473         use ParamInfo class at all.
6474         (mono_class_from_generic_parameter): Use them.
6475         (make_generic_param_class): Fix a couple of instances where 'pinfo
6476         == NULL' wasn't handle.
6477
6478 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6479
6480         * class.c (make_generic_param_class): Carve out of ...
6481         (mono_class_from_generic_parameter): ... here.
6482
6483 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6484
6485         Simplify mono_class_from_generic_parameter
6486         * class-internals.h (MonoGenericParamInfo::token): New field.
6487         * metadata.c (mono_metadata_load_generic_params): Initialize it
6488         from metadata.
6489         * class.c (mono_class_from_generic_parameter): Use it instead of
6490         searching through metadata.
6491
6492 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6493
6494         * metadata-verify.c: Add verification of the method table.
6495
6496 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6497
6498         * icall.c (ves_icall_Type_GetMethodsByName): Fix memleak for the
6499         Delegate::Invoke optimization.
6500
6501 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6502
6503         * appdomain.c (mono_domain_create_appdomain_internal): Free the
6504         string returned by get_shadow_assembly_location_base.
6505
6506         * appdomain.c (get_shadow_assembly_location_base): Add a comment
6507         about caller's ownership.
6508
6509 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6510
6511         * reflection.c: Add mono_reflection_cleanup_domain to cleanup
6512         reflection memory on domain unload.
6513
6514         * domain.c (mono_domain_free): Don't free refobject_hash, let the
6515         reflection cleanup code do it.
6516
6517         * domain-internals.h: Add mono_reflection_cleanup_domain.
6518
6519         This fixes a memory leak for managed mirrors of reflection objects
6520         on domain unload. 
6521
6522 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
6523
6524         * metadata-verify.c: Implement more verification of the field table.
6525
6526 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
6527
6528         * pedump.c (main): Init mono with mscorlib so it defaults to 2.0 and
6529         doesn't try to parse the input assembly, which can be broken.
6530
6531 2009-04-23  Mark Probst  <mark.probst@gmail.com>
6532
6533         * boehm-gc.c, gc-internal.h, gc.c, monitor.c, null-gc.c,
6534         sgen-gc.c: Implement track resurrection in weak GC handles in SGen
6535         by using the lowest bit in the link to store whether the link is
6536         tracked.  Move the track_resurrection hashes into boehm-gc.c.
6537
6538 2009-04-22  Miguel de Icaza  <miguel@novell.com>
6539
6540         * Makefile.am: Split the console support in platform specific code
6541         and put together a framework for making this easy in the future so
6542         that we can start splitting code instead of having a mess of PLATFORM_WIN32
6543
6544 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6545
6546         * pedump.c: Fix a warning.
6547
6548 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6549
6550         * verify.c (mono_delegate_type_equal): Compare valuetypes using
6551         mono_class_from_mono_type to avoid bad interactions with the dual representation
6552         of the generic type definition.
6553
6554 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6555
6556         * verify.c (do_invoke_method): Use mono_class_from_mono_type to
6557         get the MonoClass for the call context type as it might be a generic
6558         instance.
6559
6560         Fixes #491483.
6561
6562 2009-04-21  Mark Probst  <mark.probst@gmail.com>
6563
6564         * object-internals.h: The Thread object has no execution_context
6565         member anymore.
6566
6567         * threads.c, threadpool.c, threads-types.h: Accessor functions for
6568         the execution context.
6569
6570         * appdomain.c: Bump corlib version.
6571
6572 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6573
6574         * verify.c (do_newobj): Improve error message.
6575
6576 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6577
6578         * verify.c (verify_clause_relationship): Only mask as an error if the exception clause
6579         is nested in the filter block.
6580
6581         * verify.c (verify_clause_relationship): The disjoint check must verify if the exception
6582         block is not fully nested.
6583
6584         Fixes #495656.
6585
6586 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6587
6588         * verify.c (verify_type_compatibility_full): Compare MonoClass and
6589         not MonoType to check for equality of valuetypes as the generic type
6590         definition allows for two different encodings: the generic type definition
6591         class or a generic instance over the GTD arguments.
6592
6593         Fixes #496175.
6594
6595 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6596
6597         * verify.c (dump_stack_value): Fix compilation with extra debug turned on.
6598
6599         * verify.c (do_initobj): Improve error message.
6600
6601 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6602
6603         * metadata-verify.c: Enable pe verification as the issue with #496453
6604         is that the authenticode data directory have a different unspecified
6605         format. Ignore it for now.
6606
6607         * pedump.c: Run the metadata verifier together with the IL verifier.
6608
6609         Fixes ##496453.
6610
6611 2009-04-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6612
6613         * metadata-verify.c: Temporarily disable pe verification due to #496453.
6614
6615 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6616
6617         * class.c (can_access_type): Check visibility against
6618         the element type for pointers and arrays.
6619
6620         Fixes #496150.
6621
6622 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6623
6624         * metadata-verify.c: Fix cli and table verification to use information
6625         from the MonoImage. A lot of duplicated code got killed.
6626
6627 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6628
6629
6630         This patch starts to integrate the metadata verifier with the runtime code.
6631
6632         This patch causes major regression in functionality for the metadata verifier
6633         as cli and table verification are disabled since they require to be ported to
6634         use MonoImage information.
6635
6636         * image.c (do_mono_image_load): Split the code in this function
6637         into mono_image_load_pe_data and mono_image_load_cli_data.
6638         Add     care_about_pecoff parameter to not load pecoff data.
6639         Call into the metadata verifier for pecoff and cli verification.
6640
6641         * image.c (mono_image_open_raw): New function that doesn't perform
6642         any parsing of the image contents.
6643         
6644         The reason for the 3 new functions is to give pedump better control
6645         into the interaction with the verifier.
6646
6647         * metadata-internals.h: Add new functions from image.c as part of the
6648         internal mono API.
6649
6650         * metadata-verify.c: Split mono_image_verify into mono_verifier_verify_pe_data,
6651         mono_verifier_verify_cli_data and mono_verifier_verify_table_data. Prepare
6652         to make those functions work together with the runtime.
6653
6654         * verify.c: Add mono_verifier_is_enabled_for_image function that returns
6655         true if the image needs to be verified.
6656
6657         * verify-internals.h: Export new functions from metadata-verify.c and verify.c.
6658
6659         * pedump.c: Use new metadata verifier API.
6660
6661 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
6662
6663         * object.c (mono_install_vtable_trampoline): Make this receive a
6664         trampoline creation function instead of trampoline, allowing the JIT
6665         to use a different trampoline for each vtable.
6666
6667 2009-04-18  Mark Probst  <mark.probst@gmail.com>
6668
6669         * object.c (mono_raise_exception): Don't reset the thread abort
6670         exception state here.
6671
6672 2009-04-18  Mark Probst  <mark.probst@gmail.com>
6673
6674         * icall-def.h: New icall for getting the thread abort exception
6675         state for a thread.
6676
6677         * object.c, thread.c, object-internals.h: A thread's abort
6678         exception state is now a GC handle.  To get the object it stands
6679         for, we must move it into the current app domain, if it's
6680         different than the one where it originated from.
6681
6682         * appdomain.c: Bump corlib version.
6683
6684         * domain.c, domain-internals.h: New function for setting the
6685         domain and migrate the thread abort exception or not.
6686
6687 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6688
6689         * metadata-verify.c: Add initial verification of the
6690         field table.
6691
6692 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6693
6694         * metadata-verify.c: Add a macro to conditionally enable
6695         dumping of verification information. Add  make_coded_token
6696         and search_sorted_table to enable search sorted tables
6697         by a given coded token.
6698
6699 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6700
6701         * metadata-verify.c: Add array mapping from table index
6702         to description offset. Add get_col_offset and get_col_size
6703         functions.
6704
6705 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6706
6707         * metadata-verify.c: Add remaining table descriptions offsets.
6708         Add remaining coded index descriptions.
6709
6710 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6711
6712         * metadata-verify.c: Fixed constant table description.
6713         Fixed calculation of HasCustomAttribute coded index size.
6714         Fixed calculation of size for many table indexes. 
6715
6716 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6717
6718         * pedump.c (dump_metadata): Dump table offset instead
6719         of useless pointer in memory.
6720
6721 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6722
6723         * metadata-verify.c (verify_typedef_table): Add tests for MethodList.
6724
6725 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6726
6727         * metadata-verify.c (verify_typedef_table): Add tests for FieldList and
6728         a missing of for interface types.
6729
6730 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6731
6732         * metadata-verify.c (verify_pe_optional_header): Add comment of why
6733         the code is commented.
6734
6735         * metadata-verify.c (verify_resources_table): Remove spurious printf
6736         and don't fail if there are unmanaged resources. Gmcs generates a useless
6737         one     for all assemblies - I bet it's some MS compatibility junk.
6738
6739 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6740
6741         * metadata-verify.c (verify_typedef_table): Verify the extends field.
6742
6743         * metadata-verify.c (mono_image_verify): Add a is_corlib.
6744
6745         * verify-internals.h: Same.
6746
6747         * pedump.c: Fix for mono_image_verify new signature.
6748
6749 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6750
6751         * metadata-verify.c (verify_typedef_table): Verify for some invalid
6752         flags combinations.
6753
6754 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6755
6756         * metadata-verify.c (verify_module_table): Ignore the generation field.
6757
6758 2009-04-15  Martin Baulig  <martin@ximian.com>
6759
6760         * debug-mono-symfile.c
6761         (mono_debug_symfile_lookup_location): Don't print a warning for
6762         unknown extended opcodes if they're within 0x40 and 0x7f.
6763
6764 2009-04-15  Zoltan Varga  <vargaz@gmail.com>
6765
6766         * marshal.c (mono_marshal_get_runtime_invoke_sig): Don't share runtime
6767         invoke signatures returning an enum. Fixes #494847.
6768
6769 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6770
6771         * metadata-verify.c: Initial code to verify the typedef table.
6772
6773 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6774
6775         * verify.c (mono_method_verify): Don't fail if an unconditional branch
6776         with non empty stack happens before the beginning of a try block.
6777
6778         Fixes #494812.
6779
6780 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6781
6782         * metadata-verify.c: Verify typename and typenamespace fields of
6783         the typeref table.
6784
6785 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
6786
6787         * metadata-verify.c: Initial code to verify the typeref table.
6788
6789 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
6790
6791         * verify.c (verify_delegate_compatibility): Fix error message.
6792
6793 2009-04-14  Sebastien Pouliot  <sebastien@ximian.com>
6794
6795         * security-core-clr.c: Fix typo
6796
6797 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
6798
6799         * marshal.c (delegate_hash_table_add): Make delegate_target_locations 
6800         a MonoGHashTable to keep its values alive.
6801         (emit_marshal_boolean): Fix a warning.
6802
6803 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
6804
6805         * socket-io.c: don't return IPv4/IPv6 addresses if the machine does
6806         not have any interface configured for IPv4/IPv6.
6807
6808 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
6809
6810         * assembly.c: fix typo in error message.
6811
6812 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
6813
6814         * marshal.c (mono_delegate_to_ftnptr): Use mono_gc_alloc_fixed () for
6815         allocating the location holding the this argument to prevent
6816         'too many root sets' errors.
6817
6818         * object.c (mono_class_create_runtime_vtable): Set field->offset to -1
6819         to mark fields as special static.
6820         (mono_field_static_get_value): Handle special static fields.
6821         (mono_field_static_set_value): Ditto.
6822
6823         * class-internals.h (struct _MonoClassField): Document this.
6824
6825 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
6826
6827         * cominterop.c (mono_cominterop_emit_marshal_com_interface): Assigning
6828           the argument a value of null for the MARSHAL_ACTION_MANAGED_CONV_OUT
6829           case.  This will handle when managed code returns null to native code.
6830
6831         Code is contributed under MIT/X11 license.
6832
6833 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
6834
6835         * object.c (build_imt_slots): Changing a free to a g_free to match
6836           the g_malloc0 in add_imt_builder_entry that allocated this memory.
6837
6838         Code is contributed under MIT/X11 license.
6839
6840 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
6841
6842         * marshal.c (emit_marshal_boolean): Adding code to ensure that
6843           the correct TRUE value is passed through the marshaling layer.
6844
6845         Code is contributed under MIT/X11 license.
6846
6847 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
6848
6849         * marshal.c (mono_marshal_emit_managed_wrapper): Handle closed delegates
6850         correctly. Fixes #492330.
6851         
6852         * marshal.c: Fix the embedding of object pointers into JITted code in
6853         the native-to-managed wrappers by allocating some GC tracked memory, and
6854         embedding the address of that.
6855
6856 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
6857
6858         * object.c (mono_class_create_runtime_vtable): Avoid putting MonoMethod
6859         pointers into the vtable.
6860
6861 2009-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
6862
6863         * verify.c (mono_delegate_type_equal): Proper check MONO_TYPE_CLASS.
6864
6865         * verify.c (verify_ldftn_delegate): Improve error message.
6866
6867 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
6868
6869         * reflection.c (my_mono_class_from_mono_type): Remove.
6870
6871 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
6872
6873         Prepare to reduce memory usage of owner-less generic parameters (1/n)
6874         * class-internals.h (MonoGenericParam): Carve out pklass, name, flags
6875         and constraints fields into ...
6876         (MonoGenericParamInfo): ... this.
6877         (mono_generic_param_info, mono_generic_container_get_param_info):
6878         New accessors.
6879         * class.c, debug-helpers.c, icall.c: Update to changes.
6880         * metadata.c, reflection.c, verify.c: Likewise.
6881
6882 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
6883
6884         * debug-helpers.c (dis_one): Fix decoding of strings in dynamic images.
6885
6886         * marshal.c (get_runtime_invoke_type): Share enums with their base types.
6887         
6888         * marshal.c (get_runtime_invoke_type): Share pointers with ints and
6889         booleans with sbytes.
6890
6891 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6892
6893         * class.c (can_access_instantiation): Verify accesibility of element types
6894         for arrays and pointers.
6895
6896         * class.c (can_access_type): Return true if the target class is VAR or MVAR.
6897
6898         * class.c (mono_method_can_access_method_full): Fix typos in the documentation.
6899
6900         Fixes #493068.
6901
6902 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6903
6904         * verify.c (do_invoke_method): Improve error messages.
6905
6906 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
6907
6908         * verify.c:  Fixing the MSVC build.
6909
6910         Code is contributed under MIT/X11 license.
6911
6912 2009-04-08  Sebastien Pouliot  <sebastien@ximian.com>
6913
6914         * security-core-clr.c: Simplify get_reflection_caller not to call
6915         mono_method_get_last_managed (another stack walk) and adjust the
6916         callers to handle a (should not happen) NULL return value.
6917
6918 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
6919
6920         Add accessors to some MonoGenericParam fields
6921         * class-internals.h (mono_generic_param_owner): New accessor.
6922         (mono_generic_param_num): Likewise.
6923         (mono_type_get_generic_param_owner): New helper.
6924         (mono_type_get_generic_param_num): New helper.
6925         * class.c, icall.c, metadata.c, reflection.c, verify.c: Use them.
6926
6927 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
6928
6929         * class-internals.h (mono_generic_container_get_param): New wrapper.
6930         * class.c, icall.c, metadata.c, verify.c: Use it.
6931
6932 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
6933
6934         Fix gtest-252.cs
6935         * verify.c (mono_type_is_valid_type_in_context): Rewrite to use
6936         the standard case/loop.  In particular, don't complain about
6937         references to generic type definitions.
6938
6939 2009-04-07  Zoltan Varga  <vargaz@gmail.com>
6940
6941         * debug-helpers.c (dis_one): Decode string arguments.
6942
6943 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
6944
6945         * pedump.c (dump_verify_info): Dump type name correctly.
6946
6947 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
6948
6949         * verify.c (mono_method_verify): Don't init code slots for exception boundaries if they
6950         are larger than code size.
6951
6952         This can happen in valid code if the try/catch block is not followed by any instruction
6953         and do a backward branch on the leave instruction.
6954
6955         Fixes #492494.
6956
6957 2009-04-06  Sebastien Pouliot  <sebastien@ximian.com>
6958
6959         * security-core-clr.c: Fix typo while comparing second method names
6960         in can_avoid_corlib_reflection_delegate_optimization
6961
6962 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
6963
6964         * verify.c (do_throw): Don't allow an unboxed generic param ar argument.
6965
6966         Fixes #487738.
6967
6968 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
6969
6970         * metadata.c (do_mono_metadata_parse_type): Fail if we are decoding
6971         a MVAR using a class context.
6972
6973         Fixes #490335.
6974
6975 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
6976
6977         * object.c (mono_class_compute_gc_descriptor): Make this non-static.
6978
6979         * domain-internals.h (struct _MonoJitInfo): Add a 'gc_info' field.
6980
6981         * gc-internal.h (MonoGCCallbacks): New stucture containing the callback
6982         functions supplied by the JIT for the SGEN GC.
6983
6984         * sgen-gc.c: Call the callbacks supplied by the JIT to do stack marking.
6985         
6986 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
6987
6988         monitor.c (mono_monitor_try_enter_internal):
6989         Added calls to profile monitor contentions.
6990         Also duplicated a small piece of code (the "get the monitor" logic)
6991         from the fast path to the slow path, and changed the relevant goto
6992         statements, so that monitor acquisition events can be emitted from the
6993         slow path (this is by Paolo Molaro).
6994
6995 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
6996
6997         * profiler.c, profiler.h, profiler-private.h:
6998         Added support for profiling monitor contentions.
6999
7000 2009-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
7001
7002         * metadata-verify.c: Verify the modules table.
7003
7004 2009-04-02 Rodrigo Kumpera  <rkumpera@novell.com>
7005
7006         * verify.c (mono_generic_param_is_constraint_compatible): Inflate the candidate
7007         using the context of the method been verifier and not of the method been called.
7008
7009         * verify.c: Add verifier_inflate_type and mono_type_is_valid_type_in_context to
7010         safely inflate generic types. 
7011
7012 2009-04-02  Sebastien Pouliot  <sebastien@ximian.com>
7013
7014         * security-core-clr.c: Change the strategy for checking the 
7015         "reflection using delegates optimization" to avoid unneeded 
7016         attributes in multiple class libraries.
7017
7018 2009-04-02  Mark Probst  <mark.probst@gmail.com>
7019
7020         * sgen-gc.c: Remove object element in the disappearing link struct
7021         by storing the object pointer in the link.
7022
7023 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7024
7025         * pedump.c (dump_verify_info): Don't crash if signature decoding fails.
7026
7027 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7028
7029         * verify.c (verifier_load_field): Fail if the field parent could not be loaded.
7030
7031         * verify.c (mono_method_verify): Do proper bounds checking of exception
7032         clause ranges.
7033
7034 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7035
7036         * loader.c (mono_field_from_token): Don't crash if the field parent could
7037         not be decoded.
7038
7039 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7040
7041         * sgen-gc.c: Execute critical finalizers after ordinary
7042         finalizers.
7043
7044         * class-internals.h, domain.c: Add CriticalFinalizerObject to
7045         mono_defaults.
7046
7047 2009-03-31 Jb Evain <jbevain@novell.com>
7048
7049         * verify.c (do_ldstr): don't check if a string is in the user strings
7050         heap if the current image is dynamic.
7051
7052 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7053
7054         * sgen-gc.c: Wait until the last finalizer has executed when
7055         returning from WaitForPendingFinalizers.
7056
7057 2009-03-31  Martin Baulig  <martin@ximian.com>
7058
7059         * mono-debug-debugger.h (MonoDebuggerEvent): Add
7060         `MONO_DEBUGGER_EVENT_CREATE_APPDOMAIN' and
7061         `MONO_DEBUGGER_EVENT_UNLOAD_APPDOMAIN'.
7062         (mono_debugger_event_create_appdomain): New function.
7063         (mono_debugger_event_unload_appdomain): New function.
7064
7065         * appdomain.c (mono_domain_create_appdomain_internal): Call
7066         mono_debugger_event_create_appdomain().
7067
7068 2009-03-31  Martin Baulig  <martin@ximian.com>
7069
7070         * mono-debug-debugger.c
7071         (mono_debugger_register_class_init_callback): Also register the
7072         class init callback if the class is already initialized to make
7073         things work with shadow copied assemblies.
7074
7075 2009-03-31  Sebastien Pouliot  <sebastien@ximian.com>
7076
7077         * security-core-clr.c
7078         (mono_security_core_clr_ensure_reflection_access_field): Let 
7079         critical code access the field (just like we do for methods). Use
7080         check_field_access helper.
7081         (mono_security_core_clr_ensure_reflection_access_method): Use 
7082         check_field_access helper.
7083
7084 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7085
7086         * sgen-gc.c: Remove data (callback) element from FinalizeEntry and
7087         call the run-finalize function directly.
7088
7089         * gc.c, gc-internal.h: Make run_finalize() non-static.
7090
7091 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7092
7093         * sgen-gc.c: Use a separate struct for disappearing links.
7094
7095 2009-03-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
7096
7097         * socket-io.c: don't fail if the SocketOptionsFlag has Partial or
7098         * MaxIOVectorLength enabled, just ignore them.
7099         Fixes bug #349688.
7100
7101 2009-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
7102
7103         * metadata-verify.c: Fix eglib build.
7104
7105 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
7106
7107         * threads-types.h: Fix the win32 build.
7108
7109 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
7110
7111         * class.c: move coreclr inheritance/override checks to 
7112         security-core.clr.c
7113         * security-core.clr.c|h: add code from class.c with additional
7114         documentation. Fix override check when the method is not critical.
7115
7116 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
7117
7118         * debug-helpers.c (mono_method_desc_match): Make '*' match anything.
7119         (match_class): Ditto.
7120
7121 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
7122
7123         * metadata-verify.c: Rename bounds_check_offset to bounds_check_datadir.
7124
7125         * metadata-verify.c: Implement table layout row size calculation. Verify
7126         the total size of the tables.
7127
7128 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
7129
7130         * metadata-verify.c: Verify heap sizes and size to decode row counts. 
7131
7132 2009-03-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
7133
7134         * appdomain.c:
7135         * console-io.[ch]: added new mono_console_init() to make sure that
7136         file descriptors 0, 1 and 2 are opened.
7137         Bug #489019 fixed.
7138
7139 2009-03-27  Sebastien Pouliot  <sebastien@ximian.com> 
7140
7141         * appdomain.h: Export a new callback type and a new function to
7142         set this callback. This allow a mono host to provide it's own
7143         definition for "platform code".
7144         * metadata-internals.h: Add a core_clr_platform_code flag on 
7145         _MonoImage to (cache and) know if it is representing platform 
7146         code.
7147         * image.c (do_mono_image_open): Set core_clr_platform_code flag 
7148         on platform code images.
7149         * security-core-clr.c|h 
7150         (mono_security_set_core_clr_platform_callback): Allow the host
7151         to provide it's own platform check definition.
7152         (mono_security_core_clr_determine_platform_image): Detect if an 
7153         image is platform code (using the specified callback).
7154         (mono_security_core_clr_is_platform_image): Return cached value 
7155         for platform code.
7156
7157 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
7158
7159         * threads.c (mono_create_thread): New helper function to wrap CreateThread
7160         which has different parameter types for the 'tid' argument in windows and
7161         the io-layer.
7162
7163         * appdomain.c attach.c threads.c: Use the new helper.
7164
7165 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
7166
7167         * metadata-verify.c: Verify valid table bits.
7168
7169 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
7170
7171         * metadata-verify.c (verify_metadata_header): Store size in the size field.
7172
7173         * metadata-verify.c: Add initial table schema verification.
7174
7175 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
7176
7177         * icall.c (ves_icall_get_parameter_info): Add a 'member' argument, used to
7178         obtain the refclass argument needed by mono_param_get_objects (). Fixes
7179         #488383.
7180
7181         * reflection.c (mono_param_get_objects_internal): Add a 'refclass' argument.
7182
7183         * appdomain.c (MONO_CORLIB_VERSION): Bump this.
7184
7185 2009-03-26  Sebastien Pouliot  <sebastien@ximian.com>
7186
7187         * security-core-clr.c: Add/update documentation
7188
7189 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
7190
7191         * marshal.c (emit_marshal_object): Generate code to throw an exception
7192         instead of throwing it. Fixes #488670.
7193
7194 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com>
7195
7196         * appdomain.c: Bump MONO_CORLIB_VERSION to 73.
7197         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Add
7198         an extra 'throwOnBindFailure' parameter to the icall. Remove FIXME
7199         and add a call to mono_security_core_clr_ensure_delegate_creation
7200         to do the extra checks required by CoreCLR.
7201         * security-core-clr.c|h: Add function to check delegate creation,
7202         both in the binding and accessibility, under CoreCLR.
7203
7204 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com> 
7205
7206         * reflection.c (mono_reflection_create_dynamic_method): when 
7207         coreclr is enabled make sure that every resolved object are
7208         checked (e.g. field and method access).
7209         * security-core-clr.c|h: Add function to check objects resolved
7210         when a dynamic method is created.
7211
7212 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
7213
7214         * metadata-verify.c: Cache directory rva translations.
7215
7216         * metadata-verify.c: Add cli-header and streams verification.
7217
7218 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
7219
7220         * image.c (load_metadata_ptrs): We decode MonoImage::md_version_minor at
7221         the wrong offset (8 instead of 6).
7222
7223 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
7224
7225         * marshal.c (mono_delegate_to_ftnptr): For delegates wrapping pinvoke
7226         methods, return the native function address itself. Fixes
7227         #487758.
7228
7229 2009-03-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
7230
7231         * console-io.c: some of the values for control characters might not be
7232         present.
7233
7234 2009-03-21  Sebastien Pouliot  <sebastien@ximian.com>
7235
7236         * exception.c|h: Add helpers to create [Field|Method]AccessException
7237         * icall.c: Add required coreclr check calls for field reflection.
7238         Move the existing (method) check logic into security-core-clr.c
7239         * security-core-clr.c: Add functions to check if the access of a
7240         field or method is allowed when reflecting under coreclr. This is
7241         mostly done using a stack walk to find the "real" caller: i.e. the
7242         code that is calling the reflection
7243
7244 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
7245
7246         * gc-internal.h: Change location of gc_wrapper.h
7247
7248 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com> 
7249
7250         * class.c: Simplification to coreclr checks for overrides that
7251         makes it easier to set breakpoints.
7252
7253 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com>
7254
7255         * security-core-clr.c|h: (mono_security_core_clr_class_level, 
7256         mono_security_core_clr_method_level): Avoid potential 
7257         MonoCustomAttrInfo allocation for transparent assemblies (e.g. 
7258         user/application code) and make it easier to set breakpoints
7259
7260 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7261
7262         * metadata-verify.c: Reject cli header tables that mono don't handle.
7263
7264 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7265
7266         * pedump.c: Fix CLI header dumping.
7267
7268 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7269
7270         * metadata-verify.c: More CLI header verification.
7271
7272 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
7273
7274         * locales.c (get_current_locale_name): Use g_malloc instead of malloc.
7275
7276 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
7277
7278         * metadata-verify.c: Initial verification of the CLI header.
7279
7280 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
7281
7282         * metadata-verify.c (verify_resources_table): Fix verification of zero
7283         sized resource section and id entries count.
7284
7285 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
7286
7287         * icall.c: Handle user types in many Type icalls. Fixes #486303.
7288
7289 2009-03-17  Jb Evain  <jbevain@novell.com>
7290
7291         * profiler.c: call mono_gc_base_init from mono_profiler_load.
7292
7293 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
7294
7295         * sgen-gc.c (mono_gc_make_descr_for_object): Fix 64 bit support.
7296         (mono_gc_make_descr_for_array): Ditto.
7297
7298 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
7299
7300         * verify.c (mono_verifier_is_class_full_trust): Add support for
7301         CoreCLR security mode where trusted assemblies are defined as
7302         "platform code".
7303
7304 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7305
7306         * metadata-verify.c: Add minimal PECOFF resource verification.
7307
7308 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7309
7310         * metadata-verify.c: Be less restrictive with some coff fields.
7311
7312 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7313
7314         * verify.c (init_stack_with_value_at_exception_boundary): Init generic
7315         params as boxed values on stack. Fixes #485706.
7316
7317 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
7318
7319         * console-io.c: the termios values may vary in different flavors of unix.
7320
7321 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
7322
7323         * console-io.[ch]: return the entire set of control characters when
7324         initializing the terminal.
7325         * appdomain.c: bump corlib version.
7326
7327 Mon Mar 16 11:11:26 CET 2009 Paolo Molaro <lupus@ximian.com>
7328
7329         * mono-perfcounters.c: added support for in-process custom
7330         performance counters.
7331
7332 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7333
7334         * metadata-verify.c: Small cleanup and add comment for IAT directory entry. 
7335
7336 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7337
7338         * metadata-verify.c: Verify the data pointed by the import table. 
7339
7340 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7341
7342         * metadata-verify.c (load_data_directories): Store data
7343         directory contents.
7344
7345         * metadata-verify.c: Verify the import table. 
7346
7347 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7348
7349         * metadata-verify.c: Verify data directories.
7350
7351 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7352
7353         * metadata-verify.c: Check section header flags.
7354
7355 2009-03-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
7356
7357         * appdomain.c: if the assembly name is a shadow-copied file, return
7358         TRUE from mono_is_shadow_copy_enabled but don't actually do anything
7359         in mono_make_shadow_copy.
7360         * icall.c: if the assembly name is a shadow-copied file, replace it
7361         with the original assembly path.
7362
7363         Bug #484244 fixed. NUnit tests for corlib can be run without
7364         --noshadow now.
7365
7366 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
7367
7368         * sgen-gc.c (add_to_global_remset): Fix the handling of root global remset
7369         entries when the table is reallocated.
7370
7371         * icall.c: Allocate the memory used by the mono_ptr_array macros using
7372         mono_gc_alloc_fixed () since it contains GC refs.
7373
7374 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
7375
7376         * reflection.c (ensure_complete_type): New helper function to call
7377         type resolve handlers for unfinished dynamic types.
7378         (resolve_object): Call it for MonoClassFields. Fixes #483852.
7379
7380 2009-03-09  Zoltan Varga  <vargaz@gmail.com>
7381
7382         * reflection.c (mono_custom_attrs_has_attr): Handle interfaces. Fixes
7383         #483247.
7384
7385 2009-03-08 Rodrigo Kumpera  <rkumpera@novell.com>
7386
7387         * appdomain.c (get_shadow_assembly_location): Fix memleak.
7388
7389 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
7390
7391         * domain-internals.h (struct _MonoDomain): Add new hash tables mapping
7392         between GCHandles of type WeakTrackResurrection and the objects they
7393         point to.
7394
7395         * gc.c: Partly implement the sematics of GCHandles of type 
7396         WeakTrackResurrection: these handles should only be cleared after the
7397         finalizer of the object they are pointing to has ran.
7398
7399 2009-03-06  Mark Probst  <mark.probst@gmail.com>
7400
7401         * icall.c: Partially revert r126631 because using the jump
7402         trampolines for generic shared methods makes it superfluous.
7403
7404 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
7405
7406         * threads.c (handle_store): Create the 'threads' hash table with the proper
7407         MONO_HASH_VALUE_GC type.
7408
7409 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
7410
7411         * domain-internals.h (struct _MonoDomain): Move 'typeof_void' before
7412         FIRST_GC_TRACKED.
7413
7414         * domain.c (mono_domain_create): Register the fields between FIRST_GC_TRACKED
7415         and LAST_GC_TRACKED as a GC root.
7416
7417         * gc-internal.h: Fix the comment of mono_gc_alloc_fixed.
7418
7419         * object.c (mono_class_create_runtime_vtable): Create a GC descriptor for
7420         the static data even if it consists of 1 reference.
7421
7422         * boehm-gc.c (mono_gc_alloc_fixed): Allocate using GC_MALLOC_EXPLICITLY_TYPED
7423         if there is a GC descriptor.
7424
7425         * reflection.c (ALLOC_REFENTRY): Allocate ReflectedEntry-es using malloc
7426         instead of through the GC since they contain no object references.
7427
7428 2009-03-05  Mark Probst  <mark.probst@gmail.com>
7429
7430         * generic-sharing.c (instantiate_other_info): Always return a jump
7431         trampoline for method code.
7432
7433 2009-03-05  Marek Habersack  <mhabersack@novell.com>
7434
7435         * culture-info-tables.h: generated to include the en-tt culture.
7436
7437 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
7438
7439         * domain-internals.h (MonoDomain): Add two fields to cache invoke wrappers to
7440         capture the thread context.
7441
7442         * object.c (mono_async_result_new): Cache the invoke wrappers to
7443         ExecutionContext::Capture.
7444
7445 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
7446
7447         * marshal.h: Add a prototype for what mono_compile_method returns
7448         for invoke wrappers.
7449
7450         * gc.c: Use the new prototype declaration.
7451
7452 2009-03-04  Geoff Norton  <gnorton@novell.com>
7453
7454         * boehm-gc.c: Add some MONO_LOG tracing for the GC
7455         * gc-internal.h:
7456         * mono-gc.h: Expose mono_gc_invoke_finalizers in the embedding api.
7457
7458 2009-03-04  Martin Baulig  <martin@ximian.com>
7459
7460         * mono-debug.h
7461         (mono_debugger_runtime_invoke): Removed.
7462
7463         * mono-debug-debugger.c
7464         (mono_runtime_invoke): Moved into ../mini/debug-mini.c.
7465
7466 2009-03-02  Martin Baulig  <martin@ximian.com>
7467
7468         * mono-debug.h
7469         (mono_debugger_unhandled_exception): Removed.
7470         (mono_debugger_handle_exception): Removed.
7471         (mono_debugger_throw_exception): Removed.
7472
7473         * mono-debug.c
7474         (mono_debug_debugger_version): Bump to 5.
7475
7476         * mono-debug-debugger.c: Moved the exception handling code to
7477         ../mini/debug-mini.c
7478
7479 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
7480
7481         * domain-internals.h (struct _MonoDomain): Add a separate lock for the
7482         finalize_objects_hash.
7483
7484         * gc.c: Use the separate lock to access the finalize_objects_hash field.
7485         
7486         * domain-internals.h (struct _MonoDomain): Add finalize_runtime_invoke
7487         field.
7488
7489         * metadata-internals.h (struct _MonoImage): Add runtime_invoke_vcall_cache
7490         cache.
7491
7492         * image.c (mono_image_close): Free it.
7493         
7494         * marshal.c (mono_marshal_get_runtime_invoke): Add a 'virtual' argument
7495         allowing a creation of a wrapper which invokes its method using a CALLVIRT
7496         on the this argument.
7497
7498         * gc.c (run_finalize): Optimize the calling of the finalizers.
7499
7500 2009-03-03  Martin Baulig  <martin@ximian.com>
7501
7502         * mono-debug.h (MONO_DEBUGGER_MAJOR_VERSION): Bump to 81 because
7503         of the `MonoGenericInst' changes.
7504
7505 2009-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7506
7507         * icall.c (ves_icall_MonoType_GetGenericArguments): Use
7508         mono_array_class_get_cached to reduce locking contention. Extract
7509         a domain var.
7510
7511         * icall.c (ves_icall_Type_GetFields_internal): Avoid allocating
7512         intermediary managed arrays. Use caching version of mono_array_new
7513         to allocate the result array.
7514
7515         * icall.c (ves_icall_Type_GetEvents_internal): Same.    
7516
7517         * icall.c (ves_icall_Type_GetNestedTypes): Same.        
7518
7519         * locales.c (create_names_array_idx):  Use mono_array_new_cached
7520         to reduce locking contention.
7521
7522 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
7523                 
7524         * object.c (mono_method_add_generic_virtual_invocation): Put back the
7525         thunk builder code for the non-interface case.
7526
7527 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
7528
7529         * object.c (get_generic_virtual_entries): New helper function to collect
7530         the virtual generic method instances which need to be added to an IMT
7531         thunk.
7532         (mono_method_add_generic_virtual_invocation): Add a 'vtable' argument.
7533         Instead of creating a new IMT thunk, reset the vtable slot to the
7534         trampoline, the thunk will be created the next time the trampoline is called.
7535         (build_imt_slots): Add support for virtual generic methods in interfaces by
7536         adding to the IMT thunk all the methods registered using 
7537         mono_method_add_generic_virtual_invocation ().
7538
7539         * object-internals.h (_MonoImtBuilderEntry): Add a 'has_target_code' field.
7540         (struct _MonoIMTCheckItem): Ditto.
7541
7542         * object.c (mono_method_add_generic_virtual_invocation): Take a
7543         MonoMethod argument instead of a MonoGenericInst. Fix the construction of
7544         the IMT thunk to include all items.
7545         
7546         * object.c (mono_class_create_runtime_vtable): Add a missing
7547         mono_loader_unlock ().
7548
7549 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7550
7551         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7552
7553         * object-internals.h (MonoReflectionEvent): Add cached_add_event.
7554
7555 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7556
7557         * object-internals.h: Rename _MonoReflectionEvent to
7558         MonoReflectionMonoEvent so it reflects the right managed type.
7559         Add a MonoReflectionEvent that correctly represents System.EventInfo.
7560
7561         * icall.c:
7562         * reflection.c: Adjust code to use the new MonoReflectionMonoEvent
7563         type.
7564
7565 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7566
7567         * icall.c (ves_icall_Type_GetMethodsByName): Avoid allocating
7568         intermediary managed arrays. Use caching version of mono_array_new
7569         to allocate the result array.
7570
7571 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7572
7573         * reflection.c: Use cached version of mono_array_new alongside
7574         the mono_reflection_get_custom_attrs_by_type call path.
7575
7576 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7577
7578         * icall.c (ves_icall_Type_GetInterfaces): Avoid allocating
7579         intermediary managed arrays. Use caching version of mono_array_new
7580         to allocate the result array.
7581
7582         * icall.c (ves_icall_Type_GetConstructors_internal): Same.
7583
7584 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7585
7586         * icall.c: Add small implementation of a growable stack bound array.
7587
7588         * icall.c (ves_icall_System_Enum_get_hashcode): Fix warning.
7589
7590         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid allocating
7591         intermediary managed arrays. Use caching version of mono_array_new
7592         to allocate the result array.
7593
7594 2009-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
7595
7596         * icall.c: New icall ves_icall_System_Enum_compare_value_to that
7597         helps Enum::CompareTo to be implemented without reboxing all enums
7598         to their underlying type.
7599 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
7600
7601         * domain.c (SET_APPDOMAIN): Avoid calling TlsSetValue () on some platforms,
7602         since it acquires a global lock leading to scalability problems.
7603
7604         * profiler.c: Make the stat profiler work with multiple appdomains, this
7605         currently only works when no appdomains are unloaded.
7606
7607 2009-02-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
7608
7609         * appdomain.c: make the check to avoid copying when the assembly is
7610         already shadow copied actually work.
7611
7612 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
7613
7614         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7615
7616         * object-internals.h (struct _MonoReflectionGenericClass): Sync with
7617         changes to the managed side.
7618
7619 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
7620
7621         * metadata-internals.h (struct _MonoImage): Add a new cache for szarray
7622         classes + a separate lock for it, as it is used frequently at runtime, not
7623         just during metadata loading/JIT compilation.
7624
7625         * class.c (mono_bounded_array_class_get): Use the separate cache + lock
7626         for szarrays.
7627         
7628         * object-internals.h (mono_class_from_name_cached): New macro to cache
7629         the results of the lookup locally without having to declare a static
7630         variable to hold it.
7631         (mono_class_get_field_from_name_cached): Ditto.
7632         (mono_array_class_get_cached): Ditto.
7633
7634         * threadpool.c threads.c locales.c icall.c reflection.c socket-io.c: Use
7635         the new macros.
7636         
7637         * object.c (mono_get_delegate_invoke): Call setup_methods () to avoid the
7638         slower search in metadata.
7639
7640         * pedump.c: Fix a warning.
7641
7642 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
7643
7644         * reflection.c (encode_locals): Add checks for user types.
7645         (method_encode_clauses): Ditto.
7646         (method_encode_code): Ditto.
7647         (mono_image_create_token): Ditto.
7648
7649         * object-internals.h: Change the type of more fields from MonoReflectionType*
7650         to MonoObject*.
7651
7652 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
7653
7654         * threads.c (mono_thread_suspend_all_other_threads): Handle the case when
7655         the a thread does not suspend within 100ms.
7656
7657         * monitor.c (mono_monitor_try_enter_internal): Handle SuspendRequested
7658         in addition to StopRequested as well.
7659
7660         * mono-debug.c: Call _mono_debug_get_image () while holding the debug lock.
7661
7662         * debug-mono-symfile.c (mono_debug_symfile_lookup_method): Actually
7663         search the method_hash before inserting a new entry, to avoid crashes when
7664         the same method is inserted multiple times, causing the old 
7665         MonoDebugMethodInfo structure to be freed by the value dtor function.
7666
7667 2009-02-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
7668
7669         * socket-io.c: support SO_MAXCONN, SO_USELOOPBACK and
7670         SO_EXLUSIVEADDRUSE where available.
7671
7672 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
7673
7674         * marshal.c (mono_marshal_get_runtime_invoke): Fix _another_ bug sharing
7675         runtime invoke wrappers, this time it is string ctor wrappers, which
7676         pass a dummy string as 'this' instead of their obj argument. Fixes
7677         #478473.
7678
7679 2009-02-21  Jb Evain  <jbevain@novell.com>
7680
7681         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
7682         only get create_culture once.
7683
7684 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
7685
7686         * reflection.c (mono_reflection_setup_internal_class): Move the user type
7687         check before the locking.
7688         
7689         * reflection.c (mono_reflection_setup_internal_class): Check for user types.
7690         (mono_reflection_create_runtime_class): Ditto.
7691         (mono_reflection_sighelper_get_signature_local): Ditto.
7692         (mono_reflection_sighelper_get_signature_field): Ditto.
7693
7694         * object-internals.h (CHECK_MONOTYPE): New macro to check that a Type object
7695         is a System.MonoType object or similar.
7696         (monotype_cast): New helper function to cast a MonoObject to a 
7697         MonoReflectionType object.
7698
7699         * object-internals.h: Change MonoReflectionType* members in structures to
7700         MonoObject* members to force the usage of the monotype_cast () function.
7701
7702         * reflection.c icall.c: Use monotype_cast () for accessing Type members of
7703         structures/arrays. This causes us to assert instead of crashing when 
7704         instances of user defined subclasses of System.Type are encountered.
7705
7706 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
7707
7708         * cil-coff.h:
7709         * icall-def.h:
7710         * icall.c: add new GetUnmanagedResourcePtr that returns a pointer to a
7711         win32 resource loaded from a PE file.
7712
7713         * image.c: fix mono_image_lookup_resource.
7714
7715 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
7716
7717         * icall-def.h:
7718         * threads-types.h:
7719         * threads.c: added internal call for WaitHandle.SignalAndWait.
7720
7721 2009-02-19  Bill Holmes  <billholmes54@gmail.com>
7722
7723         * cominterop.c : Adding cominterop_type_from_handle and 
7724           registering it as an icall.  Replacing all references
7725           to type_from_handle.
7726
7727         Code is contributed under MIT/X11 license.
7728
7729 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
7730
7731         * Makefile.am: Add lock-tracer.h and lock-trace.c.
7732
7733         * appdomain.c: Call the tracer init function.
7734
7735         * domain-internals.h: Enable the tracer for the domain locks.
7736
7737         * image.c: Enable the tracer for image locks.
7738
7739         * loader.c: Enable the trace for the loader lock.
7740
7741         * lock-tracer.h:
7742         * lock-tracer.c: Initial implementation of the lock trace utility.
7743         The tracer requires a compile time define to be enabled and a env var
7744         to be enabled at runtime.
7745
7746 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
7747
7748         * domain.c (mono_domain_code_foreach): Improve documentation.
7749
7750 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
7751
7752         * appdomain.c:
7753         * generic-sharing.c:
7754         * object.c:
7755         * reflection.c:  Adjust locking order to the new semantics where the loader lock
7756         comes first.
7757
7758 2009-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
7759
7760         * domain.c: Add mono_domain_code_* functions that perform locking
7761         around the domain codeman.
7762
7763         * domain-internals.h: Export those functions.
7764
7765         * object.c: Use new functions instead of acquiring the domain lock.
7766
7767 2009-02-19  Zoltan Varga  <vargaz@gmail.com>
7768
7769         * marshal.c (mono_ftnptr_to_delegate): Convert a NULL ftnptr to a null
7770         delegate. Fixes #477396.
7771
7772 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
7773
7774         * reflection.c (create_custom_attr): Get rid of alloca.
7775
7776 2009-02-18  Bill Holmes  <billholmes54@gmail.com>
7777
7778         * cominterop.c (cominterop_get_managed_wrapper_adjusted) :
7779           Adding exception handling for all CCW calls.
7780
7781         Code is contributed under MIT/X11 license.
7782
7783 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
7784
7785         * reflection.c (mono_reflection_init): Remove the unused reflection mutex.
7786
7787         * marshal.c (emit_marshal_boolean): Add null checks to the new 
7788         native->managed marshalling code. Fixes #476247.
7789
7790 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
7791
7792         * class.c (mono_class_get_vtable_entry): Move the addition of
7793         static rgctx invoke wrappers for vtable methods here, this simplifies
7794         a lot of code and causes fewer rgctx wrappers to be created.
7795
7796         * marshal.c (mono_marshal_get_static_rgctx_invoke): Change the
7797         name of the statistics to begin with an uppercase.
7798
7799 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
7800
7801         * reflection.c: Revert previous change as it breaks the build.
7802         
7803 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
7804
7805         * verify.c: Properly handle SZARRAY element type.
7806
7807         Fixes #474271.
7808
7809 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
7810
7811         * reflection.c (mono_image_create_method_token): Correctly encode
7812         MethodDef MemberRefParent token.
7813
7814         Fixes #472845.
7815
7816 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
7817
7818         * image.c (mono_image_close): Delete the critical section before
7819         freeing the memory holding it.
7820
7821 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7822
7823         * verify.c (mono_method_verify): rethrow opcode doesn not fall through.
7824         Fixes #476257.
7825
7826 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7827
7828         * pedump.c (main): Call mono_marshal_init so pedump
7829         doesn't crash.
7830
7831 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7832
7833         * loader.c (method_from_memberref): Properly fix #474271 and
7834         don't break the runtime bad.
7835
7836 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
7837
7838         * domain.c (mono_domain_alloc): Add locking so the caller doesn't have to.
7839         (mono_domain_alloc0): Ditto.
7840
7841 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7842
7843         * loader.c (method_from_memberref): Don't abort if the array
7844         method is not found. A regular loader failure is more informative
7845         and correct.
7846
7847         Fixes #474271.
7848
7849 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7850
7851         *loader.c: Guard MonoImage::method_cache/methodref_cache
7852         using the image lock instead of the loader lock.
7853
7854         * metadata.h: Add comments about which fields are protected by
7855         the image lock.
7856
7857 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
7858
7859         * appdomain.c (mono_set_private_bin_path_from_config): Fix a warning.
7860
7861         * generic-sharing.c (mono_method_construct_object_context): Remove the
7862         wrapper_type == NONE assert, it is not needed.
7863
7864 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
7865
7866         * reflection.c (clear_cached_object): New helper function.
7867         (mono_method_clear_object): New function to clear the cached reflection
7868         objects for a dynamic method.
7869
7870         * object.c (mono_runtime_free_method): Call mono_method_clear_object ().
7871         Partly fixes # 463323.
7872         
7873 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
7874
7875         * class.c:
7876         * loader.c:
7877         * reflection.c: Remove all explicit uses of MonoImage::property_hash.
7878
7879 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
7880
7881         * image.c: Add mono_image_property_(lookup,insert,remove) functions that
7882         take the image lock instead of the loader lock.
7883
7884         * metadata-internals.h: Export new functions.
7885
7886 2009-02-12  Miguel de Icaza  <miguel@novell.com>
7887
7888         * domain.c (app_config_parse): Remove another use of stat that is
7889         not necessary as g_file_get_contents already does the presence
7890         check. 
7891
7892 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
7893
7894         * cominterop.c icall-def.h: Fix the DISABLE_COM build.
7895
7896         * marshal.c: Move the bstr handling code to cominterop.c.
7897
7898         * marshal.c: Remove some COM interop code missed previously.
7899
7900 2009-02-12  Miguel de Icaza  <miguel@novell.com>
7901
7902         More Paolo patches from the Wii port:
7903         
7904         * security.c: Remove ves_icall_System_Environment_get_UserName
7905         from here.
7906
7907         * icall.c: And put ves_icall_System_Environment_get_UserName
7908         here. 
7909
7910         * appdomain.c (mono_set_private_bin_path_from_config): Remove
7911         redundant call to stat that was only used to test for the file
7912         existence.   Patch from Paolo.
7913
7914         * gc.c (run_finalize): If COM is disabled, do not link in
7915         mono_marshal_free_ccw.
7916
7917         * generic-sharing.c: Use alloca.h here as well.
7918
7919 2009-02-13 Rodrigo Kumpera  <rkumpera@novell.com>
7920
7921         * reflection.c (mono_reflection_lookup_dynamic_token): Do the locking properly.
7922
7923 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
7924
7925         * cominterop.c cominterop.h: New files.
7926
7927         * marshal.c: Move the COM interop related code to cominterop.c. Make a few
7928         function/typedefs which are needed by cominterop.c global.
7929
7930 2009-02-12  Mark Probst  <mark.probst@gmail.com>
7931
7932         * generic-sharing.c: Don't take the loader lock to guard image
7933         mempool allocs.
7934
7935 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
7936
7937         * reflection.c (mono_reflection_lookup_dynamic_token): This function might be
7938         called without the loader lock which is required to guard MonoImage:tokens.
7939
7940 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
7941
7942         * class.c:
7943         * metadata.c:
7944         * method-builder.c:
7945         * marshal.c:
7946         * reflection.c: Don't take the loader lock to alloc memory from the image mempool.
7947
7948 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
7949
7950         * metadata.c: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
7951         Rework the code to use regular mono_image_alloc/0.
7952
7953         * loader.c: Rework the code to use regular mono_image_alloc/0.
7954
7955         * metadata-internals.h: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
7956
7957 2009-02-12  Bill Holmes  <billholmes54@gmail.com>
7958
7959         * object-internals.h : Fixing a typo in the 
7960           MonoReflectionComVisibleAttribute struct.
7961
7962         * marshal.c (cominterop_com_visible): Check the implemented 
7963           interfaces for ComImport.
7964
7965         * marshal.c (cominterop_get_native_wrapper_adjusted): For COM calls 
7966           assume that bools should be treated as VARIANTBOOLs.
7967
7968         * marshal.c (emit_marshal_boolean): Adding cases for 
7969           MARSHAL_ACTION_MANAGED_CONV_IN and MARSHAL_ACTION_MANAGED_CONV_OUT.
7970
7971         * marshal.c (mono_marshal_emit_managed_wrapper): Adding calls to 
7972           emit_marshal MARSHAL_ACTION_MANAGED_CONV_IN and OUT for bools.
7973
7974         * marshal.c (cominterop_get_ccw): For COM calls assume that bools
7975           should be treated as VARIANTBOOLs.    
7976
7977         Code is contributed under MIT/X11 license.
7978
7979 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
7980
7981         * image.c (mono_image_alloc, mono_image_alloc0, mono_image_strdup): Guard mempool
7982         allocation with the image lock.
7983
7984 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
7985
7986         This patch is the last of a series to remove explicit reference of MonoImage::mempool
7987         and use mono_image_alloc set of functions instead. This time we finish with reflection.c
7988
7989         * object.c: Add mono_string_to_utf8_image.
7990
7991         * object-internals.h: Export mono_string_to_utf8_image.
7992
7993         * reflection.c: Rework all explicit references to the the image mempool to go thought
7994         the mono_image_alloc set of functions.
7995
7996 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
7997
7998         This patch is the third of a series to remove explicit reference of MonoImage::mempool
7999         and use mono_image_alloc set of functions instead. This time we finish with marshal.c
8000         and generics-sharing.c.
8001
8002         * generics-sharing.c (set_other_info_templates): Take a MonoImage instead of a MonoMemPool
8003         as first argument. Note that this function remains broken as it doesn't perform locking around the
8004         mempool allocation.
8005
8006         * generics-sharing.c (rgctx_template_set_other_slot): Pass the image and not the mempool.
8007
8008         * image.c: Add g_slist_append_image.
8009
8010         * metadata.c (mono_metadata_field_info_with_mempool): Remove the mempool argument and use
8011         the supplied image for allocation. Move code into mono_metadata_field_info_full.
8012
8013         * metadata.c (mono_metadata_parse_marshal_spec_full): Take a MonoImage instead of a MonoMemPool.
8014         Fix all related code to do the same.
8015
8016         * marshal.c (mono_marshal_load_type_info): Pass the image instead of the mempool.
8017
8018         * metadata-internals.h: Fix the signatures.
8019
8020 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8021
8022         This patch is the second of a series to remove explicit reference of MonoImage::mempool
8023         and use mono_image_alloc set of functions instead. This time we rework mono_metadata_type_dup
8024         and similar to work using MonoImage.
8025
8026         * class.c (mono_mempool_dup): Rename to mono_image_memdup and take a MonoImage instead of a
8027         MonoMemPool.
8028
8029         * class.c (mono_dup_array_type): Take a MonoImage instead of a MonoMemPool as first argument.
8030
8031         * class.c (mono_metadata_signature_deep_dup): Same.
8032
8033         * class.c (inflate_generic_type): Same.
8034
8035         * class.c (mono_class_inflate_generic_type_with_mempool): Same.
8036
8037         * metadata.c (mono_metadata_signature_dup_full): Same.
8038
8039         * metadata.c: Add mono_metadata_signature_dup_mempool and extract common functionality from 
8040         mono_metadata_signature_dup_full.
8041
8042         * metadata.c (mono_metadata_type_dup): Same.
8043
8044         * marshal.c: Pass the image to calls to mono_metadata_type_dup.
8045
8046         * reflection.c: Same.
8047
8048         * generic-sharing.c: Pass the image to calls to mono_class_inflate_generic_type_with_mempool.
8049
8050         * metadata-internals.h: Fix the signatures.
8051
8052         * class-internals.h: Same.
8053
8054 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8055
8056         This patch is the first of a series to remove explicit reference of MonoImage::mempool
8057         and use mono_image_alloc set of functions instead. 
8058
8059         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy):
8060         Rename to mono_class_inflate_generic_type_no_copy and take a MonoImage instead
8061         of a MonoMemPool.
8062
8063         * class.c (mono_class_setup_fields): Adapt to mono_class_inflate_generic_type_no_copy.
8064
8065         * class.c (g_list_prepend_mempool): Removed.
8066
8067         * class.c (mono_class_get_nested_types): Use g_list_prepend_image instead of g_list_prepend_mempool.
8068
8069         * image.c: Add g_list_prepend_image.
8070
8071         * metadata-internals.h (struct MonoImage): Fix comment. Export g_list_prepend_image as internal.
8072
8073         * reflection.c (mono_reflection_create_runtime_class): Use g_list_prepend_image instead of g_list_prepend_mempool.
8074
8075
8076 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8077
8078         * metadata-internals.h (struct MonoImage): Add lock field. Export mono_image_lock and
8079         mono_image_unlock.
8080
8081         * image.c (mono_image_init): Init the lock field.
8082  
8083         * image.c (mono_image_init): Cleanup the lock field.
8084
8085         * image.c: Add mono_image_(un)lock functions.
8086
8087 2009-02-11  Mark Probst  <mark.probst@gmail.com>
8088
8089         * class.c, class-internals.h: mono_method_get_context_general()
8090         combines the functionality of mono_method_get_context() and
8091         mini_method_get_context().
8092
8093         * generic-sharing.c, domain-internals.h:
8094         mono_method_construct_object_context() and
8095         mono_domain_lookup_shared_generic() moved from mini.
8096
8097         * icall.c (ves_icall_InternalInvoke): Handle the case where the
8098         method doesn't have the correct instantiation because it's shared
8099         generic code.  Fixes #473999.
8100
8101 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
8102
8103         * loader.c (mono_method_get_wrapper_data): Handle inflated methods as well.
8104
8105         * loader.c (mono_loader_lock): Add a comment pointing to the locking document.
8106         
8107 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8108
8109         * metadata.c: Make mono_image_alloc_lock and mono_image_alloc0_lock non static.
8110
8111         * metadata-internals.h: Export mono_image_alloc_lock and mono_image_alloc0_lock.
8112
8113         * loader.c (mono_get_method_full): Drop the loader lock while constructing the method
8114         and recheck the cache for dups after it.
8115
8116         * loader.c (mono_get_method_from_token): Use _lock version of mono_image_alloc0.
8117
8118         Fixes one of the deadlocks found in #473150.
8119
8120 2009-02-11  Bill Holmes  <billholmes54@gmail.com>
8121
8122         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
8123           For Win32, add additional break conditions for accept.
8124
8125         Code is contributed under MIT/X11 license.
8126
8127 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
8128
8129         * marshal.c (mono_marshal_get_native_func_wrapper): Use get_cache to
8130         lazily initialize the native wrapper cache.
8131         (mono_marshal_get_native_wrapper): Put aot-ed native wrappers into a separate
8132         cache, since they are different from the normal wrappers.
8133
8134         * image.c (mono_image_init): Initialize native_wrapper_cache lazily as well.
8135
8136         * metadata-internals.h (struct _MonoImage): Add a new wrapper for
8137         AOT compiled native wrappers.
8138
8139 2009-02-09  Geoff Norton  <gnorton@novell.com>
8140
8141         * appdomain.h:
8142         * security-core-clr.c: Allow enabling core-clr from the embedding
8143         API.
8144
8145 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8146
8147         * socket-io.c: when requesting all the local ips, if there are no
8148         interfaces up and running, MS returns 127.0.0.1.
8149
8150 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8151
8152         * mono-perfcounters-def.h: processor time is an inverse time.
8153         Fixes bug #468625.
8154
8155 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8156
8157         * socket-io.c: an empty host name returns the list of local IPs.
8158         Fixes bug #386637 part 1/2.
8159
8160 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
8161
8162         * verify.c (mono_class_interface_implements_interface): Call
8163         mono_class_setup_interfaces ().
8164         (merge_stacks): Ditto.
8165
8166 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
8167
8168         * class.c (mono_class_setup_interfaces): New function to lazily initalize
8169         klass->interfaces.
8170         (mono_generic_class_get_class): Don't initalize klass->interfaces.
8171         (mono_generic_class_get_class): Ditto.
8172
8173 2009-02-06  U-QUACK\miguel  <miguel@quack>
8174
8175         * icall-defs.h: Include also the Encrypt/Decrypt string methods as
8176         they live in security.c
8177
8178         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Integrated
8179         another bit from Paolo's code.
8180
8181 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
8182
8183         * object.c (build_imt_slots): Add a small optimization to avoid inflating
8184         methods which will be discarded by add_imt_builder_entry ().
8185
8186         * marshal.c (get_runtime_invoke_type): Avoid sharing enum types since they
8187         need to be boxed.
8188
8189         * loader.c: Add a statistics for the size of the memberref signature cache.
8190         
8191         * loader.c (find_cached_memberref_sig): New helper function.
8192         (cache_memberref_sig): Ditto.
8193
8194         * loader.c: Cache the result of parsing memberref signatures, since otherwise
8195         they will be parsed again for every generic instantiation, leading to unbounded
8196         memory growth.
8197
8198 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8199
8200         * loader.c (mono_get_method_from_token): Avoid creating class for the generic
8201         parameters of generic methods.
8202
8203         * class.c (mono_class_inflate_generic_method_full): Set is_mb_open again
8204         after the original method is copied to the inflated method.
8205         (mono_class_get_vtable_entry): Handle rgctx invoke wrappers more efficiently.
8206
8207         * class-internals.h (struct _MonoMethodInflated): Move the is_mb_open
8208         field to MonoMethod since it only consumes 1 bit there, and 4/8 bytes here.
8209
8210         * class.c metadata.c: Update after the changes above.
8211
8212 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
8213
8214         * metadata-verify.c: Simplified error handling and added
8215         section table validation.
8216
8217 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8218
8219         * class-internals.h (MonoClassExt): New structure containing rarely used
8220         fields of MonoClass.
8221         (struct _MonoClass): Move rarely used fields to MonoClassExt, accessed
8222         through a new 'ext' field.
8223
8224         * class.c (mono_class_alloc_ext): New helper function to allocate 
8225         class->ext.
8226
8227         * class.c metadata.c reflection.c: Update after MonoClass structure changes.
8228
8229 2009-02-05  Mark Probst  <mark.probst@gmail.com>
8230
8231         * object.c (mono_object_get_virtual_method): Properly inflate
8232         generic methods.  Fixes #472692.
8233
8234 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
8235
8236         * class.c (mono_class_create_from_typedef): The CLR supports SystemF
8237         recursive types such as List<T>:Cons<T,List<T>> so when doing the lookup
8238         for the parent type, the created type must be ready to be used on a generic
8239         instantiation.
8240         We fill this_arg/byval_arg if the parent is a generic instance to make sure
8241         we won't have duplicated entries in generic_inst_cache.
8242
8243         Fixes #469553.
8244
8245 2009-02-05  Miguel De Icaza  <miguel@novell.com>
8246
8247         * threadpool.c (socket_io_add_poll): Remove the BSD6 define and
8248         replace with plain BSD per the comments on the bug MONO77637.
8249
8250 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8251
8252         * class.c (mono_class_get_generic_class): New accessor function.
8253         (mono_class_get_generic_container): Ditto.
8254
8255         * class-internals.h (struct _MonoClass): Add 'is_generic' and 'is_inflated'
8256         fields, similar to the ones in MonoMethod.
8257
8258         * class.c (mono_generic_class_get_class): Set klass->is_inflated.
8259         (mono_class_create_from_typedef): Set klass->is_generic if needed.
8260
8261         * reflection.c (mono_reflection_create_generic_class): Set klass->is_generic.
8262         
8263         * class-internals.h (struct _MonoClass): Remove enum_basetype, it contains
8264         the same information as element_class->byval_arg.
8265
8266         * class.c reflection.c: Remove references to class->byval_arg.
8267
8268         * class.c marshal.c: Use mono_class_enum_basetype () instead of accessing 
8269         klass->enum_basetype directly.
8270
8271         * verify.c metadata.c object.c icall.c reflection.c: Use 
8272         mono_class_enum_basetype () instead of accessing klass->enum_basetype 
8273         directly.
8274
8275 2009-02-04  Miguel de Icaza  <miguel@novell.com>
8276
8277         * icall-def.h: Remove internal calls for sockets when
8278         DISABLE_SOCKET is defined, file system writing features when the
8279         OS only support reading and not writing data and Policy support if
8280         the Policy is disabled.
8281         
8282         * image.c (do_mono_image_open): Apply Paolo's patches for using
8283         mono_file_map_ APIs here.
8284
8285         * assembly.c: Add support for platforms to avoid prefix
8286         auto-detection. 
8287
8288 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
8289
8290         * generic-sharing.c (mono_method_fill_runtime_generic_context): Fix a
8291         warning.
8292
8293         * class.c (mono_class_inflate_generic_class): New helper function.
8294
8295         * class.c: Use mono_class_inflate_generic_class in a few places. Add
8296         statistics for inflated methods/classes.
8297
8298         * loader.c (inflate_generic_header): Use mono_class_inflate_generic_class.
8299
8300         * icall.c (ves_icall_Type_GetMethodsByName): Optimize the case when
8301         the call is made from Delegate.CreateDelegate () for the invoke method of
8302         a delegate.
8303
8304         * loader.c: Add a statistics for the memory occupied by inflated signatures.
8305
8306         * metadata.c (mono_metadata_signature_size): New helper function.
8307
8308         * class.c (mono_class_get_method_from_name_flags): Add an optimization for
8309         generic instances.
8310
8311         * metadata.c (inflated_method_in_image): Avoid calling 
8312         mono_method_signature () if the method does not already have a signature.
8313
8314 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8315
8316         * verify.c (is_compatible_boxed_valuetype): When checking if the boxed 
8317         valuetype is compatible with target type, check by inheritance as a
8318         VT is not really compatible with System.ValueType, for example.
8319
8320         * verify.c (do_invoke_method): Improve error message.
8321
8322         * verify.c (do_box_value): If boxing a nullable, use the type argument
8323         on stack instead.
8324
8325         * verify.c (do_newobj): Improve error message.  
8326
8327         Fixes #469549.
8328
8329 2009-02-03  Miguel de Icaza  <miguel@novell.com>
8330
8331         * appdomain.c: Add support for DISABLE_SOCKETS and DISABLE_SHADOW_COPY
8332
8333 2009-02-03  Mark Probst  <mark.probst@gmail.com>
8334
8335         * generic-sharing.c: Don't hold domain lock when calling
8336         instantiate_other_info().  Fixes #471958.
8337
8338         * domain-internals.h, loader.c: Describe locking policy of domain
8339         lock vs loader lock.
8340
8341 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8342
8343         * verify.c (mono_delegate_signature_equal): Make it possible to check
8344         first-arg-bound delegates to static method.
8345
8346         * verify.c (verify_delegate_compatibility): Correctly verify delegates to
8347         static methods with the first arg bound.
8348
8349         Fixes #469529.
8350
8351 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8352
8353         * verify.c: Added stack_slot_full_name to provide decent and more meanfull
8354         errors.
8355
8356         * verify.c (is_compatible_boxed_valuetype): Be less restrictive when not
8357         under strict mode. Any type, when boxed can be seen as a reference type.
8358
8359         Fixes #469528.
8360
8361 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8362
8363         * object.h: The lower bound of an array is a signed integer value.
8364         Introduce mono_array_lower_bound_t typedef. It should be used instead of
8365         gint32 as under MONO_BIG_ARRAYS it will be a gint64.
8366
8367         * icall.c: Cast MonoArrayBounds::length to a signed value so correctly
8368         calculate the upper bound.
8369         
8370         Fixes #471252.
8371
8372 2009-02-02  Miguel de Icaza  <miguel@novell.com>
8373
8374         From Paolo's work, refactored, cleared up:
8375         
8376         * threadpool.c, icall.c: ifdef code that requires a working socket
8377         stack.
8378
8379         * metadata.c (mono_metadata_field_info): Do not attempt to return
8380         a value from a function declared as void.
8381
8382         * console-io.c: Use MONO_NULL_TTYDRIVER to remove the tty driver
8383         from the console stack.
8384
8385         * assembly.c: use strrchr instead of rindex.
8386
8387         * class.c, object.c, marshal.c, icall.c, reflection.c: include
8388         alloca.h on systems that have it.
8389
8390         * environment.c: Avoid code that uses stuff from
8391         HAVE_SYS_UTSNAME_H
8392         
8393         * appdomain.c: Include sys/time.h.
8394
8395         * console-io.c: include sys/ioctl.h if it is available.
8396
8397 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
8398
8399         * method-builder.h (_MonoMethodBuilder): Add a 'skip_visibility' flag.
8400
8401         * method-builder.c (mono_mb_create_method): Set method->skip_visibility from
8402         the method builder.
8403
8404         * marshal.c: Set mb->skip_visibility instead of setting it on the method
8405         after it was created and cached, as the later is not thread safe.
8406         
8407 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
8408
8409         * mono-debug.c (mono_debug_print_stack_frame): Avoid crashes when this is
8410         called while the debugging module is not initialized. Fixes #471669.
8411
8412 2009-02-02 Rodrigo Kumpera  <rkumpera@novell.com>
8413
8414         * icall.c (type_from_name): Ignore reflection frames to find out the real caller.
8415
8416         Fixes #471255.
8417
8418 2009-02-02  Mark Probst  <mark.probst@gmail.com>
8419
8420         * generic-sharing.c (lookup_or_register_other_info): Make sure the
8421         loader lock is not taken while the templates lock is held.  Fixes
8422         #471089.
8423
8424 2009-02-02  Mark Probst  <mark.probst@gmail.com>
8425
8426         * metadata.c (type_in_image): Added a check to fix a monodis
8427         crash.
8428
8429 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
8430
8431         * marshal.c (mono_marshal_get_runtime_invoke): Add support for byref
8432         nullable arguments.
8433
8434         * object.c (mono_runtime_invoke_array): Ditto.
8435         
8436         * marshal.c (mono_marshal_free_dynamic_wrappers): New function for
8437         freeing wrappers of dynamic methods.
8438
8439         * loader.c (mono_free_method): Call it. Fixes #463323.
8440         
8441         * marshal.c (mono_marshal_get_runtime_invoke): Disable sharing for
8442         methods taking vtype/byref arguments, to fix yet another bug caused by
8443         the sharing of runtime invoke wrappers. Partly fixes #471259.
8444
8445 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
8446
8447         * debug-mono-symfile.c (check_line): Return NULL instead of returning
8448         <first file in file table>:1 when the IL offset does not have an associated
8449         line number.
8450
8451 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
8452
8453         * mono-debug.c (mono_debug_lookup_locals): New function to return local
8454         variable info for a method.
8455
8456         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Ditto.
8457         
8458 2009-01-30  Jb Evain  <jbevain@novell.com>
8459
8460         * pedump.c: reuse code from monodis to make sure pedump honors
8461         MONO_PATH, which is needed to verify net_2_1 assemblies.
8462
8463 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
8464
8465         * mono-debug.c (mono_debug_print_stack_frame): Print the IL offset even when
8466         there is no line number info.
8467
8468 2009-01-29  Raja R Harinath  <harinath@hurrynot.org>
8469
8470         Avoid some MonoType allocations
8471         * reflection.c (mono_reflection_initialize_generic_parameter):
8472         Reuse MonoType from param->pklass rather than allocating one.
8473         (mono_dynamic_image_free): Update to changes.
8474
8475 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
8476
8477         Rearrange some code to improve consistency
8478         * reflection.c (mono_reflection_setup_generic_class): Move body ...
8479         (mono_reflection_initialize_generic_parameter): ... here.
8480
8481 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
8482
8483         * generic-sharing.c (has_constraints): Enable gshared for methods/classes
8484         with type constraints as an experiment.
8485
8486         * boehm-gc.c (on_gc_notification): Update mono_stats.
8487
8488 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
8489
8490         Avoid some allocations
8491         * class-internals.h (_MonoGenericInst::type_argv): Convert from
8492         pointer to tail array to avoid extra allocation.
8493         * metadata.c (free_generic_inst): Update to changes.
8494         (mono_metadata_get_generic_inst): Likewise.  Use alloca instead of
8495         on-stack struct.
8496
8497 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
8498
8499         * icall.c (ves_icall_System_Type_EqualsInternal): For user-defined types,
8500         return TRUE if the two type objects are the same.
8501
8502 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
8503
8504         * marshal.c (mono_marshal_load_type_info): Fill out info->min_align.
8505         (mono_class_native_size): Use klass->marshal_info->min_align instead of
8506         klass->min_align, since klass->min_align contains the managed alignment,
8507         while the native alignment can be different, like for longs on x86.
8508         Fixes #469135.
8509
8510         * class-internals.h (MonoMarshalType): Add a min_align field.
8511
8512 2009-01-26 Rodrigo Kumpera  <rkumpera@novell.com>
8513
8514         * assembly.c (mono_assembly_try_decode_skip_verification): Add a hack to check
8515         the 1.0 format.
8516
8517 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
8518
8519         * domain-internals.h (struct _MonoJitInfo): Add a 'from_aot' field plus
8520         some comments about the usage of the used_regs field.
8521
8522         * marshal.c (emit_marshal_ptr): Allow pointers to blittable structures.
8523         Fixes #469217.
8524
8525 2009-01-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
8526
8527         * appdomain.c: return NULL instead of throwing FileNotFoundException
8528         when LoadAssembly() fails.
8529
8530 2009-01-23  Mark Probst  <mark.probst@gmail.com>
8531
8532         * metadata.c (mono_metadata_generic_param_equal): Only compare the
8533         image if the owner is NULL.  Fixes the AOT failures.
8534
8535 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
8536
8537         * metadata.c (mono_metadata_load_generic_params): Initialize the 
8538         MonoGenericParam structure using memset so the image field is initialized
8539         as well.
8540
8541 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8542
8543         * appdomain.c (mono_domain_unload): Change the InterlockedIncrement to
8544         a plain store.
8545
8546 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
8547
8548         * class.c (mono_class_setup_vtable_general): In the generic instance
8549         optimization, set method->slot for abstract virtual methods. Fixes part of
8550         #467834.
8551
8552 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8553
8554         * domain-internals.h: Add new appdomain state MONO_APPDOMAIN_UNLOADING_START
8555         which signals that the unloading has started but all appdomain services must
8556         remain operational.
8557
8558         * appdomain.c (mono_domain_unload): The initial state for unloading now
8559         is unloading_start and we switch to unloading after the managed call to
8560         AppDomain::DomainUnload has finished.
8561
8562         The new unloading state has to be created because managed code in the
8563         DomainUnload event can depend on things like the threadpool still working.
8564         The domain must remain fully functional while the event executes.
8565
8566         This shown as an issue due to Process::WaitForExit, which waits for
8567         async reads of stdout and stderr to complete. Since those are processed
8568         in the threadpool the code deadlocks because the DomainUnload callback 
8569         waits for the async read finished event, which should have been set by a
8570         threadpool job but has been discarded due to the domain been in unload
8571         state.
8572
8573 2009-01-21  Mark Probst  <mark.probst@gmail.com>
8574
8575         * metadata.c (mono_metadata_generic_param_equal): Owner as well as
8576         image must match.
8577
8578 2009-01-21  Mark Probst  <mark.probst@gmail.com>
8579
8580         * reflection.c (resolve_object): For fields, inflate the class and
8581         then get the field in the inflated class.
8582
8583 2009-01-20  Mark Probst  <mark.probst@gmail.com>
8584
8585         * object-internals.h (struct _MonoException): Added a comment
8586         explaining the new use of trace_ips.
8587
8588 2009-01-20  Mark Probst  <mark.probst@gmail.com>
8589
8590         * generic-sharing.c (inflate_other_data): Inflate array methods
8591         correctly.
8592
8593         * loader.c, class-internals.h: Rename search_in_array_class() to
8594         mono_method_search_in_array_class() and make it non-static.
8595
8596 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
8597
8598         * metadata.c (inflated_signature_in_image): Call signature_in_image as well.
8599         Hopefully fixes #458168.
8600
8601 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
8602
8603         * object.c (mono_raise_exception): Remove call to InterlockedIncrement
8604         as it is performed elsewhere.
8605
8606         Code is contributed under MIT/X11 license
8607
8608 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
8609
8610         * mono-perfcounters-def.h: Add counters for asp.net requests total and
8611         requests queued.
8612         * object.c (mono_raise_exception): Increment the exceptions total
8613         counter when an exception is thrown.
8614         * class-internals.h: Add a location for storing the total number of
8615         asp.net requests served.
8616         * mono-perfcounters.c: Implement update support for asp.net counters
8617         from the class libraries. Implement read support for asp.net counters
8618         and exceptions total counter.
8619
8620 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
8621
8622         * loader.c (search_in_array_class): Call mono_class_setup_methods () before
8623         accessing klass->methods. Fixes #467385.
8624
8625 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
8626
8627         * marshal.c (emit_marshal_custom): Avoid calling MarshalNativeToManaged
8628         for byval arguments without an [Out] attribute. Fixes #467212.
8629
8630         * attach.c: Applied patch from Koushik Dutta (koush@koushikdutta.com). 
8631         Fix compilation under android.
8632         
8633         * sgen-gc.c: Instead of scanning gray objects after all roots have been 
8634         processed, scan them directly after they are copied, to achieve better locality
8635         and cache usage.
8636
8637         * socket-io.c: Applied patch from Koushik Dutta
8638         (koush@koushikdutta.com). Disable IPV6 when running under android.
8639
8640 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
8641
8642         * icall.c (ves_icall_InternalExecute): Add write barriers.
8643
8644         * marshal.c (mono_marshal_get_write_barrier): Remove, this is now done in
8645         the GC code.
8646
8647         * sgen-gc.c: Implement write barriers in IL code.
8648
8649 2009-01-17  Geoff Norton  <gnorton@novell.com>
8650
8651         * image.c: Avoid trying to walk the reference table of dynamic assemblies.
8652
8653 2009-01-17  Geoff Norton  <gnorton@novell.com>
8654
8655         * image.c: When unloading the image->references table, there can be gaps
8656         in it.  Ensure that we iterate every entry to avoid leaking assembly references
8657         when unloading an appdomain.
8658
8659 2009-01-16  Zoltan Varga  <vargaz@gmail.com>
8660
8661         * sgen-gc.c: Add support for allocating a nursery at an aligned address, to
8662         speed up ptr-in-nursery checks.
8663
8664         * threads.c (mono_threads_abort_appdomain_threads): Abort threads outside the
8665         threads_lock () to prevent deadlocks.
8666
8667         * sgen-gc.c gc-internal.h: Add a new root type root-with-wbarrier, which
8668         does not need to be scanned during minor collections, since writes to it
8669         must use write barriers.
8670
8671 2009-01-15 Rodrigo Kumpera  <rkumpera@novell.com>
8672
8673         * metadata-verify.c: Add pe nt header verification.
8674         
8675 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
8676
8677         * gc.c: Fix a few warnings when using SGEN.
8678
8679 2009-01-14 Rodrigo Kumpera  <rkumpera@novell.com>
8680
8681         * metadata-verify.c: Add pe optional header verification.
8682
8683 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
8684
8685         * sgen-gc.c: Add support for user defined marker functions, used by
8686         MonoGHashTable to avoid registering a GC root for every hash node.
8687
8688 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
8689
8690         * sgen-gc.c: Fix warnings. Optimize copy_object () a bit. Split pinned/
8691         non-pinned roots into separate hashes to avoid having to traverse them
8692         in functions which are only interested in one kind.
8693
8694 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
8695
8696         * metadata-verify.c: Add pe header machine field verification.
8697         
8698 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
8699
8700         * metadata-verify.c: Add pe header size verification.
8701
8702 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
8703
8704         * reflection.c (ALLOC_REFENTRY): Don't allocate the ReflectionEntry structures
8705         using the GC, they don't contain references.
8706
8707         * domain.c (mono_domain_create): Create ldstr_table using MONO_HASH_KEY_VALUE_GC.
8708
8709 2009-01-13  Geoff Norton  <gnorton@novell.com>
8710
8711         * appdomain.c|h: Expose mono_domain_unload to the embedding api so that 
8712         AppDomains created on the native side can be cleaned up on the native side.
8713
8714 2009-01-13  Geoff Norton  <gnorton@novell.com>
8715
8716         * appdomain.c: Ensure that we call mono_context_init for the embedding api
8717         as well as the managed api.
8718
8719 2009-01-13  Geoff Norton  <gnorton@novell.com>
8720
8721         * appdomain.h|c: New API for creating a MonoDomain in the embedding api
8722         with a MonoAppDomain initialized against it.
8723
8724 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
8725
8726         * reflection.c (MOVING_GC_REGISTER): Fix a warning.
8727         
8728         * reflection.c (mono_image_get_generic_param_info): Use MOVING_GC_REGISTER.
8729
8730         * marshal.c: Avoid setting the exception clauses after a method has been entered 
8731         into the wrapper caches. Fixes #465700.
8732
8733         * method-builder.c (mono_mb_set_clauses): New function to set the clauses of the
8734         method builder.
8735         (mono_mb_create_method): Set the clauses from the method builder.
8736
8737 2009-01-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
8738
8739         * threadpool.c: include sys/socket.h. Fixes compilation on FreeBSD.
8740         Patch from Makoto Kishimoto.
8741
8742 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
8743
8744         * sgen-gc.c (mono_gc_make_descr_from_bitmap): Handle large bitmaps by 
8745         encoding them as ROOT_DESC_COMPLEX.
8746         (precisely_scan_objects_from): Implement support for ROOT_DESC_COMPLEX.
8747
8748 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
8749
8750         * sgen-gc.c (scan_from_remsets): Clear the global remset of pointers which
8751         no longer point to the nursery.
8752
8753         * sgen-gc.c: Add a few comments/FIXMEs.
8754         
8755         * sgen-gc.c: Implement scanning of the alloc_pinned objects.
8756
8757         * marshal.c (mono_marshal_get_synchronized_wrapper): Make the 
8758         initialization of the various _method variables thread safe. Fixes
8759         #465377.
8760
8761 2009-01-12  Mark Probst  <mark.probst@gmail.com>
8762
8763         * domain.c, domain-internals.h: Remove the shared_generics_hash
8764         and its lookup functions.
8765
8766 2009-01-12  Bill Holmes  <billholmes54@gmail.com>
8767
8768         * socket-io.c:  Fixing the MSVC build. 
8769
8770         Code is contributed under MIT/X11 license.
8771
8772 2009-01-12 Rodrigo Kumpera  <rkumpera@novell.com>
8773
8774         * metadata-verify.c: Add pe header watermark verification.
8775
8776 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
8777
8778         * metadata-verify.c: Add lfanew verification.
8779
8780 2009-01-12  Jb Evain  <jbevain@novell.com>
8781
8782         * tabldefs.h: rename METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE to
8783         METHOD_ATTRIBUTE_STRICT to match the ECMA terminology.
8784
8785 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
8786
8787         * socket-io.c: Fix the build.
8788
8789         * environment.c: Fix an #ifdef.
8790
8791 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
8792
8793         * threadpool.c (async_invoke_thread): Handle the wait function returning
8794         WAIT_IO_COMPLETION as well.
8795         (async_invoke_io_thread): Ditto.
8796
8797 2009-01-09  Bill Holmes  <billholmes54@gmail.com>
8798
8799         * threads.c: Fixing the Windows build.
8800
8801         Code is contributed under MIT/X11 license.
8802
8803 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
8804  
8805         * threads.c (signal_thread_state_change): Call wapi_interrupt_thread () to
8806         interrupt a wait.
8807         (mono_thread_execute_interruption): Call wapi_clear_interruption () to enable
8808         the thread to wait again.
8809
8810 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
8811
8812         * metadata-verify.c: Initial skeleton of the metadata verifier.
8813
8814         * pedump.c: Add support for the metadata verifier.
8815
8816         * verify-internal.h: Export the whole assembly metadata verifier function.
8817
8818 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
8819
8820         * gc.c (mono_gc_init): Fix the comments about deadlock on windows.
8821
8822 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
8823
8824         * Makefile.am: Upgrade dtrace-prelink.sh location.
8825
8826 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
8827
8828         * gc.c (mono_gc_init): Wait for finalizer thread to init on windows as
8829         well. Otherwise the shutdown deadlock that happens on unix will can happen
8830         as well.
8831         If the main thread code finishes too fast it's possible that the finalizer
8832         thread won't have executed yet, won't record itself as the finalizer thread
8833         and the shutdown sequence will wait on it forever.
8834
8835 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
8836
8837         * threads.c (mono_thread_current): Make THREAD_DEBUG work on windows
8838         with MSVC.
8839
8840 2009-01-08  Miguel de Icaza  <miguel@novell.com>
8841
8842         * appdomain.c: Initialize the mono_strtod_mutex here, thanks to
8843         Robert Jordan for pointing this out.
8844
8845 2009-01-08  Christian Prochnow  <cproch@seculogix.de>
8846
8847         * icall.c
8848         * icall-def.h: added internal calls ves_icall_System_IO_DriveInfo_GetDiskFreeSpace,
8849         ves_icall_System_IO_DriveInfo_GetDriveType.
8850
8851 2009-01-07  Miguel de Icaza  <miguel@novell.com>
8852
8853         * icall.c: Wrap calls to mono_strtod in CriticalSection
8854         invocations when using eglib, to work around #464316.
8855
8856 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
8857
8858         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Double check the
8859         return value of GetCurrentDirectory to never access unitialized memory.
8860
8861 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
8862
8863         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Properly check the
8864         return value of GetCurrentDirectory and expand the buffer if needed.
8865
8866         Fixes #459094.
8867
8868 2009-10-07 Tom Hindle  <tom_hindle@sil.org>
8869
8870         * marshal.c (GetIUnknownForObjectInternal, GetIUnknownForObjectInternal) : 
8871           Adding a call to mono_init_com_types.
8872
8873         Code is contributed under MIT/X11 license.
8874
8875 2009-01-07  Geoff Norton  <gnorton@novell.com>
8876
8877         * socket-io.c: ioctlsocket(FIONREAD) returns the size of the UDP header as well on 
8878         darwin.  Use getsockopt SO_NREAD instead to get the right values for TCP and UDP.
8879         ai_canonname can be null in some cases on darwin, where the runtime assumes it will 
8880         be the value of the ip buffer.
8881
8882 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
8883
8884         * verify.c (mono_class_interface_implements_interface): Verify parents as we can't rely on
8885         interfaces_packed here.
8886
8887         Fixes part of #463294.
8888
8889 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
8890
8891         * verify.c (is_array_type_compatible): Ignore bounds and sizes when checking array compatibility.
8892
8893         Fixes part of #463294.
8894
8895 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
8896
8897         * verify.c (stack_slot_is_complex_type_not_reference_type): Check if the type
8898         is a boxed complex as well.
8899
8900         Fixes part of #463294.
8901
8902 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
8903
8904         * reflection.c (mono_image_get_methodref_token): Add an extra create_typespec parameter to
8905         control if a methodspec should be created for the generic method definition from external assemblies.
8906         Caching of methodspec is done using the handleref hash table.
8907
8908         Fixes #462592.
8909
8910 2009-01-05 Rodrigo Kumpera  <rkumpera@novell.com>
8911
8912         * loader.c (find_method): When searching the interfaces of a class
8913         check the transitive closure of implemented interfaces.
8914
8915         Fixes #463303.
8916
8917 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
8918
8919         * class.c (get_implicit_generic_array_interfaces): Improve debugging code.
8920         
8921 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
8922
8923         * class.c (get_implicit_generic_array_interfaces): Extract valuetype
8924         interfaces calculation to fill_valuetype_array_derived_types.
8925
8926         * class.c (get_implicit_generic_array_interfaces): Valuetypes need IList /
8927         ICollection / IEnumerator interfaces for their extra twin type - sbyte for byte
8928         for example.
8929
8930         * class.c (get_implicit_generic_array_interfaces): InternalEnumerator gets
8931         interfaces for valuetypes if needed.    
8932
8933         * class.c (fill_valuetype_array_derived_types): Enums should have interfaces
8934         for their basetype as well. Types are array expanded if rank is > 0.
8935
8936         Fixes #400716.
8937
8938 2008-12-30  Bill Holmes  <billholmes54@gmail.com>
8939
8940         * socket-io.h : Changing the signature of
8941           ves_icall_System_Net_Sockets_Socket_Accept_internal to pass
8942           the blocking state.
8943
8944         * icall-def.h :  Changing the signature of
8945           System.Net.Sockets.Socket.Accept_internal to pass the blocking state.
8946
8947         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
8948           For Windows only.  Avoid blocking when calling accept by
8949           querying for a connection via select.  The loop also queries
8950           the thread state every 1000 micro seconds for the thread
8951           stop state.  This will avoid the process hanging on shutdown
8952           when using a TcpChannel that is never connected to.
8953
8954         Code is contributed under MIT/X11 license.
8955
8956 2008-12-30  Marek Safar  <marek.safar@gmail.com>
8957
8958         * tabledefs.h: Add METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE.
8959
8960 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
8961
8962         * class.c (get_implicit_generic_array_interfaces): Extract common
8963         code to a helper function making it a lot easier on the eyes.
8964
8965 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
8966
8967         * class.c (get_implicit_generic_array_interfaces): If the internal
8968         enumerator is an interface inflate System.Object instead of itself.
8969
8970         Fixes #461261.
8971
8972 2008-12-24 Rodrigo Kumpera  <rkumpera@novell.com>
8973
8974         * object.c (mono_runtime_invoke_array): Don't assert with
8975         byref nullable types.
8976
8977         * marshal.c (mono_marshal_get_runtime_invoke): To handle
8978         byref nullables we unbox the object and store it on the
8979         stack. 
8980         We can't use the boxed object since it is the T of Nullable<T>
8981         and the boxed representation of a nullable it's underlying type
8982         or null.
8983         We could cheat and create a boxed nullable and use the same
8984         machinery of other byref VTs but this feels like a hack and
8985         using the stack has the bonus of reducing heap pressure.
8986
8987         Fixes #461941.
8988
8989 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
8990
8991         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
8992         return value.
8993
8994         Fixes #461867.
8995
8996 2008-12-19  Bill Holmes  <billholmes54@gmail.com>
8997
8998         * icall-def.h : Adding an internal call definition for 
8999           System.Environment.internalBroadcastSettingChange.
9000
9001         * icall.c : Adding a Windows only implementation to broadcast a 
9002           WM_SETTINGCHANGE when an environment variable has changed.
9003
9004         Code is contributed under MIT/X11 license.
9005
9006 2008-12-19  Mark Probst  <mark.probst@gmail.com>
9007
9008         * class.c, class-internals.h: Made
9009         mono_class_has_parent_and_ignore_generics() non-static.
9010
9011 Thu Dec 18 16:35:22 CET 2008 Paolo Molaro <lupus@ximian.com>
9012
9013         * image.c: deal with the mmap failing when loading an image.
9014
9015 2008-12-17  Geoff Norton  <gnorton@novell.com>
9016
9017         * threadpool.c: Ensure that the io_queue_lock is initialized
9018         in all circumstances, as we always attempt to cleanup against it.
9019
9020 2008-12-17  Miguel de Icaza  <miguel@novell.com>
9021
9022         * icall.c (ves_icall_System_Environment_get_Platform): For
9023         compatibility reasons for existing client code we will keep
9024         returning 4 for a while.   
9025
9026         For how long will depend on the documentation being updated, and
9027         for us to give client code a chance to be updated.
9028
9029         This reverts the original decison on #433108 since we did not
9030         catch roughly 33 instances of the broken code in our own source
9031         code base, we did not catch failures on the buildbots, and QA did
9032         not bring this as a problem.
9033
9034         Only today I found some customer's code breaking due to our own
9035         class libraries not being fully updated and tracked it down to
9036         this change.  I am reverting it because if we could not even get
9037         our story straight in our own code base, how can we hope that our
9038         end user code be fixed?
9039
9040         As of this morning, our Wiki page that documents how to detect
9041         Unix had not been fixed.    
9042
9043 2008-12-16  Zoltan Varga  <vargaz@gmail.com>
9044
9045         * metadata.c (inflated_method_in_image): Add a workaround for #458168.
9046
9047         * class.c (mono_class_get_fields): Handle loading errors.
9048
9049 2008-12-12 Mark Mason <mmason@upwardaccess.com>
9050
9051         * 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.
9052         
9053 2008-12-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
9054
9055         * mono-perfcounters.c: avoid warning.
9056
9057 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9058
9059         * reflection.c (ensure_runtime_vtable): Work on generic instances and
9060         make sure all interfaces have MonoClass::interface_id set.
9061
9062         * reflection.c (ensure_generic_class_runtime_vtable): Ensure the
9063         method table is property set.
9064
9065 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9066
9067         * class.c: New function mono_class_setup_interface_id that setup
9068         MonoClass::interface_id if needed.
9069
9070         * class-internals.h: Export new function.
9071
9072 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9073
9074         * class.c: Add code to sanity check the vtable after setup_vtable_general
9075         has done it's work.
9076
9077 2008-12-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
9078
9079         * icall.c: make Assembly.GetExecutingAssembly work properly when
9080         reflection is used to invoke the method.
9081         Bug #321781 fixed.
9082
9083 2008-12-11  Mark Probst  <mark.probst@gmail.com>
9084
9085         * metadata/generic-sharing.c: Look for constraints in all type
9086         arguments, not just the first one.
9087
9088 2008-12-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
9089
9090         * appdomain.c: return the correct CodeBase for an Assembly instance
9091         that was loaded from the shadow-copy directories.
9092         Bug #458190 fixed.
9093
9094 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
9095
9096         * sgen-gc.c (build_nursery_fragments): Clear nursery_next/nursery_frag_real_end.
9097
9098         * sgen-gc.c (check_object): New debugging helper function.
9099
9100         * object.c: Fix calls to mono_value_copy_array ().
9101
9102 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9103
9104         * class.c (mono_class_setup_fields): If working on an inflated class
9105         first check if the generic definition did init with success.
9106
9107         Fixes #445361.
9108
9109 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9110
9111         pedump.c (main): Fix a warning.
9112
9113 2008-12-10  Bill Holmes  <billholmes54@gmail.com>
9114
9115         * object-internals.h : Adding a definition for 
9116           MonoReflectionComVisibleAttribute.
9117
9118         * marshal.c (cominterop_com_visible) :  Method added to check the 
9119           ComVisible attribute of a class.
9120
9121         * marshal.c (cominterop_raise_hr_exception, cominterop_get_interface) :  
9122           cominterop_raise_hr_exception added to consolidate common code 
9123           to raise hr exceptions.
9124
9125         * marshal.c (cominterop_can_support_dispatch) :  Method added to determine 
9126           if a managed class should support IDispatch.
9127
9128         * marshal.c 
9129           (cominterop_get_idispatch_for_objec, cominterop_ccw_queryinterfacet) :  
9130           Added additional checks for managed object when getting 
9131           an IDispatch interface.
9132
9133         Code is contributed under MIT/X11 license.
9134
9135 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9136
9137         pedump.c (main): Handle mono_get_method () returning NULL. 
9138
9139 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
9140
9141         * marshal.h: Fix a warning.
9142
9143 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
9144
9145         * marshal.c : Adding cominterop_release_all_rcws to release all
9146           runtime callable wrappers held by the runtime.
9147
9148         * marshal.h : Adding declaration for cominterop_release_all_rcws.
9149           
9150         Code is contributed under MIT/X11 license.
9151
9152 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
9153
9154         * metadata.c (mono_image_alloc_lock): New helper function.
9155         (mono_image_alloc0_lock): Ditto.
9156
9157         * metadata.c: Use the alloc_lock () helper functions for allocating
9158         memory from the image mempool.
9159
9160 2008-12-08 Rodrigo Kumpera  <rkumpera@novell.com>
9161
9162         * class.c (mono_class_from_generic_parameter): Document it's
9163         locking behavior. Fix double checked locking here, we stored in
9164         param->pklass a partially initialized MonoClass and no membar was used.
9165
9166 2008-12-05  Marek Habersack  <mhabersack@novell.com>
9167
9168         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
9169         (3) functions are present in the C library use them to do the
9170         job. If they are absent, make sure that the sum of int_part and
9171         dec_part is rounded before returning. This is necessary due to the
9172         division of dec_part by the power of 10 before the final addition
9173         is performed - if the result is not rounded in some cases it will
9174         yield invalid results.
9175
9176 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
9177
9178         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
9179         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
9180         instruction instead of a pointer constant.
9181
9182 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
9183
9184         * loader.c (mono_method_get_header): Do most of the work outside the
9185         loader lock, to avoid assembly load hook deadlocks.
9186
9187         * metadata.c (mono_metadata_parse_mh_full): Use finer-grained locking.
9188         (mono_metadata_parse_type_full): Ditto.
9189
9190 2008-12-02 Rodrigo Kumpera  <rkumpera@novell.com>
9191
9192         * mempool.c (mono_backtrace): Take the number of allocated bytes as argument.
9193         Make the stack depth fixed. Ensure proper argument passing to the backtrace
9194         funtions. Finally, use a lock to produce well ordered output.
9195
9196         The lock looks silly, as all calls to the corlib mempool should be guarded
9197         with the loader lock, but for some reason this fact doesn't help. 
9198
9199         * mempool.c (mono_mempool_alloc0): Add support for TRACE_ALLOCATIONS.
9200
9201 2008-12-02  Mark Probst  <mark.probst@gmail.com>
9202
9203         * socket-io.c: 64 bit big-endian fixes.
9204
9205 2008-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
9206
9207         * verify.c (is_compatible_boxed_valuetype): Rewrite function to work properly with
9208         targets that require strict compatibility between the types.
9209
9210         * verify.c (verify_stack_type_compatibility_full): Boxed values are not compatible
9211         to unboxed types. All cases that this is true are checked by is_compatible_boxed_valuetype.
9212         Kill the strict argument and create a new one valuetype_must_be_boxed.
9213
9214         * verify.c (verify_delegate_compatibility): Use verify_stack_type_compatibility_full to
9215         state that all valuetypes must be boxed.
9216
9217         Fixes #448560.
9218
9219 2008-11-29  Kornél Pál  <kornelpal@gmail.com>
9220
9221         * coree.c (MonoFixupExe): Use sizeof(IMAGE_BASE_RELOCATION) instead of
9222         IMAGE_SIZEOF_BASE_RELOCATION as newer Vista SDKs no longer define the latter.
9223
9224         Contributed under MIT/X11 license.
9225
9226 2008-11-28 Rodrigo Kumpera  <rkumpera@novell.com>
9227
9228         * class.c (mono_class_setup_fields): Don't copy MonoType::attrs as
9229         the inflate_generic_type machinery should handle it.
9230
9231         This avoids a crash when the field's flags is zero and it's type is
9232         a primitive.
9233         What happens is that mono_metadata_parse_type_full will see that opt_attrs
9234         is zero and will return one of the cached built-in primitive types. Since
9235         those types live in read-only memory, the code that copies it crashes.  
9236
9237 2008-11-28  Mark Probst  <mark.probst@gmail.com>
9238
9239         * object.c: Don't put function descriptors into generalized IMT
9240         thunks.
9241
9242 2008-11-28  Mark Probst  <mark.probst@gmail.com>
9243
9244         * class.c: Enable generic code sharing on PPC64.
9245
9246 2008-11-27  Mark Probst  <mark.probst@gmail.com>
9247
9248         * mempool.c, mempool-internals.h: Added g_slist_append_mempool()
9249         from mini/mini.c.
9250
9251         * generic-sharing.c: Allocate the method template slists from the
9252         image mempool so it doesn't leak.
9253
9254 2008-11-27 Rodrigo Kumpera  <rkumpera@novell.com>
9255
9256         * class.c (generic_array_methods): Release the linked list.
9257
9258 2008-11-27  Mark Probst  <mark.probst@gmail.com>
9259
9260         * marshal.c (mono_string_builder_to_utf8): Fixed a wrong
9261         invocation to g_utf16_to_utf8().
9262
9263 2008-11-26  Mark Probst  <mark.probst@gmail.com>
9264
9265         * icall.c (mono_ArgIterator_IntGetNextArg): Handle sub-word sized
9266         arguments on big endian archs.
9267
9268 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
9269
9270         * reflection.c: (_mono_reflection_parse_type) skip leading spaces in
9271         the type name (test added in corlib).
9272
9273 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
9274
9275         * pedump.c: initialize perf. counters. Fixes a segv.
9276
9277 2008-11-25  Martin Baulig  <martin@ximian.com>
9278
9279         * mono-debug-debugger.c
9280         (mono_debugger_runtime_invoke): Return the exception object if an
9281         exception was thrown.  Visual Studio displays the exception object
9282         in the locals window.
9283
9284 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9285
9286         * mini-trampolines.c (mono_delegate_trampoline): Don't return a
9287         ftnptr.
9288
9289 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9290
9291         * marshal.c (mono_type_native_stack_size): MONO_TYPE_I and
9292         MONO_TYPE_U are sizeof (gpointer), too.
9293
9294 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9295
9296         * marshal.c (mono_type_native_stack_size): Fixed size and
9297         alignment for reference types.
9298
9299 2008-11-23  Mark Probst  <mark.probst@gmail.com>
9300
9301         * class.c (mono_class_generic_sharing_enabled): Disable generic
9302         code sharing for PPC64.
9303
9304 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
9305
9306         * icall.c (mono_method_get_equivalent_method): Make sure
9307         method->klass->methods is inited before looping over it.
9308
9309 2008-11-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
9310
9311         * object.c: when calling ExecuteAssembly in a newly created domain,
9312         the configuration file and application base are already set up.
9313         Bug #446353 take 2 fixed.
9314
9315 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
9316
9317         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
9318         Fixes #444715. Fix a warning.
9319
9320 2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
9321
9322         * appdomain.c: write the full path of the assembly to the .ini file
9323         created when "shadow-copying"
9324         Bug #446353 fixed.
9325
9326 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
9327
9328         * debug-helpers.c (mono_method_full_name): Stringify wrapper types even
9329         if signature==FALSE.
9330
9331 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
9332
9333         * marshal.h : Fix the cygwin build.
9334            marshal.c:12442: undefined reference to `_IID_IMarshal'
9335           
9336         Code is contributed under MIT/X11 license.
9337
9338 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
9339
9340         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
9341           free threaded marshaler when QueryInterface is called on a COM callable
9342           wrapper requesting the IMarshal interface.
9343           
9344         Code is contributed under MIT/X11 license.
9345
9346 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
9347
9348         * domain-internals.h (MonoDomain): Update MONO_DOMAIN_LAST_GC_TRACKED.
9349
9350         * reflection.c (mono_type_get_object): Special case the very common
9351         void type.
9352
9353         * domain-internals.h (struct _MonoDomain): Add 'typeof_void' field to
9354         hold typeof(void).
9355
9356 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
9357
9358         * process.h : Adding method declaration for
9359           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9360           
9361         * process.c : Adding implementation for
9362           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9363           
9364         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
9365           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9366
9367         Code is contributed under MIT/X11 license.
9368
9369 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
9370
9371         * appdomain.c (unload_thread_main): Clean up threadpool by
9372         calling mono_thread_pool_remove_domain_jobs.
9373
9374         * domain-internals.h (struct _MonoDomain): Add new fields to
9375         help coordinate the cleanup of the threadpool.
9376
9377         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
9378         that cleans up the threadpool of all jobs associated with an appdomain.
9379         It does that by cleaning up the queues and making sure all active
9380         threads are accounted.
9381
9382         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
9383         unloaded or in the process of. Take this is such way that there is
9384         no race condition between another thread starting the unload and the
9385         current thread acknowledging it.
9386
9387         * threadpool.c (async_invoke_thread): Same.
9388
9389         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
9390         firing the new thread.
9391
9392         * threadpool.c (start_tpthread): Same.
9393
9394         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
9395
9396         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
9397
9398 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
9399
9400         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9401         Add support for DuplicateHandle.
9402         
9403         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9404         Add support for DuplicateHandle.
9405         
9406         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9407         Add support for DuplicateHandle.
9408
9409         Code is contributed under MIT/X11 license.
9410
9411 2008-11-06  Mark Probst  <mark.probst@gmail.com>
9412
9413         * class-internals.h: Make min_align into a whole byte.
9414
9415         * class.c: Set min_align for SIMD types to 16.
9416
9417 2008-11-05  Geoff Norton  <gnorton@novell.com>
9418
9419         * attach.c: Default the attacher to enabled for all cases including
9420         embedded.
9421
9422 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
9423
9424         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
9425         change r117650.
9426
9427 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9428
9429         * monitor.c, monitor.h: New function for querying offsets of
9430         members of MonoThreadsSync.
9431
9432 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9433
9434         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
9435         to speed up this function and to avoid the boundless memory growth caused by
9436         the signature_dup () calls.
9437
9438 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9439
9440         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
9441         wrapper.
9442
9443         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
9444         by 1 bit.
9445
9446         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
9447
9448 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
9449
9450         * appdomain.c:
9451         * domain-internals.h: made mono_set_private_bin_path_from_config()
9452         "internal".
9453         * object.c: call the above function after setting the configuration
9454         file path for the root domain.
9455         Fixes bug #314478.
9456
9457 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
9458
9459         * assembly.c: when the assembly is loaded from an absolute path, end
9460         basedir with a directory separator.
9461         Bug #440781 fixed.
9462
9463 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9464
9465         * monitor.c (mono_monitor_get_fast_enter_method): If
9466         CompareExchange is not available, don't create the fastpath
9467         instead of asserting.  (The method is missing in the 1.1 profile.)
9468
9469 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9470
9471         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
9472
9473         * monitor.c, monitor.h: Code for generating Monitor.Enter and
9474         Monitor.Exit IL fastpaths.
9475
9476 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9477
9478         * class.c (mono_class_create_from_typedef): Added Vector2ul.
9479
9480 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9481
9482         * class.c (mono_class_create_from_typedef): Added Vector2l.
9483
9484 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9485
9486         * class.c (mono_class_create_from_typedef): Added Vector2d.
9487
9488 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
9489
9490         * appdomain.c: translate \ into / for cache_path.
9491         * domain-internals.h: new mono_is_shadow_copy_enabled().
9492         * icall.c: (fill_reflection_assembly_name) do the same path
9493         manipulations that get_code_base does.
9494         (get_code_base) use mono_is_shadow_copy_enabled.
9495
9496 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
9497
9498         * appdomain.c: shadow-copied assemblies go to CachePath +
9499         ApplicationName when both are set. DynamicBase has nothing to do with
9500         shadow copies.
9501         Bug #406877 fixed.
9502
9503 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9504
9505         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
9506         STANDALONESIG table.
9507
9508         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
9509         standalone signatures.
9510
9511         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
9512         comparison code: instead of comparing the signatures using a custom
9513         equals function, transform them to a common signature and compare that. This
9514         works better with AOT.
9515
9516 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
9517
9518         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
9519
9520         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
9521         call for generic instances.
9522         (mono_class_setup_properties): Call setup_properties () before accessing
9523         gklass->properties.
9524
9525         * class.c (mono_class_get_virtual_methods): New helper function to iterate
9526         over the virtual methods of a class using metadata if possible, avoiding the
9527         creation of MonoMethod's for non-virtual methods.
9528         
9529         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
9530         get_virtual_methods () to iterate over the virtual methods of classes.
9531
9532 2008-10-25  Martin Baulig  <martin@ximian.com>
9533
9534         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
9535
9536 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9537
9538         * class.c (mono_class_create_from_typedef): Added Vector4i.
9539
9540 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9541
9542         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
9543         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
9544         special-casing applies to eliminate the call completely.
9545
9546 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9547
9548         * class.c (mono_class_create_from_typedef): Added Vector8s.
9549
9550 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9551
9552         * class.c (mono_class_create_from_typedef): Added Vector16sb.
9553
9554 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
9555
9556         * icall.c: get rid of annoying warning.
9557
9558 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
9559
9560         * threadpool.c: in 1.x, if you change the background status of the
9561         threadpool thread, it's not reset.
9562         Remove unnecessary calls to SetState.
9563
9564 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9565
9566         * threadpool.c: asynchronously create a set of idle threads upon first
9567         use of the threadpool. SetMinThreads will now start the appropriate
9568         number of idle threads if they are not already running. The default is
9569         1 threadpool thread per CPU. Increased the maximum number of threads
9570         per CPU to 10.
9571
9572 2008-10-22  Martin Baulig  <martin@ximian.com>
9573
9574         Revert r116521 from Zoltan, it breaks the debugger:
9575
9576         * class.c (mono_class_get_virtual_methods): New helper function to iterate
9577         over the virtual methods of a class using metadata if possible, avoiding the
9578         creation of MonoMethod's for non-virtual methods.
9579         
9580         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
9581         get_virtual_methods () to iterate over the virtual methods of classes.
9582
9583 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9584
9585         * threads.c: when creating a threadpool thread, set its state to
9586         'background'.
9587         * threadpool.c: reset the background state of a threadpool thread
9588         after finishing each work item
9589         Bug #437888 fixed.
9590
9591 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
9592
9593         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
9594         
9595         * class.c (mono_class_setup_vtable_general): Add an optimized version for
9596         generic instances which works by inflating the methods in the container
9597         class's vtable.
9598
9599         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
9600         variant which doesn't make a copy if no inflation was done.
9601         (mono_class_setup_fields): Use it.
9602
9603         * metadata.c (mono_metadata_get_shared_type): New helper function to
9604         return a shared instance of a given MonoType.
9605
9606         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
9607         a copy of most non-generic types.
9608
9609 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
9610
9611         * threadpool.c: remove one more GetSystemInfo () call.
9612
9613 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
9614
9615         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
9616         use the code in mono-proclib.h to get processor information.
9617
9618 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9619
9620         * appdomain.c: fixed the logic that determines whether assemblies in a
9621         directory are "shadow-copied" or not. Bug #433483 fixed.
9622
9623 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
9624
9625         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
9626         warning.
9627
9628 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9629
9630         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
9631         returning a vtype.
9632
9633         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
9634         reflection.c: Use mono_field_get_name () for accessing a field's name.
9635
9636         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
9637         class.c
9638
9639         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
9640         field.
9641
9642         * loader.c (find_method_in_class): Reenable the metadata optimization by
9643         not using it for generic instances.
9644
9645         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
9646         data/def_type fields from MonoClassField into a separate structure.
9647         (struct MonoClassField): Remove data/def_type fields.
9648         (struct _MonoClass): Add a 'field_def_values' array to store the default
9649         values/RVA for fields.
9650
9651         * class.c reflection.c: Update after the changes.
9652         
9653         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
9654         for accessing field->data.
9655
9656         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
9657
9658         * loader.c (find_method_in_class): Revert the last change for now as
9659         it breaks Mono.C5 unit tests.
9660
9661         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
9662         'field_generic_types' and 'field_objects' which contain the information
9663         previously stored in MonoInflatedField.
9664         (MonoInflatedField): Delete.
9665         (struct _MonoClassField): Delete 'generic_info' field.
9666
9667         * reflection.c: Store the information which was previously in 
9668         field->generic_info in MonoDynamicGenericClass instead.
9669
9670         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
9671         MonoClassField changes.
9672
9673 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
9674
9675         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
9676         store the value inside the data array of the MonoMethodWrapper.
9677         This saves memory, is faster and fixes the lifetime issues (methods
9678         were never removed from the hash previously). May also fix bug#436996.
9679
9680 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9681
9682         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
9683         generic instances, compute the type from the generic definition instead of
9684         looking in field->generic_info.
9685
9686         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
9687         for inflated fields, the only user was get_fieldref_token () which no
9688         longer needs it.
9689
9690         * class.c (mono_class_init): Revert the last change as it seems to cause
9691         crashes.
9692
9693         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
9694         bytes on 64 bit platforms.
9695
9696         * object.c (mono_class_create_runtime_vtable): Fix a warning.
9697         
9698         * object.c (mono_class_create_runtime_vtable): Don't initalize
9699         field->data/field->def_type here, it is done lazily by 
9700         mono_class_get_field_default_value ().
9701
9702         * icall.c (ves_icall_get_enum_info): Call 
9703         mono_class_get_field_default_value () instead of directly accessing
9704         field->data and field->def_type.
9705
9706         * object.c (get_default_field_value): Ditto.
9707
9708         * class.c (mono_field_get_data): Ditto.
9709         
9710         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
9711         call for generic instances.
9712
9713         * loader.c (find_method_in_class): If klass != from_class, then inflate
9714         the method with the context of from_class, since the caller assumes this.
9715
9716 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
9717
9718         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
9719         for accessing method->slot.
9720
9721 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
9722
9723         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
9724
9725 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9726
9727         * class.c (mono_method_get_vtable_index): Use
9728         mono_method_get_vtable_slot () for accessing method->slot.
9729
9730         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
9731         accessing klass->methods.
9732
9733         * class.c (mono_method_get_vtable_slot): New helper function.
9734         (mono_class_get_vtable_entry): Ditto.
9735         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
9736         accessing method->slot.
9737
9738         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
9739         method to get_inflated_method ().
9740
9741         * class.c (mono_class_get_inflated_method): New helper method to obtain
9742         a method of an inflated class without calling setup_methods ().
9743         (mono_class_get_cctor): Use get_inflated_method.
9744
9745         * generic-sharing.c (mono_class_get_method_generic): Ditto.
9746         
9747         * marshal.c image.c: Lazily create all the marshal caches.
9748
9749         * image.c (mono_image_init): Move initialization of runtime_invoke
9750         caches to marshal.c.
9751
9752         * marshal.c (get_cache): New helper function to lazily initialize a 
9753         wrapper cache.
9754         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
9755
9756         * debug-helpers.c (mono_method_full_name): Include generic arguments.
9757
9758 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
9759
9760         * loader.c: fixed check for interface type.
9761
9762 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
9763
9764         * appdomain.c: check for NULL setup before it's referenced.
9765
9766 p
9767 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
9768
9769         * class.c: remove the unused old vtable setup code.
9770
9771 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
9772
9773         * class.c: don't depend on interface order in
9774         setup_interface_offsets (bug #435777).
9775         * reflection.c: sort the InterfaceImpl table (patch from
9776         Jb Evain  <jbevain@novell.com>).
9777
9778 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9779
9780         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
9781         the low level assemblies lock.
9782
9783 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
9784
9785         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
9786         object.c, reflection.c, socket-io.c, threads.c: introduced
9787         mono_framework_version () to return the major framewrok version,
9788         changed the code that was using more complex patterns to use it.
9789         Return the correct value for PlatformID for OSX.
9790
9791 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
9792
9793         * icall-def.h, process.h, process.c: added an icall to get info about
9794         processes using mono-proclib.
9795
9796 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
9797
9798         * mono-perfcounters.c: use the mono-proclib functions to
9799         access process information.
9800
9801 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
9802
9803         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
9804         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
9805         reflection.c: remove rawbuffer usage: mmap support is more sanely
9806         provided by utils/mono-mmap.
9807
9808 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
9809
9810         * gc.c: use posix semaphores when possible so that
9811         mono_gc_finalize_notify() is signal safe.
9812
9813 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
9814
9815         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
9816         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
9817         be #ifdef-ed out, the linker will remove the rest.
9818
9819         * marshal.c: Implement DISABLE_COM.
9820
9821         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
9822
9823 2008-10-11  Miguel de Icaza  <miguel@novell.com>
9824
9825         * locales.c (string_invariant_compare_char): Optimization: do not
9826         call g_unichar_type unless we actually need the information.
9827
9828 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9829
9830         * object.c, class-internals.h: Also create remoting trampolines
9831         for generic methods.  Pass the domain to the remoting trampoline
9832         creation function, too.
9833
9834 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9835
9836         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
9837
9838 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9839
9840         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
9841         Vector4ui.
9842
9843 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
9844
9845         * assembly.c:
9846         * locales.c: remove the use of g_strdown. Fixes bug #322313.
9847
9848 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
9849
9850         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
9851         for the least possible amount of time (extending the fix in r113458).
9852
9853 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9854
9855         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
9856
9857 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9858
9859         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
9860         as possible simd intrinsic types.
9861         Optimized the test to check for the common prefix first.
9862
9863 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
9864
9865         * class.c: back out part of a broken optimization committed on
9866         May 23th (bug #433908).
9867
9868 2008-10-09  Mark Probst  <mark.probst@gmail.com>
9869
9870         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
9871         Win32.  Should fix #432388 for most cases until we have the new
9872         profiler on Win32.
9873
9874 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9875
9876         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
9877         instead of using inst->id so the hash is stable for AOT.
9878
9879 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
9880
9881         * appdomain.c:
9882         * icall.c: create a .ini file for shadow-copied assemblies that
9883         contains the location of the original assembly. Use this to return the
9884         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
9885         Also fix the number of '/' for windows when returning the CodeBase.
9886         Fixes bug #430920.
9887
9888 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9889
9890         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
9891
9892         Code is contributed under MIT/X11 license.
9893
9894 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9895
9896         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
9897           if if the class vtable needs initialized.
9898
9899         Code is contributed under MIT/X11 license.
9900
9901 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9902
9903         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
9904           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
9905           STRING->BSTR, and CLASS->INTERFACE.
9906
9907         Code is contributed under MIT/X11 license.
9908
9909 2008-10-07  Marek Habersack  <mhabersack@novell.com>
9910
9911         * sysmath.h: changed the declaration of the
9912         ves_icall_System_Math_Round2 icall by adding an extra
9913         away_from_zero parameter.
9914
9915         * sysmath.c (ves_icall_System_Math_Round2): added support for
9916         away from zero rounding. The icall now takes an extra boolean
9917         parameter to signal that away from zero operation is requested.
9918
9919 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9920
9921         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
9922         the delegate klass so it can work with full-aot.
9923         (mono_marshal_get_delegate_end_invoke): Ditto.
9924         (mono_marshal_get_delegate_invoke): Ditto.
9925
9926 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
9927
9928         * gc.c, attach.h, attach.c: remove a bad pattern:
9929         add_finalizer_callback () is not implemented correctly, it can't
9930         without adding more overhead to the finalizer loop and it's not
9931         even needed, since we know exactly what we need to call, so there is
9932         no need to do so through an expensive function pointer.
9933
9934 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
9935
9936         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
9937         for the no-gc case.
9938         * attach.c (mono_attach_init): Remove the #ifdef.
9939
9940 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
9941
9942         * attach.c (mono_attach_init): Don't use
9943         mono_gc_add_finalizer_thread_callback when compiling without GC.
9944         Fixes #432306.
9945         
9946         Code is contributed under MIT/X11 license.
9947
9948 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9949
9950         * class.c (mono_class_create_from_typedef): Remove the 
9951         #ifndef DISABLE_SIMD stuff.
9952
9953 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9954
9955         * class-internals.h (MonoClass): Added simd_type bit field.
9956
9957         * class.c (mono_class_create_from_typedef): Check if type is a simd
9958         intrinsic.
9959
9960 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9961
9962         * object.c (mono_method_add_generic_virtual_invocation): Only add
9963         instantiations to the thunk whose count is at least as large as
9964         the threshold.
9965
9966 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
9967
9968         * icall.c: changed the Type of the exception thrown when trying to
9969         invoke a constructor on an abstract class. Part of the fix for bug
9970         #324185.
9971
9972 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9973
9974         * class.c, class-internals.h (mono_method_get_vtable_index): New
9975         function which returns the index into the vtable and properly
9976         handles inflated virtual generic methods.
9977
9978 2008-10-01  Mark Probst  <mark.probst@gmail.com>
9979
9980         * object.c, domain.c, object-internals.h, domain-internals.h:
9981         Generalize IMT thunk machinery to also handle thunks for virtual
9982         generic method invokes.  When a virtual generic method is invoked
9983         more than a number of times we insert it into the thunk so that it
9984         can be called without lookup in unmanaged code.
9985
9986         * generic-sharing.c, class-internals.h: Fetching a
9987         MonoGenericInst* for a method from an (M)RGCTX.
9988
9989 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
9990
9991         * marshal.c (emit_marshal_string): Applied a variant of a patch by
9992         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
9993         marshalling. Fixes #431304.
9994
9995 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
9996
9997         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
9998           handle when ref is specified without In or Out.
9999
10000         Code is contributed under MIT/X11 license.
10001
10002 2008-09-30  Mark Probst  <mark.probst@gmail.com>
10003
10004         * loader.c (mono_get_method_constrained): Don't expand method with
10005         the class's context, because it's already a method of that class.
10006
10007 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
10008
10009         * attach.c : should be correct build fix.
10010
10011 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10012
10013         * attach.c: Fix the previous change.
10014
10015 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
10016
10017         * attach.c : quick w32 build fix.
10018
10019 2008-09-27  Miguel de Icaza  <miguel@novell.com>
10020
10021         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
10022         crashes MonoDevelop: #430455.
10023
10024 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10025
10026         * domain-internals.h (struct _MonoDomain): Move most fields used only by
10027         the JIT do MonoJitDomainInfo in ../mini/mini.h.
10028
10029         * domain.c: Remove initialization/cleanup of the removed fields.
10030
10031 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10032
10033         * class.c (mono_class_generic_sharing_enabled): Enable generic
10034         code sharing for PPC.
10035
10036 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
10037
10038         * attach.c : Fixing the Windows builds.
10039
10040         Code is contributed under MIT/X11 license.
10041
10042 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10043
10044         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
10045         the default generic sharing mode to 'all'.
10046
10047 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10048
10049         * generic-sharing.c, class-internals.h: New function for checking
10050         whether a method needs a static RGCTX invoke wrapper.  A few
10051         funtions moved from mini/generic-sharing.c.
10052
10053         * icall.c: New function used.
10054
10055 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10056
10057         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
10058         Static RGCTX invoke wrapping applies to value type methods, too.
10059
10060         * class.c (mono_class_setup_vtable_general): In generic-shared
10061         value types, wrap methods with a static RGCTX invoke wrapper.
10062
10063 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10064
10065         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
10066         osx build.
10067
10068 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10069
10070         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
10071         register a callback which is called when the finalizer thread is woken
10072         up.
10073         (finalizer_thread): Call the callback if it exists.
10074
10075         * attach.h attach.c: New files, implementing the attach mechanism.
10076
10077         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
10078         
10079         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
10080         by the previous change.
10081
10082 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
10083
10084         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
10085         loader.c, marshal.c, metadata-internals.h, metadata.c,
10086         method-builder.c, object.c, reflection.c: introduced specific functions
10087         to allocate from the domain and image mempools and cleaned up most of
10088         the code to use them (still missing a few in reflection.c).
10089         Keep the loader bytes counter updated.
10090
10091 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
10092
10093         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
10094         loader-related counters.
10095
10096 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
10097
10098         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
10099         added more MS-compatible counters.
10100
10101 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10102
10103         * class.c (mono_class_setup_fields): Call setup_fields before accessing
10104         class->blittable. Fixes #428217.
10105
10106 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
10107
10108         * reflection.c (mono_image_get_field_on_inst_token): Call 
10109         field_encode_signature () since that handles custom modifiers too.
10110         Fixes #424663.
10111
10112 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
10113
10114         * reflection.c (add_custom_modifiers): New helper function to merge custom
10115         modifiers stored in objects to a MonoType.
10116         (fieldref_encode_signature): Encode custom modifiers.
10117         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
10118         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
10119
10120 2008-09-19  Kornél Pál  <kornelpal@gmail.com>
10121
10122         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
10123         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
10124         64-bit IL only images because imports are not resolved for IL only images.
10125         Special thanks to Bill Holmes for finding this bug and testing the patch.
10126         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
10127
10128         Contributed under MIT/X11 license.
10129
10130 2008-09-19  Miguel de Icaza  <miguel@novell.com>
10131
10132         * mono-config.c (dllmap_start): Add support for the bits keyword
10133         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
10134
10135 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10136
10137         * reflection.c (inflate_mono_method): When the class the method is
10138         to be inflated for is itself not inflated, just return the method.
10139
10140 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
10141
10142         * mono-perfcounters.c: use more user friendly process instance names.
10143
10144 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
10145
10146         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
10147           handle "[in] ref" and "[in][out] ref" cases.
10148
10149         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
10150           to mono_mb_create_method.  This was causing problems calling native to
10151           managed passing Variants by value.
10152
10153         Code is contributed under MIT/X11 license.
10154
10155 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
10156
10157         * class.c (can_access_internals): Call mono_assembly_load_friends ()
10158         before accessing the friend_assembly_names field.
10159
10160         * assembly.c (mono_assembly_load_friends): Make this callable multiple
10161         times.
10162         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
10163         called lazily when it is needed.
10164
10165         * metadata-internals.h (struct _MonoAssembly): Add 
10166         'friend_assembly_names_inited' flag.
10167
10168 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
10169
10170         * mono-perfcounters-def.h: fix the types of a few counters.
10171         * mono-perfcounters.c: implemented the instance names getter
10172         and a few bugfixes.
10173
10174 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
10175
10176         * culture-info-table.h : regenerated.
10177
10178 2008-09-17  Robert Jordan  <robertj@gmx.net>
10179
10180         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
10181         context bound objects. Fixes #415577.
10182
10183         Code is contributed under MIT/X11 license.
10184
10185 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
10186
10187         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
10188         implementation (bug #423582).
10189
10190 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
10191
10192         * object.c (mono_object_get_virtual_method): Handle the case method->slot
10193         is not set. Fixes #426309.
10194
10195 2008-09-16  Jb Evain  <jbevain@novell.com>
10196
10197         * class.c (mono_class_from_name): fix the exported type look up
10198         when the type is defined in a referenced assembly.
10199
10200 2008-09-16  Jb Evain  <jbevain@novell.com>
10201
10202         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
10203         increment the next index counter on each iteration to make that work
10204         for more than one type forwarder. Unmanaged part to fix #422929.
10205
10206 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10207
10208         * object-internals.h: enum ComInterfaceType in
10209         MonoInterfaceTypeAttribute is guint32, not guint16.
10210
10211 2008-09-12  Mark Probst  <mark.probst@gmail.com>
10212
10213         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
10214         writing code.
10215
10216 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10217
10218         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
10219         not gboolean.
10220
10221 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10222
10223         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
10224         Endianness fixes for MonoSymbolFileOffsetTable.
10225
10226 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
10227
10228         * process.c (complete_path) : Removing quotes from the 
10229           input path.  The glib file routines do not handle file paths
10230           that have quotes around them.
10231
10232         Code is contributed under MIT/X11 license.
10233
10234 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
10235
10236         * socket-io.h : Adding a comment to provide locations where 
10237           changes to MonoSocketAsyncResult need to be synced.
10238
10239         Code is contributed under MIT/X11 license.
10240
10241 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
10242
10243         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
10244         parameters as well. Fixes #425001.
10245
10246 2008-09-08  Miguel de Icaza  <miguel@novell.com>
10247
10248         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
10249         windows build.
10250
10251 2008-09-07  Miguel de Icaza  <miguel@novell.com>
10252
10253         * console-io.c: Add support for tracking the window size if it
10254         changes.
10255
10256         The setup is very simple: the TtySetup function will now return a
10257         pointer to a location in memory that tracks the current console
10258         size.  The managed code checks its current value every time its
10259         queried against the last value set, and updates accordingly.
10260
10261         With this setup we can work with multiple consoles, and we do not
10262         require to poke into managed code from a signal handler.
10263
10264         Additionally, the environment for COLUMNS and LINES is now handled
10265         in unmanaged code.
10266
10267         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
10268
10269 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10270
10271         * marshal.c (mono_type_native_stack_size): Treat
10272         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
10273
10274 2008-09-04  Jb Evain  <jbevain@novell.com>
10275
10276         * class.c (mono_class_is_assignable_from): fix assignability of nullables
10277         to nullables.
10278
10279 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
10280
10281         * verify.c (verify_type_compatibility_full): Revert change
10282         to allow converting a native int to unmanaged pointer be verifiable
10283         under non-strict mode.
10284         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
10285
10286         * verify.c: Added some TODOs.
10287
10288 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
10289
10290         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
10291           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
10292           Changed to use GlobalAlloc for the memory returned on Windows platforms.
10293
10294         Code is contributed under MIT/X11 license.
10295
10296 2008-09-02  Jb Evain  <jbevain@novell.com>
10297
10298         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
10299
10300 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
10301
10302         reflection.c (typebuilder_setup_fields): Handle classes with
10303         explicit size.
10304
10305 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
10306
10307         class.c (mono_class_setup_events): Add memory barrier due to
10308         double checked locking.
10309         
10310         class.c (mono_class_setup_properties): Same.
10311
10312 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10313
10314         * class.c (mono_class_is_assignable_from): Fix the build.
10315         
10316         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
10317         before accessing klass->interface_bitmap. Fixes #421744.
10318
10319 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10320
10321         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
10322         the runtime into no-exec mode, useful when running the AOT compiler.
10323
10324         * appdomain.c gc.c object.c: Avoid executing managed code when running
10325         in no-exec mode.
10326         
10327         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
10328
10329         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
10330         special case when the mono_assembly_loaded () returns NULL because the 
10331         search hook is not installed.
10332
10333 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10334
10335         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
10336         crashes in bstr marshalling on linux.
10337
10338 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10339
10340         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
10341         with more than one parameter.
10342
10343 2008-08-24  Miguel de Icaza  <miguel@novell.com>
10344
10345         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
10346         start/stop flow control as well when turning off ICANON (allows
10347         C-s and C-q to be read by Console.ReadKey).
10348
10349 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10350
10351         * class.c (mono_class_init): Move the initialization of nested classes
10352         into mono_class_get_nested_types (). Fixes #418433.
10353
10354         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
10355         flag.
10356
10357         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
10358         iterating tough the nested classes of a class.
10359
10360 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10361
10362         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
10363         on arm.
10364
10365 2008-08-22  Miguel de Icaza  <miguel@novell.com>
10366
10367         * console-io.c (sigcont_handler): Support signal chaining for
10368         SIGCONT.
10369
10370         (console_set_signal_handlers): Use best practices with sigaction,
10371         clear the structure before using it. 
10372
10373 2008-08-22  Robert Jordan  <robertj@gmx.net>
10374
10375         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
10376         Fix the Windows build.
10377
10378 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10379
10380         * class.c (mono_class_generic_sharing_enabled): Make the default
10381         sharing mode 'corlib'.
10382
10383 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10384
10385         * console-io.c (console_set_signal_handlers): Fix a warning.
10386
10387         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
10388         method normally, the JIT will take care of avoiding recursion.
10389
10390 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10391
10392         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
10393
10394         Code is contributed under MIT/X11 license.
10395
10396 2008-08-20  Miguel de Icaza  <miguel@novell.com>
10397
10398         * console-io.c (sigcont_handler): We need to restore the entire
10399         termios state, not only the original settings, as things like echo
10400         can be controlled after this (Booish exposes this issue with its
10401         own ReadLine implementation).
10402
10403         Additionally, we need to set the terminal back into keypad_xmit
10404         mode.
10405         
10406         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
10407         string as a paramter as well.   Otherwise we get different
10408         keyboard sequences.
10409
10410 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10411
10412         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
10413         delegates with byref out parameter passing. Fixes #351520.
10414
10415         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
10416         a generic context.
10417         (mono_type_get_desc): Add the type arguments for GENERICINST.
10418         (mono_method_full_name): Stringify the class name using mono_type_full_name
10419         so it picks up generic arguments.
10420
10421 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
10422
10423         * console-io.c: Removed debug output.
10424
10425 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
10426
10427         reflection.c (mono_reflection_create_runtime_class): Alloc
10428         the nested classes linked list using the dynamic image mempool.
10429         Fixes leak in corlib compilation.
10430
10431 2008-08-19  Miguel de Icaza  <miguel@novell.com>
10432
10433         * console-io.c: Fix incredibly annoying behavior on the console
10434         after resuming execution after control-z.   This affected every
10435         console application.
10436
10437 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
10438
10439         * mempool-internals.h: Header for mono private mempool functions. The first
10440         two function are for allocating glib linked lists using pools.
10441
10442         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
10443
10444         * Makefile.am: Added mempool-internals.h.
10445
10446 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10447
10448         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
10449         (mono_domain_free): Ditto.
10450
10451         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
10452         be used by the JIT to store its domain-specific information, instead of putting
10453         it directly into MonoDomain.
10454
10455         * domain.c (mono_install_create_domain_hook): New helper function to install
10456         a hook which initializes domain->runtime_info.
10457
10458         * domain.c (mono_install_free_domain_hook): Ditto.
10459         
10460 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10461
10462         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
10463         asserting if the ares parameter is null.
10464
10465         * mono-perfcounters.c: Fix warnings.
10466
10467         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
10468         is not needed, don't check for interruptions either.
10469         (mono_marshal_get_delegate_end_invoke): Ditto.
10470
10471 2008-08-15  Marek Habersack  <mhabersack@novell.com>
10472
10473         * mono-perfcounters.c (predef_readonly_counter): added support for
10474         reading the ASP.NET Requests Queued counter from another process.
10475
10476 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10477
10478         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
10479         MonoImage to simplify the AOT code.
10480
10481 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
10482
10483         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
10484         marshalling. Fixes #416078.
10485
10486 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10487         
10488         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
10489         it is set, looking up the icall address is deferred to the JIT, since 
10490         in embedded scenarios, the icall might not be registered in the runtime
10491         doing the AOT compilation. Backported from the 2.0 branch.
10492
10493 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10494
10495         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
10496         Fixes #415621.
10497
10498 2008-08-05  Marek Habersack  <mhabersack@novell.com>
10499
10500         * Makefile.am: added support for cross-compilation.
10501
10502 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
10503
10504         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
10505
10506 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
10507
10508         * mono-perfcounters.c: jitted methods and jitted bytes counters.
10509
10510 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
10511
10512         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
10513         mono-perfcounters.c: performance counters implementation.
10514
10515 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
10516
10517         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
10518         to gpointer, letting the AOT code decide what to store in it.
10519
10520 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
10521
10522         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
10523           mono_class_setup_methods if the methods are not initialized.
10524
10525         Code is contributed under MIT/X11 license.
10526
10527 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10528
10529         * verify.c: Remove some debug code I commited by accident.
10530
10531         * verify.c (mono_method_is_valid_in_context): Change the return value
10532         to make possible to distinguish between invalid and unverifiable.
10533
10534         * verify.c (verifier_load_method): Don't return NULL for unverifiable
10535         methods.
10536
10537 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10538
10539         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
10540         constraints. Fixes regression in gtest-253.
10541
10542 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10543
10544         * verify.c (mono_verifier_verify_class): Don't allow generic types
10545         with explicit layout.
10546
10547         * verify.c (mono_method_verify): Check locals and argument types.
10548
10549 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
10550
10551         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
10552         wait if the thread is in StopRequested state.
10553
10554         * class.c (mono_class_from_name): Refactor the module searching code into
10555         a separate function so it can be reused in the AOT case too.
10556
10557 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
10558
10559         * verify.c (mono_type_is_valid_in_context): Improve the error message.
10560         Check both the type and it's generic type definition for loader errors.
10561         
10562         * verify.c (mono_method_is_valid_in_context): Don't generate another
10563         error when a type errors occur, this leads to the wrong exception been
10564         thrown.
10565
10566 2008-07-28  Dick Porter  <dick@ximian.com>
10567
10568         * icall-def.h
10569         * process.c
10570         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
10571         New internal calls to duplicate and close a process handle.
10572
10573 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
10574
10575         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
10576
10577 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10578
10579         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
10580
10581 2008-07-27  Robert Jordan  <robertj@gmx.net>
10582
10583         * class.c (mono_class_init): Don't compute class.has_finalize for
10584         valuetypes. Fixes #412477.
10585
10586 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
10587
10588         * verify.c: Implement constraint equivalence checking.
10589         This is required when a generic parameter is used as
10590         argument to a constrained one.
10591
10592         Fixes #410637.
10593
10594 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10595
10596         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10597
10598         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
10599
10600         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
10601         synch with managed object layout.
10602
10603 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
10604
10605         * verify.c (do_branch_op): Handle valuetypes and generic
10606         arguments properly.
10607
10608         * verify.c (do_cmp_op): Same.
10609
10610         Fixes #410383.
10611
10612 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10613
10614         * generic-sharing.c: Fix memory leaks.
10615
10616         * class.c, class-internals.h: Make
10617         mono_class_inflate_generic_type_with_mempool() non-static.
10618
10619 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
10620
10621         * pedump.c (dump_verify_info): Dump full class name.
10622
10623 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10624
10625         * generic-sharing.c: Removed some old code that didn't do anything.
10626
10627 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
10628         * profiler.c: Added runtime_initialized_event,
10629         mono_profiler_install_runtime_initialized and
10630         mono_profiler_runtime_initialized. This new hook tells the profiler
10631         when the runtime is sufficiently initialized to be able to call
10632         mono_thread_attach on the root appdomain.
10633         * profiler.h, profiler-private.h: Likewise.
10634
10635 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
10636
10637         * verify.c (do_cast): Do boxing for generic arguments as well.
10638
10639         * class.c (is_nesting_type): Drop generic instantiations before
10640         checking for nesting.
10641
10642         * class.c (can_access_instantiation): Allow access to generic
10643         arguments.
10644
10645 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
10646
10647         * verify.c (verify_class_for_overlapping_reference_fields):
10648         On some cases, the field size might be zero, guard against that.
10649         Fix the explicit layout check to work as expected.
10650
10651 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
10652
10653         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
10654         mono_thread_resume () during shutdown, since the thread we want to abort
10655         might be suspended.
10656
10657 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
10658
10659         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
10660         warning.
10661
10662         * debug-mono-symfile.c: Fix a warning.
10663
10664         * mono-perfcounters.c (get_cpu_times): Fix a warning.
10665
10666         * object.c (mono_class_vtable): Check if exception_type is set, and return
10667         NULL as defined by the function comments.
10668
10669 2008-07-22  Mark Probst  <mark.probst@gmail.com>
10670
10671         * mempool.c: Use malloc for every single mempool allocation if the
10672         configure option is set.  This makes it easier to track mempool
10673         allocations with tools like Valgrind.
10674
10675 2008-07-22  Jb Evain  <jbevain@novell.com>
10676
10677         * reflection.c (create_dynamic_mono_image): emit the same
10678         metadata version that SL2 does when creating a SL2 image.
10679
10680 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
10681
10682         * icall-def.h:
10683         * icall.c: New icall System.Enum:get_hashcode. This function
10684         avoids the overhead of boxing the enum to the underlying type.
10685
10686 2008-07-21  Mark Probst  <mark.probst@gmail.com>
10687
10688         * reflection.c (mono_method_get_object): Don't let static RGCTX
10689         invoke wrappers get into MonoReflectionMethods.
10690
10691 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
10692
10693         * object-internals.h:
10694         * object.c: New mono_runtime_class_init_full function
10695         that makes throwing the exception optinal.
10696
10697         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
10698         for the case where the exception object is supplied.
10699
10700 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
10701
10702         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
10703         old ld versions.
10704
10705         Contributed under MIT/X11 license.
10706
10707 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
10708
10709         * string-icalls.c (ves_icall_System_String_InternalSplit):
10710         Optimize array allocation by caching the MonoClass of the
10711         array type.
10712
10713         * icall.c (ves_icall_Type_GetMethodsByName): Same.
10714
10715         * reflection.c (mono_param_get_objects): Same.
10716
10717 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
10718
10719         * icall-def.h:
10720         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
10721         It inflates the given type using the class context.
10722
10723 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
10724
10725         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
10726         the vtable if it already exists.
10727
10728         * object-internals.h: Add mono_class_try_get_vtable as part of the
10729         internal API.
10730
10731         * reflection.c (mono_type_get_object): Use the MonoObject from the
10732         vtable when possible. Reduces locking contention on reflection heavy
10733         code.
10734
10735 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
10736
10737         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
10738         g_bit_nth_msf () since that macro is not implemented in eglib.
10739
10740 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
10741
10742         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
10743         on platforms which do not support it.
10744
10745 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
10746
10747         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
10748
10749 2008-07-11  Martin Baulig  <martin@ximian.com>
10750
10751         * mono-debug-debugger.h
10752         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
10753
10754         * mono-debug-debugger.c
10755         (_mono_debugger_interruption_request): New global volatile variable.
10756         (mono_debugger_check_interruption): New public function.
10757
10758         * threads.c
10759         (mono_thread_current_check_pending_interrupt): Call
10760         mono_debugger_check_interruption().
10761         (mono_thread_interruption_checkpoint_request): Likewise.
10762
10763 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10764
10765         * verify.c: Add more type checks for loaded types. Verify the result
10766         handle from ldtoken.
10767
10768 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10769
10770         * loader.c (field_from_memberref): Don't crash if the field
10771         wasn't found.
10772
10773 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10774
10775         * verify.c: Verify if type and method instantiations
10776         don't have invalid VAR or MVAR arguments.
10777
10778 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10779
10780         * verify.c: Fix double free of function pointer list.
10781
10782 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10783
10784         * object.c (mono_string_to_utf8): Comment the new code as it
10785         breaks under eglib.
10786
10787 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
10788
10789         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
10790
10791 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
10792
10793         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
10794           is not throw too many times.
10795
10796         Code is contributed under MIT/X11 license.
10797
10798 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
10799
10800         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
10801         debugging is turned off.
10802
10803 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
10804
10805         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
10806
10807 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10808
10809         * class-internals.h, class.c: Added new generic sharing option:
10810         Share only stuff in System.Collections.Generic, which is now the
10811         default.
10812
10813 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10814
10815         * generic-sharing.c, class-internals.h: New function for getting a
10816         generic method in a generic class given the corresponding method
10817         for a different instantiation of the class.  Partly refactored
10818         from mini-trampolines.c.
10819
10820         * class.c: Make sure generic methods have a class_inst if they are
10821         part of a generic class.
10822
10823         * metadata.c (mono_type_stack_size_internal): Handle type
10824         variables.
10825
10826 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10827
10828         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
10829         Signifies whether information on the this/vtable/mrgctx variable
10830         is available.
10831
10832 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10833
10834         * object.c, object-internals.h, icall.c: New function
10835         mono_delegate_ctor_with_method(), which does the same as
10836         mono_delegate_ctor(), but takes an explicit method argument
10837         instead of taking the method from the jit info.
10838
10839         * marshal.c: When creating a delegate with an inflated method take
10840         the "this" argument as the target class for the castclass.
10841
10842 2008-07-03  Mark Probst  <mark.probst@gmail.com>
10843
10844         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
10845         mono_jit_info_table_find() to perform very badly in some cases.
10846
10847 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
10848
10849         * icall.c (type_from_typename): Handle 'string'.
10850
10851         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
10852         wrappers into the wrapper_hash, since the key is not a MonoMethod.
10853
10854 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
10855
10856         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
10857
10858         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
10859         number of available managed allocator types.
10860
10861         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
10862         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
10863
10864 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
10865
10866         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
10867         which is a low level lock protecting just the 'jit_code_hash' hash table.
10868
10869         * domain.c: Initialize+cleanup jit_code_hash_lock.
10870         
10871 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
10872
10873         * coree.c (mono_load_coree): Set coree_module_handle global variable only
10874         after initialization.
10875
10876         * coree.h: Make MonoFixupExe internal.
10877
10878         Contributed under MIT/X11 license.
10879
10880 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
10881
10882         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
10883         because that is platform independent. Check NumberOfRvaAndSizes in PE32
10884         as well.
10885         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
10886         image being loaded is a CLI image and _CorValidateImage gets called.
10887
10888         * coree.h: Add MonoLoadImage.
10889
10890         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
10891         instead of LoadLibrary.
10892
10893         Contributed under MIT/X11 license.
10894
10895 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
10896
10897         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
10898         for any primitive type.
10899
10900 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
10901
10902         * object.c (mono_array_new_specific): Optimize this and the other allocation
10903         functions a bit.
10904         
10905         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
10906         domains too if mono_dont_free_domains is set.
10907
10908         * domain-internals.h (mono_dont_free_domains): New internal option controlling
10909         whenever to free appdomain data after it has been unloaded.
10910
10911         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
10912         
10913 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
10914
10915         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
10916         (mono_method_get_equivalent_method): Fix a warning.
10917
10918         * object.c (mono_message_init): Avoid looking up array types for each call.
10919
10920 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
10921
10922         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
10923         call.
10924
10925         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
10926         even more.
10927
10928         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
10929         each iteration.
10930
10931         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
10932         fields of an enum.
10933
10934 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
10935
10936         * object.c (mono_value_box): Fix boxing of nullables.
10937
10938 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
10939
10940         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
10941         mono_module_handle that is defined by the linker; no initialization required.
10942         * coree.h: Remove mono_module_handle, add __ImageBase, update
10943         mono_image_open_from_module_handle.
10944         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
10945         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
10946         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
10947         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
10948         to 4 GB away from image base address. IA64 version is not tested but was very
10949         easy to implement and should work if we ever need it.
10950         * domain.c (mono_init_internal): Avoid system error message boxes.
10951         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
10952         with has_entry_point. Handle do_mono_image_load fauilre correctly.
10953         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
10954         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
10955         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
10956
10957         Contributed under MIT/X11 license.
10958
10959 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
10960
10961         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
10962         as part of the private mono API.
10963         
10964         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
10965         Do proper argument checking for methods that belong to generic classes.
10966         Do proper type resolution for GMFH/2.
10967         Fixes #377324.
10968         
10969 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
10970
10971         * verify.c (do_switch): Fix a memory corruption bug with
10972         the jump index is out of bound.
10973
10974 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
10975
10976         * verify.c: Disable debug code.
10977
10978 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
10979
10980         * reflection.c (mono_image_get_methodbuilder_token): Use
10981         mono_image_get_methodspec_token_for_generic_method_definition
10982         instead of mono_image_get_memberref_token. We cache more memberef
10983         entries now.
10984
10985 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
10986
10987         * verify.c: Inflate exception clause types.
10988         Fixes #402606.
10989         
10990 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
10991
10992         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
10993         name.
10994
10995         * reflection.c (mono_image_get_ctorbuilder_token): Same.
10996
10997         * reflection.c (mono_image_create_method_token): Same.
10998
10999 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11000
11001         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
11002         It does the same as mono_image_get_methodref_token but works on
11003         MethodBuilder.
11004
11005         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
11006         and always generate a methodspec. This follows the old behavior and fixes
11007         the regressions in System.Core. 
11008
11009 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11010
11011         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
11012         don't event mono_class_get () succeeds. Fixes #402182.
11013
11014 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
11015
11016         * metadata-internals.h: Added MonoDynamicImage::methodspec
11017         hashtable to store methodspec tokens created for MethodBuilders.
11018
11019         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
11020         MethodBuilders as open instantiations if a methodspec was requested.
11021
11022         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
11023
11024         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
11025
11026         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
11027
11028         Fixes bug #349190.
11029
11030 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
11031
11032         * loader.c (method_from_methodspec): Avoid crashing if the
11033         method lookup fails.
11034
11035 2008-06-20  Dick Porter  <dick@ximian.com>
11036
11037         * socket-io.c (get_socket_assembly): Cope with Moonlight network
11038         classes being in a different assembly.  Fixes bug 399184.
11039
11040 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
11041
11042         * loader.c (mono_loader_init): Make this callable multiple times.
11043         (mono_dllmap_insert): Call mono_loader_init () so this works even before
11044         the runtime is initialized. Fixes #401755.
11045
11046 2008-06-19  Dick Porter  <dick@ximian.com>
11047
11048         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
11049         Fixes bug 349688.
11050
11051 2008-06-19  Dick Porter  <dick@ximian.com>
11052
11053         * socket-io.c:
11054         * icall-def.h: Implement Socket generic Send() and Receive()
11055         methods.  Fixes bug 395168.
11056
11057 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
11058
11059         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
11060
11061         Contributed under MIT/X11 license.
11062
11063 2008-06-18  Martin Baulig  <martin@ximian.com>
11064
11065         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
11066         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
11067         set to 80.0.  The debugger <-> runtime interface is now frozen as
11068         well.   
11069
11070         * mono-debug.c
11071         (mono_debug_debugger_version): Bump to 4.
11072
11073 2008-06-18  Martin Baulig  <martin@ximian.com>
11074
11075         * debug-mono-symfile.c
11076         (load_symfile): Don't check the minor version.
11077
11078         * debug-mono-symfile.h: Bump the version number to 50.0.
11079
11080 2008-06-18  Martin Baulig  <martin@ximian.com>
11081
11082         * debug-mono-symfile.c
11083         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
11084         minimum required version.
11085
11086 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
11087
11088         * reflection.c (mono_custom_attrs_from_property): Fix support for
11089         retriveving cattrs of dynamic inflated generic types.
11090
11091         * reflection.c (mono_custom_attrs_from_event): Same.
11092
11093         * reflection.c (mono_custom_attrs_from_field): Same;
11094
11095         * reflection.c (typebuilder_setup_events): Same cattrs of events.
11096
11097         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
11098         Moved to metadata.c.
11099
11100         * metadata.c: New functions to retrive the equivalent field, event
11101         of property from the generic type definition.
11102
11103         * metadata-internals.h: Added new functions from metadata.c.
11104
11105 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
11106
11107         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
11108         to cached in a mempool is used.
11109
11110         * metadata.c (free_generic_class): In some situations field generic_info type
11111         is not properly dup'ed and leads to double free'ing.
11112
11113         Fixes #400643.
11114
11115 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11116
11117         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
11118         this arguments (will be needed later for generic methods).
11119         Collect stats.
11120
11121 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11122
11123         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
11124         Create a static RGCTX invoke wrapper for methods which require it.
11125
11126 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11127
11128         * object.c, class-internals.h: New function for checking whether
11129         an individual field is special static.
11130
11131 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
11132
11133         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
11134         linear search since the table is sorted.
11135
11136         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
11137         Fixes #324180.
11138
11139 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
11140
11141         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
11142         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
11143
11144         * gc.c (mono_domain_finalize): Allow an infinite timeout.
11145
11146         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
11147         
11148         * threads.c (mono_thread_request_interruption): Get rid of locking, use
11149         InterlockedCompareExchange to query and modify 
11150         thread->interruption_requested.
11151
11152         * object-internals.h (struct _MonoThread): Change interruption_requested
11153         to a gint32 so it can be modified by atomic operations. Add 
11154         'critical_region_level' from the managed side, change small_id to a guint32,
11155         add new set of 'unused' fields.
11156
11157         * appdomain.c: Bump corlib version.
11158
11159 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11160
11161         * class.c (mono_class_from_name): Search modules as well. Fixes
11162         #322332.
11163
11164 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11165
11166         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
11167         templates.  Templates are generalized with an additional type_argc
11168         argument.  RGCTX templates have type_argc==0, MRGCTX templates
11169         have type_argc>0.
11170
11171         * domain-internals.h, domain.c: New hash table for looking up
11172         MRGCTXs.
11173
11174         * metadata.c, metadata-internals.h: Rename hash and equal
11175         functions for MonoGenericInst's and make them public.
11176
11177         * class-internals.h: New data structures for the MRGCTX.  Macros
11178         for distinguishing slots in the RGCTX and the MRGCTX.
11179
11180 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11181
11182         * object.c (mono_method_get_imt_slot): Put the same methods of
11183         different instantiations of the same generic interface in the same
11184         IMT slots, to make generic sharing simpler.
11185
11186 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11187
11188         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
11189
11190         * metadata.c (mono_metadata_field_info_with_mempool): Added.
11191         This function works just like mono_metadata_field_info, but
11192         accept a mempool as argument to be used allocating memory.
11193
11194         * marshal.c (mono_marshal_load_type_info): Use new function
11195         to load marshal data into image mempool.
11196
11197 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11198
11199         * class.c (mono_class_inflate_generic_type_with_mempool):
11200         This function allows to inflate a generic type using
11201         a mempool.
11202
11203         * class.c (inflate_generic_type): Take a mempool as argument
11204         and use it to do type dup'ing.
11205
11206         * class.c (mono_class_setup_fields): Field type for generic
11207         generic classes are allocated from the image mempool.
11208
11209         * metadata.c (free_generic_class): Inflated field type is
11210         now allocated in the image mempool.
11211
11212 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11213
11214         * threads.c (thread_cleanup): Free MonoThread::name.
11215
11216 2008-06-12  Marek Habersack  <mhabersack@novell.com>
11217
11218         * appdomain.c (ensure_directory_exists): avoid unnecessary
11219         mkdir(2) calls when the shadow directory already exists.
11220         (mono_make_shadow_copy): copy also satellite assemblies from the
11221         private bin directories.
11222
11223 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
11224
11225         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
11226         
11227         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
11228         a page boundary. Fixes #396219.
11229
11230 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11231
11232         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
11233         due to double-checked locking.
11234
11235 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11236
11237         * assembly.c (build_assembly_name): Release memory on failure.
11238
11239         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
11240
11241 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11242
11243         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
11244         memory on failure.
11245
11246 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11247
11248         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
11249         memory on failure.
11250
11251 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11252
11253         * loader.c (field_from_memberref): Check if field signature type is equal
11254         to the non-inflated type of the field. Fixes #398980.
11255
11256 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
11257
11258         * assembly.c (mono_assembly_load_from_full): Call 
11259         mono_assembly_load_friends () outside the assemblies lock, since it can
11260         acquire the loader lock. Fixes #323696.
11261
11262         * reflection.c (resolve_object): Inflate the inst with the context for
11263         FieldOnTypeBuilderInst. Fixes #399010.
11264
11265 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11266
11267         * reflection.c (mono_image_get_field_on_inst_token): Don't
11268         inflate the field to encode it's signature. If it's a
11269         VAR or MVAR it should stay that way in the signature.
11270         Fixes #399047.
11271
11272 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11273
11274         * reflection.c (resolve_object): Release memory of inflated types.
11275
11276 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11277
11278         * loader.c (mono_method_get_signature_full): Remove assert about
11279         loading a methodspec to a generic method. We have such methods, such as
11280         System.Threading.Interlocked::CompareExchange<T>.
11281         This assert was removed since it crashes the verifier when it checks
11282         methods calling CompareExchange<T>.
11283
11284 2008-06-10  Marek Safar  <marek.safar@gmail.com>
11285
11286         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
11287         of Type array and not MonoType.
11288
11289 2008-06-10  Marek Habersack  <mhabersack@novell.com>
11290
11291         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
11292         <lupus@ximian.com>
11293
11294 2008-06-10  Martin Baulig  <martin@ximian.com>
11295
11296         * debug-mono-symfile.h
11297         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
11298         changes to the file format, but we were generating incorrect
11299         source file indices in the line number table due to a bug, which
11300         made backtraces report an incorrect source file.
11301
11302 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11303
11304         * mono-debug.c: Moved mono_debug_free_method_jit_info from
11305         mini/debug-mini.c to here.
11306
11307         * mono-debug.c (il_offset_from_address): Free memory from find_method.
11308
11309         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
11310         use it to release structs returned by mono_debug_find_method.
11311
11312 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
11313
11314         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
11315         since it needs to set method->slot for all interface methods.
11316
11317 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11318
11319         * class-internals.h: Forgot to add.
11320
11321 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11322
11323         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
11324
11325         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
11326         Lookup the custom attributes from property_hash.
11327
11328         * reflection.c (mono_save_custom_attrs): Save the custom attributes
11329         in property_hash. Allocate all data using the image mempool.
11330
11331         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
11332         for dynamic_custom_attrs to checks if the image is dynamic.
11333
11334 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11335
11336         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
11337         assemblies array.
11338         
11339         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
11340         runtime functions while holding the domain assemblies lock.
11341
11342 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11343
11344         * verify.c: Reapplied the last bit of the reverted changes.
11345
11346 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11347
11348         * verify.c: Reapplied more of the reverted changes.
11349
11350 2008-06-09  Martin Baulig  <martin@ximian.com>
11351
11352         * debug-mono-symfile.c (load_symfile): Check the major version
11353         first; if it's wrong, don't print the minor version in the error message.
11354
11355 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11356
11357         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
11358         lock instead of the domain lock to avoid deadlocks, since the thread might
11359         already hold the loader lock.
11360
11361         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
11362         (mono_thread_attach): Ditto.
11363
11364         * monitor.c: Use a TLS variable for holding the current thread id instead
11365         of calling pthread_self ().
11366         (mono_monitor_init_tls): New internal function to initialize the TLS
11367         variable.
11368         (mono_monitor_try_enter_internal): Put the owner == id check after the
11369         owner == 0 check.
11370
11371         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
11372         missed optimizations when using gcc-4.3.
11373
11374 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
11375
11376         * reflection.c (mono_dynamic_image_free): Free the memory
11377         used by MonoGenericParam in MonoDynamicImage::gen_param.
11378
11379         * reflection.c (mono_reflection_setup_generic_class): Allocate
11380         container from mempool.
11381
11382         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
11383         container from mempool.
11384
11385 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11386
11387         * threads.c (mono_set_pending_exception): New internal function to set the
11388         pending exception of the current thread.
11389         (mono_thread_get_and_clear_pending_exception): Check for 
11390         thread->pending_exception as well.
11391
11392         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
11393
11394         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
11395         it can trigger a collection.
11396
11397 2008-06-06  Martin Baulig  <martin@ximian.com>
11398
11399         Merged the `debugger-kahalo' branch.
11400
11401         * mono-debug.h
11402         (MONO_DEBUGGER_VERSION): Bumped to 72.
11403
11404         * debug-mono-symfile.h
11405         (MonoSymbolFileMethodIndexEntry): Removed.
11406         (MonoSymbolFileMethodEntry): New public typedef.
11407         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
11408         (MonoSymbolFileSourceEntry): Remove everything except `index' and
11409         `data_offset'.
11410         (MonoSymbolFileMethodEntry): Removed.
11411         (MonoSymbolFileLexicalBlockEntry): Removed.
11412         (MonoSymbolFileLineNumberEntry): Removed.
11413         (MonoDebugLexicalBlockEntry): Removed.
11414         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
11415         removed `num_il_offsets' and `il_offsets'.
11416         (MonoSymbolFile): Replace `version' with `major_version' and
11417         `minor_version'.
11418         (MONO_SYMBOL_FILE_VERSION): Replace with
11419         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
11420         `MONO_SYMBOL_FILE_MINOR_VERSION'.
11421
11422         * debug-mono-symfile.c
11423         (mono_debug_symfile_lookup_location): Add support for the new line
11424         number table format.
11425
11426 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11427
11428         * metadata.c (free_generic_class): Release the inflated
11429         MonoClass of dynamic generic classes if it's not a generic
11430         type definition.
11431
11432 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11433
11434         * verify.c: Reapplied more of the reverted changes.
11435
11436 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11437
11438         * reflection.c (lookup_custom_attr): Clean the cached flag or
11439         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
11440         for SRE types.
11441
11442 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11443
11444         * verify.c: Reapplied a small part of the reverted changes.
11445
11446 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11447
11448         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
11449
11450         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
11451         previously in managed code.
11452         (mono_monitor_exit): Ditto.
11453         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
11454
11455         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
11456         the managed definition.
11457
11458 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
11459
11460         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
11461
11462 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11463
11464         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
11465         
11466         * monitor.c: Add some micro optimizations.
11467
11468         * icall.c (type_from_typename): Handle 'bool'.
11469
11470 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
11471
11472         * verify.c: Implement constructor verification per P III 1.8.1.4.
11473         Fixes #396716.
11474
11475 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11476
11477         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
11478         holding the assemblies lock here too.
11479
11480 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11481
11482         * verify.c: Kill stack_top function.
11483
11484 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11485
11486         * verify.c: Kill stack_get function.
11487
11488 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11489
11490         * verify.c (mono_method_verify): Last change broke the build. Fixed.
11491
11492 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11493
11494         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
11495         more reliable.
11496
11497         * verify.c (mono_method_verify): Inflate params and locals to avoid
11498         mismatch when checking for compatibility.
11499
11500 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
11501
11502         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
11503         Length prefix should be size in bytes. Fix bug #339530.
11504         
11505         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
11506         Length prefix should be size in bytes. Fix bug #339530.
11507
11508         Code is contributed under MIT/X11 license.
11509
11510 2008-06-05  Bill Holmes <billholmes54@gmail.com>
11511
11512         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
11513
11514         Contributed under MIT/X11 license.
11515
11516 2008-06-05  Martin Baulig  <martin@ximian.com>
11517
11518         * mono-debug-debugger.c
11519         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
11520
11521 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
11522
11523         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
11524         while holding the assemblies lock to prevent deadlocks. Handle the case
11525         where the search hook returns NULL but the assembly was still loaded.
11526         Fixes #323696.
11527
11528         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
11529         modify domain state.
11530
11531 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
11532
11533         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
11534         * Makefile.am (pedump_LDADD): Post-process object files and
11535         add dtrace-generated object file, if necessary.
11536
11537         Code is contributed under MIT/X11 license.
11538
11539 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11540
11541         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
11542
11543 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11544
11545         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
11546
11547 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11548
11549         * threads.c: Try to free everything from the delayed free table
11550         when shutting down threads, and set the variable to NULL after the
11551         table is freed so that calling
11552         mono_thread_hazardous_try_free_all() when shutting down the root
11553         domain doesn't crash.
11554
11555 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11556
11557         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
11558         the caller if resulting type was inflated.
11559
11560         * class.c (mono_class_create_from_typespec): Free the MonoType if it
11561         was inflated.
11562
11563         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
11564
11565
11566 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
11567
11568         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
11569         class library tests.
11570
11571         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
11572         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
11573         #396989.
11574
11575 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11576
11577         * domain.c, domain-internals.h: The JIT infos are now freed by the
11578         JIT info table code.  They are freed immediately if there only a
11579         single JIT info table in circulation.  If there is more, the free
11580         is delayed via a queue.
11581
11582         * threads.c, threads-types.h: New hazard pointer function for
11583         freeing all freeable delayed items in one sitting.
11584
11585 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11586
11587         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
11588
11589         * reflection.c (typebuilder_setup_properties): Same.
11590
11591         * reflection.c (typebuilder_setup_events): Same.
11592
11593 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11594
11595         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
11596         and use it for allocating memory.
11597
11598         * reflection.c (mono_marshal_spec_from_builder): Same.
11599
11600         * reflection.c: Change code to use new signatures.
11601
11602         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
11603
11604 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11605
11606         * decimal.c (rescale128): Put back one line which was accidently commented
11607         out.
11608         
11609         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
11610         to cause crashes.
11611
11612 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11613
11614         * reflection.c (mono_reflection_generic_class_initialize): Name must
11615         be always malloc'ed so we can free it later on. Do this for field, property
11616         and event.
11617
11618         * metadata.c (free_generic_class): Free field, property and event names.
11619
11620 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11621
11622         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
11623         instead of g_memdup.
11624
11625         * reflection.c (typebuilder_setup_fields): Same.
11626
11627 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11628
11629         * decimal.c (rescale128): Optimize this function a bit more.
11630
11631 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11632
11633         * metadata.c (free_generic_class): Release some memory from
11634         SRE generic classes.
11635
11636 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11637
11638         * reflection.c (mono_image_get_generic_field_token): No reference
11639         to name is kept, free it.
11640
11641         * reflection.c (mono_reflection_generic_class_initialize): Free
11642         more memory of the inflated field.
11643
11644 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11645
11646         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
11647         code.
11648
11649 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
11650
11651         * reflection.c (mono_dynamic_image_free): Release memory used by
11652         MonoDynamicImage::array_methods elements.
11653
11654         * reflection.c (assembly_add_win32_resources): Release memory after
11655         encoding.
11656
11657 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
11658
11659         * decimal.c (log2_32): Use an optimized version for this function too.
11660         
11661         * decimal.c (log2_64): Fix this on 32 bit machines.
11662
11663 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
11664
11665         * class.c (mono_dup_array_type): Implement allocation using a mempool.
11666
11667         * class.c (mono_metadata_signature_deep_dup): Same.
11668
11669         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
11670         a mempool.
11671
11672         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
11673
11674         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
11675
11676         * metadata-internals.h: Added mono_metadata_signature_dup_full.
11677
11678         * class-internals.h: Update signatures to take a MonoMemPool.
11679
11680 2008-06-02  Dick Porter  <dick@ximian.com>
11681
11682         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
11683         * icall-def.h: Add
11684         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
11685         FormatMessage API to get the error text.  Fixes bug 321827.
11686
11687 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
11688
11689         * decimal.c: Add some micro optimizations to make decimal operations faster.
11690
11691 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
11692
11693         * reflection.c (method_encode_clauses): Take a mempool
11694         as parameter and use it to allocate the clause array.
11695
11696         * reflection.c (mono_image_get_field_on_inst_token): Free
11697         the inflated type after encoding it.
11698
11699         * reflection.c (mono_dynamic_image_free): Free each element
11700         of MonoDynamicImage::gen_params.
11701
11702         * reflection.c (reflection_methodbuilder_to_mono_method):
11703         Allocate the generic param array from the mempool.
11704         Allocate signature params from the mempool.
11705
11706         * reflection.c (mono_reflection_generic_class_initialize):
11707         Free inflated fields after been used.
11708
11709 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
11710
11711         * icall.c: Reapply the memory leak fixes as they no
11712         longer make mono crash.
11713
11714 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
11715
11716         * reflection.c (mono_type_get_object): Don't store the suplied
11717         MonoType with type_hash. A caller which pass a type that
11718         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
11719         might end with a pointer to freed memory.
11720         The solution is to use byval_arg or this_arg from the associated
11721         MonoClass of the supplied type.
11722
11723 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
11724
11725         * icall.c: Revert the rest of the last change as it breaks the build too.
11726
11727 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11728
11729         * icall.c: Revert a leak fix as it's breaking the build.
11730
11731 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11732
11733         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
11734
11735 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11736
11737         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
11738
11739 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11740
11741         * icall.c: Fix some memory leaks.
11742
11743 2008-05-29  Dick Porter  <dick@ximian.com>
11744
11745         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
11746         async socket operations from the pending list when a socket
11747         closes.  Leaving it until the threadpool services the event
11748         exposes a race condition when a socket descriptor is reused.
11749         Fixes bug 377589.
11750
11751 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11752
11753         * object.c: Fix negative index check for array alocation.
11754
11755 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11756
11757         * icall.c, marshal.c: Delegate wrappers should skip visibility.
11758         This check is performed by the verifier for IL created delegates
11759         and by Delegate::CreateDelegate for programatically created ones.
11760         Fixes #372406.
11761
11762 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11763
11764         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
11765         Fix code to use mono_array_size_t instead of int.
11766
11767         Based on patch by Luis F. Ortiz.
11768         Contributed under X11 license.
11769         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11770
11771 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11772
11773         * icall.c: Added ves_icall_System_Array_GetLongLength and
11774         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
11775         arrays.
11776
11777         * icall.h: Export both new functions.
11778
11779         Based on patch by Luis F. Ortiz.
11780         Contributed under X11 license.
11781         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11782
11783 2008-05-28  Martin Baulig  <martin@ximian.com>
11784
11785         The debugger now requires exactly r103463.
11786
11787         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
11788         This version is not supported by the debugger, wait for 72.
11789
11790 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11791
11792         * object.h: Changed array related functions to use
11793         mono_array_size_t instead of guint32. Forgot to commit this file.
11794
11795         Patch by Luis F. Ortiz.
11796         Contributed under X11 license.
11797         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11798
11799
11800 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11801
11802         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
11803         don't define it. Use the number literal instead.
11804
11805 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11806
11807         * icall.c: Changed array related functions to use
11808         mono_array_size_t instead of guint32.
11809
11810         * icall.c (ves_icall_System_Array_GetLength): Check for length
11811         overflow under MONO_BIG_ARRAYS.
11812
11813         Based on patch by Luis F. Ortiz.
11814         Contributed under X11 license.
11815         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11816
11817 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11818
11819         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
11820
11821         Based on patch by Luis F. Ortiz.
11822         Contributed under X11 license.
11823         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11824
11825 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11826
11827         * object.c, object.h: Changed array related functions to use
11828         mono_array_size_t instead of guint32.
11829
11830         Patch by Luis F. Ortiz.
11831         Contributed under X11 license.
11832         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11833
11834 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11835
11836         * object.h: Introduced mono_array_size_t typedef. This must be used
11837         in all places an array length is expected. This is 64bits wide if
11838         MONO_BIG_ARRAYS is enabled.
11839
11840         Patch by Luis F. Ortiz.
11841         Contributed under X11 license.
11842         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11843
11844 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
11845
11846         * security-manager.c class.c: Set the class exception info by calling
11847         mono_class_set_failure ().
11848
11849         * class.c (mono_class_get_exception_data): New accessor function.
11850         (mono_class_set_failure): Store exception_data in the property hash.
11851
11852         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
11853         the struct as a property.
11854
11855         * loader.c (mono_get_method_full): Store the lookup result for method
11856         tokens in method_cache, the others in methodref_cache to decrease the memory
11857         usage of hash tables.
11858
11859         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
11860         (mono_image_init): method_cache is lazy inited now.
11861
11862         * metadata-internals.h (struct _MonoImage): Change method_cache to
11863         a MonoValueHashTable, add a separate methodref_cache.
11864
11865 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
11866
11867         * number-formatter.h: Fix tables to avoid arithemtic overflow in
11868           Double.ToString as exposed by Bug #383531.
11869
11870 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
11871
11872         * number-formatter.h: Make some tables static.
11873
11874         * class.c (mono_method_set_generic_container): New accessor function.
11875         (mono_method_get_generic_container): Ditto.
11876
11877         * class-internals.h (struct _MonoMethod): Remove rarely used 
11878         'generic_container' field, store it in the property hash instead. Add 
11879         'is_generic' boolean field instead.
11880
11881         * image.c (mono_image_init): Initialize property_hash.
11882         (mono_image_close): Destroy property_hash.
11883
11884         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
11885         hold rarely used fields of runtime structures belonging to this image.
11886
11887         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
11888         to get/set method->generic_container.
11889
11890         * loader.c (mono_get_method_from_token): Avoid loading the method header for
11891         generic methods.
11892
11893 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
11894
11895         * class.c (mono_class_inflate_generic_method_full): Don't increase
11896         mono_stats.inflated_method_count for methods found in the cache.
11897
11898         * threads.c (mono_thread_request_interruption): Add a comment about 
11899         QueueUserAPC ().
11900
11901 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
11902
11903         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
11904         interface_offsets_packed table.
11905         
11906         * class.c (mono_class_init): Remove some dead code.
11907
11908         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
11909         mono_class_setup_vtable () when CAS is active to detect security problems.
11910
11911 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
11912
11913         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
11914
11915         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
11916         parameters as it's irrelevant for delegate checking.
11917
11918 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
11919
11920         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
11921
11922         * class.c (mono_class_init): Control the creation of a generic vtable using
11923         a global which is true by default, but set to false by the runtime startup code.
11924         
11925         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
11926         Disabled for now since it breaks the embedding API.
11927         Move the setup of class->methods for arrays to mono_class_setup_methods ().
11928         (mono_class_setup_methods): Add a memory barrier.
11929
11930         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
11931         when mono_class_init () doesn't compute the generic vtable.
11932         
11933 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
11934         * profiler.c: Added mono_profiler_install_statistical_call_chain,
11935         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
11936         to support call chains (backtrace) in the stat profiler.
11937         * profiler.c, profiler-private.h: Likewise.
11938
11939 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11940
11941         * generic-sharing.c: Init generic class when a method of it is
11942         requested via a runtime generic context.
11943
11944 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
11945
11946         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
11947
11948         * reflection.c (mono_type_get_object): Add a FIXME.
11949
11950         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
11951
11952         * class.c (mono_class_get_method_by_index): New helper function, returning an
11953         entry in the class->methods array.
11954
11955 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
11956
11957         * class.c (mono_class_init): Only do the array optimization for szarrays. 
11958         Avoid creating a generic vtable for generic instances as well.
11959         (mono_class_get_method_from_name_flags): Don't search in the metadata for
11960         generic instances.
11961
11962 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
11963
11964         * loader.c (mono_get_method_constrained): Inflate the signature
11965         with class context. Fix #325283.
11966
11967 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
11968
11969         * object.c (mono_class_create_runtime_vtable): Add a comment.
11970
11971         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
11972         where needed.
11973         (setup_interface_offsets): Handle the case when this is called twice for arrays.
11974         (mono_class_setup_vtable_general): Add an assert.
11975         (mono_class_init): Avoid creating a generic vtable for arrays.
11976
11977         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
11978         here, let mono_class_init () do that.
11979
11980         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
11981         interfaces in mscorlib.
11982
11983         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
11984         interfaces. Add some comments.
11985         (mono_class_init): Call mono_class_setup_methods () here since it is no
11986         longer called by mono_class_setup_vtable ().
11987
11988         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
11989         not set in class->vtable.
11990         (mono_class_create_runtime_vtable): Reenable the disabled code.
11991
11992         * object.c (mono_class_create_runtime_vtable): Disable the last change for
11993         now as it causes some test failures.
11994
11995         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
11996         if using the vtable trampoline. Also remove some strange code which put the
11997         generic methods themselves into the vtable slots. Remove the AOT init_vtable
11998         stuff as it is no longer needed.
11999
12000 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
12001
12002         * pedump.c: Give make --verify all option check code as well.
12003         Using --verify code won't check for metadata now.
12004
12005 2008-05-19  Martin Baulig  <martin@ximian.com>
12006
12007         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
12008
12009         * mono-debug.c
12010         (_mono_debug_using_mono_debugger): New global variable; it's set
12011         directly by the debugger, so mono_debug_using_mono_debugger() also
12012         works after attaching.
12013
12014 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
12015
12016         * object.c (mono_class_create_runtime_vtable): Use memory barriers
12017         as we do double checked locking on MonoClass::runtime_info and
12018         MonoClassRuntimeInfo::domain_vtables.
12019
12020 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
12021
12022         * debug-helpers.c (print_field_value): Fix a warning.
12023
12024 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
12025
12026         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
12027         set in the AOT case.
12028
12029 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
12030
12031         * class.c (mono_class_setup_vtable_general): Use memory barriers
12032         as we do double checked locking on MonoClass::vtable.
12033
12034 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
12035
12036         * reflection.c (resolve_object): Inflate only if the generic context
12037         is not null. Fixes #389886.
12038
12039 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
12040
12041         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
12042         instead of g_free.
12043
12044         Code is contributed under MIT/X11 license.
12045
12046 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12047
12048         * class.c: Revert unrelated change.
12049
12050 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12051
12052         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
12053         a generic instantiation, use mono_class_from_mono_type instead of playing
12054         with MonoType directly.
12055
12056 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12057
12058         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
12059         checks must ignore generic instantiations, so mono_class_has_parent is not
12060         suitable. Fixes #390128.
12061
12062 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
12063
12064         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
12065         it to avoid registering tokens during metadata generation. Fixes #390023.
12066
12067 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
12068
12069         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
12070         consistent.
12071
12072         Contributed under MIT/X11 license.
12073
12074 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
12075
12076         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
12077         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
12078         to fixup the EXE image.
12079         (mono_cleanup): Use mono_close_exe_image.
12080         (mono_close_exe_image): New function.
12081         * image.c: Include "marshal.h".
12082         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
12083         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
12084         counting when the image is loaded outside of mono_image_open_full. Set status
12085         based on GetLastError.
12086         * coree.c: Include required headers. Add init_from_coree.
12087         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
12088         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
12089         (_CorExeMain): Set init_from_coree.
12090         (CorExitProcess): Only call ExitProcess for now.
12091         (CorBindToRuntimeEx): New stub implementation.
12092         (CorBindToRuntime): New function.
12093         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
12094         (MonoFixupExe): ILONLY executables require no fixups.
12095         (mono_set_act_ctx): New function to set activation context.
12096         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
12097         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
12098         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
12099         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
12100         as MONO_INTERNAL.
12101         * domain-internals.h: Add mono_close_exe_image.
12102
12103         Contributed under MIT/X11 license.
12104
12105 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
12106
12107         * metadata.c (mono_metadata_compute_size): Correctly calculate field
12108         size for generic param and event tables. Fixes #388977.
12109
12110 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
12111
12112         * loader.c (mono_method_signature): Use memory barriers because of the double
12113         checked locking pattern.
12114
12115         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
12116         aborting or aborted as well. Fixes #376391.
12117         
12118         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
12119         existing runtime state in the Suspend handler during shutdown.
12120
12121 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
12122
12123         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
12124
12125         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
12126         which are starting up or shutting down.
12127
12128         * threads.c (mono_threads_set_shutting_down): Don't return a value since
12129         this function never returns if the runtime is already shutting down.
12130
12131         * icall.c (ves_icall_System_Environment_Exit): Update after 
12132         mono_threads_set_shutting_down () signature change.
12133         
12134 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
12135
12136         * class.c: Added can_access_instantiation to verify if the instantiation
12137         is visible. Fix access check for nested types as they returned TRUE
12138         before doing type and generic instantiation visibility checks.
12139
12140 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
12141
12142         * reflection.c (mono_reflection_create_generic_class): The created type
12143         must have a different container from its TypeBuilder. Otherwise they
12144         will end sharing generic arguments, which is wrong.
12145
12146         Due to the sharing, making a generic instance of the created type using
12147         the TypeBuider generic arguments resulted in the generic type definition
12148         been returned, which is wrong as well.
12149
12150         As a bonus the code was leaking the type_params array. This memory should
12151         be allocated from the image mempool.
12152
12153         This fixes bug #354047.
12154
12155 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
12156
12157         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
12158         to here         as they are now used in assembly.c new code.
12159         Added a skipverification flag to MonoAssembly.
12160         New internal function mono_assembly_has_skip_verification.
12161
12162         * assembly.c: New function mono_assembly_has_skip_verification. It checks
12163         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
12164         part of #387274.
12165
12166 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12167
12168         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
12169         needed. Fixes #387034.
12170
12171         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
12172
12173 2008-05-06  Miguel de Icaza  <miguel@novell.com>
12174
12175         * assembly.c (mono_assembly_load_reference): Prevent crash while
12176         disassembling Silverlight 2.0 executables while we still do not
12177         have GACed libraries.
12178
12179 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12180
12181         * reflection.c: Special case generic type definitions as well. Fixes #383444.
12182
12183 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
12184
12185         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
12186         of the dynamic case. Fixes #387404.
12187
12188 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12189
12190         *verify.c (mono_verifier_is_class_full_trust): If under
12191         verify_all and the verifier mode was not set, only
12192         gac and corlib types are fulltrust. This makes --verify-all
12193         usable to detect unverifiable code, which is the expected
12194         use case.
12195
12196 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12197
12198         * verify.h: Ops, commited the header with debug
12199         enabled.
12200
12201 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12202
12203         * verify.c (merge_stack): Use the new value on unverifiable
12204         stack merges.
12205
12206         * verify.c (verify_type_compatibility_full): Comparison
12207         of nullable types can't use mono_class_is_assignable_from.
12208
12209         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
12210         that makes all verification errors be reported.
12211
12212         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
12213         mono_method_verify.
12214
12215 2008-05-05  Robert Jordan  <robertj@gmx.net>
12216
12217         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
12218         support for value types. See #386415.
12219
12220         * object.c: comments.
12221
12222         Code is contributed under MIT/X11 license.
12223
12224 2008-05-05  Martin Baulig  <martin@ximian.com>
12225
12226         * debug-mono-symfile.h
12227         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
12228         for old pre-terrania symbol files.
12229
12230 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
12231
12232         * mono-config.c: Add ppc64 architecture.
12233
12234         Code is contributed under MIT/X11 license.
12235
12236 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
12237
12238         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
12239           PPC64 uses function descriptors as well.
12240
12241         Code is contributed under MIT/X11 license.
12242
12243 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
12244
12245         * object.c (compute_class_bitmap): Ignore literal static fields.
12246
12247         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
12248         var has an invalid format.
12249         (describe_ptr): Add some sanity checks for the vtable.
12250         (add_nursery_frag): Clear unused nursery fragments.
12251         (major_collection): Clear all remaining nursery fragments.
12252
12253 2008-05-03  Robert Jordan  <robertj@gmx.net>
12254
12255         * image.c, metadata-internals.h: add thunk_invoke_cache.
12256
12257         * marshal.c, marshal.h: implement
12258         mono_marshal_get_thunk_invoke_wrapper ().
12259
12260         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
12261
12262         Code is contributed under MIT/X11 license.
12263
12264 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
12265
12266         * verify.c (do_leave): Empty the stack.
12267
12268 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
12269
12270         * class.c (mono_class_is_assignable_from): Variance
12271         doesn't work between reference and value types. For example,
12272         given type C<T+>, C<int32> is not assignable to C<object>.
12273         Break the argument checking loop on first error. 
12274
12275 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
12276
12277         * icall.c : base64_to_byte_array() needs some more strict
12278           check for sequence of '=' characters. Patch by Santa
12279           Marta (http://deee.g.hatena.ne.jp/santamarta).
12280
12281           Contributed under MIT/X11 license.
12282           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
12283
12284 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
12285
12286         * domain.c: Disable LoadLibrary support to fix Win32 build.
12287
12288         Code is contributed under MIT/X11 license.
12289
12290 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
12291
12292         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
12293         to help with cache behaviour.
12294
12295 2008-05-01  Miguel de Icaza  <miguel@novell.com>
12296
12297         * appdomain.c (mono_domain_from_appdomain): Add new accessor
12298         method. 
12299
12300 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
12301
12302         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
12303
12304 2008-05-01  Dick Porter  <dick@ximian.com>
12305
12306         * process.c (process_get_fileversion): Only pass 16 bits of
12307         language ID to VerLanguageName.  Fixes bug 381204.
12308
12309 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
12310
12311         * verify.c (mono_method_verify): Fix the comparison
12312         operator for code bounds check.
12313
12314 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
12315
12316         * verify.c (mono_method_verify): Check the bounds of
12317         all access of the code array.
12318
12319 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
12320
12321         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
12322
12323 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
12324
12325         * image.c (mono_image_strong_name_position): Fix return value when the rva is
12326         not valid.
12327
12328 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
12329
12330         * loader.c (mono_get_method_from_token, mono_method_signature): Add
12331         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
12332         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
12333         fixup main EXE images when using mono.exe for mixed-mode assembly support.
12334         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
12335         mono_runtime_load.
12336         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
12337         runtime initialization from metadata.
12338         * assembly.c: Remove obsolete ceGetModuleFileNameA.
12339         (mono_set_rootdir): Use mono_get_module_file_name.
12340         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
12341         handles.
12342         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
12343         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
12344         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
12345         MonoCLIImageInfo. Add support for module handles.
12346         (load_cli_header): Update mono_cli_rva_image_map signature.
12347         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
12348         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
12349         (mono_image_rva_map): Add support for module handles.
12350         (mono_image_ensure_section_idx): Add support for module handles.
12351         (mono_image_close): Add support for module handles.
12352         (do_load_header): Add support for module handles.
12353         (mono_image_open_from_module_handle): New function for internal use.
12354         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
12355         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
12356         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
12357         handles.
12358         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
12359         * image.h: Add mono_image_fixup_vtable.
12360         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
12361         support.
12362         * coree.h: New file.
12363         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
12364         unsupported native code.
12365         (mono_marshal_set_callconv_from_modopt): New function splitted from
12366         mono_marshal_get_managed_wrapper.
12367         (mono_marshal_get_managed_wrapper): Use
12368         mono_marshal_set_callconv_from_modopt.
12369         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
12370         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
12371         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
12372         that results in a deadlock when the runtime is loaded in _CorDllMain.
12373         * Makefile.am: Add coree.c and coree.h.
12374
12375         Contributed under MIT/X11 license.
12376
12377 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12378
12379         * generic-sharing.c: Search for type arguments in array element
12380         types as well.
12381
12382 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12383
12384         * class-internals.h, generic-sharing.c: New, small runtime generic context.
12385
12386         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
12387
12388         * object.c: Don't setup the RGCTX when the vtable is created,
12389         because we're setting it up lazily now.
12390
12391 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
12392
12393         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
12394         64 bit support.
12395
12396 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
12397
12398         * verify.c (verify_class_for_overlapping_reference_fields): 
12399         If class is under fulltrust allow reference types to overllap
12400         if they have the same RVA.
12401
12402 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
12403
12404         * pedump.c: Added new flag valid-only, that makes the verifier
12405         behaves just like --security=validil. It won't fail type load
12406         due to unverifiable restrictions.
12407
12408 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
12409
12410         * class-internals.h (struct MonoMethod): Added a verification_success
12411         field to cache verifier executions. Reduced MonoMethod:slot size by
12412         one bit.
12413
12414 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12415
12416         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
12417         instead of a 'vt' argument to save an indirection and to allow these to be used
12418         for valuetypes.
12419         (scan_vtype): New helper function to scan an area using a gc descriptor.
12420         (mono_gc_wbarrier_value_copy): Implement this.
12421         (handle_remset): Add support for REMSET_VTYPE.
12422         (find_in_remset_loc): Ditto.
12423         (mono_gc_base_init): Allow some debugging options to be controlled through the
12424         use of the MONO_GC_DEBUG env variable.
12425         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
12426         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
12427
12428 2008-04-23  Martin Baulig  <martin@ximian.com>
12429
12430         * domain.c (mono_domain_create): Move the call to
12431         mono_debug_domain_create() down, after allocating the domain id.
12432
12433 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
12434
12435         verify.c (verify_class_for_overlapping_reference_fields): Skip
12436         static fields while verifying for overlapping fields as they
12437         don't matter at all.
12438
12439 2008-04-23  Marek Habersack  <mhabersack@novell.com>
12440
12441         * domain-internals.h: added a declaration of
12442         mono_make_shadow_copy.
12443
12444         * assembly.c (mono_assembly_open_full): shadow copying of
12445         assemblies moved to here, so that all the assemblies within the
12446         application domain's private binary directories can be
12447         processed. Fixes bug #380546
12448
12449         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
12450         mono_make_shadow_copy and made non-static. The decision whether
12451         to shadow-copy an assembly is made based on its location - it's
12452         copied if it's in one of the private application domain binary
12453         directories and its different to the target file in the shadow
12454         directory. Fixes bug #380546
12455
12456 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12457
12458         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
12459
12460         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
12461         types.
12462
12463         * reflection.c (mono_image_create_token): Handle 
12464         Method/ConstructorOnTypeBuilderInst.
12465         (resolve_object): Ditto.
12466         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
12467         so it can be called from resolve_object. Also handle the case when the inflated
12468         class already has its methods setup.
12469
12470 2008-04-21  Martin Baulig  <martin@ximian.com>
12471
12472         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
12473
12474 2008-04-20  Geoff Norton  <gnorton@novell.com>
12475
12476         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
12477         pointer dereference.
12478
12479 2008-04-15  Marek Habersack  <mhabersack@novell.com>
12480
12481         * appdomain.c (try_load_from): if IOMAP is in effect, call the
12482         portability API to look up the assembly file. Fixes behavior in
12483         situations when the application has a bin/ directory, but the
12484         assembly search patch refers to Bin/ (and thus the requested file
12485         name is Bin/SomeLibrary.dll). Fixes bug #379888
12486
12487 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
12488
12489         verify.c (mono_type_is_generic_argument): Extracted this check
12490         from a dozen places to here.
12491
12492         verify.c: Fixed all issues related to boxing generic arguments
12493         and their constraints.
12494
12495 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
12496
12497         verify.c (mono_class_interface_implements_interface): Fix win32 build.
12498
12499 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12500
12501         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
12502         isn't finished yet. Fixes #363447.
12503
12504 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
12505
12506         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
12507         Fixes #346419.
12508
12509 2008-04-13  Jb Evain  <jbevain@novell.com>
12510
12511         * domain.c: update the 2.1 profile versions.
12512         Merged from the Moonlight 2 branch.
12513
12514 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
12515
12516         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
12517         mscorlibs for the non-refonly case as well.
12518
12519         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
12520         in mono_assembly_load_from_full (). Fixes #378924.
12521
12522 2008-04-11  Geoff Norton  <gnorton@novell.com>
12523
12524         * icall.c: The global extern environ doesn't exist on Mac.  We
12525         need to call NSGetEnviron instead.
12526
12527 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12528
12529         verify.c: Add generic method constraint verification.
12530
12531 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12532
12533         class.c (mono_class_inflate_generic_method_full): Add a long
12534         explanation to the is_mb_open hack. Remove the FIXME.
12535
12536 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12537
12538         * verify.c (mono_method_verify): Mark all unknown opcodes
12539         as invalid. Mark jmp as unverifiable.
12540
12541 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12542
12543         * verify.c: Add code to do type constraint verification on class instances.
12544
12545         * verify.c (mono_verifier_verify_class): Use the type constraint 
12546         verification code.
12547
12548 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12549
12550         * class.c (mono_class_get_field_default_value): Don't pass cindex
12551         as hint to mono_metadata_get_constant_index. The local is not initialized
12552         and should contain garbage most of the time. This could only work
12553         with a lot of luck.
12554
12555 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
12556
12557         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
12558
12559 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
12560
12561         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
12562
12563         * class.c (mono_class_from_generic_parameter): Save the token of the
12564         generic param in MonoClass::sizes.generic_param_token.
12565
12566         * reflection.c (mono_custom_attrs_from_class): If the class type is
12567         VAR or MVAR retrieve the attributes of the generic param.
12568
12569 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12570
12571         * class.c (mono_class_init): Do class verification if the verifier
12572         is enabled.
12573
12574 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12575
12576         * verify-internal.h: Added mono_verifier_verify_class.
12577
12578         * verify.c: Added mono_verifier_verify_class. It checks for
12579         classes with explicit layout that have overlapping reference fields.
12580
12581         * pedump.c: Init the verifier state prior to verification. Fixed
12582         command line arguments.
12583
12584 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12585
12586         * Makefile.am: Added verify-internals.h, hopefully fix the build.
12587
12588 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12589
12590         * verify-internals.h: Fix a warning.
12591
12592 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
12593
12594         * verify-internals.h: New header with the verifier configuration
12595         extracted from mini.c.
12596
12597         * verify.c: Implemented the new functions exported by verify-internals.h.
12598
12599 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
12600
12601         * verify.c: Add proper verification of ckfinite.
12602
12603 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12604
12605         * verify.c (do_conversion): Improved error message to something
12606         more meanfull.
12607
12608         * verify.c (check_is_valid_type_for_field_ops): Fix to work
12609         with primitive types.
12610
12611 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12612
12613         * verify.c: Added tail prefix checking. Marked icall
12614         as unverifible.
12615
12616 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12617
12618         * verify.c: Fix the detection of branches to the middle
12619         of an instruction.
12620
12621 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
12622
12623         * verify.c: Implemented verification of volatile. and
12624         unaligned. prefix. Check if a type is valid after retrieving it.
12625
12626 2008-04-01  Dick Porter  <dick@ximian.com>
12627
12628         * process.c (process_get_fileversion): If there's no string block,
12629         set the file language to en_US.  Fixes the other new part of bug
12630         374600.
12631
12632 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
12633
12634         * class.c: New functions mono_method_can_access_field_full and
12635         mono_method_can_access_method_full. They perform type visibility
12636         and type site check.
12637
12638         * class-internal.h: Added exported functions.
12639
12640         * verify.c: Use new functions to implement proper visibility checks.
12641
12642 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
12643
12644         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
12645
12646 2008-03-28  Dick Porter  <dick@ximian.com>
12647
12648         * process.c (process_get_fileversion): Use the first language ID
12649         we see, rather than insisting on an invariant language.  Fixes bug
12650         374600.
12651
12652 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
12653
12654         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
12655         the streams to fix reading of invalid memory later.
12656
12657         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
12658         to ease debugging.
12659
12660 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12661
12662         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
12663         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
12664
12665 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
12666         * threads.h: Added MonoThreadManageCallback type and
12667         mono_thread_set_manage_callback prototype
12668         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
12669         (used to store the mono_thread_manage callback).
12670         * threads.c: Added mono_thread_set_manage_callback, and handle
12671         "MonoThread->manage_callback" in build_wait_tids.
12672
12673 2008-03-26  Dick Porter  <dick@ximian.com>
12674
12675         * process.c (process_get_fileversion): Set FileVersionInfo strings
12676         to Empty when the resource doesn't have the particular info.
12677         Fixes bug 355717.
12678
12679 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
12680
12681         * verify.c (mono_method_verify): Proper prefix validation.
12682
12683 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12684
12685         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
12686         itself in a separate argument instead of throwing them. Fixes #373448.
12687
12688         * appdomain.c: Bump corlib version.
12689
12690 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
12691
12692         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
12693
12694 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
12695
12696         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
12697         version macros.
12698
12699 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12700
12701         * generic-sharing.c, class-internals.h: Code for putting
12702         reflection types into the runtime generic context.
12703
12704 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
12705
12706         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
12707         Fixes #340662. 
12708
12709
12710 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
12711
12712         * verify.c (VerifyContext): Added instruction prefix data to the struct.
12713
12714         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
12715
12716         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
12717
12718         * verify.c (do_cast): Let the result value keep the boxed status.
12719
12720         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
12721
12722 2008-03-17  Jb Evain  <jbevain@novell.com>
12723
12724         * reflection.c: when running on a 2.0 runtime, emit
12725         unconditionally the #~ header version as 2.0, and the
12726         CLI header version as 2.5, for symmetry's sake with csc.
12727
12728 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
12729
12730         * class.c: Remove the unused cache_interface_offsets stuff.
12731
12732         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
12733         profiler.c: Fix warnings.
12734
12735 2008-03-16  Mark Probst  <mark.probst@gmail.com>
12736
12737         * generic-sharing.c, class-internals.h: Support for putting
12738         methods into the runtime generic context.
12739
12740 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
12741
12742         * class.c (mono_class_setup_fields): Ignore calls made to this function for
12743         classes which are generic instances of not-yet finished typebuilders. Fixes
12744         #351172.
12745
12746         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
12747
12748 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
12749
12750         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
12751
12752         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
12753         field, replace it with a hash table in MonoDynamicImage.
12754
12755         * reflection.c (inflate_mono_method): Access the generic definition object from
12756         image->generic_def_objects instead of imethod->reflection_info.
12757
12758         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
12759
12760         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
12761         
12762         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
12763         function in reflection.c so it is easier to keep in sync with the dynamic image
12764         creation code.
12765
12766         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
12767         mono_image_close ().
12768
12769 2008-03-15  Mark Probst  <mark.probst@gmail.com>
12770
12771         * class.c (mono_class_generic_sharing_enabled): Disable generic
12772         sharing for all architectures except AMD64 and x86 to fix build.
12773
12774 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
12775
12776         * verify.c: Use the generic definition MonoGenericContext when available.
12777         Remove code for checking generics instance compatibility in favor of
12778         mono_class_is_assignable_from.
12779
12780 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12781
12782         * marshal.c, marshal.h, metadata-internals.h, image.c,
12783         wrapper-types.h: New wrapper for invoking a shared static method
12784         without having to pass the runtime generic context argument.
12785
12786 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
12787
12788         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
12789
12790 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12791
12792         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
12793         
12794         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
12795         create a token from a FieldOnTypeBuilderInst.
12796         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
12797         (resolve_object): Ditto.
12798
12799         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
12800         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
12801
12802 2008-03-14  Martin Baulig  <martin@ximian.com>
12803
12804         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
12805
12806         * debug-mono-symfile.h
12807         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
12808         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
12809
12810 2008-03-10  Martin Baulig  <martin@ximian.com>
12811
12812         * debug-mono-symfile.h
12813         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
12814         `lexical_block_table_offset'.
12815         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
12816         `lexical_blocks'.
12817         (MonoSymbolFile): Added `version'.
12818
12819         * mono-debug.h
12820         (MonoDebugLexicalBlockEntry): Removed.
12821         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
12822         `lexical_blocks'.
12823
12824         * mono-debug.c (mono_debug_add_method): Don't compute lexical
12825         blocks here; the debugger now does this internally.
12826
12827 2008-02-27  Martin Baulig  <martin@ximian.com>
12828
12829         * object.c (mono_runtime_exec_main): Call
12830         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
12831         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
12832
12833 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
12834
12835         * verify.c (verify_type_compatibility_full): Allow native int to be converted
12836         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
12837
12838 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
12839
12840         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
12841         ldftn with a virtual method.
12842
12843 2008-03-13  Geoff Norton  <gnorton@novell.com>
12844
12845         * decimal.c:  Only include memory.h if the platform has it.
12846
12847 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
12848
12849         * assembly.c, class.c, metadata-internals.h: make sure public key
12850         tokesns are compared in a case-insensitive way. Also, all
12851         the lookups in the GAC use a lowercase public key token
12852         (gaacutil already does the lowercasing on install). Fixes
12853         bug #369541.
12854
12855 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
12856
12857         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
12858         and return value.
12859
12860 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
12861
12862         * image.c: when someone loads a mscorlib from a file, return the
12863         currently loaded mscorlib (fixes bug #369253).
12864
12865 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
12866
12867         * class.c: handle types with no parents by forcing them to have
12868         System.Object as a parent and marking them as broken (this currently
12869         allows the first part of bug #369173 to work as well, likely because
12870         we don't check for typeload exceptions everywhere yet).
12871
12872 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
12873
12874         * class.c: more complete check that types belong to corlib
12875         (fixes second part of bug #369173).
12876
12877 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
12878
12879         * generic-sharing.c:  Including glib.h for the MSVC builds to define
12880           "inline" to "__inline" before including mono-membar.h.
12881           
12882         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
12883           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
12884           MSVC builds.
12885
12886         Contributed under MIT/X11 license.
12887
12888 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
12889
12890         * verify.c (do_invoke_method): Remove return type validation.
12891
12892         * verify.c (do_ret): Do return type validation at return site instead of
12893         call site.
12894
12895 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
12896
12897         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
12898
12899         * verify.c: Some todos cleaned and improved a few error messages.
12900
12901 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
12902
12903         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
12904
12905 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12906
12907         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
12908         system types correctly.
12909
12910         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
12911         function.
12912
12913 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
12914
12915         * assembly.c (build_assembly_name): Fix a warning.
12916
12917 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
12918
12919         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
12920         the called function takes an object type argument. Fixes storing or
12921         valuetypes across remoting as well as reducing memory usage.
12922         * image.c, metadata-internals.h: remove now unused ldfld_remote and
12923         stfld_remote wrapper caches.
12924
12925 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
12926
12927         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
12928         is not found.
12929
12930         * reflection.c (mono_image_register_token): New helper function to save
12931         a token->object mapping.        
12932
12933         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
12934         managed code.
12935
12936         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
12937         one dimension arrays. Fixes #367670.
12938         (mono_reflection_get_type_internal): Ditto.
12939
12940 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
12941
12942         * marshal.c: mono_load_remote_field_new() always returns object.
12943         so use the proper signature (fixes bug #366445).
12944
12945 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
12946         
12947         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
12948         add an 'inline_failure' flag instead.
12949
12950 2008-03-04  Mark Probst  <mark.probst@gmail.com>
12951
12952         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
12953         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
12954         contains the location of "this", used for exception handling.
12955
12956 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
12957
12958         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
12959         their size on all platforms for perf reasons.
12960
12961 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
12962
12963         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
12964         object-internal.h
12965
12966         * object-internal.h: Same.
12967
12968 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
12969
12970         * reflection.h: Fix the build I just broke.
12971
12972 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
12973
12974         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
12975         Test if a token is valid, this remove explicit usage of 
12976         MonoDynamicImage::tokens from the verifier code.
12977
12978         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
12979
12980         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
12981         instead of direct access to MonoDynamicImage::tokens.
12982
12983 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
12984
12985         * verify.c (token_bounds_check): Fix the build I just broke.
12986
12987 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
12988
12989         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
12990
12991         * verify.c (verifier_load_method): Fixed the errors message.
12992
12993         * verify.c (mono_method_verify): Fixed a debug message.
12994
12995 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
12996
12997         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
12998         mono-perfcounters.h, class-internals.h: support for predefined
12999         writable counters, query of categories and counters, bugfixes.
13000
13001 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
13002
13003         * verify.c (do_refanytype): Verify the refanytype opcode.
13004
13005         * verify.c (mono_method_verify): Use do_refanytype.
13006
13007 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
13008
13009         * verify.c (do_mkrefany): Verify the mkrefany opcode.
13010
13011         * verify.c (mono_method_verify): Use do_mkrefany.
13012
13013 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
13014
13015         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
13016         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
13017         implementation.
13018
13019 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13020
13021         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
13022         the type load exception.
13023
13024 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
13025
13026         * verify.c: Added a few FIXME for method signatures
13027
13028         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
13029         of mono_method_get_signature and get vararg call working. Removed unused
13030         checks for return value.
13031
13032         * verify.c (do_refanyval): Verify the refanyval opcode.
13033
13034         * verify.c (mono_method_verify): Implemented verification of arglist and
13035         use do_refanyval.
13036
13037 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13038
13039         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
13040         vtypes to marshal.c.
13041
13042         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
13043         it works for AOT as well.
13044
13045 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
13046
13047         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
13048         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
13049         the system time is adjusted.
13050
13051 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
13052
13053         * icall.c, icall-def.h: use the new time functions (fixes the
13054         non-monotonic behaviour of TickCount).
13055
13056 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13057
13058         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
13059         it breaks the build.
13060         
13061         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
13062         cattr is not finished yet.
13063
13064 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
13065
13066         * verify.c: Proper token validation for field, method and type.
13067
13068 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
13069
13070         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
13071
13072         * loader.c (method_from_memberref): Generate type load error instead of method missing
13073         if the type is not found.
13074
13075 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13076
13077         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
13078         some of the conversions caused the generation of a marshal directive exception.
13079
13080 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
13081
13082         verify.c: Report which exception should be thrown by the JIT.
13083         Added a lot of FIXME notes.
13084
13085 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13086
13087         * generic-sharing.c: Runtime generic context slots are not
13088         instantiated on init anymore.  Instead, provide function to do the
13089         instantiating on demand.
13090
13091         * class-internals.h: Added vtable to runtime generic context.
13092         Macros for encoding direct and indirect slot offsets in one
13093         guint32.
13094
13095 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13096
13097         * object.c, generic-sharing.c: Moved some generic sharing code
13098         from object.c to generic-sharing.c.
13099
13100         * generic-sharing.c: Added support for extensible runtime generic
13101         context.
13102
13103         * metadata-internals.h: Two new hash tables in MonoImage for
13104         extensible runtime generic context support.
13105
13106         * domain.c: Unregister generic vtables upon domain unloading.
13107
13108         * image.c: Destroy new hash tables upon image unloading.
13109
13110         * metadata.c: Unregister generic subclasses upon image unloading.
13111
13112         * class-internals.h: New data structure for runtime generic
13113         context template.  New fields in the runtime generic context for
13114         extensible part.
13115
13116         * Makefile.am: Added generic-sharing.c.
13117
13118 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
13119
13120         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
13121         there is a pending loader exception, raise it.
13122
13123         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
13124         same.
13125
13126         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
13127         same.
13128
13129         Fixes #363450.
13130
13131 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13132
13133         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
13134
13135         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
13136         
13137         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
13138         ref-only requests for compatibility with MS.
13139
13140 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
13141
13142         * reflection.c (mono_custom_attrs_from_method): Don't silently
13143         return an empty list for generic method instances.
13144         (mono_custom_attrs_from_param): Likewise.
13145
13146 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
13147             Raja R Harinath  <harinath@hurrynot.org>
13148
13149         Fix #354757
13150         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
13151         * class.c (mono_class_inflate_generic_method_full): Initialize it
13152         when a fully-open method is instantiated.
13153         * metadata.c (inflated_method_equal, inflated_method_hash): Update
13154         to new field.
13155         * reflection.c (inflate_mono_method): Don't create a temporary context.
13156
13157 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
13158
13159         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
13160         Compute correct value, to prepare for imethod->reflection_info going away.
13161
13162 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13163
13164         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
13165
13166 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
13167
13168         * verify.c: Implement skip visibility flag.
13169
13170 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
13171
13172         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
13173         which contains an extra field to tell the kind of exception that should be thrown.
13174
13175         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
13176
13177 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
13178
13179         * loader.c (mono_method_get_param_names): Initialize 'klass' after
13180         'method' is updated.
13181
13182 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
13183
13184         * class.c (mono_class_layout_fields): Set class->min_align for classes using
13185         explicit layout as well. Fixes #360375.
13186
13187 2008-02-11  Geoff Norton  <gnorton@novell.com>
13188
13189         * loader.c: Guard and dereference against inflated generic methods
13190
13191 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
13192
13193         * class.c: Include Retargetable spec in assembly name.
13194         * assembly.c: Always include PublicKeyToken spec in assembly name
13195         (with value "null" if assembly is not signed), and include
13196         Retargetable spec.
13197         * icall-def.h: Added icall for Assembly.get_fullname.
13198         * icall.c: Added icall returning the fullname of an assembly.
13199
13200 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13201
13202         * class.c (mono_class_setup_vtable_general): Add a missing call to
13203         mono_class_setup_methods () which is needed in the AOT case.
13204
13205 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
13206
13207         * verify.c (mono_type_get_stack_name): Added. Return the name for the
13208         stack type of the given MonoType.
13209
13210         * verify.c (verify_type_compatibility_full): Handle the void type.
13211
13212         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
13213         way stack merging works.
13214
13215         * verify.c (store_local): Improved verification message.
13216
13217         * verify.c (do_branch_op): If the merging is invalid, the method
13218         is unverifiable and not invalid. Improved error message.
13219
13220         * verify.c (merge_stacks): Properly merge a boxed valuetype and
13221         a reference type diferent than System.Object. Improved error
13222         message.
13223
13224 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
13225
13226         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
13227
13228         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
13229         type of an enum even if the argument is byref.
13230
13231         * verify.c: Replace all explicit uses of enumtype and enum_basetype
13232         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
13233
13234         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
13235
13236         *verify.c (verify_type_compatibility_full): Make enum types
13237         compatible with their base types.
13238
13239         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
13240         types are compatible for the special case of a boxed valuetype and
13241         System.Object.
13242
13243         * verify.c (verify_stack_type_compatibility): The function
13244         is_compatible_boxed_valuetype was extracted from here.
13245
13246         * verify.c (push_arg): Only set ctx->has_this_store if the method
13247         is not static.
13248
13249         * verify.c (do_ldelem): Fixed a typo in an error message and added
13250         strict check for mixing int32 and native int as the array type
13251         and ldelem type.
13252
13253         * verify.c (merge_stacks): Consider boxed valuetypes in the
13254         compatibility checks.
13255
13256 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
13257         * profiler.h: (MonoGCEvent): Added start-stop the world events.
13258
13259 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
13260         *class.c: use_new_interface_vtable_code: renamed the env var to have
13261         a "MONO_" prefix, and fix the logic to enable it by default.
13262
13263 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
13264         *class.c:
13265         mono_class_setup_vtable_general: rewrote the way in which interface
13266         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
13267         makes the code more maintainable.
13268         For now the old code is still there, and can be activated setting
13269         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
13270
13271 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
13272
13273         * verify.c: guarded some debug functions around and #ifdef.
13274
13275         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
13276
13277 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13278
13279         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
13280         changes for now since they seem to break too many things.
13281
13282 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13283
13284         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
13285         mono_marshal_find_nonzero_bit_offset): Added macro and function
13286         for finding the byte- and bit-offset of a bitfield within a
13287         struct.
13288
13289 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13290
13291         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
13292         (mono_marshal_get_struct_to_ptr): Ditto.
13293
13294         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
13295         cctor_signature.
13296
13297 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13298
13299         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
13300         between methods for non-corlib types.
13301
13302 2008-02-02  Geoff Norton  <gnorton@novell.com>
13303
13304         * loader.c (mono_method_get_param_names): Populate the parameter name for 
13305         generic parameters as well. (Fixes #342536)
13306
13307 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
13308
13309         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
13310
13311         * verify.c (do_invoke_method): Fix for calling with byref structs.
13312
13313         * verify.c (do_cast): push a boxed value type based on the type token and not
13314         the type of stack.
13315
13316 2008-01-31  William Holmes  <billholmes54@gmail.com>
13317
13318         * process.c (process_module_string_read): Check the size returned form 
13319           VerQueryValue to avoid out of memory exception. 
13320
13321 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13322
13323         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
13324         Handle properly modules which are not in the moduleref table. Fixes
13325         #356938.
13326
13327 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13328
13329         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
13330         the dynamic case which is now in managed code.
13331         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
13332
13333         * marshal.c (mono_string_to_bstr): Fix a warning.
13334         (init_com_provider_ms): Ditto.
13335
13336         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
13337
13338         * exception.c (mono_get_exception_out_of_memory): New helper function.
13339
13340 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
13341
13342         * marshal.c: Add support for BSTR marshalling
13343         using other COM systems.
13344
13345         Code is contributed under MIT/X11 license.
13346
13347 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13348
13349         * object.c (mono_runtime_invoke_array): reverted previous
13350         commit as it breaks the build.
13351
13352 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13353
13354         * object.c (mono_runtime_invoke_array): Verify arguments for
13355         invalid types. Fixes #348522.
13356
13357 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13358
13359         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
13360         non-final virtual calls using call. 
13361
13362         * verify.c (do_invoke): fixed some TODOs.
13363
13364         * verify.c (push_arg): set has_this_store for "ldarga 0".
13365
13366 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13367
13368         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
13369         which belong to an inflated class. Fixes #356531.
13370
13371 2008-01-26  Robert Jordan  <robertj@gmx.net>
13372
13373         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
13374         which resort to FindFirstFile when a certain error condition
13375         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
13376         Code is contributed under MIT/X11 license.
13377
13378 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
13379
13380         * marshal.c (emit_marshal_string): Fix out string marshalling
13381         to use specified encoding. Fixes #323900.
13382
13383         Code is contributed under MIT/X11 license.
13384
13385 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
13386
13387         * class.c (mono_class_inflate_generic_method_full): Don't modify
13388         iresult->context after cache check.
13389
13390 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
13391
13392         * class.c (mono_class_inflate_generic_method_full): Change the
13393         struct assignments to memcpy for better visibility and add some comments.
13394
13395 2008-01-23  Dick Porter  <dick@ximian.com>
13396
13397         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
13398         procedure, and make it work on windows.
13399
13400 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
13401
13402         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
13403         a MonoReflectionTypeBuilder since it is always of that type.
13404
13405         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
13406
13407         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
13408
13409         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
13410         
13411         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
13412
13413         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
13414
13415         * reflection.c (mono_reflection_create_runtime_class): Remove already created
13416         instantiations from the type cache.
13417
13418 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13419
13420         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
13421
13422         * verify.c (do_unbox_value): push a controled mutability managed pointer.
13423
13424 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13425
13426         * verify.c (do_ldstr): added, verifies if the #US token is valid.
13427
13428         * verify.c (mono_method_verify): removed old TODO
13429
13430 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13431
13432         * verify.c (do_newobj): add visibility check.
13433
13434 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13435
13436         * verify.c (do_load_function_ptr): add visibility check.
13437
13438 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
13439         *class.c:
13440         mono_generic_class_get_class: hook profiler events.
13441         mono_field_get_offset: added to support heap-shot in the new profiler.
13442         *class.h: exported mono_field_get_offset.
13443         * reflection.c:
13444         mono_reflection_setup_internal_class: hook profiler events.
13445
13446 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13447
13448         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
13449         argument here too and use it to avoid checking for pending exceptions if 
13450         possible.
13451
13452 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
13453
13454         * assembly.c (build_assembly_name): add arg for passing the assembly
13455         flags. Do not consider a PublicKey with value "null" valid.
13456         (mono_assembly_name_parse_full): added boolean argument that will be
13457         set if the assembly name contains a PublicKeyToken spec. Added support
13458         for the Retargetable spec for which only Yes or No are allowed as valid
13459         value. Consider assembly name invalid if Retargetable spec is set, but
13460         either version, culture or public key (token) are not specified.
13461         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
13462         with implementation in assembly.c.
13463         * icall.c (fill_reflection_assembly_name): also copy assembly flags
13464         from MonoAssemblyName.
13465         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
13466         introduced argument for mono_assembly_name_parse_full to know if the
13467         assembly name has a PublicKeyToken spec, and if it has instruct
13468         fill_reflection_assembly_name to use default value for keyToken (if
13469         PublicKeyToken is null).
13470
13471 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
13472
13473         * verify.c (mono_method_verify): fixed ovf ops with
13474         float values. They are unverifiable now.
13475
13476 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
13477
13478         * class.c (set_failure_from_loader_error): add BadImageException to the
13479         list of exceptions that can cause a type to fail to load.
13480
13481         * class.c (mono_class_get_exception_for_failure): same.
13482
13483 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
13484
13485         * verify.c (in_any_exception_block): added, check if offset
13486         is part of any exception handling clause.
13487
13488         * verify.c (get_stack_type): added VAR and MVAR types.
13489
13490         * verify.c (do_stobj): better error messages.
13491
13492         * verify.c (do_cpobj): added, check cpobj.
13493
13494         * verify.c (do_initobj): added, check initobj.
13495
13496         * verify.c (do_sizeof): added, check sizeof.
13497
13498         * verify.c (do_localloc): added, check localloc.
13499
13500         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
13501
13502 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13503
13504         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
13505         save_lmf/restore_lmf opcodes.
13506
13507         * threads.c (mono_threads_install_notify_pending_exc): New function to
13508         install a callback notifying the JIT there is a pending exception on a thread.
13509         (mono_thread_request_interruption): Call the new callback.
13510         (mono_thread_get_and_clear_pending_exception): New function to return the
13511         exception pending on a thread.
13512
13513         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
13514         to turn off checking for pending exceptions.
13515         (mono_marshal_get_native_wrapper): Ditto.
13516
13517 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13518
13519         * threads-types.h: Get rid of the unnecessary extern declarations.
13520
13521 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
13522
13523         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
13524         return field from parent class if not private.
13525         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
13526         returns fields from parent class if they are not private.
13527         (method_nonpublic): added function to determine if a given method
13528         should be considered non-public. Returns false for private methods
13529         on parent class, and internal methods from parent on the 1.0 profile.
13530         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
13531         use method_nonpublic function to determine whether method should be
13532         returned.
13533         (property_accessor_public): use newly introduced method_nonpublic
13534         function to determine whether accessor is non-public. 
13535         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
13536         event from parent class if not private. Only return static event if
13537         Static flag is set, and only return static event from parent class if
13538         FlattenHierarchy flag is set.
13539         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
13540         include non-private events from parent class.
13541
13542 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13543
13544         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
13545         warning.
13546
13547 2008-01-16  Wade Berrier <wberrier@novell.com>
13548
13549         * security.c: Add assembly.h header to appease some warnings
13550
13551 2008-01-16  Dick Porter  <dick@ximian.com>
13552
13553         * process.c (process_module_string_read): Remove trailing null
13554         when saving string.
13555
13556 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13557
13558         * class-internals.h: A new data structure describing the layout of
13559         a runtime generic context (MonoRuntimeGenericContextTemplate).
13560
13561         * metadata-internals.h: Added a hash table to MonoDomain that maps
13562         from open generic classes to their runtime generic context
13563         templates.
13564
13565         * object.c: Building of the runtime generic context, including
13566         proper handling of generic type arguments of superclasses.
13567         Building of the runtime generic context according to the template.
13568
13569 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13570
13571         * class.c (mono_class_setup_fields): Set field.count for generic instances.
13572         Fixes #350856.
13573
13574         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
13575         mono_portability_find_file (). Fixes #325466.
13576         (mono_image_get_public_key): Fix a warning.
13577
13578 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13579
13580         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
13581         Fixes #353550.
13582         (mono_class_from_name_case): Ditto.
13583
13584 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
13585
13586         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
13587           common storage for the tables used in the System/NumberFormatter class.
13588
13589 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
13590
13591         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
13592
13593 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
13594
13595         * verify.c (get_boxable_mono_type): check if the token is valid.
13596
13597         * verify.c (set_stack_value): changed to add an error if an
13598         invalid type is set on stack. Changed all callers due to signature change.
13599
13600         * verify.c (do_stobj): implement stobj validation.
13601
13602 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13603
13604         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
13605         set container->is_method, it was set earlier.
13606
13607         * metadata.c (type_in_image): Handle MVARs which belong to not finished
13608         generic methods.
13609
13610         * reflection.c (mono_reflection_initialize_generic_parameter): Set
13611         is_method of the generic container to TRUE for methods.
13612
13613 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13614
13615         * metadata.c (type_in_image): Handle type parameters properly.
13616
13617         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
13618         memory ownership of this structure.
13619
13620 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
13621
13622         * verify.c (get_boxable_mono_type): make typedref types been just
13623         unverifiable. check for void type.
13624
13625         * verify.c (do_unbox_any): added, verify opcode unbox.any.
13626
13627         * verify.c (do_load_function_ptr): accept method spec tokens.
13628
13629 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13630
13631         * marshal.c (mono_class_native_size): Always set *align even if this is called
13632         recursively.
13633
13634 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
13635
13636         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
13637         out-of-date.
13638
13639 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
13640
13641         * verify.c: removed some old unused tables. A huge bunch of small fixes
13642         to things found while testing the verifier with mono basic.
13643
13644         * verify.c (dump_stack_value): dump null literal flag to.
13645
13646         * verify.c (verify_type_compatibility_full): fix comparison
13647         for types that have a generic super type.
13648
13649         * verify.c (verify_stack_type_compatibility): fix compatibility
13650         between null literals and reference types. fix compatibility between
13651         boxed valuetypes and object. fix corner case test for enums.
13652
13653         * verify.c (do_cmp_op): proper verification of cgt.un in case
13654         of reference types.
13655
13656         * verify.c (do_invoke_method): fix error message.
13657
13658         * verify.c (do_store_indirect
13659
13660         * verify.c (check_is_valid_type_for_field_ops): proper verification
13661         of managed pointers to valuetypes and boxed valuetypes. proper verification
13662         of null literals.
13663
13664         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
13665         allow token to be a reference type.
13666
13667         * verify.c (do_cast): proper handling of boxes valuetypes.
13668
13669         * verify.c (do_stelem): proper handling of storing a boxed valuetype
13670         in object[].
13671
13672         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
13673         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
13674         fixed the decoding of unbox_any
13675
13676 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13677
13678         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
13679
13680 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
13681
13682         * verify.c (do_newobj): do delegate verification.
13683
13684         * verify.c (verify_delegate_compatibility): perform delegate
13685         verification.
13686
13687         * verify.c (verify_ldftn_delegate): perform tests related to
13688         ldftn delegates.
13689
13690         * verify.c (mono_delegate_signature_equal): perform the
13691         slightly diferent signature comparison required by delegates.
13692
13693         * metadata.c (mono_metadata_type_equal_full): added and exported
13694         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
13695         allows signature only comparison.
13696
13697         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
13698         as MONO_INTERNAL.
13699
13700 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
13701
13702         * verify.c: added a bunch of stack_slot_* functions to
13703         make access to stack slot type easier. This is required to
13704         allow optional flags, like null literal, boxed value and
13705         this pointer.
13706         All access paths to IlStackDesc::stype have been changed 
13707         to use these new funcions.
13708         Removed a bunch of unused functions and cleared all warnings.
13709         This patch introduces the usage of the this pointer and 
13710         boxed value flags.
13711
13712 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
13713
13714         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
13715
13716 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13717
13718         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
13719         match managed version.
13720
13721         * appdomain.c: Bump corlib version.
13722         
13723         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
13724         argument.
13725
13726 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
13727
13728         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
13729         Set public key token to zero-length byte array if assembly is not
13730         strongnamed.
13731
13732 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13733
13734         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
13735         writing a vtype array elem.
13736
13737 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
13738
13739         * assembly.c (build_assembly_name): return FALSE if length of token is
13740         not 16 (if not "null").
13741         (mono_assembly_name_parse_full): return FALSE if value of version,
13742         culture, token or key is 0.
13743         * icall.c (fill_reflection_assembly_name): add boolean arguments to
13744         specify whether public key and public key token must be set to default
13745         value (zero-length byte array) if not available. Set versioncompat to
13746         SameMachine. If public key is available or the default is set, then
13747         set PublicKey flag.
13748         (ves_icall_System_Reflection_Assembly_FillName): if no public key
13749         is available, use empty byte array as default value. On the 2.0
13750         profile, use default value for public key token if not set.
13751         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
13752         profile, use default value for public key if not set. On the 2.0
13753         profile, use default value for public key token if not set.
13754         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
13755         default values for public key and public key token.
13756
13757 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13758
13759         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
13760         field to keep it in synch with the managed object.
13761
13762         * marshal.c (emit_marshal_object): Add support for byref marshalling of
13763         delegates. Fixes #351520.
13764
13765         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
13766         contains defined memory.
13767         
13768         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
13769
13770         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
13771         
13772         * sgen-gc.c (check_consistency): New helper function to do a consistency check
13773         of the GC data structures.
13774
13775         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
13776
13777         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
13778         
13779         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
13780         barrier.
13781         (mono_array_clone_in_domain): Ditto.
13782         (mono_array_clone_in_domain): Ditto.
13783
13784         * threads.c (start_wrapper): Register the thread start argument as a GC root.
13785         (cache_culture): Use a write barrier.
13786
13787         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
13788         (ves_icall_get_property_info): Ditto.
13789
13790         * object.h (MONO_STRUCT_SETREF): New macro.
13791
13792         * class-internals.h (MonoStats): Add some GC statistics.
13793
13794         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
13795
13796 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
13797
13798         * exception.c (mono_exception_from_name_two_strings):
13799         Break from loop after method is found.
13800
13801 2008-01-04  Dick Porter  <dick@ximian.com>
13802
13803         * process.c (process_module_string_read): Rename variable to
13804         reflect correct usage, after fixing bug 345972.
13805
13806 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
13807
13808         * verify.c (mono_type_create_fnptr_from_mono_method): 
13809         created a MonoType function pointer instance to be used during
13810         verification. The verifier releases this memory at end.
13811
13812         * verify.c (mono_method_is_constructor): extracted repeated
13813         checks for constructor into a single class.
13814
13815         * verify.c (do_push_field): use new extracted method
13816         for constructor check.
13817
13818         * verify.c (do_newobj): same.
13819
13820         * verify.c (do_ldftn): renamed to do_load_function_ptr
13821         and make it verify ldvirtftn too.
13822
13823         * verify.c (mono_method_verify: proper verification
13824         of ldvirtftn. release created MonoMethod instances.
13825
13826 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
13827
13828         * verify.c (token_bounds_check): added.
13829
13830         * verify.c (do_ldftn): added.
13831
13832         * verify.c (mono_method_verify): proper verificartion of ldftn.
13833
13834 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
13835
13836         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
13837         than the table row count. It's the resposibility of the caller to
13838         make the bounds check and raise the correct error.
13839
13840         * metadata.c (mono_metadata_decode_row_col): Same.
13841
13842         * loader.c (mono_get_method_from_token): perform bounds check
13843         on token for methoddef table.
13844
13845 2007-12-29  Miguel de Icaza  <miguel@novell.com>
13846
13847         * icall.c
13848         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
13849         assert into a negative result, the managed code already coped with
13850         that.
13851
13852         Some folks on Windows reported this error. 
13853
13854 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
13855
13856         * appdomain.c: Bump corlib version.
13857         * icall.c:
13858         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
13859         CultureInfo.CreateCulture to create CultureInfo for name.
13860         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
13861         create CultureInfo for name. Fixes bug #347174.
13862
13863 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
13864
13865         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
13866         flags.
13867
13868         * verify.c (is_valid_branch_instruction): allow branching to the
13869         first instruction of the protected block.
13870
13871         * verify.c (is_valid_cmp_branch_instruction): same.
13872
13873         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
13874         avoid double initialization.
13875
13876         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
13877         detect which cases the eval stack should just be copied.
13878
13879         * verify.c (mono_method_verify): check if the eval stack
13880         is empty when entering a protected block.
13881
13882 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
13883
13884         * verify.c: added is_clause_in_range, is_clause_inside_range,
13885         is_clause_nested and verify_clause_relationship. They perform
13886         the verifications stated in P1 12.4.2.7.
13887
13888         * verify.c (mono_method_verify): remove some unused variables,
13889         add the new exception clause checks, add instruction border
13890         checks for protected block start/end, improved some error 
13891         messages and fixed a bug in the way invalid instruction access
13892         is detected.
13893
13894 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
13895
13896         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
13897         from GC 7.0 if available.
13898
13899         * object.c: Remove an unused define.
13900         
13901         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
13902
13903         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
13904
13905         * null-gc.c (mono_gc_make_descr_for_array): Implement.
13906
13907         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
13908
13909         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
13910         to take the same arguments as the other make_descr functions.
13911
13912         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
13913
13914         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
13915         directly.
13916
13917         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
13918         mini.c.
13919
13920         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
13921         call to boehm-gc.c.
13922
13923         * boehm-gc.c (mono_gc_register_root): Fix a warning.
13924
13925         * null-gc.c (mono_gc_register_root): Fix a warning.
13926
13927         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
13928
13929         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
13930         (mono_gc_base_init): Call GC_init ().
13931
13932         * null-gc.c: Define mono_gc_register_root () as a no-op.
13933
13934         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
13935
13936 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
13937
13938         * verify.c: add prototype for merge_stacks at top
13939
13940         * verify.c (do_switch): added.
13941
13942         * verify.c (merge_stacks): on some cases the stack merging
13943         was not happening properly. Unequal stack sizes at merge
13944         points should be invalid.
13945
13946         * verify.c (mono_method_verify): added more debug info on stack state.
13947         verify switch properly.
13948
13949 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
13950
13951         * method-builder.h: New file, moved the mono_mb_ declarations here from 
13952         marshal.h.
13953
13954         * boehm-gc.c marshal.c: Include method-builder.h.
13955
13956         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
13957
13958         * marshal.c: Remove some code which is now in method-builder.c.
13959
13960 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
13961
13962         * method-builder.c: New file, extraction of the method builder functionality 
13963         from marshal.c.
13964
13965         * marshal.c: Move the mb functions into method-builder.c.
13966
13967         * marshal.h marshal.c: Export some mono_mb_... functions.
13968
13969         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
13970
13971         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
13972         the caller.
13973
13974         * class.c (mono_class_get_full): Check the token type in the dynamic case.
13975
13976         * loader.c (mono_field_from_token): Ditto.      
13977
13978         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
13979         type as well.
13980         
13981         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
13982         Fixes #342565.
13983
13984         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
13985         a helper function for setting it.
13986
13987         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
13988
13989         
13990         * assembly.c: Significally simplify code now that referenced assemblies are 
13991         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
13992
13993         * threads.h: Don't include  the internal threads-types.h header file. Fixes
13994         #349952.
13995
13996 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
13997
13998         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
13999         instructions that were target of branches or are at protected block boundaries.
14000
14001         * verify.c (in_same_block): handle filter clauses.
14002
14003         * verify.c (is_valid_branch_instruction): added. checks the target of
14004         instructions br or brtrue/false.
14005
14006         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
14007         binary branch instructions such as beq and bge.
14008
14009         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
14010         and made it pin the instruction as been part of the exception block.
14011
14012         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
14013         of in_same_block.
14014
14015         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
14016         of in_same_block.
14017
14018         * verify.c (do_ret): ret from a protected block is unverifiable and
14019         not invalid.
14020
14021         * verify.c (do_static_branch): verify br and br.s instructions.
14022
14023         * verify.c (merge_stacks): add extra param to support detection
14024         of branches in the middle of instructions.
14025         
14026         * verify.c (mono_method_verify): verify branches and exception blocks
14027         that target the middle of instructions. Proper verification of br and br.s.
14028
14029 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
14030
14031         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
14032         skip_visibility field.
14033         (reflection_methodbuilder_from_dynamic_method): Ditto.
14034
14035         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
14036         registrations. Fixes #348193.
14037
14038         * threads.h: Move the internal mono_thread_get_pending_exception () to
14039         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
14040
14041 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14042
14043         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
14044         icall registration. Fixes #348193.
14045
14046         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
14047         for corlib classes into object. Fixes #349621.
14048
14049 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
14050
14051         * icall.c (property_accessor_nonpublic): new function to determine
14052         whether an accessor allows a property to be considered non-public.
14053         Returns false for private accessor(s) from parent class, and internal
14054         accessor(s) from parent on 2.0 profile (and higher).
14055         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
14056         to determine whether property should be included if NonPublic flag
14057         is set. Fixes bug #349078.
14058
14059 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
14060
14061         * verify.c (init_stack_with_value): added.
14062
14063         * verify.c (mono_method_verify): extracted common
14064         code for exception initialization into init_stack_with_value.
14065
14066         * verify.c (mono_method_verify): initialize the exception
14067         for handler clauses as well.
14068
14069         * verify.c (mono_method_verify): fix the exception clause
14070         ordering rules, it should use handler end offset and not
14071         start offset.
14072
14073 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
14074
14075         * rawbuffer.c: remove useless warning.
14076
14077 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
14078
14079         * threads.h, threads-types.h: move functions to the correct header
14080         (fixes bug#349952).
14081
14082 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14083
14084         * verify.c (mono_method_verify): proper verification
14085         of exception handling clauses ranges and fallthru in
14086         and out of protected blocks.
14087
14088 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14089
14090         * verify.c (mono_method_verify): fixed compilation issue.
14091
14092 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14093
14094         * verify.c (mono_method_verify): a printf slipped in, changed
14095         to use verifier debug macro.
14096
14097 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
14098
14099         * verify.c (is_correct_leave): check for filter clauses.
14100
14101         * verify.c (do_filter): added.
14102
14103         * verify.c (mono_method_verify): property verification of leave.
14104
14105
14106 2007-12-18  Mark Probst  <mark.probst@gmail.com>
14107
14108         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
14109         Win32 build, until we figure out how to do the proper thing on
14110         Win32.
14111
14112 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
14113
14114         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
14115         by the previous patch.
14116         
14117         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
14118         the assembly resolve handler for refonly assemblies.
14119
14120 2007-12-17  Mark Probst  <mark.probst@gmail.com>
14121
14122         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
14123         Make sure only one thread is allowed to commence shutdown, and
14124         don't allow new threads to be started once shutdown is in
14125         progress.
14126
14127 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
14128
14129         * verify.c (is_correct_endfilter): added.
14130
14131         * verify.c (is_unverifiable_endfilter): added.
14132
14133         * verify.c (do_endfilter): added.
14134
14135         * verify.c (mono_method_verify): property verification of endfilter
14136         and fixed a corner case or endfinally.
14137
14138 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
14139
14140         * verify.h: new flags to support fail fast of unverifiable code and
14141         do non-strict verification. Non-strict verification is required to
14142         have MS runtime compatibility. There are a huge amount of unverifiable
14143         code that it accepts as verifiable. The strict mode verifies the code
14144         as the specs says.
14145         Non-strict mode will be required in cases where code needs to be
14146         accepted as verifiable but fails under strict mode.
14147
14148         * pedump.c: added support to fail fast and non-strict verification.
14149
14150         * verify.c: added support for both fail fast and non-strict verification.
14151
14152 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
14153
14154         * verify.c (is_correct_endfinally): added.
14155
14156         * verify.c (mono_method_verify): property verification of endfinally.
14157
14158 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14159
14160         * verify.c (in_any_block): check for filter clauses.
14161
14162         * verify.c (is_correct_rethrow): added.
14163
14164         * verify.c (mono_method_verify): property verification of rethrow.
14165
14166         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
14167
14168 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14169
14170         * verify.c (do_throw): added.
14171
14172         * verify.c (mono_method_verify): property verification of throw
14173
14174 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
14175
14176         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
14177         assemblies. Fixes #346425.
14178
14179 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
14180
14181         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
14182         FieldBuilders.
14183
14184         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
14185
14186         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
14187         prevent asserts when this is called with a token which might not be valid.
14188
14189         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
14190         lookup_dynamic_token_class with valid_token == FALSE.
14191
14192         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
14193
14194         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
14195
14196         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
14197         
14198 2007-12-10  Mark Probst  <mark.probst@gmail.com>
14199
14200         * gc.c: Don't delay threadpool thread finalization unless Mono is
14201         shutting down.
14202
14203 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14204
14205         * threads.c: turn an assert into a non-fatal warning.
14206
14207 2007-12-09  Robert Jordan  <robertj@gmx.net>
14208
14209         * icall.c (GetVirtualMethod): Add missing argument validation.
14210
14211 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14212
14213         * verify.c (do_cast): added.
14214
14215         * verify.c (mono_method_verify): property verification of castclass and isinst.
14216
14217
14218 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14219
14220         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
14221
14222         * verify.c (do_stelem): added.
14223
14224         * verify.c (mono_method_verify): property verification of stelem.X.
14225
14226 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14227
14228         * class.c, class-internals.h: Introduce an environment variable
14229         (MONO_GENERIC_SHARING) through which the extent of generic code
14230         sharing can be controlled (share all classes, share only corlib
14231         classes, or share nothing).
14232
14233         * object.c: Only create runtime generic context for classes for
14234         which sharing is enabled.
14235
14236 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14237
14238         * verify.c (do_ldelem): refactor it to work with ldelem.any.
14239
14240         * verify.c (mono_method_verify): property verification of ldelem.any.
14241
14242 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14243
14244         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
14245         added ldelem.X opcodes.
14246
14247         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
14248
14249         * verify.c: proper verification of ldelem.X 
14250
14251 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14252
14253         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
14254
14255 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
14256
14257         * verify.c (mono_method_verify): null literal requires special handling,
14258         the value pushed on stack need to be flagged as so.
14259
14260         * verify.c (do_ldelema): Verify ldelema properly.
14261
14262 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
14263
14264         * verify.c: Verify ldlen properly.
14265
14266 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
14267
14268         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
14269         to the target object's type. Fixes #346160.
14270
14271 2007-12-05  Dick Porter  <dick@ximian.com>
14272
14273         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
14274         Solaris needs the same workaround as BSD-derived systems.  Fixes
14275         bug 323524, patch by Burkhard Linke
14276         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
14277
14278 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
14279
14280         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
14281         handle to use when error dialog is shown; otherwise, update mask
14282         to show no error dialog when an error occurs.
14283
14284 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14285
14286         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
14287
14288         * class.c (mono_class_get_field_default_value): New helper function to initialize
14289         field->def_type and field->data.
14290
14291 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14292
14293         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
14294         the general one.
14295
14296         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
14297
14298         * marshal.c: Avoid depending on delegate->method_info being set.
14299
14300         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
14301         
14302         * object.c (mono_delegate_ctor): Set delegate->method.
14303
14304         * object-internals.h (struct _MonoDelegate): Add 'method' field.
14305
14306         * appdomain.c: Bump corlib version.
14307
14308 2007-11-27  Raja R Harinath  <harinath@gmail.com>
14309
14310         * metadata.c (mono_generic_inst_equal_full): Short-circuit
14311         equality check if we're comparing canonicalized MonoGenericInsts.
14312
14313 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14314
14315         * class.c (generic_array_methods): Call mono_class_setup_methods () before
14316         accessing class->methods.
14317
14318 2007-11-22  Dick Porter  <dick@ximian.com>
14319
14320         * threads.c: Ensure that the synch_cs is set before trying to use
14321         it.
14322
14323 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
14324
14325         * profiler.c: r89126 broke the statistial profiler, unbreak.
14326
14327 2007-11-22  Martin Baulig  <martin@ximian.com>
14328
14329         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
14330
14331         * mono-debug.c
14332         (mono_debug_debugger_version): Bump to 3.
14333         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
14334         -> mono_debugger_class_initialized().
14335
14336         * mono-debug-debugger.c
14337         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
14338
14339         * class.c
14340         (mono_debugger_start_class_init_func): Removed.
14341         (mono_debugger_class_loaded_methods_func): Added.
14342         (mono_class_setup_methods): Call it here.
14343
14344 2007-11-22  Martin Baulig  <martin@ximian.com>
14345
14346         * mono-debug.c
14347         (mono_debug_add_delegate_trampoline): New public method.
14348         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
14349
14350         * mono-debug.h
14351         (MonoSymbolTable): Added `global_data_table'.
14352         (MonoDebuggerTypeKind): Removed.
14353
14354 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
14355
14356         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
14357         these methods.
14358
14359         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
14360         
14361 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
14362
14363         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
14364
14365 2007-11-20  Martin Baulig  <martin@ximian.com>
14366
14367         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
14368
14369         * mono-debug-debugger.c
14370         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
14371         (mono_debugger_remove_breakpoint): Likewise.
14372         (mono_debugger_check_breakpoints): Likewise.
14373         (mono_debugger_register_class_init_callback): New public method.
14374         (mono_debugger_remove_class_init_callback): Likewise.
14375         (mono_debugger_add_type): Likewise.
14376
14377         * mono-debug-debugger.h
14378         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
14379
14380 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
14381
14382         * class.c: more interface implementations needed for the
14383         array enumerator (fixes bug #341112).
14384
14385 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
14386
14387         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
14388         fix ParamName of ArgumentNullExceptions.
14389
14390 2007-11-17  Miguel de Icaza  <miguel@novell.com>
14391
14392         * reflection.c (mono_reflection_encode_sighelper): Generate the
14393         modopts and modreqs.   I have a useless test that crashes monodis,
14394         but that shows the code working.
14395
14396 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14397
14398         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
14399         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
14400
14401 2007-11-15  Dick Porter  <dick@ximian.com>
14402
14403         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
14404         When joining a thread, it's the thread that's calling Join that
14405         gets WaitSleepJoin state not the target.  Fixes the standalone
14406         test case in bug 334740, and hopefully the whole bug too.
14407
14408 2007-11-15  Dick Porter  <dick@ximian.com>
14409
14410         * process.c: Read file version info from the files pointed at by
14411         process modules, not the current process.  Fixes bug 315969.
14412
14413         Use windows typedef names in some places to fix warnings on the
14414         windows build.
14415
14416 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14417
14418         * image.c, metadata-internals.h: Added a generic_class_cache hash
14419         to MonoImage for looking up generic classes when sharing generics.
14420
14421 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14422
14423         * sgen-gc.c: warning cleanups.
14424
14425 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
14426
14427         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
14428         inherited properties.
14429
14430 2007-11-14  Mark Probst  <mark.probst@gmail.com>
14431
14432         * object.c, class-internals.h: Added more information to the
14433         runtime generic context.
14434
14435 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14436
14437         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
14438         instead of just the target method. Generalize the abstract method handling to
14439         handle any non-static method.
14440
14441         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
14442         mono_marshal_get_delegate_invoke () signature change.
14443
14444 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14445
14446         * class.c, class-internals.h: Made
14447         mono_type_get_basic_type_from_generic () public.  Fixed member
14448         access check for shared generics.
14449
14450         * loader.c: Don't insert field into field cache if it's part of a
14451         non-inflated generic class.
14452
14453         * domain.c, domain-internals.h: The generic sharing context is now
14454         part of the jit info data structure.  Added two accessor
14455         functions.
14456
14457 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14458
14459         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
14460         the array Get/Set/Address methods, since the JIT inlines them.
14461
14462         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
14463
14464         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
14465         (mono_image_init): Initialize runtime_invoke_direct_cache.      
14466
14467         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
14468         mono_marshal_get_delegate_invoke signature change.
14469
14470         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
14471         an additional argument. Add support for invoking abstract methods.
14472
14473         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
14474
14475         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
14476
14477 2007-11-09  Mark Probst  <mark.probst@gmail.com>
14478
14479         * class.c: Do field layout for open generic classes as well.
14480
14481 2007-11-09  Mark Probst  <mark.probst@gmail.com>
14482
14483         * gc.c, gc-internal.h: Don't finalize threadpool threads with
14484         other objects, because the threadpool is still around.  Put them
14485         in a list instead and after finalizing all other objects in the
14486         root domain shut down the thread pool and then finalize the
14487         threads.  Fixes bug #337383.
14488
14489         * threads.c, thread-types.h: New mono_thread_create_internal()
14490         function for marking a thread with the threadpool flag before it
14491         started.  Set synch_cs to NULL after freeing it.
14492
14493         * threadpool.c: Mark threadpool threads before they start.
14494
14495 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14496
14497         * reflection.h, reflection.c: don't export random functions
14498         and lazy load dbnull and missing objects.
14499
14500 2007-11-07  Jonathan Chambers <joncham@gmail.com>
14501
14502         * class.c: Initialize COM types if COM interfaces
14503         are present (not just COM classes).
14504         
14505         Code is contributed under MIT/X11 license.
14506
14507 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14508         * reflection.c:
14509         create_dynamic_mono_image: hook module profiler events (dynamic case).
14510         mono_image_basic_init: hook assembly profiler events (dynamic case).
14511
14512 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14513         * profiler.c:
14514         simple_appdomain_unload: completely terminate the profiler
14515         instead of only processing the statistical samples.
14516         simple_shutdown: make sure this is really called exactly once,
14517         even in multithreaded applications, and always listen to
14518         appdomain events.
14519         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
14520         here, the "[un]load" functions will do it.
14521         Fixes bugs #333791 and #325261.
14522
14523 2007-11-07  Geoff Norton  <gnorton@novell.com>
14524
14525         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
14526         rather than depend on __APPLE__.
14527
14528 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14529
14530         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
14531
14532 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
14533
14534         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
14535         UTF16 MonoString. Fix the crash from bug #335488
14536
14537 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
14538
14539         * marshal.c: Correct (for non-Win32 OS) length != size in 
14540         mono_string_from_bstr. Fix #339530.
14541
14542 2007-11-06  Geoff Norton  <gnorton@novell.com>
14543
14544         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
14545         to succeed
14546
14547 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
14548
14549         * process.c: Added run-time GetProcessId API detection for Windows.
14550
14551 2007-11-04  Miguel de Icaza  <miguel@novell.com>
14552
14553         * reflection.c  (mono_param_get_objects): If a parameter has the
14554         attribute [System.Runtime.InteropServices.Optional] we should
14555         set the DefaultValue of the ParameterInfo to be
14556         System.Reflection.Missing instead of DBNull.
14557
14558         See bug #339013.
14559
14560         (mono_get_reflection_missing_object): New method,
14561         returns the System.Reflection.Missing.Value singleton instance.
14562
14563 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
14564
14565         * culture-info-table.h : regenerated.
14566
14567 2007-11-02  Jonathan Chambers <joncham@gmail.com>
14568
14569         * icall.c: Use GetEnvironmentStrings on windows
14570         so we are using the same environment block as 
14571         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
14572         #333740.
14573         
14574         Code is contributed under MIT/X11 license.
14575
14576 2007-10-31  Martin Baulig  <martin@ximian.com>
14577
14578         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
14579
14580         * mono-debug-debugger.h
14581         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
14582
14583 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
14584
14585         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
14586         classes.
14587
14588 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
14589
14590         * culture-info-table.h : regenerated.
14591
14592 2007-10-30  Robert Jordan  <robertj@gmx.net>
14593
14594         * icall-def.h, icall.c:
14595         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
14596
14597         Code is contributed under MIT/X11 license.
14598
14599 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
14600
14601         * class.c (mono_class_setup_vtable): Find the inflated methods in the
14602         inflated class instead of inflating them again.
14603         
14604         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
14605         dynamic case.
14606
14607         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
14608         Call setup_supertypes () after klass->parent is set.
14609         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
14610
14611         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
14612         for inflated instances of not yet created dynamic generic classes.
14613         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
14614         times from inflated_method.
14615         (methodbuilder_to_mono_method): Ditto.
14616
14617 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
14618
14619         * gc.c: code cleanup and removed old untested option of not creating the
14620         finalizer thread.
14621
14622 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
14623
14624         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
14625         creating a jump trampoline for dynamic methods.
14626
14627 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
14628
14629         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
14630         generic TypeBuilders when called from another method of the same type (bug #335131).
14631
14632
14633 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
14634
14635         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
14636         doesn't seem to work perfectly.
14637         
14638         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
14639         called multiple times.
14640         (methodbuilder_to_mono_method): Ditto.
14641         (resolve_object): Inflate FieldBuilder's.
14642
14643 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14644
14645         * string-icalls.c, string-icalls.h, appdomain.c: patch from
14646         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
14647         RemoveEmptyEntries in the string.Split implementation (bug #322375).
14648
14649 2007-10-26  Dick Porter  <dick@ximian.com>
14650
14651         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
14652         Thread initialisation changes
14653
14654 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
14655
14656         * verify.c: fix compatibility check between arrays and System.Array
14657
14658 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
14659
14660         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
14661         too. Fixes #336999.
14662
14663 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14664
14665         * object.c (mono_value_box): Use typed allocation here.
14666
14667 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14668
14669         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
14670         trampoline instead of compiling the method right away.
14671
14672         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
14673
14674 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
14675
14676         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
14677         related fields for dynamic classes. Fixes #334493.
14678
14679 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
14680
14681         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
14682         
14683         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
14684
14685         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
14686         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
14687
14688         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
14689
14690         * reflection.c (create_generic_typespec): Initialize klass->generic_container
14691         if needed.
14692         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
14693
14694 2007-10-18  Jonathan Chambers <joncham@gmail.com>
14695
14696         * marshal.c: Use correct key when removing item
14697         from ccw_hash.
14698         
14699         Code is contributed under MIT/X11 license.
14700
14701 2007-10-17  William Holmes  <billholmes54@gmail.com>
14702
14703         *marshal.c: Adding a case to marshal booleans to U1
14704
14705         Code is contributed under MIT/X11 license.
14706
14707 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
14708
14709         * class.c (mono_class_from_name): Search the modules compromising dynamic
14710         assemblies. Fixes #331601.
14711
14712 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
14713
14714         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
14715         exception if the type name contains an assembly component. Fixes #334203.
14716
14717         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
14718         modules inside dynamic assemblies. Fixes #334200.
14719         
14720         * reflection.c: Set image->public_key and image->public_key_length;
14721
14722         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
14723         fields.
14724
14725         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
14726         
14727 2007-10-16  Mark Probst  <mark.probst@gmail.com>
14728
14729         * metadata.c: Implemented correct comparing of generic classes.
14730         An inflated generic class can be equal to a non-inflated one if it
14731         is inflated with generic type variables as type arguments.  Fixes
14732         bug #333798.
14733
14734 2007-10-15  Dick Porter  <dick@ximian.com>
14735
14736         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
14737         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
14738         81646.
14739
14740         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
14741         instead of a monitor lock.  This means that monitor_try_enter and
14742         co can set the thread state safely.
14743         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
14744         thread_interrupt_requested, so interrupt actually works.
14745
14746         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
14747         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
14748         state accessor function
14749
14750 2007-10-15  Martin Baulig  <martin@ximian.com>
14751
14752         * mono-debug.h
14753         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
14754         the debugger with the current runtime.
14755
14756 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
14757
14758         * object.c, object-internals.h: added the ability to set a single
14759         trampoline for all the slots in a vtable.
14760
14761 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14762
14763         * marshal.c: deal with a possible race condition during multicast
14764         delegate invocation.
14765
14766 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14767
14768         * class.c: ensure value type methods don't have the synchronized
14769         flag set.
14770
14771 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14772
14773         * string-icalls.c, string-icalls.h: reverted unapproved patch that
14774         breaks the build.
14775
14776 2007-10-11  Joel Reed  <joelwreed@comcast.com>
14777
14778         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
14779         to take an options parameter so that empty entries can be removed during
14780         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
14781
14782 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14783
14784         * marshal.c: make sure we don't store the signature from a dynamic
14785         method into the runtime invoke cache (bug #327189).
14786
14787 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
14788
14789         * marshal.c: make sure the wrapper methods are properly initialized.
14790
14791 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14792
14793         * metadata.c, metadata-internals.h: Generalized
14794         mono_type_stack_size() to mono_type_stack_size_internal() which
14795         takes an additional argument specifying whether it allows open
14796         types.
14797
14798 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
14799
14800         * verify.c (do_invoke_method): handle typedbyref params
14801         correctly and check for unverifiable return values.
14802
14803         * verify.c (do_newobj): fix a warning.
14804
14805 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
14806
14807         * verify.c: don't tread typedbyref as allways unverifable,
14808         so uses, like (ld/st)loc.0 are valid. verify for the cases
14809         that it matters, like boxing related operations.
14810
14811 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
14812
14813         * verify.c: add verification of the newobj opcode. verification
14814         of delegate instantation still missing due ldftn and virldftn not
14815         pushing the function type on stack
14816
14817 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14818
14819         * class-internals.h: Runtime generic context data structure
14820         definition.
14821
14822         * object.c: Initialization of runtime generic context at runtime
14823         vtable creation time.
14824
14825 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
14826         * class.c (mono_class_create_from_typedef,
14827         mono_class_from_generic_parameter, mono_ptr_class_get,
14828         mono_fnptr_class_get, mono_bounded_array_class_get)
14829         * domain.c (mono_domain_create, mono_domain_free)
14830         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
14831         * image.c (do_mono_image_load, mono_image_close):
14832         Hooked up load-unload profiler events.
14833
14834 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14835
14836         * domain.c: track statistics about the actual amount of native code
14837         allocated.
14838
14839 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14840
14841         * class.c: the valuetype enumerators don't have the additional
14842         supertypes interfaces.
14843
14844 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
14845
14846         * class.c: need more interfaces setup for the IEnumerator<T>
14847         object created for arrays (tests/ienumerator-interfaces.2.cs).
14848
14849 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
14850
14851         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
14852
14853 2007-10-05  Alp Toker  <alp@atoker.com>
14854
14855         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
14856         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
14857         #315863.
14858
14859 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
14860
14861         * verify.c (verify_type_compatibility_full): verification of
14862         compatibility improved, validates correctly non-strict checks between
14863         native int and I4 types different than (unsigned)int32.
14864
14865         * verify.c (do_store_indirect): added, do all verification of
14866         ldind.X opcodes. 
14867
14868         * verify.c (get_load_indirect_mono_type): renamed to
14869         get_indirect_op_mono_type, as it now returns the MonoType for 
14870         ldind.X and stind.X opcodes.
14871
14872 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
14873
14874         * reflection.c: Fix the encoding of generic type definition for
14875         TypeBuilders.
14876
14877         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
14878         mono_image_typedef_or_ref but allows to specify if typespec lookups should
14879         be made. Typespec check is done prior to typeref cache lookup.
14880
14881         * reflection.c (mono_image_typedef_or_ref): now just delegate to
14882         mono_image_typedef_or_ref_full.
14883
14884         * reflection.c (encode_generic_class): encode the generic class
14885         directly instead of calling encode_type.
14886
14887         * reflection.c (encode_type): encode the generic type definition
14888         MonoClass as a generic instantiation.
14889
14890         * reflection.c (create_typespec): cache typespec tokens in
14891         the assembly->typespec cache. Don't create typespec for a generic
14892         instance MonoClass. Create typespec for the generic type defintion.
14893
14894         * reflection.c (create_generic_typespec): encode the generic
14895         class directly instead of calling encode_type.
14896
14897         * reflection.c (mono_image_create_token): encode the generic
14898         type definition not using a typespec for MonoType instances.
14899
14900
14901 2007-10-04  Raja R Harinath  <rharinath@novell.com>
14902
14903         Fix #328812
14904         * class.c (mono_image_init_name_cache): Don't return nested
14905         'protected internal' classes.
14906         (mono_class_from_name_case): Likewise.
14907
14908 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
14909
14910         * icall-def.h, icall.c : get_bundled_machine_config() is now the
14911           common function used by both DefaultConfig in System.dll and
14912           InternalConfigurationHost in System.Configuration.dll.
14913
14914 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14915
14916         * class.c: automatically add to vectors only a few essential explicit
14917         generic interfaces. The rest of the interfaces that arrays should
14918         provide are currently implicitly added (but still not lazily, see the
14919         design in the discussion of bug#325495 for the details of what is
14920         needed for that). Additionally, implicit interfaces are assigned the
14921         same vtable slot as the explicit interfaces (as they are compatible):
14922         this enables huge memory savings since we don't need to instantiate
14923         as many memthods and as large vtables anymore. Also, Since
14924         GetEnumerator<T> returns an instance of a type that is required to
14925         support a similarly large set of interfaces as arrays, we add
14926         implicit interfaces and interface offset sharing support to those
14927         types, too. This change adds all the required interfaces so that
14928         the anonarray.cs test case in the bug report works (we don't add
14929         all the interfaces to arrays of arrays 3-level deep and more because
14930         of the memory requirements explained in the bug and since they are much
14931         less common: the lazy-loading support will enabled them to work, too).
14932
14933 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
14934
14935         * verify.c (merge_stacks): major clean up, all type compatibility
14936         checks are done by verify_type_compatibility. This fix my earlier lack
14937         of understanding of the CLR type system and merge_stacks no longer looks
14938         scary.
14939
14940         * verify.c: fixed some bad spelling.
14941
14942 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
14943
14944         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
14945         a given stack slock.
14946         
14947         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
14948         verify_type_compatibility_full. This removed a near indentical function and fixed
14949         handling of Int32 and IntPtr across all opcodes.
14950
14951 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14952
14953         * class.c: only vectors have the additional generic interfaces.
14954
14955 2007-10-01  Jonathan Chambers <joncham@gmail.com>
14956
14957         * mono-config.c: Use g_strcasecmp instead of
14958         strcasecmp like everywhere else to fix
14959         compilation with MSVC.
14960         
14961         Code is contributed under MIT/X11 license.
14962
14963 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14964
14965         * object.c, object-internals.h: refactored the IMT code to enable
14966         building a single slot at a time and lazily creating the IMT trampolines
14967         and thunks.
14968
14969 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
14970
14971         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
14972
14973         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
14974         Fixes #328501.
14975         
14976 2007-09-29  Raja R Harinath  <harinath@gmail.com>
14977
14978         * loader.c (method_from_methodspec): Rearrange to avoid
14979         un-necessary exposition.  Don't assert out if the method's
14980         declaring type is a generic type definition.
14981
14982 2007-09-28  Martin Baulig  <martin@ximian.com>
14983
14984         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
14985
14986 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
14987
14988         * class-internals.h: optimize field layout of MonoClass to
14989         requires less cachelines at runtime and save a few bytes on 64 bit
14990         systems.
14991
14992 2007-09-28  Jb Evain  <jbevain@novell.com>
14993
14994         * reflection.c: when encoding type names in custom attributes,
14995         if the type is a closed generic type, its generic arguments
14996         have to be serialized as AssemblyQualifiedName, so that when
14997         they are deserialized, it's possible to re-create them properly.
14998         Fixes #329450.
14999
15000
15001 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
15002
15003         * object.c, class-internals.h: added delegate-creation counter.
15004
15005 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15006
15007         * class.c: cleanup of the code that synthetizes interfaces for
15008         arrays in 2.0: saves quit a bit of corlib mempool memory.
15009         Code to fix bug #325495 ifdeffed out for now until the issues
15010         with memory usage and O(n^2) behaviour are fixed.
15011
15012 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
15013
15014         * marshal.c: when possible, do not duplicate the name of the methods
15015         in the method builder and in the generated MonoMethod.
15016
15017 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
15018         * verify.c: added support for type checking ldind_* opcodes.
15019
15020 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
15021
15022         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
15023         which is used to distinguish the fully open instantiation of a TypeBuilder
15024         with the rest. This temporary hack is required to restore the property that
15025         the fully open instantiation is the same type of the generic type definition.
15026
15027         * class-internals.h (mono_generic_class_is_generic_type_definition):
15028         new function as part of the internal API.
15029
15030         * class.c (inflate_generic_type): return NULL when the generic inst is
15031         fully open. The fully open generic type is now the same as the generic type
15032         definition for non TypeBuilder types.
15033
15034         * class.c (mono_generic_class_get_class): removed assert since it is
15035         no longer valid, gklass->cached_class can point to the generic type definition.
15036
15037         * class.c (mono_generic_class_is_generic_type_definition): new.
15038
15039         * metadata.c (mono_generic_class_hash): added is_tb_open field
15040         to the hash calculation.
15041
15042         * metadata.c (free_generic_class): if the generic class is associated
15043         with the generic type definition, its field will come from the mempool and
15044         must not be freed.
15045
15046         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
15047         new, this function identifies the corner case of a TypeBuilder fully open
15048         instantiation.
15049
15050         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
15051         for lookup. Set gclass->cached_class to be the container class in case of
15052         the fully open instantiation of non TypeBuilder types.
15053
15054         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
15055         to compare generic classes.
15056
15057         * reflection.c (method_encode_methodspec): remove assert that
15058         no longer is valid.
15059
15060         * reflection.c (mono_reflection_generic_class_initialize): add
15061         an aditional assert to ensure the proper type is used.
15062
15063 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
15064
15065         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
15066         to enjoy it.
15067
15068 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
15069
15070         * verify.c (push_arg): Fixed support for ldarga
15071         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
15072         MonoType used as first arg in case of instance calls.
15073
15074 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
15075
15076         * verify.c: Support for verifying VAR and MVAR types, 
15077
15078 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
15079
15080         * icall.c (ves_icall_get_property_info): Set the reflected type of the
15081         accessors correctly.
15082
15083 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15084
15085         * threads.c: support OSX and other systems in
15086         mono_thread_get_stack_bounds (bug #328026).
15087
15088 2007-09-25  Martin Baulig  <martin@ximian.com>
15089
15090         * mono-debug.h
15091         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
15092
15093 2007-09-24  Martin Baulig  <martin@ximian.com>
15094
15095         * mono-debug.h
15096         (MonoDebugClassEntry): Moved the definition of this struct into
15097         mono-debug.c to make it private.
15098
15099         * mono-debug.c
15100         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
15101         type table per symbol file, we don't need to store the symfile id
15102         any longer.
15103
15104 2007-09-24  Martin Baulig  <martin@ximian.com>
15105
15106         Create one type table per symbol file, since a `MonoClass *' gets
15107         invalid when its image is unloaded.
15108
15109         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
15110         (MonoDebugHandle): Added `type_table'.
15111
15112 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15113
15114         * mempool.c, mempool.h: added mono_mempool_new_size () API
15115         to be able to specify a smaller initial size for the pool.
15116         Adjusted the code to slowly increase pool size before using
15117         the previous default size.
15118         * image.c: use a small initial size for image mempools.
15119
15120 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
15121
15122         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
15123         Fixes ##320990.
15124
15125         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
15126         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
15127
15128 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
15129
15130         * metadata.c (mono_type_create_from_typespec): Remove an invalid
15131         free. Fixes #327438.
15132
15133 2007-09-21  Raja R Harinath  <harinath@gmail.com>
15134
15135         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
15136         generic instantiations, etc.
15137         <MONO_TYPE_ARRAY>: Likewise.
15138
15139 2007-09-21  Martin Baulig  <martin@ximian.com>
15140
15141         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
15142         these structs were never defined.
15143         (MonoDebugHandle): Removed the `_priv' field, it was never used.
15144
15145 2007-09-21  Martin Baulig  <martin@ximian.com>
15146
15147         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
15148
15149 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
15150
15151         * image.c: removed the guid hash tables: we can get the same info
15152         without the additional memory usage hit (partially fixes also bug #327052).
15153
15154 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15155
15156         * profiler.h, profiler-private.h, profiler.c: add a new profiler
15157         event to handle unloading methods. After the event is called, the
15158         corresponding MonoMethod* must be considered invalid.
15159         * loader.c (mono_free_method): call the new mono_profiler_method_free
15160         event.
15161
15162 2007-09-20  Mark Probst  <mark.probst@gmail.com>
15163
15164         * domain-internals.h: New flag in MonoJitInfo which marks shared
15165         generic methods.  New hash table (shared_generics_hash) in
15166         MonoDomain to keep track of shared generic methods.  Prototypes
15167         for functions to register and lookup shared generic methods.
15168
15169         * domain.c: Support for registering and looking up shared generic
15170         methods via a hash table (shared_generics_hash) in MonoDomain.
15171
15172         * class-internals.h: New exception to signal failure of shared
15173         compilation of a generic method.  New counters for generics
15174         sharing in MonoStats.
15175
15176 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15177
15178         * image.c, metadata-internals.h: don't keep a file descriptor open
15179         for loaded assemblies (bug#325988).
15180
15181 2007-09-19  Raja R Harinath  <rharinath@novell.com>
15182
15183         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
15184         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
15185         use the corresponding datatypes.
15186         (type_in_image): Update to changes.
15187         (CleanForImageUserData): Simplify.
15188         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
15189         Avoid quadratic behaviour in handling the "stolen" list by
15190         separating the filter predicate out, and by prepending the stolen
15191         items rather than appending them.
15192         (steal_ginst_in_image): Likewise.
15193         (mono_metadata_clean_for_image): Update to changes.
15194
15195 2007-09-19  Martin Baulig  <martin@ximian.com>
15196
15197         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
15198
15199 2007-09-19  Martin Baulig  <martin@ximian.com>
15200
15201         * mono-debug.c (mono_debug_cleanup): Don't call
15202         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
15203
15204 2007-09-19  Raja R Harinath  <harinath@gmail.com>
15205
15206         Fix crash on 'make run-test' in mcs/errors
15207         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
15208         Avoid more potential allocations in mono_class_from_mono_type.
15209         (ginst_in_image): Update to changes.
15210         (gclass_in_image): Rearrange slightly.
15211
15212 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15213
15214         * class.c (mono_class_init): Move the code that sets up class->methods to 
15215         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
15216
15217         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
15218         canonical instance of an inflated generic signature.
15219         (mono_type_create_from_typespec): Remove an invalid free.
15220
15221         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
15222
15223 2007-09-18  Marek Habersack  <mhabersack@novell.com>
15224
15225         * domain-internals.h: added a declaration of the
15226         mono_assembly_load_full_nosearch internal function.
15227
15228         * assembly.c (mono_assembly_load_with_partial_name): use
15229         mono_try_assembly_resolve return value properly.
15230         (mono_assembly_load_full_nosearch): copied the function body from
15231         mono_assembly_load_full, without the code to invoke assembly
15232         search hooks.
15233         (mono_assembly_load_full): calls the above new function and if the
15234         assembly is not resolved, invokes the search hooks.
15235
15236         * appdomain.c (mono_runtime_init): restore the global postload
15237         assembly search handlers.
15238
15239 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15240
15241         * class.c (mono_class_init): Make sure class->methods and class->properties
15242         are never NULL in the generics case.
15243
15244         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
15245
15246 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
15247
15248         * metadata.c (free_generic_class): Disable some code to fix the build.
15249
15250         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
15251
15252         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
15253         from the image mempool.
15254
15255         * metadata.c (free_generic_class): Free more data from the inflated class.
15256
15257         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
15258
15259         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
15260         mempool.
15261         (mono_type_create_from_typespec): Ditto.
15262
15263         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
15264         MonoImage to the caller.
15265         (mono_init_internal): Save the opened image in a global variable.
15266         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
15267
15268         * reflection.c (resolve_object): Fix a leak.
15269
15270         * metadata.c: Fix the freeing of data in the generics caches.
15271         
15272         * metadata.c (free_generic_inst): Comment this out to fix the build.
15273         (free_generic_class): Ditto.
15274
15275         * metadata.c: Free cached generic methods, instantinations and classes when
15276         they are removed from the caches.
15277         (mono_metadata_free_type): Free the type itself.
15278
15279         * class.c: Free the result of mono_class_inflate_generic_type () in a few
15280         places.
15281
15282 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
15283
15284         * boehm-gc.c: restrict managed allocs to __thread supporting
15285         architectures.
15286
15287 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
15288
15289         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
15290         (mono_generic_class_get_class): Fix a leak.
15291
15292         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
15293         mono_metadata_free_type ().
15294         (mono_metadata_inflate_generic_inst): Fix a leak.
15295
15296 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15297
15298         * mono-debug.c (free_header_data): Fix a leak missed earlier.
15299
15300         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
15301         mempool.
15302
15303         * mono-debug.c (mono_debug_close_image): Fix call to 
15304         g_hash_table_remove ().
15305
15306 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
15307
15308         * icall-def.h: redirect all the string ctor to the managed
15309         CreateString () methods.
15310         * string-icalls.c, string-icalls.h: removed dead code for string
15311         ctors and icalls.
15312
15313 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15314
15315         * mono-debug.c: Fix memory leaks.
15316
15317 2007-09-14  Jonathan Chambers <joncham@gmail.com>
15318
15319         * threads-types.h: Implement mono_hazard_pointer_set and 
15320         mono_hazard_pointer_clear macros using do/while(0) to fix
15321         compilation with MSVC.
15322         
15323         Code is contributed under MIT/X11 license.
15324
15325 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15326
15327         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
15328         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
15329
15330 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15331
15332         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
15333         icalls.
15334
15335 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15336
15337         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
15338         managed-code allocated as well.
15339
15340 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15341
15342         * class.c (mono_class_is_assignable_from): Add support for generic variance.
15343
15344 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
15345
15346         * boehm-gc.c: fixed the build after the AOT changes.
15347
15348 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15349
15350         * wrapper-types.h: Add an ALLOC wrapper type.
15351
15352         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
15353         reference managed allocator methods.
15354
15355 2007-09-12  Marek Safar  <marek.safar@gmail.com>
15356
15357         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
15358         of Type array and not MonoType, a fix suggested by Hari.
15359         
15360 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15361
15362         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
15363         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
15364         
15365         Code is contributed under MIT/X11 license.
15366
15367 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15368
15369         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
15370
15371 2007-09-12  Marek Habersack  <mhabersack@novell.com>
15372
15373         * image.c (do_mono_image_open): if assembly file fails to open and
15374         MONO_IOMAP is in effect, try to find the path in a
15375         case-insensitive way.
15376
15377         * appdomain.c (mono_runtime_init): do not install postload hooks -
15378         tests show that MS.NET doesn't use anything of that sort to
15379         trigger the AppDomain.AssemblyResolve event.
15380         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
15381         made non-static.
15382         (mono_runtime_init): init portability helpers here.
15383
15384         * assembly.c (mono_assembly_load_with_partial_name): if other   
15385         attempts fail, trigger the AppDomain.AssemblyResolve event handler
15386         to resolve the assembly.
15387
15388         * domain-internals.h: added mono_try_assembly_resolve and marked
15389         it as internal.
15390
15391 2007-09-11  Jb Evain  <jbevain@novell.com>
15392
15393         * object-internals.h (MonoReflectionDynamicMethod): add
15394         a `MonoReflectionType *owner` field. The owner is used
15395         * reflection.c:
15396         (mono_reflection_create_dynamic_method): use the owner of the dynamic
15397         method as the class declaring the dynamic method.
15398         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
15399         dynamic method to the declaring type of the methodbuilder.
15400
15401 2007-09-11  Mark Probst  <mark.probst@gmail.com>
15402
15403         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
15404         rules for calling methods via reflection.
15405
15406 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
15407
15408         * reflection.c (resolve_object): Add support for MonoGenericClass. 
15409         Inflate MonoType's.
15410
15411 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15412
15413         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
15414         provide a managed method that does fast allocations without needing
15415         a managed->unmanaged transition. Boehm GC implementation currently
15416         enabled for ptrfree objects on sane architectures.
15417
15418 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
15419
15420         * marshal.c, marshal.h: exported a couple of useful functions and
15421         added mono_mb_get_label () to easily handle backward branches.
15422
15423 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
15424
15425         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
15426
15427 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15428
15429         * loader.c (find_method): Fixed the regression introduced while
15430         fixing bug #81466.
15431
15432 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
15433
15434         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
15435         well.
15436         
15437         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
15438         icall.c reflection.c: Pass a MonoGenericContext argument to 
15439         mono_lookup_dynamic_token ().
15440
15441         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
15442         #82744.
15443         
15444 2007-09-09  Robert Jordan  <robertj@gmx.net>
15445
15446         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
15447         for generic methods.
15448
15449         * object.c (mono_object_get_virtual_method): Handle generic methods.
15450         Fixes bug #78882.
15451
15452         Code is contributed under MIT/X11 license.
15453
15454 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
15455
15456         * image.c: fix locking in mono_image_load_file_for_image ().
15457
15458 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
15459
15460         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
15461         used only as a cache: added an icall to fill it.
15462
15463 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
15464
15465         * reflection.h: exposed mono_reflection_free_type_info
15466         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
15467         since mono_reflection_bind_generic_parameters makes a copy of it.
15468         * reflection.c (free_type_info): subinfos should be freed.
15469         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
15470         made non static.
15471         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
15472         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
15473         this fixes #82695 and #81726.
15474    
15475
15476 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
15477
15478         * process.h, process.c:  added support for user profile/info in
15479           ProcessStartInfo. For now only Windows works.
15480
15481 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15482
15483         * metadata.c: consider the generic arguments when comparing
15484         signatures (bug #82614).
15485
15486 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15487
15488         * cil-coff.h, image.c: updated assembly loader to cope with the
15489         PE32+ 64 bit file format.
15490
15491 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15492
15493         * assembly.c, class.c, domain.c, loader.c: remove useless
15494         inclusion of cil-coff.h.
15495
15496 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
15497
15498         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
15499         if interface is marked with CoClassAttribute. 
15500    
15501         Code is contributed under MIT/X11 license.
15502
15503 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
15504
15505         * sgen-gc.c: ensure no object from the to space is copied again or finalized
15506         if it's seen twice in major collections.
15507
15508 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
15509
15510         * sgen-gc.c: big objects are not copied to the gray area, but they
15511         need to be considered for scanning, too, if they are brought alive
15512         by an object ready for finalizations or a survived one.
15513
15514 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15515
15516         * sgen-gc.c: properly account the number of disappearing links when
15517         they are nullified.
15518
15519 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
15520
15521         * sgen-gc.c: share the code to scan the registered roots between the
15522         different types of collections.
15523
15524 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15525
15526         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
15527
15528 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15529
15530         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
15531         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
15532
15533 2007-08-28  Mark Probst  <mark.probst@gmail.com>
15534
15535         * security-manager.c (mono_security_manager_get_methods):
15536         LinkDemandSecurityException now has 2 arguments instead of 3.
15537
15538 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
15539
15540         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
15541         platforms which need it.
15542
15543 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15544
15545         * sgen-gc.c: unregister thread data structures with a pthread_key_t
15546         dtor.
15547
15548 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
15549
15550         * threads.c: free the thread static data on thread exit.
15551
15552 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
15553
15554         * class.c: walk the hierarchy to find the generic definition for
15555         a class (fixes runtime part of bug #82498).
15556
15557 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
15558
15559         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
15560         ...
15561
15562         * image.c (mono_image_close): Here. Hopefully fixes #82510.
15563
15564 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15565
15566         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
15567
15568 2007-08-24  Robert Jordan  <robertj@gmx.net>
15569
15570         * appdomain.c: don't perform the ':'->';' substitution on Win32.
15571
15572 2007-08-24  Jb Evain  <jbevain@novell.com>
15573
15574         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
15575         for byref types.
15576
15577 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15578
15579         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
15580         #82286.
15581
15582 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
15583
15584         * assembly.c: Fix a warning.
15585         
15586 2007-08-23  Marek Habersack  <mhabersack@novell.com>
15587
15588         * appdomain.c: parse the <runtime> section looking for the probing
15589         element with the 'privatePath' attribute, which sets additional
15590         directories in which the runtime should look for assemblies.
15591
15592 2007-08-23  Robert Jordan  <robertj@gmx.net>
15593
15594         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
15595         Fixes #82499.
15596
15597 2007-08-23  Martin Baulig  <martin@ximian.com>
15598
15599         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
15600         _mono_debug_init_corlib() and remove it from the header file.
15601
15602 2007-08-23  Martin Baulig  <martin@ximian.com>
15603
15604         * mono-debug-debugger.c
15605         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
15606         don't notify the debugger about it.
15607
15608         * mono-debug-debugger.h
15609         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
15610
15611 2007-08-23  Robert Jordan  <robertj@gmx.net>
15612
15613         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
15614         Code is contributed under MIT/X11 license.
15615
15616 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15617
15618         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
15619
15620 2007-08-22  Martin Baulig  <martin@ximian.com>
15621
15622         * mono-debug.c: Store debugging info on a per-domain basis and
15623         free it on domain unload.  Add support for unloading symbol files.
15624
15625         * mono-debug.h
15626         (MonoDebugList): New typedef.
15627         (MonoSymbolTable):
15628         - add `data_tables and `type_table'.
15629         - replace 'symbol_files' and `num_symbol_files' with a
15630           `MonoDebugList *'.
15631         (mono_debug_data_table): Removed.
15632         (mono_debug_list_add): New public function.
15633         (mono_debug_list_remove): New public function.
15634         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
15635         (mono_debug_init_2_memory): Renamed into
15636         mono_debug_open_image_from_memory().
15637         (mono_debug_close_image): New public function.
15638         (mono_debug_domain_create): Likewise.
15639         (mono_debug_domain_unload): Likewise.
15640         (MONO_DEBUGGER_VERSION): Bump to 60.
15641
15642         * mono-debug-debugger.h
15643         (MonoDebuggerEvent):
15644         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
15645         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
15646         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
15647         - rename `THREAD_CREATED' and `THREAD_EXITED' into
15648           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
15649         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
15650           meaning.
15651         (mono_debugger_add_symbol_file): Removed.
15652         (mono_debugger_add_type): Removed.
15653         (mono_debugger_lookup_type): Removed.
15654         (mono_debugger_lookup_assembly): Removed.
15655
15656         * domain.c
15657         (mono_domain_create): Call mono_debug_domain_create().
15658         (mono_init_internal): Call mono_debug_init_corlib().
15659
15660         * assembly.c
15661         (mono_assembly_close): Call mono_debug_close_image().
15662
15663 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15664
15665         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
15666         mmap call.
15667
15668 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
15669
15670         * sgen-gc.c: ensure section->pin_queue_end is initialized
15671         correctly when non pinning objects in the section have been found.
15672
15673 2007-08-22  Marek Habersack  <mhabersack@novell.com>
15674
15675         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
15676         containing a list of directories separated by ':'. MSDN docs say
15677         the directories should be separated with ';'. Part of a bugfix for
15678         bug #81446
15679
15680 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
15681
15682         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
15683         it should MonoType and not MonoClass.
15684
15685 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
15686
15687         * culture-info-table.h : regenerated.
15688
15689 2007-08-20  William Holmes  <billholmes54@gmail.com>
15690
15691         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
15692          to call ReplaceFile Kernel32 on windows or in io-layer.
15693         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
15694         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
15695          as an internal call.
15696
15697         Code is contributed under MIT/X11 license.
15698
15699 2007-08-20  Jb Evain  <jbevain@novell.com>
15700
15701         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
15702         and MONO_EXCEPTION_FIELD_ACCESS.
15703
15704         * debug-helpers.[c|h]: new mono_field_full_name function.
15705
15706 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15707
15708         * class.c: Removed class_security_level() and moved it to
15709         security-core-clr.c.
15710
15711         * security-core-clr.c, security-core-clr.h: class_security_level()
15712         is now public and renamed to mono_security_core_clr_class_level().
15713         It also looks for security attributes in the classes a class is
15714         nested in.
15715
15716 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15717
15718         * security-core-clr.c, security-core-clr.h: CoreCLR security
15719         utility functions.
15720
15721         * Makefile.am: Added security-core-clr.[ch].
15722
15723         * security-manager.c, security-manager.h: Functions and enum for
15724         setting and getting the security mode.
15725
15726         * class.c: CoreCLR security checks.
15727
15728 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15729
15730         * icall-def.h, process.c, process.h: implemented icall to get
15731         user/system processor times.
15732
15733 2007-08-17  Mark Probst  <mark.probst@gmail.com>
15734
15735         * domain.c, threads.c, class-internals.h, domain-internals.h: New
15736         reader-lock-free jit_info_table.
15737
15738 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
15739
15740         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
15741
15742         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
15743
15744         * object-internals.h (MonoException): Add missing _data member.
15745
15746 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
15747
15748         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
15749         checking that only methods with matching qname or fqname are picked
15750         from implemented interfaces.
15751
15752 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
15753
15754         * verify.c (do_newarr):added, do type verification of
15755         newarr ops, push the right value on the eval stack.
15756         * verify.c (mono_method_verify): use do_newarr
15757
15758
15759 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
15760
15761         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
15762         factored the common code into get_boxable_mono_type, which
15763         is now using mono_type_get_full, this fixed byref related tests.
15764
15765 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
15766
15767         * class.c: added mono_type_get_full, this function has the same
15768         behavior of mono_class_get_full but the returned MonoType has
15769         all metadata of the associated token in case of a typespec token.
15770         * class.c: added mono_type_retrieve_from_typespec, used by 
15771         mono_type_get_full to retrieve the token type.
15772         * class.c (mono_class_create_from_typespec): changed to use
15773         mono_type_retrieve_from_typespec.
15774         * class.c (mono_ldtoken): changed to use mono_type_get_full
15775         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
15776         * class-internals.h: exported mono_type_get_full for internal use.
15777
15778 2007-08-16  Jb Evain  <jbevain@novell.com>
15779
15780         * domain.c (supported_runtimes): add entry for
15781         the 'moonlight' runtime version.
15782
15783 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15784
15785         * verify.c (mono_method_verify): small typo sliped in.  
15786
15787 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15788
15789         * verify.c (do_unbox_value): added, do type verification of
15790         unboxing ops
15791         * verify.c (mono_method_verify): use do_unbox_value
15792
15793
15794 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15795
15796         * verify.c (dump_stack_value): fixed typo, was printing string
15797         instead of object on stack.
15798         * verify.c (do_box_value): moved the byref check up as it leads
15799         to invalid code and should be done earlier.
15800         * verify.c: improved error messages for and ldobj
15801
15802 2007-08-15  William Holmes  <billholmes54@gmail.com>
15803
15804         * marshal.c (emit_marshal_custom): Omit the call to 
15805           marshal_native_to_managed when calling native to managed 
15806           and the argument is specified as an out argument.
15807
15808         Code is contributed under MIT/X11 license.
15809
15810 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15811
15812         * verify.c: fixed the type checks for generics, function pointers and vectors.
15813         Added type verification for ldobj and ldtoken. The verifier
15814         would segfault if header or signature of a method contained references
15815         to non-existant types.
15816
15817 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
15818
15819         * marshal.c (cominterop_get_ccw): Patch from
15820         Bill Holmes to no walk up interface hierarchy. 
15821         All parent methods should be present in the interface for COM.
15822    
15823         Code is contributed under MIT/X11 license.
15824
15825 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
15826
15827         * marshal.c (emit_marshal_com_interface): Patch from
15828         Bill Holmes to handle COM Interfaces as return values
15829         for native->managed calls.
15830    
15831         Code is contributed under MIT/X11 license.
15832
15833 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
15834
15835         * marshal.c (cominterop_get_idispatch_for_object): Implement
15836         for runtime callable wrappers.
15837    
15838         Code is contributed under MIT/X11 license.
15839
15840 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
15841
15842         * pedump.c (main): changed from mono_init to mono_init_from_assembly
15843         so 2.0 types are accessible
15844
15845
15846 2007-08-13  Miguel de Icaza  <miguel@novell.com>
15847
15848         * domain.c (mono_init_internal): Call mono_assembly_load_friends
15849         once we load mscorlib.   Due to the order in which we initialize,
15850         the mono_assembly_load_full routine that loads mscorlib did not
15851         load friends.   We now load it once we load the
15852         mono_defaults.internals_visible_class class. 
15853
15854         * assembly.c: Expose the mono_load_friend_assemblies method.
15855
15856 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
15857
15858         * verify.c: improved the handling of boxing, better
15859         type checking for unary ops and conversion. Fix bug
15860         regarding managed pointer compatibility checking
15861
15862 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
15863
15864         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
15865
15866         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
15867
15868 2007-08-09  Raja R Harinath  <rharinath@novell.com>
15869
15870         * reflection.c (dup_type): Remove.
15871         * class.c (dup_type): Remove.
15872         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
15873         instead of the dodgy 'dup_type'.
15874         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
15875         handle the case where 'dup_type' needed the second argument.
15876
15877 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
15878
15879         * domain.c: Fix a warning.
15880
15881 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
15882
15883         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
15884         checking that methods with the same fqname are not overridden
15885         with a method from an ancestor.
15886
15887 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
15888
15889         * threads.c (free_thread_static_data_helper): Avoid a crash if
15890         thread->static_data is not yet set.
15891
15892 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
15893
15894         * marshal.c: Use correct image when emitting
15895         native wrapper for COM calls.
15896    
15897         Code is contributed under MIT/X11 license.
15898
15899 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
15900
15901         * icall-def.h, security.c, security.h :
15902           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
15903
15904 2007-08-07  Martin Baulig  <martin@ximian.com>
15905
15906         * mono-debug-debugger.h
15907         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
15908
15909         * domain.c (mono_domain_free): Call
15910         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
15911
15912 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
15913
15914         * verify.c (check_underflow, check_overflow): error message now returns IL offset
15915         * verify.c (in_same_block): code should test if either offset is inside the clauses
15916         * verify.c (mono_method_verify): push the exception into the eval stack of exception
15917         and filter blocks
15918
15919 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
15920
15921         * image.c (mono_image_close): Fix a leak.
15922
15923         * object.c (mono_runtime_invoke_array): Avoid using alloca.
15924
15925         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
15926
15927 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15928
15929         * domain.c, threads.c, threads-types.h: fix memory retention issue
15930         with thread static variables not being cleared on domain unload.
15931         Reuse thread static slots after domain unload.
15932
15933 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
15934
15935         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
15936         nullable type.
15937
15938         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
15939         now done in mono_runtime_invoke_array.
15940
15941         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
15942         receiver is a nullable type.
15943
15944         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
15945         generic parameter.
15946
15947 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
15948
15949         * marshal.c: Implement COM Objects as return type for 
15950         managed->unmanaged calls. Added Release calls for COM Object
15951         out/return values in managed->unmanaged calls.
15952
15953         Code is contributed under MIT/X11 license.
15954
15955 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
15956
15957         * threads.h, threads-type.h: move the hazard pointer declarations
15958         to the private header.
15959
15960 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15961
15962         * file-io.c, appdomain.c: memory leak fixes.
15963
15964 2007-08-02  Dick Porter  <dick@ximian.com>
15965
15966         * socket-io.c
15967         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
15968         SO_REUSEADDR setting into io-layer/sockets.c.
15969
15970 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
15971
15972         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
15973         from Object when called on a generic parameter. Fixes #82211.
15974
15975 2007-08-01  Dick Porter  <dick@ximian.com>
15976
15977         * file-io.c (convert_share): Test FileShare values bit-by-bit.
15978         Fixes bug 79250 yet again.
15979
15980 2007-07-30  Martin Baulig  <martin@ximian.com>
15981
15982         Merged the `debugger-dublin' branch.
15983
15984         * mono-debug.h
15985         (MonoDebugDataTable): New typedef.
15986         (MonoDebugMethodAddressList): New typedef.
15987         (MonoDebugWrapperData): Removed.
15988         (MonoDebugSymbolTable): Removed `current_data_table',
15989         `current_data_table_size', `current_data_table_offset'.
15990         (MonoDebugDataItemType): Moved into mono-debug.c.
15991         (MonoDebugMethodJitInfo): Remove `address'.
15992         (mono_debug_data_table): New global variable.
15993         (mono_debug_lookup_method_addresses): New public function.
15994         (mono_debug_find_method): Take a `MonoMethod *', not a
15995         `MonoDebugMethodInfo *'.
15996
15997         * mono-debug.c: Drop support for the old symbol tables.
15998
15999 2007-06-28  Martin Baulig  <martin@ximian.com>
16000
16001         * mono-debug.c (mono_debug_debugger_version): New public variable.
16002
16003 2007-07-31  William Holmes  <billholmes54@gmail.com>
16004
16005         * metadata.c Changed mono_type_create_from_typespec to not insert
16006           the type into the hash map until after
16007           do_mono_metadata_parse_type has completed.
16008         Fixes Bug #82194
16009         Code is contributed under MIT/X11 license.
16010
16011 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
16012
16013         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
16014         generic parameter. Fixes #82211.
16015
16016 2007-07-27  Jb Evain  <jbevain@novell.com>
16017
16018         * pedump.c (dump_metadata, dump_metadata_header): dump
16019         versions contained in the metadata header.
16020
16021 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
16022
16023         * threads.c: register small_id_table with the GC.
16024
16025 2007-07-27  Mark Probst  <mark.probst@gmail.com>
16026
16027         * threads.c, threads.h, class-internals.h, object-internals.h:
16028         Hazard pointers, to be used by lock-free parallel algorithms.
16029
16030 2007-07-26  Dick Porter  <dick@ximian.com>
16031
16032         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
16033         routine on non-windows platforms, as I've not managed to think of
16034         a non-kludgy way of doing this.  Finishes off bug 78739.
16035
16036 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
16037
16038         * object.c: properly setup interface_bitmap in proxy vtables.
16039
16040 2007-07-25  Marek Habersack  <mhabersack@novell.com>
16041
16042         * appdomain.c (get_shadow_assembly_location): do not use TickCount
16043         to create unique shadow copy target directories, use the domain's
16044         serial number instead. Each domain gets a unique target directory
16045         that way.
16046
16047         * domain.c (mono_domain_create): added code to increment domain
16048         shadow copy serial number and cache the value in the current
16049         domain structure.
16050
16051         * domain-internals.h (struct _MonoDomain): added a new field -
16052         shadow_serial to hold the serial number used in generation of
16053         shadow-copy directories. This is to make sure that the directory
16054         name is unique for each and every domain created. We avoid a race
16055         condition with overriding assemblies already in use by other app
16056         domains.
16057
16058 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
16059
16060         * class.c (mono_bounded_array_class_get): fixed memory leak when 
16061         binding generic parameters.
16062
16063 2007-07-24  Raja R Harinath  <rharinath@novell.com>
16064
16065         * metadata.c (do_mono_metadata_parse_generic_class): Use
16066         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
16067         error.
16068
16069 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
16070
16071         * loader.c, class-internals.h, reflection.c: removed the per-method
16072         generics hashtable: we use the global one through the call of
16073         mono_class_inflate_generic_method ().
16074
16075 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
16076
16077         * class.c, metadata.c, class-internals.h: introduce yet another
16078         generics global cache for inflated methods (fixes 98% of the perf
16079         issue in bug #81806).
16080
16081 2007-07-23  Raja R Harinath  <rharinath@novell.com>
16082
16083         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
16084         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
16085         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
16086         return a MonoGenericInst containing (a copy) of those types.
16087         (mono_metadata_inflate_generic_inst): Update to changes.
16088         (mono_metadata_parse_generic_inst): Likewise.
16089         (mono_get_shared_generic_inst): Likewise.
16090         * reflection.c (mono_class_bind_generic_parameters): Likewise.
16091         (mono_reflection_bind_generic_method_parameters): Likewise.
16092         * metadata-internals.h: Likewise.
16093         * icall.c (free_generic_context): Kill.
16094         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
16095
16096         * reflection.c (reflection_methodbuilder_to_mono_method): Use
16097         mono_metadata_type_dup.
16098         * marshal.c (mono_mb_create_method): Likewise.
16099
16100         * metadata.c (mono_metadata_type_dup): Rename from
16101         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
16102         MonoImage.  Handle a few more cases, esp. when no mempool is given.
16103         * marshal.c, metadata-internals.h: Update to changes.
16104
16105 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
16106
16107         * class.c: fixed a small leak for array classes and removed warning.
16108
16109 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
16110
16111         * loader.c (mono_method_get_param_token): Make this work on generic methods.
16112         Return 0x8000000 for return parameters. Fixes #82161.
16113
16114 2007-07-21  Marek Habersack  <grendello@gmail.com>
16115
16116         * appdomain.c (get_shadow_assembly_location): append the current
16117         ticks value to the path. Avoids overwriting the same assemblies by
16118         several threads at the same time.
16119
16120 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
16121         and Raja R Harinath  <rharinath@novell.com>
16122
16123         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
16124         Simplify slightly.
16125         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
16126         property for testing if a method is a generic method definition.
16127
16128 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
16129
16130         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
16131
16132 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16133
16134         * verify.c: used function from private branch, reverted to the one in class.h 
16135
16136 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16137
16138         * verify.c: a typo slipped in and the code wont compile
16139
16140 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16141
16142         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
16143         disabled box instruction as it is doing the wrong thing
16144         improved stack dump messages, now it is easier to debug type related issues
16145
16146
16147 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
16148
16149         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
16150
16151 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16152
16153         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
16154         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
16155         grouped with class and valuetype. This change will simply 
16156         the code as it should be handled just like unmanaged pointers.
16157
16158 2007-07-19  Mark Probst  <mark.probst@gmail.com>
16159
16160         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
16161
16162 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16163
16164         * verify.c: several stack merge issues fixed, reference comparisons now
16165         check the type size. strict type check now works correctly.
16166         added more uses of IS_MANAGED_POINTER macro.
16167         fixed issues pointed by running the test suite against .net.
16168         
16169
16170 2007-07-19  Mark Probst  <mark.probst@gmail.com>
16171
16172         * class.c, loader.c, class-internals.h: Removed the
16173         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
16174         defines.
16175
16176         * icall.c: Better error checking in some internal reflection
16177         methods.
16178
16179 2007-07-18  William Holmes  <billholmes54@gmail.com>
16180
16181         * filewatcher.c : removed unused variable 'filename' in 
16182           ves_icall_System_IO_FSW_SupportsFSW
16183
16184 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
16185
16186         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
16187         obsolete, removed.
16188
16189 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
16190
16191         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
16192         
16193         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
16194
16195 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
16196
16197         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
16198         Implement generics support.
16199         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
16200
16201         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
16202         type_args and method_args arguments.
16203         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
16204         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
16205         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
16206
16207 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
16208
16209         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
16210           It adds a rootimage parameter to mono_reflection_get_type_internal,
16211           adds new function mono_reflection_get_type_with_rootimage and use
16212           the rootimage to resolve the types instead of the current image
16213
16214 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
16215
16216         * culture-info-table.h: Forgot to update after r78304.
16217
16218 2007-07-13  Raja R Harinath  <rharinath@novell.com>
16219
16220         * class.c (mono_class_is_open_constructed_type)
16221         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
16222
16223 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
16224
16225         * class.c (mono_bounded_array_class_get):  method fails if used with
16226         an incomplete TypeBuilder enum (no basetype field), fixed it by 
16227         avoiding calculating the size for such array as it cannot be instantiated.
16228         Fix bug #82015
16229
16230 2007-07-12  Raja R Harinath  <rharinath@novell.com>
16231
16232         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
16233         field.
16234         * metadata.c, reflection.c: Update to changes.
16235
16236 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
16237
16238         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
16239         mono_class_is_valid_enum, they are used to valide a enum when loading.
16240         * reflection.c: used new functions to throw TypeLoadException when and
16241         invalid enum is build with TypeBuilder. Fixes #82018
16242   
16243 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
16244
16245         * object.c: forgot commit of mono_class_setup_methods () to access
16246         iface->methods.
16247         * object-internals.h: added a few more handy fields to
16248         MonoIMTCheckItem.
16249
16250 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
16251
16252         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
16253         iface->methods.
16254
16255 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
16256
16257         * class-internals.h, object-internals.h, object.c: IMT-based
16258         interface invocation core from Massimiliano Mantione
16259         (massi@ximian.com) with a reworked arch-specific interface,
16260         bsearch implementation and a few bugfixes and memory savings by me.
16261
16262 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
16263
16264         * class.c (mono_class_create_from_typedef): mono would segfault if 
16265         an enum did not have a __value field. It now throws a TypeLoadException
16266         for such cases. Fix bug #82022
16267
16268 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
16269
16270         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
16271
16272 2007-07-09  Mark Probst  <mark.probst@gmail.com>
16273
16274         * class.c (mono_class_init): If a class is already inited but has
16275         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
16276
16277 2007-07-09  Mark Probst  <mark.probst@gmail.com>
16278
16279         * class.c: Properly handle the case of an unimplemented interface
16280         method.  Fixes: 81673.
16281
16282 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
16283
16284         * class-internals.h, object.c: cleanup patch from massi: use
16285         MonoVTable->interface_bitmap since the vtable interfaces offset array
16286         is going away.
16287
16288 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
16289
16290         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
16291         GetMDStreamVersion icall instead.
16292
16293 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
16294
16295         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
16296         not use mono_dl_build_path() with a full library name: makes
16297         fallbacks to libgaim and libfam work.
16298
16299 2007-07-06  William Holmes  <billholmes54@gmail.com>
16300
16301         * assembly.c: Added a continue statement in probe_for_partial_name when
16302          parse_assembly_directory_name fails.  Fixes : 82002
16303
16304 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
16305
16306         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
16307         and added a verification  for TYPEDBYREF.
16308         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
16309         make native int interchangeable with int32 and some small cleanup and formating.
16310         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
16311         handle byref of byref.
16312         * verify.c (push_local): handle byref of byref.
16313         * verify.c (do_binop): invalid mix of values is unverifiable
16314         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
16315         added visibility checks
16316         * verify.c (field related method): added visibility checks
16317         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
16318
16319 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
16320
16321         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
16322         string.
16323
16324 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
16325
16326         * profiler.c (mono_profiler_load): Fix an off-by-one error.
16327
16328         * marshal.c (emit_marshal_string): When returning a string from managed code,
16329         allways make a copy even for unicode strings. Fixes #81990.
16330
16331 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
16332
16333         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
16334         of byref generic inst types (bug #81997).
16335
16336 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
16337
16338         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
16339         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
16340
16341 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
16342
16343         * marshal.c (emit_marshal_string): Add support for unicode strings in
16344         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
16345
16346 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
16347
16348         * verify.c: field load/store are now verified, missing only access checks now
16349
16350 2007-06-28  Martin Baulig  <martin@ximian.com>
16351
16352         * mono-debug.c (mono_debug_debugger_version): New public variable.
16353
16354 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
16355
16356         * locales.c: When constructing DateTimeFormat or NumberFormat for
16357         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
16358         MonoCultureInfo contructed from the current locale is always
16359         read-only and has UseUserOverride set to true. All MonoCultureInfo
16360         instances returned for GetCultures have both IsReadOnly and
16361         UseUserOverride set to true. Fixes part of bug #81930.
16362
16363 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
16364
16365        * icall-def.h: Update System.__ComObject icalls
16366        * marshal.c: Avoid managed transition (and object creation)
16367        when looking up COM interface in RCW.
16368        * marshal.h: Ditto.
16369        
16370        Code is contributed under MIT/X11 license.
16371
16372 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
16373
16374         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
16375         to avoid crashes during assembly unloading.
16376
16377 2007-06-22  Raja R Harinath  <rharinath@novell.com>
16378
16379         Fix MethodInfo.IsGenericMethodDefinition
16380         * reflection.c (mono_reflection_bind_generic_method_parameters):
16381         Rearrange code to ensure we always uses a generic method definition.
16382         * class.c (mono_class_inflate_generic_method_full): Set
16383         'generic_container' field only for generic method definitions.
16384         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
16385         Use presense of 'generic_container' field as indication of being a
16386         generic method definition.
16387
16388 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
16389
16390         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16391
16392         * object-internals.h: Reflect changes in the layout of the managed Delegate
16393         class.
16394         
16395         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
16396         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
16397         runtime memory used by the dynamic method. Fixes #77146.
16398
16399 2007-06-21  Dick Porter  <dick@ximian.com>
16400
16401         * file-io.h: 
16402         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
16403         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
16404         81767.
16405
16406 2007-06-21  Raja R Harinath  <rharinath@novell.com>
16407
16408         * reflection.c (method_encode_methodspec): Add a tripwire.
16409         * class.c (inflate_generic_type): The fully open generic type is
16410         not the same as the generic type definition.
16411
16412 2007-06-21  Martin Baulig  <martin@ximian.com>
16413
16414         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
16415
16416         * mono-debug-debugger.h
16417         (MonoDebuggerBreakpointInfo): Removed.
16418         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
16419         (mono_debugger_remove_breakpoint): Likewise.
16420         (mono_debugger_breakpoint_callback): Likewise.
16421         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
16422
16423 2007-06-21  Raja R Harinath  <rharinath@novell.com>
16424
16425         * metadata.c (mono_metadata_lookup_generic_class): The fully open
16426         generic type is not the same as the generic type definition.
16427         * class.c (mono_generic_class_get_class): Likewise.
16428
16429 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
16430
16431         * icall.c: The second argument to 
16432         System.Reflection.MethodBase.GetMethodFromHandleInternalType
16433         is a MonoType not a MonoClass.
16434
16435 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
16436
16437         * verify.c: support for function pointers in the verifier
16438
16439 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
16440
16441         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
16442
16443 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
16444
16445         * assembly.c: removed Mono.Data.SqliteClient from the list of
16446         forward-compatible assemblies as it breaks the ABI (bug #81899).
16447
16448 2007-06-19  Raja R Harinath  <rharinath@novell.com>
16449
16450         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
16451         lookup/update with the loader lock.
16452         * reflection.c (mono_class_bind_generic_parameters): No need to
16453         protect mono_metadata_lookup_* with the loader lock.
16454         * class.c (inflate_generic_type): Likewise.
16455         
16456         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
16457         on a generic instantiated type.
16458
16459 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
16460
16461         *verify.c: produce meanfull error messages on verification error
16462         *verify.c: fixed some cases of verification errors reported as validation errors
16463         *pedump.c: fixed the error name array, now it shows validation errors properly
16464         *verify.h: fixed the contant that should be used for verification errors
16465
16466 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
16467
16468         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
16469         for bug #77596, 81858 and 80743 (generics data structures on domain
16470         unload).
16471
16472 2007-06-15  Raja R Harinath  <rharinath@novell.com>
16473
16474         Avoid allocating 'MonoGenericContext' on the heap.
16475         * class-internals (_MonoMethodInflated::context): Make field
16476         inline, not a pointer.
16477         * loader.c (method_from_methodspec): Allocate 'new_context' on the
16478         stack.  Use the context embedded within the inflated method as the
16479         hash key, rather than 'new_context'.
16480         * class.c (inflate_generic_context): Simplify.  Return a struct
16481         rather than allocating on the heap.
16482         (mono_class_inflate_generic_method_full): Update to changes.  Now,
16483         doesn't salt away a copy of the context -- simplifying the
16484         lifetime rules of a 'MonoGenericContext *'.
16485         (mono_method_get_context): Return pointer to embedded context.
16486         (setup_generic_array_ifaces): Allocate temporary context on stack.
16487         * reflection.c (inflate_mono_method): Likewise.
16488         (mono_reflection_bind_generic_method_parameters): Likewise.
16489         Use the context embedded within the inflated method as the hash key.
16490
16491         Avoid a source of allocation of 'MonoGenericContext'.
16492         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
16493         and 'cached_context' fields into embedded 'MonoGenericContext' field.
16494         * class.c: Update to changes.
16495         (mono_generic_class_get_context): Simplify drastically.  Now just
16496         returns a pointer to the field.
16497         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
16498         argument as a const pointer.
16499         (mono_metadata_generic_context_equal): Likewise.
16500         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
16501         Update to changes.
16502
16503 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
16504
16505         * verify.c improved the handling of brtrue/brfalse, factored out common code
16506
16507 2007-06-14  Raja R Harinath  <rharinath@novell.com>
16508
16509         Kill MonoGenericMethod.
16510         * class-internals.h (MonoGenericContext::method_inst): Rename from
16511         'gmethod' and convert to a MonoGenericInst.
16512         (MonoGenericMethod): Remove.
16513         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
16514         * loader.c (method_from_methodspec): Update to changes.  Use a
16515         MonoGenericContext as the key to the hashtable.
16516         * metadata.c (mono_metadata_generic_context_equal): Rename from 
16517         'mono_metadata_generic_method_equal' and take MonoGenericContext.
16518         (mono_metadata_generic_context_hash): Likewise from
16519         'mono_metadata_generic_method_hash'.  Change hash function.
16520         (mono_metadata_load_generic_params): Update to changes.
16521         (mono_get_shared_generic_method): Remove.
16522         * metadata-internals.h (mono_get_shared_generic_method): Remove.
16523         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
16524         (inflate_generic_context): Likewise.
16525         (mono_class_inflate_generic_method_full): Likewise.
16526         (setup_generic_array_ifaces): Likewise.
16527         (mono_class_create_from_typespec): Likewise.
16528         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
16529         (method_encode_methodspec): Update callsite.
16530         (reflection_methodbuilder_to_mono_method): Update to changes.
16531         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
16532         MonoGenericContext as the key to the hashtable.
16533         (inflate_mono_method): Update to changes.
16534
16535         * class-internals.h (MonoGenericMethod::container): Remove.
16536         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
16537
16538 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
16539
16540         * profiler-private.h, profiler.c, profiler.h: added API to profile
16541         exception events.
16542
16543 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
16544
16545         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
16546
16547 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
16548
16549         * verify.c: method invocation is now validated, now we verify parameter types on stack.
16550         Fixed overflow and underflow not aborting the verification process.
16551
16552 2007-06-13  Mark Probst  <mark.probst@gmail.com>
16553
16554         * class-internals.h (MonoStats): Added stats entries for dynamic
16555         code allocations.
16556
16557 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
16558
16559         * loader.c (mono_free_method): Free header->locals and header->clauses.
16560
16561         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
16562         dynamic case.
16563
16564         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
16565
16566         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
16567
16568 2007-06-12  Raja R Harinath  <rharinath@novell.com>
16569
16570         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
16571         the tables.
16572
16573 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16574
16575         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
16576
16577 2007-06-11  Raja R Harinath  <harinath@gmail.com>
16578
16579         MonoGenericMethod on a diet
16580         * class-internals.h (_MonoMethodInflated::reflection_info): Move
16581         here ...
16582         (_MonoGenericMethod::reflection_info): ... from here.
16583         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
16584         Update to changes.
16585         * reflection.c (inflate_mono_method): Likewise.
16586         (mono_reflection_bind_generic_method_parameters): Likewise.
16587
16588 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16589
16590         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
16591         *verify.c: factored long ldarg forms to share code with short forms
16592
16593 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16594
16595         *verify.c: fixed code formating factored some duplicate code
16596         into a new function
16597
16598         *verify.h: fixed binary incompatibility introduced earlier
16599
16600         *pedump.c: fixed formating
16601
16602 2007-06-11  Raja R Harinath  <harinath@gmail.com>
16603
16604         Fix assertion when disassembling Mono.C5.dll
16605         * loader.c (method_from_methodspec): Avoid inflating a method
16606         twice with the same context.  If the methodref is inflated, use
16607         the declaring method instead.
16608
16609         * class.c (mono_class_from_generic_parameter): Fix case similar to
16610         bug #81830 handled below, but for method containers.
16611
16612 2007-06-10  Raja R Harinath  <harinath@gmail.com>
16613
16614         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
16615         get_shared_generic_class.  Directly inflate the instance.
16616         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
16617         (inflate_generic_class): Delete.
16618         (get_shared_generic_class): Delete.  Move setting of
16619         'cached_class' and 'cached_context' ...
16620         * metadata.c (mono_metadata_lookup_generic_class): ... here.
16621
16622         * metadata.c (mono_metadata_lookup_generic_class): Change
16623         signature to take the components of a MonoGenericClass rather than
16624         an allocated MonoGenericClass.  Change semantics to be intern-like.
16625         * reflection.c (mono_class_bind_generic_parameters): Update to
16626         changes.  Make locking region tighter.
16627         * class.c (inflate_generic_class): Update to changes.
16628         (get_shared_generic_class): Likewise.
16629         * metadata-internals.h: Likewise.
16630
16631         * reflection.c (mono_class_bind_generic_parameters): Take and
16632         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
16633         (mono_reflection_bind_generic_parameters): Use
16634         'mono_class_bind_generic_parameters' rather than duplicate the code.
16635         * class.c (mono_bounded_array_class_get): Update to changes.
16636         * object-internals.h: Likewise.
16637
16638         * reflection.c (mono_class_bind_generic_parameters): Only support
16639         parameterizing generic type definitions.  Remove support for other
16640         open types.
16641
16642 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
16643
16644         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
16645
16646         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
16647         in the dynamic case.
16648
16649 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
16650
16651         * threads.c: When cleaning up thread, reset the Background bit.
16652         Fixes bug #81720.
16653
16654 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
16655
16656        * metadata.c: Move variable declarations to top of scope.
16657        * verify.c: Move variable declarations to top of scope.
16658
16659        Code is contributed under MIT/X11 license.
16660
16661 2007-06-08  Raja R Harinath  <rharinath@novell.com>
16662
16663         * reflection.c (mono_class_bind_generic_parameters): Replace
16664         open-coded loop with mono_metadata_inflate_generic_inst.
16665
16666         * class.c (get_shared_generic_class): Don't call
16667         mono_get_shared_generic_inst.  Use the container's own
16668         'class_inst'.
16669
16670         * metadata.c (mono_metadata_load_generic_params): Move
16671         initialization of 'context' field here from ...
16672         * class.c (mono_class_create_from_typedef): ... here, and ...
16673         * loader.c (mono_get_method_from_token): ... here.
16674
16675         * class.c (get_shared_generic_class): Rename from
16676         mono_get_shared_generic_class and make static.
16677         (mono_get_shared_generic_inst): Move to metadata.c.
16678         * loader.c (mono_get_shared_generic_method): Likewise.
16679         * class-internals.h, metadata-internals.h: Update to changes.
16680
16681         Fix #81830
16682         * class.c (mono_class_from_generic_parameter): Don't assume a
16683         generic container owner exists.  Generic containers from monodis
16684         don't have any.
16685
16686 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
16687
16688         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
16689         * verify.h: new typedefs to returns the non-verifiable status
16690         * verify.c: initial implementation of generics, stack merging and object compatibility check
16691
16692 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16693
16694         * class.c, image.c, class-internals.h (MonoImage): class_cache is
16695         a MonoInternalHashTable again (fixed bug in internal hash table
16696         code).
16697
16698 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16699
16700         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
16701         MonoInternalHashTable again (fixed bug in internal hash table
16702         code).
16703
16704 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16705
16706         * class.c, image.c, class-internals.h, domain.c,
16707         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
16708         changes.  Have to figure out what makes them break the SWF
16709         regression.
16710
16711 2007-06-04  Mark Probst  <mark.probst@gmail.com>
16712
16713         * class.c, image.c, class-internals.h (MonoImage): class_cache is
16714         a MonoInternalHashTable now.
16715
16716 2007-06-04  Mark Probst  <mark.probst@gmail.com>
16717
16718         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
16719         MonoInternalHashTable now.
16720
16721 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
16722
16723         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
16724         invoke_impl code.
16725
16726         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
16727
16728         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
16729         dependent trampoline.
16730
16731         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16732
16733         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
16734
16735 2007-05-29  Robert Jordan  <robertj@gmx.net>
16736
16737         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
16738
16739 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
16740
16741         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
16742
16743 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
16744
16745        * marshal.c: Fix interface lookup loops for
16746        cominterop_get_com_slot_for_method and 
16747        cominterop_get_method_interface. Only need to lookup
16748        if type is a class, else use interface type method is on.
16749
16750        Code is contributed under MIT/X11 license.
16751
16752 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
16753
16754         * reflection.c: HasSecurity can be present even if no specially 
16755         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
16756         SecurityAttribute). Fix CAS regression tests on buildbot.
16757
16758 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
16759
16760        * appdomain.c: Add configure checks for header files.
16761        * image.c: Add configure checks for header files.
16762        * file-io.c: Add configure checks for header files.
16763        * debug-mono-symfile.c: Add configure checks for header files.
16764        * threadpool.c: Add configure checks for header files.
16765        * console-io.c: Add configure checks for header files.
16766        * profiler.c: Add configure checks for header files.
16767        * rawbuffer.c: Add configure checks for header files.
16768        * icall.c: Add configure checks for header files.
16769        * rand.c: Add configure checks for header files.
16770        * socket-io.c: Add configure checks for header files.
16771
16772        Code is contributed under MIT/X11 license.
16773
16774 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
16775
16776         * reflection.c (mono_custom_attrs_from_builders): Remove the 
16777         assertion as it breaks the build.
16778         
16779         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
16780
16781         * reflection.c (lookup_custom_attr): Make a copy here too.
16782
16783         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
16784         dynamic images.
16785
16786         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
16787         images.
16788
16789         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
16790         info.
16791
16792 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
16793
16794         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
16795         (load_cattr_value): Ditto.
16796
16797 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
16798
16799         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
16800
16801 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
16802
16803         * threads.c: In "start_wrapper", set apartment_state to MTA if
16804         apartment_state is Unknown and we're running on 2.0 profile or
16805         higher.
16806         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
16807         to main method, then set apartment_state to Unknown on 1.0 profile,
16808         and MTA on 2.0 profile.
16809
16810 2007-05-16  Jb Evain  <jb@nurv.fr>
16811
16812         * class-internals.h (MonoDefaults): Add an attribute_class and
16813           customattribute_data_class.
16814         * domain.c (mono_init_internal): Populate them.
16815         * reflection.c: Use them to remove duplicates. Make a vew
16816         MonoClass variables `static'.
16817
16818 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
16819
16820         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
16821         step in implementing IMT, so that all isinst checks now can go
16822         through the bitmap.
16823         This was needed because vtables for TransparentProxy need to look
16824         like the vtable of the "target" class, so they need to point to
16825         its interface bitmap directly.
16826
16827         * object.c: inside "mono_class_create_runtime_vtable" and
16828         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
16829
16830 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
16831
16832         * object-internals.h
16833           culture-info.h : added territory field in MonoCulture and
16834           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
16835         * locales.c : fill territory field above too.
16836         * culture-info-table.h : regenerated.
16837
16838 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
16839
16840         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
16841         Fixes #81599.
16842
16843 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
16844
16845         * object.c: Always initialize apartment, even if 
16846         there is no custom attributes on entry point.
16847         
16848         Code is contributed under MIT/X11 license.
16849
16850 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
16851
16852         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
16853         * metadata.c: If no encoding is set, check for unicode
16854         on class.
16855         
16856         Code is contributed under MIT/X11 license.
16857
16858 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
16859
16860         * threads.c: Handle if mono_thread_current returns NULL 
16861         
16862         Code is contributed under MIT/X11 license.
16863
16864 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
16865
16866         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
16867         in start_wrapper. Added mono_thread_init_apartment_state and
16868         mono_thread_cleanup_apartment_state.
16869         * object.c: Initialize thread apartment state on main thread
16870         by checking for STAThreadAttribute on entry point.
16871         * object-internals.h: Add apartment_state field to MonoThread.
16872         * threads-types.h: Add unmanaged definition of 
16873         System.Threading.ApartmentState, MonoThreadApartmentState.
16874         
16875         Code is contributed under MIT/X11 license.
16876         
16877 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
16878
16879         * class.c: Fix windows build.
16880         * class-internals.h: Fix windows build.
16881         
16882         Code is contributed under MIT/X11 license.
16883
16884 2007-05-08  Robert Jordan  <robertj@gmx.net>
16885
16886         * process.c (CreateProcess_internal):
16887         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
16888         .CreateNoWindow was specified. Fixes #81496.
16889
16890 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
16891
16892         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
16893         step in implementing IMT, replaced it with two compact arrays
16894         (interfaces_packed and interface_offsets_packed) and a bitmap that
16895         is used for isinst checks (interface_bitmap).
16896
16897         * class.c: (compare_interface_ids): compare function to pass to
16898         bsearch when looking for an interface with a given id.
16899         (mono_class_interface_offset): reimplemented using bsearch on
16900         interfaces_packed, getting the offset from interface_offsets_packed.
16901         (print_implemented_interfaces): utility debugging function.
16902         (setup_interface_offsets): reworked to initialize interfaces_packed,
16903         interface_offsets_packed and interface_bitmap.
16904
16905         * object.c: replaced all accesses to "MonoClass.interface_offsets"
16906         with uses of interfaces_packed and interface_offsets_packed.
16907
16908 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
16909
16910         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
16911         mono_class_interface_offset prototype to wrap all accesses to
16912         "MonoClass.interface_offsets".
16913
16914         * class.c: Implemented mono_class_interface_offset, and wrapped all
16915         accesses to "MonoClass.interface_offsets".
16916
16917         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
16918         "MonoClass.interface_offsets".
16919
16920 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
16921
16922         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
16923         GetMethodFromHandle overloads (bug #78637).
16924
16925 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
16926
16927         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
16928         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
16929
16930 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
16931
16932         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
16933         #81498.
16934
16935         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
16936         gracefully.
16937         (mono_custom_attrs_from_index): Ditto.
16938
16939         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
16940         Fixes #81501.
16941
16942 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
16943
16944         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
16945         is now allocated from a mempool.
16946
16947 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
16948
16949         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
16950         caller holds threads_lock, leading to deadlocks. Fixes #81476.
16951
16952 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
16953
16954         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
16955         mono_loader_clear_error () too late. Fixes #81463.
16956
16957 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
16958
16959         * culture-info-table.h : regenerated.
16960
16961 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
16962
16963         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
16964         is missing.
16965
16966 2007-04-25  Dick Porter  <dick@ximian.com>
16967
16968         * Makefile.am: Put the mingw enforced-optimisation back into the
16969         PLATFORM_WIN32 section.
16970
16971 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
16972
16973         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
16974         patch.
16975
16976         * image.c (mono_image_load_module): New API function to load a module reference.
16977
16978         * image.c (load_modules): Load modules lazily. Fixes #80812.
16979
16980         * class.c (mono_class_from_typeref): Use mono_image_load_module.
16981         
16982         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
16983
16984         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
16985         to mono_image_load_module_dynamic.
16986
16987 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
16988
16989         * marshal.c: Fix calling convention for CCW on non-windows
16990         platforms. STDCALL on windows, CDECL everywhere else to work 
16991         with XPCOM and MainWin COM.
16992         
16993         Code is contributed under MIT/X11 license.
16994
16995 2007-04-23  Martin Baulig  <martin@ximian.com>
16996
16997         Fix #80969.
16998
16999         * loader.c
17000         (method_from_memberref): Added `gboolean *used_context' argument.
17001         (mono_get_method_from_token): Likewise.
17002         (mono_get_method_full): Don't insert the method in the cache when
17003         `used_context' is true.
17004
17005 2007-04-23  Raja R Harinath  <rharinath@novell.com>
17006
17007         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
17008
17009         * reflection.c (mono_reflection_bind_generic_parameters): Don't
17010         create new MonoTypes for returned types.
17011         * class.c (mono_generic_class_get_class): Export mono-internal.
17012         * class-internals.h: Update to changes.
17013
17014 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
17015
17016         * threadpool.c, threadpool.h, icall-def.h: patch from
17017         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
17018
17019 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
17020
17021         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
17022         
17023         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
17024
17025         * threads.c (mono_thread_get_stack_bounds): New helper function.
17026
17027         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
17028         Correctly compute stack bounds when attaching. Fixes #81394.
17029
17030 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
17031
17032         * reflection.c: fix handling of doubles in custom attributes
17033         for the arm-fpa format (bug #81368).
17034
17035 2007-04-18  Raja R Harinath  <rharinath@novell.com>
17036
17037         * reflection.c (assembly_add_win32_resources): Mildly relax an
17038         bounds check to let the end pointer point just past the end of the
17039         allocated buffer.  (may fix #81384)
17040
17041 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
17042
17043         * culture-info-table.h : regenerated.
17044
17045 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
17046
17047         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
17048         the thread is aborted early.
17049
17050 2007-04-05  Dick Porter  <dick@ximian.com>
17051
17052         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
17053         FindFirstFile()/FindNextFile() to find entries.  This lets the
17054         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
17055         81038.
17056
17057         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
17058         the parameters of
17059         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
17060
17061 2007-04-04  Martin Baulig  <martin@ximian.com>
17062
17063         * debug-helpers.c
17064         (mono_method_desc_full_match): Add support for nested classes.
17065
17066 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
17067
17068         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
17069
17070 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
17071
17072         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
17073         waiting for too many threads.
17074
17075 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
17076
17077         * environment.c: Fix return value check on uname so we can get the 
17078         executing version on Solaris operating systems.
17079
17080 2007-03-28  Jb Evain  <jbevain@gmail.com>
17081
17082         * class.c (mono_type_get_name_recurse): Complete the
17083         fix for the creation of assembly qualified names for
17084         pointer types. Fixes #81208.
17085
17086 2007-03-27  Dick Porter  <dick@ximian.com>
17087
17088         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
17089         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
17090         changed.
17091
17092         * threads.c
17093         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
17094         the value of ReleaseMutex().
17095
17096 2007-03-27  Dick Porter  <dick@ximian.com>
17097
17098         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
17099         in little-endian order, not network endian, so must be converted
17100         to host endian here.  Fixes bug 80593.
17101
17102 2007-03-22  Jb Evain  <jbevain@gmail.com>
17103
17104         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
17105         qualified names for pointer types. Fixes #81208.
17106
17107 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
17108
17109         * marshal.c: Add support for PreserveSigAttribute. 
17110         
17111         Code is contributed under MIT/X11 license.
17112
17113 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
17114
17115         * process.c: Fix endianness issues. Fixes #81126.
17116
17117         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
17118         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
17119
17120         * image.c (mono_image_lookup_resource): Make this work on big-endian
17121         machines.Change API contract so the caller needs to free the return value.
17122         
17123         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
17124         API change.
17125         
17126 2007-03-14  Martin Baulig  <martin@ximian.com>
17127
17128         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
17129         mono_type_get_desc() as well.
17130
17131 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
17132
17133         * icall.c:  Fix environ access in VS.  
17134         
17135 2007-03-13  Alp Toker  <alp@atoker.com>
17136
17137         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
17138         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
17139         #63841.
17140
17141 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
17142
17143         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
17144         circular references among dynamic methods. Fixes #81091.
17145
17146         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
17147
17148 2007-03-09  Martin Baulig  <martin@ximian.com>
17149
17150         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
17151
17152 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
17153
17154         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
17155         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
17156         
17157         Code is contributed under MIT/X11 license.
17158         
17159 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
17160
17161         * loader.c: Reapply patch for bug #79424.
17162
17163 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
17164
17165         * metadata.c (mono_type_to_unmanaged): Only convert object to
17166         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
17167
17168 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
17169
17170         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
17171         (and incorrectly set) is_reference field from MonoGenericInst.
17172
17173 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
17174
17175         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
17176         a little earlier.
17177
17178         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
17179
17180         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
17181
17182 2007-03-05  Miguel de Icaza  <miguel@novell.com>
17183
17184         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
17185         FileOptions.1 value to mean "temporary", map that to
17186         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
17187
17188         Fixes 80688
17189
17190 2007-03-03  Marek Habersack  <mhabersack@novell.com>
17191
17192         * appdomain.c: implement MS .Net style shadow copying. Copies of
17193         the assemblies are made in a subdirectory of the dynamic base
17194         directory, the assembly names are preserved.
17195         Copy .mdb and .config files along with the assemblies being shadowed.
17196
17197 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
17198
17199         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
17200         (emit_marshal_handleref): Ditto.
17201
17202         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
17203         on Visual C++. Fixes #80671.
17204
17205 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
17206
17207         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
17208         for clone operations.
17209
17210 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
17211
17212         * marshal.c: Fix warnings.
17213
17214 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
17215
17216         * loader.c: allow case-insensitive matching of the dll name
17217         in dllmap handling when prefixed with "i:".
17218
17219 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
17220
17221         * threads.c: Fix #ifdef for dummy_apc function for VS.
17222
17223 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
17224
17225         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
17226
17227 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
17228         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
17229         giving precedence to the methods with a fully qualified name
17230         (InterfaceName.MethodName) when building the interface sections
17231         of the vtable.
17232
17233 2007-02-16  Dick Porter  <dick@ximian.com>
17234
17235         * threadpool.c (append_job): Fix fast-path array handling, so it's
17236         less likely the array will grow exponentially when the load is
17237         heavy.
17238
17239 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
17240
17241         * metadata-internals.h, loader.c: fix dllmap lookup order
17242         for non-function maps, too, and prepare for fallback code.
17243
17244 2007-02-12  Robert Jordan  <robertj@gmx.net>
17245
17246         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
17247         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
17248         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
17249         GlobalFree. Fixes a part of bug #77075.
17250
17251 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
17252
17253         * loader.c: implemented typedef parent in field memberref.
17254
17255 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
17256
17257         * marshal.c: Fix warnings and remember to call Release on
17258         IUnknown of RCW.
17259         
17260         Code is contributed under MIT/X11 license.
17261
17262 2007-02-10  Miguel de Icaza  <miguel@novell.com>
17263
17264         * class-internals.h: Add MonoHandleRef definition, and
17265         handleref_class to mono_defaults. 
17266
17267         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
17268         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
17269
17270         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
17271         (do nothing on this stage)
17272         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
17273         (emit_marshal_handleref): New method, used for argument handling
17274         of HandleRefs. 
17275
17276 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
17277
17278         * class.c (mono_class_setup_parent): Lazily init com types.
17279         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
17280         init com types.
17281         * object.c (mono_remote_class_vtable): Lazily init com types.
17282         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
17283         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
17284         * domain-internals.h: Expose mono_init_com_types.
17285         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
17286         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
17287         Add support for COM Callable Wrapper marshalling.
17288         * marshal.h: Add icall definitions.
17289         * gc.c: Handle freeing of CCWs in finalizer code.
17290         
17291         Code is contributed under MIT/X11 license.
17292
17293 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
17294
17295         * reflection.c: changed all the signature encoding code to use
17296         a variable-sized buffer.
17297
17298 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
17299
17300         * marshal.c: locking fixes: never take the loader lock
17301         or other runtime locks when holding the marshal lock
17302         (fixes bug#80664).
17303
17304 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
17305
17306         * marshal.c: make the delegate function pointer mapping
17307         work for the moving GC.
17308
17309 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
17310
17311         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
17312         for bug #80618.
17313
17314 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
17315
17316         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
17317         gmodule.
17318
17319 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
17320
17321         * threadpool.c: made the code moving-GC safe.
17322
17323 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
17324
17325         * assembly.c, boehm-gc.c, class-internals.h, class.c,
17326         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
17327         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
17328         warning cleanup.
17329         * reflection.c: warning cleanup, some threading and moving GC fixes.
17330
17331 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
17332
17333         * class.c, loader.c: create the needed Set/Get/Address array methods
17334         as well as the .ctors in mono_class_init (), fixes bug #80567.
17335
17336 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
17337
17338         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
17339         we doesn't decrease its alignment. Should fix the sparc build.
17340
17341 2007-01-24  Dick Porter  <dick@ximian.com>
17342
17343         * socket-io.c
17344         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
17345         Create the returned object if we need to ignore an unsupported
17346         socket option.  Fixes a segfault reported by Atsushi.
17347
17348 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
17349
17350         * class.c, object.c: restrict GC-tracked fields to
17351         UIntPtr fields used inside corlib, so we provide better
17352         type info to the GC and also allow broken packing as in
17353         bug #80580.
17354
17355 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
17356
17357         * sgen-gc.c: removed duplicated function.
17358
17359 2007-01-19  Miguel de Icaza  <miguel@novell.com>
17360
17361         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
17362         value that means that the value is not supported, but that we
17363         should not return a failure, but instead report this as a
17364         successful operation.
17365
17366 2007-01-19  Raja R Harinath  <rharinath@novell.com>
17367
17368         Fix tests/bug79956.2.il
17369         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
17370         (mono_generic_class_get_class): If the generic definition in an
17371         enum, copy over other fields related to it.
17372
17373 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
17374
17375         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
17376         genericinst enums (bug #79215).
17377
17378 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
17379         * class.c: Fix bug 80307.
17380
17381 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
17382
17383         * image.c: if the file table is not present, try to load
17384         all the modules, since we don't have info about them
17385         having or not metadata (bug #80517).
17386         * assembly.c: allow mono_assembly_load_references () to
17387         work for netmodules.
17388
17389 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
17390
17391         * image.c, metadata-internals.h, object.c: execute module
17392         cctors when running on the 2 runtime if present (bug #80487).
17393
17394 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
17395
17396         * icall.c: optimized InitializeArray() on bigendian.
17397
17398 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
17399
17400         * icall.c: fix for the broken ARM FPA double format.
17401
17402 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
17403
17404         * icall.c: handle endian issues for r4 and r8 types, too, in
17405         the InitializeArray() icall.
17406
17407 2007-01-15  Miguel de Icaza  <miguel@novell.com>
17408
17409         * loader.c (mono_loader_error_prepare_exception): Clear the error
17410         once we have extracted the information from it, do this before we
17411         call into the JIT's class loading mechanisms.
17412
17413         * object.c (mono_class_create_runtime_vtable): Do not clear the
17414         loader error before calling mono_class_get_exception_for_failure
17415         as the loader error is needed inside
17416         mono_class_get_exception_for_failure to throw the error (thinko).
17417
17418         Fixes #80521
17419         
17420 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
17421
17422         * reflection.c: align fields rva data so it's faster to load at
17423         runtime.
17424
17425 2007-01-12  Raja R Harinath  <rharinath@novell.com>
17426
17427         Prepare to simplify GenericMethod handling.
17428         * class-internals.h (mono_method_get_context): New accessor function.
17429         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
17430         rather than directly accessing '->context' field.
17431
17432         * class-internals.h (_MonoGenericParam.method): Move ...
17433         (_MonoGenericContainer): ... here.  Add into union with klass field.
17434         * class.c, icall.c, loader.c, metadata.c, reflection.c:
17435         Update to changes.
17436
17437 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
17438
17439         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
17440         the wrapper type enum and reduce relocations.
17441
17442 2007-01-12  Raja R Harinath  <rharinath@novell.com>
17443
17444         * reflection.c (inflate_mono_method): Reuse method instantiation
17445         from the generic method, if available.
17446
17447 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17448
17449         * marshal.c (emit_marshal_variant): Fix conv_arg
17450         type in last commit, based on whether parameter is byref.
17451         
17452 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17453
17454         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
17455         marshalling.
17456         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
17457         MONO_TYPE_OBJECT back for VARIANT support.
17458
17459 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17460
17461         * marshal.c, marshal.h, icall-def.h: Implement 
17462         Marshal.ReAllocCoTaskMem.
17463
17464 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
17465
17466         * marshal.c: memory retention fixes: use the proper
17467         image cache for runtime_invoke method lookups.
17468
17469 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
17470
17471         * mempool.c: added code to help debug mempool allocations.
17472
17473 2007-01-11  Dick Porter  <dick@ximian.com>
17474
17475         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
17476         support (experimenting with faking it with IP_MTU_DISCOVER for
17477         systems that don't have IP_DONTFRAGMENT.)
17478         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
17479         icall.
17480
17481         * icall-def.h: new System.Net.Sockets.Disconnect icall.
17482
17483         * socket-io.h: Add new fields to MonoSocketAsyncResult
17484         corresponding to the new ones in Socket.cs.
17485
17486 2007-01-11  Raja R Harinath  <rharinath@novell.com>
17487
17488         Fix IronPython regression mentioned in #80249
17489         * metadata.c (do_mono_metadata_parse_generic_class): Clear
17490         'cached_context' field, since it may have been initialized as a
17491         side-effect of metadata parsing.
17492
17493         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
17494         (_MonoGenericClass.cached_class): Move here and rename from lone
17495         remaining field of ...
17496         (_MonoInflatedGenericClass): ... this.  Remove.
17497         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
17498         to changes.
17499
17500         Fix mcs/tests/test-128.cs regression.
17501         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
17502         2007-01-10 change below.
17503         [MONO_TYPE_OBJECT]: Recurse into array case.
17504
17505 2007-01-11  Raja R Harinath  <harinath@gmail.com>
17506
17507         * class-internals.h (mono_get_inflated_generic_class): Remove.
17508         * class.c (mono_get_inflated_generic_class): Remove.
17509         (mono_generic_class_get_class): Rename from
17510         mono_class_create_generic.
17511         (mono_class_from_mono_type) [GENERICINST]: Use it.
17512         * reflection.c, metadata.c: Update to changes.  Use
17513         'mono_class_from_mono_type'.
17514
17515 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
17516
17517         * reflection.c: use passed type when encoding an array element
17518         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
17519
17520 2007-01-09  Robert Jordan  <robertj@gmx.net>
17521
17522         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
17523         result arguments (someDelegate.EndInvoke (unrelatedAres)).
17524         Fixes bug #80392.
17525
17526 2007-01-09  Raja R Harinath  <rharinath@novell.com>
17527
17528         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
17529
17530         * object.c (set_value): Avoid aliasing between type->data.klass
17531         and type->data.generic_class.
17532
17533         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
17534
17535 2007-01-08  Raja R Harinath  <rharinath@novell.com>
17536
17537         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
17538         between type->data.klass and type->data.generic_class.
17539
17540 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
17541
17542         * marshal.c: In MS.NET, StringBuilder objects are not copied by
17543         value in out parameters.
17544
17545 2007-01-08  Raja R Harinath  <rharinath@novell.com>
17546
17547         Simplify invariant for MonoGenericClass::klass field.
17548         * class.c (mono_class_create_generic): Verify 'klass' is null.
17549         * metadata.c (do_mono_metadata_parse_generic_class): Don't
17550         initialize 'klass' field.
17551
17552 2007-01-05  Raja R Harinath  <rharinath@novell.com>
17553
17554         Ongoing work to avoid redundant data and simplify invariants.
17555         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
17556         'generic_class', and change type to a GenericInst.
17557         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
17558         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
17559
17560 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
17561
17562         * class.c : skip io-layer under PLATFORM_WIN32.
17563
17564 2007-01-03  Tor Lillqvist  <tml@novell.com>
17565
17566         Fix #80305: In a bundled executable, look in the bundled exe
17567         assembly to determine the runtime version. Add the possibility to
17568         bundle also the machine.config file.
17569         
17570         * assembly.c (mono_assembly_open_from_bundle): Make
17571         non-static. Allow being called even if we have no bundled
17572         assemblies, and return NULL right away in that case.
17573
17574         * domain-internals.h: Declare mono_assembly_open_from_bundle()
17575         here.
17576
17577         * domain.c (app_config_parse): Take an assembly exe file name as
17578         parameter instead of a config file name. Check for a bundled
17579         config file for that assembly by calling
17580         mono_config_string_for_assembly_file() (see below) before looking
17581         for one in the file system.
17582         (get_runtimes_from_exe): Corrsponding change to call of
17583         app_config_parse().
17584         (get_runtimes_from_exe): Check for bundled assembly exe file first
17585         by calling mono_assembly_open_from_bundle(). If no bundled
17586         assembly exe file is found, call mono_image_open() as before to
17587         look it up in the file system.
17588
17589         * mono-config.c: Add variable bundled_machinec_onfig.
17590         (mono_config_string_for_assembly_file): New function.
17591         (mono_config_for_assembly): Move code snippet that looks for a
17592         bundled assembly .config file into the above new function. Call
17593         it.
17594         (mono_register_machine_config, mono_get_machine_config): New
17595         functions to set and retrieve
17596
17597         * assembly.h: Declare mono_register_machine_config().
17598
17599         * mono-config.h: Declare mono_get_machine_config() and
17600         mono_config_string_for_assembly_file().
17601
17602         * icall.c: No declaration of environ necessary on Win32. It is
17603         declared (as a macro expanding to a function call) in stdlib.h.
17604         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
17605         New internal mono function. Returns the value of
17606         mono_get_machine_config() as a Mono string.
17607
17608         * icall-def.h: Add get_bundled_machine_config().
17609
17610 2007-01-04  Raja R Harinath  <rharinath@novell.com>
17611
17612         Remove redundant field
17613         * class-internals.h (_MonoGenericContext.container): Remove field.
17614         * loader.c (mono_method_get_signature_full): Don't parse a
17615         "container" for a signature parse when the signature is inflated
17616         immediately.
17617         (method_from_methodspec): Likewise, for a generic_inst.
17618         * class.c, metadata.c, reflection.c: Update to changes.
17619
17620 2006-01-04  Raja R Harinath  <rharinath@novell.com>
17621
17622         * class-internals.h (_MonoGenericClass): Rename 'context' field to
17623         'cached_context', and change semantics -- it starts off NULL, and
17624         is initialized on demand.
17625         * class.c (mono_generic_class_get_context): New accessor to
17626         replace 'context' field accesses.
17627         (mono_class_get_context): New helper.
17628         (*): Update to changes.
17629         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
17630
17631 2007-01-03  Miguel de Icaza  <miguel@novell.com>
17632
17633         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
17634         before the memcpy.   Fixes Marshal2 regression.
17635
17636 2007-01-02  Jb Evain  <jbevain@gmail.com>
17637
17638         * blob.h: add a MONO_TYPE_ENUM definition
17639         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
17640         fix the encoding of arrays of enums in custom attributes.
17641
17642         Fixes #79666.
17643
17644 2007-01-01  Miguel de Icaza  <miguel@novell.com>
17645
17646         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
17647         string is null terminated, but only cut the string short if it
17648         overflows the buffer.   
17649         
17650         (mono_string_to_byvalstr): Also fix this routine.   The code here
17651         was not properly terminating a string (it was only terminated
17652         because of the previous catch-all memset). 
17653
17654         I left the memset, because I do not know if applications expect
17655         the runtime to clear this region. 
17656
17657         Fixes #79944.
17658
17659         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
17660         Clear the error before returning to unmanaged code to prevent the
17661         runtime from being confused later on (fixes  80420).
17662         (ves_icall_type_from_name): Always call mono_loader_clear_error
17663         after parsing a type that could have failed.
17664         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
17665
17666         * loader.c (mono_loader_clear_error): Fix indentation.
17667
17668 2006-12-28  Martin Baulig  <martin@ximian.com>
17669
17670         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
17671
17672 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17673
17674         * reflection.c: patch from Rolf Bjarne Kvinge to fix
17675         getting a token for an EnumBuilder.
17676
17677 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
17678
17679         * reflection.c: be more careful in case resource generation
17680         fails to create the data array.
17681
17682 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
17683
17684         * sgen-gc.c: write barrier for clone and fix unregister handles.
17685
17686 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17687
17688         * reflection.c: some fixes needed in the generics code for the moving GC.
17689
17690 2006-12-22  Robert Jordan  <robertj@gmx.net>
17691
17692         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
17693         account. Fixes bug #80299.
17694
17695 2006-12-21  Raja R Harinath  <rharinath@novell.com>
17696
17697         Fix WaitHandle usage in delegates.
17698         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
17699         * object.c (mono_wait_handle_new): Use the property set method to
17700         initialize the handle.
17701         (mono_wait_handle_get_handle): New.
17702         * threadpool.c (mono_async_invoke): Use it.
17703         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
17704         Likewise.
17705         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
17706
17707 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
17708
17709         * marshal.c (emit_marshal): Call emit_marshal_variant and
17710         emit_marshal_com_interface when applicable.
17711         (emit_marshal_variant, emit_marshal_com_interface): Add
17712         methods for this case and remove if's from emit_marshal_object.
17713         
17714 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
17715
17716         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
17717
17718 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
17719
17720         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
17721         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
17722         and GlobalFree on Windows. Remove FIXME.
17723
17724 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17725
17726         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
17727         implementation for managed objects.
17728
17729 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
17730
17731         * object.c: implemented code to be used for checking
17732         that no reference field overlaps with non-references.
17733
17734 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
17735
17736         * threadpool.c: fix queue code to be compatible with the
17737         moving GC.
17738
17739 2006-12-18  Miguel de Icaza  <miguel@novell.com>
17740
17741         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
17742         in structures by throwing ArgumentNullException.
17743
17744         (emit_marshal_safehandle): Also when they are null parameters.
17745
17746         (emit_marshal_safehandle): Add support for ref
17747         SafeHandles parameters
17748
17749 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
17750
17751         * profiler.c: updated to use the mono-dl API instead of
17752         gmodule.
17753
17754 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
17755
17756         * profiler.c: updated to use the mono-dl dynamic loading
17757         API instead of gmodule.
17758
17759 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17760
17761         * profiler.c: use readlink, older versions of glib don't have
17762         g_file_read_link ().
17763
17764 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
17765
17766         * profiler.c: try to detect the path to mono if libc fails to provide
17767         a useful name (bug #80286).
17768
17769 2006-12-16  Raja R Harinath  <rharinath@novell.com>
17770
17771         Fix #80242
17772         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
17773         instance, use the generic type definition instead.
17774         (ves_icall_Type_GetNestedTypes): Likewise.
17775         * class.c (mono_class_create_generic): Always set the
17776         nested_classes of a generic instance to NULL, even if the generic
17777         type definition has nested types.
17778
17779 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
17780
17781         * marshal.c (mono_string_from_bstr): Revert previous Windows change
17782         and fix on Linux.
17783         
17784 2006-12-15  Miguel de Icaza  <miguel@novell.com>
17785
17786         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
17787         my arguments were in the wrong order.   I also fixed the Windows
17788         version which seems to have had the same issue.
17789
17790         (mono_free_bstr): On Unix, this is g_free.
17791         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
17792         conversions (for the tests in corlib to pass).
17793
17794 2006-12-14  Miguel de Icaza  <miguel@novell.com>
17795
17796         * marshal.c (emit_ptr_to_object_conv): For now, ignore
17797         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
17798         exception if a ref SafeHandle in a struct has changed).
17799         
17800         (emit_struct_conv): Do not perform layout checks for classes
17801         derived from SafeHandle, as those are specially handled. 
17802
17803         (emit_object_to_ptr_conv): Add support for
17804         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
17805
17806         (emit_marshal_safehandle): Implement conversion of return values
17807         of safehandles (MARSHAL_ACTION_CONV_RESULT).
17808         
17809         * threads.c: WaitHandle now is compiled with two different handles
17810         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
17811         for 2.0.
17812         
17813         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
17814         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
17815         these routines to cope with both kinds of fields.
17816
17817 2006-12-12  Miguel de Icaza  <miguel@novell.com>
17818
17819         * metadata.c (mono_type_to_unmanaged): Handle the case where
17820         type->data.klass is a SafeHandle, and in that case, return the
17821         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
17822         MONO_MARSHAL_CONV_SAFEHANDLE. 
17823
17824 2006-12-11  Miguel de Icaza  <miguel@novell.com>
17825
17826         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
17827         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
17828         calling emit_marshal_object.
17829
17830         (emit_marshal_safehandle): Implement marshalling of
17831         SafeHandle parameters (no ref support yet).
17832
17833         (MarshalAction): Document the defines as I implement
17834         them for SafeHandle.
17835
17836         (emit_marshal_object): indentation police.
17837
17838         * class-internals.h: Define MonoSafeHandle.
17839         Add safehandle_class to MonoDefaults type.
17840
17841         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
17842         list of classes to check for fields. 
17843
17844         * domain.c (mono_init_internal): Add SafeHandle to the list of
17845         mono_defaults loaded.
17846
17847 2006-12-15  Raja R Harinath  <rharinath@novell.com>
17848
17849         Fix #80253
17850         * reflection.c (mono_reflection_bind_generic_parameters): If the
17851         generic type definition is a type builder, ensure that it is fully
17852         initialized before instantiating it.  Kill some dead code.
17853
17854 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17855
17856         * object.c: clear the loader_error () before loading
17857         more metadata stuff (bug #80258).
17858
17859 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
17860
17861         * icall.c, icall-defs.h: type modifiers icalls for
17862         parameters and properties.
17863
17864 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
17865
17866         * object.c, icall.c: fixed warnings.
17867
17868 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
17869
17870         * marshal.c: fixed a couple of leaks and coding style in a few places.
17871
17872 2006-12-08  Dick Porter  <dick@ximian.com>
17873
17874         * process.c: Cope with NULL ProcessStartInfo arguments on windows
17875         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
17876         80173.
17877
17878 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
17879
17880         * process.c: ProcessStartInfo may have only filename set and
17881         arguments can be NULL.
17882
17883 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
17884
17885         * icall.c: fix leak found by Robert Jordan.
17886
17887 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
17888
17889         * marshal.c, marshal.h: generate managed method to access an element
17890         of a multi-dimensional array.
17891
17892 2006-11-30  Paolo Molaro (lupus@ximian.com)
17893
17894         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
17895
17896 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
17897
17898         * icall.c: back out GetFields () fix until the serialization code is
17899         fixed to not depend on the incorrect behaviour.
17900
17901 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
17902
17903         * profiler.c: provide defaults if none are set.
17904
17905 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
17906
17907         * Makefile.am, attrdefs.h: new public header file with
17908         constants for attributes for use by embedders.
17909
17910 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17911
17912         * icall.c: GetFields () fix for bug #80064.
17913
17914 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
17915
17916         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
17917         removed long unused icalls.
17918
17919 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
17920   
17921         * marshal.c: 
17922                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
17923                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
17924                 can be generated without a delegate class.
17925                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
17926         
17927         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
17928
17929 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17930
17931         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
17932         #80069.
17933
17934 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
17935
17936         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
17937         icall-def.h: added icalls needed by System.GC.
17938
17939 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
17940
17941         * loader.c: ensure the class in catch clauses is handled
17942         correctly for generics methods (fixes bug#79980).
17943
17944 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
17945
17946         * monitor.h, monitor.c: added mono_locks_dump () function
17947         to help debug deadlocks involving managed locks.
17948
17949 2006-11-13  Dick Porter  <dick@ximian.com>
17950
17951         * file-io.c (get_file_attributes): If the file is a symlink try
17952         and get the stat data for the target, but also add the
17953         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
17954         the specs for the windows symlink support, but will probably have
17955         to be reworked when I have test data from a vista machine.  Fixes
17956         bug 79887.
17957
17958 2006-11-13  Dick Porter  <dick@ximian.com>
17959
17960         * gc.c (mono_domain_finalize): 
17961         * marshal.c (mono_delegate_begin_invoke): 
17962         * threadpool.c (socket_io_init, mono_thread_pool_init)
17963         (mono_thread_pool_finish): 
17964         * monitor.c (mono_monitor_try_enter_internal): 
17965         * threads.c (mono_thread_resume, mono_thread_init)
17966         (mono_thread_suspend_all_other_threads)
17967         (mono_thread_execute_interruption): 
17968         * appdomain.c (mono_domain_unload): Check for NULL error returns
17969         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
17970         75733.
17971
17972 2006-11-11  Miguel de Icaza  <miguel@novell.com>
17973
17974         * process.c
17975         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
17976         Only close the handle if the value of the handle is not
17977         INVALID_HANDLE_VALUE.  This just makes the process a bit more
17978         robust.
17979
17980         Improvement for #75733, so that we do not run into this problem. 
17981
17982         
17983         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
17984         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
17985         internal variables.  Fixes #79462 
17986         
17987
17988 2006-11-09  Dick Porter  <dick@ximian.com>
17989
17990         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
17991         Use poll() not select().  Fixes bug 79397.
17992
17993 2006-11-09  Raja R Harinath  <rharinath@novell.com>
17994
17995         Fix #79872
17996         * assembly.c (mono_assembly_load_from_full): Check that the given
17997         image has an assembly manifest.
17998
17999 2006-11-09  Ankit Jain  <jankit@novell.com>
18000
18001         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
18002         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
18003         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
18004
18005 2006-11-07  Dick Porter  <dick@ximian.com>
18006
18007         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
18008         Put the old resolver behaviour back for pre-2.0 profiles.
18009
18010 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
18011
18012         * threadpool.c: precise GC and locking fixes.
18013
18014 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
18015
18016         * class.c: don't load types that have an explicit unaligned
18017         managed reference. Provide better info in the TypeLoad exception.
18018         Part of the fix for bug #79744.
18019         * object.c: use the correct check for class type load issues.
18020
18021 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
18022
18023         * class.c: enforce alignment of fields with managed references
18024         even when Pack=1 is forced by the user (bug #77788).
18025
18026 2006-11-03  Dick Porter  <dick@ximian.com>
18027
18028         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
18029         If the address reverse lookup fails, return it as the hostname
18030         anyway.  Fixes bug 79721.
18031
18032 2006-11-03  Dick Porter  <dick@ximian.com>
18033
18034         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
18035         Fix build on Windows.
18036
18037 2006-11-02  Dick Porter  <dick@ximian.com>
18038
18039         * icall-def.h: 
18040         * object-internals.h: 
18041         * exception.c (mono_get_exception_thread_interrupted): 
18042         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
18043         Fixes bug 74525.
18044
18045         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
18046         Check for pending Thread.Interrupt.
18047
18048 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
18049         * loader.c: Fixed bug 79684.
18050
18051 2006-10-27  Dick Porter  <dick@ximian.com>
18052
18053         * file-io.c (get_file_attributes): Force symlinks to directories
18054         to be returned as a regular file.  Fixes bug 79733.
18055 2006-10-26  Dick Porter  <dick@ximian.com>
18056
18057         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
18058         CreateFile to open a directory then we need to set the
18059         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
18060
18061 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
18062
18063         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
18064         friends.
18065
18066 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18067
18068         * sgengc.c: small cleanup of timer code.
18069
18070 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
18071
18072         * sgen-gc.c: fix some warnings and start adding support for
18073         complete object removal on domain unload.
18074
18075 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
18076
18077         * assembly.c: build_assembly_name should not consider a version
18078         number without build or revision number invalid. Fixes bug #79715.
18079
18080 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
18081
18082         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
18083         call kernel32 function OutputDebugString directly.
18084         
18085         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
18086         
18087 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
18088
18089         * reflection.c: small cleanup, using a function to insert a MonoString
18090         in the string heap.
18091
18092 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
18093
18094         * reflection.c: moving GC fixes.
18095
18096 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
18097
18098         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
18099         all the objects with finalizers belonging to an unloading appdomain.
18100
18101 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
18102
18103         * sgen-gc.c: added ability to allocate even when the nursery is fully
18104         pinned and fixed a couple of bugs.
18105
18106 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
18107
18108         * threads.h: Revert the last change for now.
18109
18110         * threads.h (mono_thread_get_pending_exception): Rename this to
18111         mono_thread_get_undeniable_exception ().
18112
18113 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
18114
18115         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
18116         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
18117         when fname does not refer to valid assembly. This result in a more
18118         meaningful error message.
18119         * exception.c: added mono_get_exception_bad_image_format2 which 
18120         constructs a BadImageFormatException using the ctor taking a custom
18121         message and the file name. Passing in a NULL msg results in a default
18122         message.
18123         * exception.h: define mono_get_exception_bad_image_format2 function.
18124         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
18125         when file name pointed to an invalid IL image. Use 
18126         mono_get_exception_file_not_found2 to construct FileNotFoundException,
18127         as this results in a more meaningful error message.
18128
18129 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
18130
18131         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
18132         #79465.
18133
18134 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
18135
18136         * metadata.c (mono_type_size): Change the align parameter to guint32 for
18137         consistency with the other _size functions.
18138         (mono_type_stack_size): Ditto.
18139
18140         * class.c object.c icall.c: Fix warnings caused by the above change.
18141
18142         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
18143
18144         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
18145
18146         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
18147
18148 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
18149
18150         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
18151         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
18152         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
18153         threadpool.h, threads-types.h: mark more internal functions.
18154
18155 2006-10-11  Dick Porter  <dick@ximian.com>
18156
18157         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
18158         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
18159         reproduce the bug even before applying the fix.)
18160
18161 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
18162
18163         * reflection.c: allow retrieving attributes for arguments in generic
18164         methods (bug #79241).
18165
18166 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
18167
18168         * debug-mono-symfile.c: properly check fopen () result (found by
18169         coverity).
18170
18171 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
18172
18173         * reflection.c: make error message clearer and fixed two
18174         issuelets found by Coverity.
18175
18176 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
18177
18178         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
18179
18180 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
18181
18182         * object-internals.h, gc-internal.h, profiler-private.h:
18183         mark internal functions.
18184
18185 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
18186
18187         * reflection.c: put data in the text section.
18188         * icall.c: recognize more types in type_from_typename ().
18189         * process.c, marshal.c: added some GC FIXMEs.
18190
18191 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
18192
18193         * loader.c: check for NULL before initializing.
18194
18195 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
18196
18197         * gc.c (finalizer_thread): Use a non-alertable wait here.
18198
18199         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
18200         until the correct solution is found.
18201
18202 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
18203
18204         * reflection.c (mono_module_get_object): Avoid an assert when operating on
18205         modules with no metadata. Fixes #79596.
18206
18207         * image.c (load_metadata_ptrs): Put back the error message when
18208         the #- heap is encountered since the support is not complete yet.
18209
18210 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
18211
18212         * gc.c: do not allow the user to SuppressFinalize () a
18213         delegate because it would leak the trampoline if present.
18214
18215 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
18216
18217         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
18218         PropertyPtr table.
18219
18220 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
18221
18222         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
18223
18224         * metadata.c (mono_metadata_get_param_attrs): Ditto.
18225
18226         * row-indexes.h: Add definitions for *Ptr tables.
18227
18228         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
18229
18230         * metadata.c (mono_metadata_translate_token_index): New helper function to
18231         translate table indexes used in uncompressed metadata.
18232         (mono_metadata_decode_table_row): Ditto.
18233         (mono_metadata_decode_table_row_col): Ditto.
18234
18235         * metadata.c: Add table schema for *Ptr tables.
18236
18237         * class.c loader.c: Use the new helper function to access the affected metadata
18238         tables.
18239         
18240         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
18241         #38532.
18242         
18243 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
18244
18245         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
18246         sequences which can be unbounded in size. Fixes #79583.
18247
18248 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
18249
18250         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
18251         static initialization.
18252
18253         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
18254
18255         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
18256
18257         * domain.c (mono_domain_free): Free up type_init_exception_hash.
18258
18259         * object.c (mono_runtime_class_init): Implement correct semantics when a static
18260         ctor fails, i.e. throw the same exception on subsequent accesses.
18261         
18262 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
18263
18264         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
18265         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
18266         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
18267         Handle marshalling of interfaces and VARIANTs contained in structs.
18268         
18269         Code is contributed under MIT/X11 license.
18270         
18271 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
18272
18273         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
18274         
18275         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
18276         mempool.
18277
18278 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18279
18280         * console-io.c: ignore previous SIGINT handler.
18281
18282 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
18283
18284         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
18285         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
18286         #79460, #79461, #79485.
18287
18288         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
18289
18290         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
18291         #79217.
18292
18293 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
18294
18295         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
18296         could be generated from it.
18297
18298 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
18299
18300         * rand.c: fix read loop to correctly handle EINTR.
18301
18302 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18303
18304         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
18305         internal calls are defined to keep methods closer to the declaring
18306         type and allow a significant reduction in runtime relocations and
18307         memory usage.
18308
18309 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
18310
18311         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
18312         exception message to have FileNotFoundException use the default
18313         assembly load error message. Fixes bug #79426.
18314         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
18315
18316 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18317
18318         * threadpool.c: (start_thread_or_queue) use the root domain when
18319         creating the thread instead of the async object one.
18320
18321 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
18322
18323         * class.c, object.c, class-internals.h, reflection.c:
18324         for arrays, store element_size inside MonoClass (speedup
18325         for array object creation).
18326
18327 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
18328
18329         * icall.c: fixed CodeBase to use the file name and not the module
18330         name (bug #79365).
18331
18332 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
18333
18334         * mono-debug.c, mono-debug.h: export find_method as
18335         mono_debug_find_method ().
18336
18337 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18338
18339         * debug-helpers.c, class-internals.h: added a few functions useful
18340         when debugging under gdb.
18341
18342 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18343
18344         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
18345         characters that need special handling.
18346
18347 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
18348
18349         * mono-config.c: make the os/cpu specification more flexible,
18350         allowing lists and negation.
18351
18352 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
18353
18354         * marshal.c: COM Interop fixes. Handle case where method->klass.
18355         is interface. Handle BSTR/MonoString when null. Use CDECL as 
18356         calling convention on non-windows platforms. This is for
18357         compatibility with XPCOM and MainWin COM.
18358         
18359         Code is contributed under MIT/X11 license.
18360         
18361
18362 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
18363
18364         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
18365         correctly. Fixes #79217.
18366
18367         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
18368
18369 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
18370
18371         * mono-config.c: allow both an os and cpu attribute for dllmap
18372         and dllentry elemnets to enable a single config file to be used
18373         for multiple architectures.
18374
18375 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
18376
18377         * loader.c: MonoLoaderError was cleared too soon on load failure.
18378         Fixes bug #79424.
18379
18380 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
18381
18382         * icall.c: use the defining class vtable when accessing a
18383         static field, not a pobblibly derived class.
18384
18385 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
18386
18387         * icall.c string-icalls.c: Remove references to unicode.h.
18388
18389         * unicode.h unicode.c Makefile.am: Remove these unused source files.
18390
18391         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
18392
18393         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
18394         indicating the image where custom marshaller types should be looked up.
18395         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
18396         custom marshallers, instead of corlib. Fixes #79425.
18397
18398 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
18399
18400         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
18401
18402 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
18403
18404         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
18405         Implement Environment.ProcessorCount.
18406         
18407         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
18408         Implement Environment.ProcessorCount.
18409         
18410         * icall.c: 
18411         Add Environment.ProcessorCount icall.
18412         
18413         Patch by Jason McFall.
18414
18415 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18416
18417         * assembly.c: don't append .exe/.dll when the filename already contains
18418         one of those extensions.
18419
18420 2006-09-12  Martin Baulig  <martin@ximian.com>
18421
18422         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
18423         to array interfaces.
18424
18425 2006-09-11  Martin Baulig  <martin@ximian.com>
18426
18427         * reflection.c (mono_image_build_metadata): Create the
18428         MethodImpl's after emitting all types and methods, so we don't
18429         need another fixup pass for them.
18430
18431 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
18432
18433         * class.c (mono_class_from_name_case): Fix regression introduced by the last
18434         change.
18435
18436 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
18437
18438         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
18439         unload.
18440
18441 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
18442
18443         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
18444         args is not set. Fixes #78926.
18445
18446 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
18447
18448         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
18449
18450         * image.c (load_class_names): Move this to class.c, and rename it to 
18451         'mono_image_init_name_cache'.
18452         (load_modules): Fix a warning.
18453
18454         * class.c icall.c image.c: Initialize image->name_cache lazily.
18455
18456         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
18457         on its name using information in the AOT file.
18458
18459         * class.c (mono_class_from_name): Use the new hook function.
18460
18461 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
18462
18463         * reflection.c (mono_param_get_objects): Handle enum default parameter values
18464         correctly.
18465
18466         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
18467         Fixes #79289.
18468         
18469 2006-09-06  Martin Baulig  <martin@ximian.com>
18470
18471         * icall.c (mono_lookup_internal_call): Small fix.
18472
18473 2006-09-05  Raja R Harinath  <rharinath@novell.com>
18474
18475         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
18476         double g_free.
18477
18478 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
18479
18480         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
18481         when --debug is specified.
18482
18483 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
18484
18485         * class.c (setup_generic_array_ifaces): Fix a warning.
18486
18487 2006-09-04  Miguel de Icaza  <miguel@novell.com>
18488
18489         * Temporarily remove the patch to assemly.c that checks the
18490         assembly versions as it breaks our gacutil.
18491
18492 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
18493
18494         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
18495
18496         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
18497         a net 1.0 runtime.
18498
18499         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
18500         created using the default ctor. Fixes #79152.
18501         (mono_string_builder_to_utf16): Ditto.
18502
18503 2006-09-01  Martin Baulig  <martin@ximian.com>
18504
18505         Fix handling of the generic array interfaces.
18506
18507         * class-internals.h
18508         (MonoDefaults): Removed `generic_array_class' and added
18509         `generic_ilist' class.
18510
18511         * class.c
18512         (mono_bounded_array_class_get): Add the new generic array interfaces.
18513         (setup_generic_array_ifaces): New static method; create vtable
18514         entries for each method in the generic array interfaces.
18515
18516         * metadata.c
18517         (select_container): Allow "parent-less" generic methods.
18518
18519         * marshal.c
18520         (mono_marshal_get_generic_array_helper): New public method.
18521
18522         * icall.c
18523         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
18524         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
18525         moved the interncall into System.Array.
18526
18527 2006-09-01  Raja R Harinath  <rharinath@novell.com>
18528
18529         A few more cases of avoiding work on types with ->byref set.
18530         Has the real fix for #79238
18531         * icall.c (is_generic_parameter): New helper.
18532         (ves_icall_Type_GetGenericParameterPosition): Use it.
18533         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
18534         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
18535         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
18536         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
18537         reference types.
18538         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
18539         reference types.
18540         (ves_icall_Type_get_IsGenericInstance): Likewise.
18541         (ves_icall_Type_get_IsGenericType): Likewise.
18542
18543 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
18544
18545         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
18546         class if possible.
18547
18548         * mempool.h (mono_mempool_get_allocated): New helper function.
18549
18550         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
18551         change.
18552
18553         * mempool.c: Fix warnings and the calculation of stats.
18554
18555         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
18556
18557         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
18558
18559         * loader.c (mono_get_method_from_token): Update method_count stat.
18560
18561         * class-internals.h (MonoStats): Add some stats.
18562
18563 2006-08-31 Robert Jordan  <robertj@gmx.net>
18564
18565         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
18566         with managed variants.
18567         All code is contributed under the MIT/X11 license.
18568         
18569 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
18570
18571         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
18572         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
18573
18574         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
18575
18576         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
18577         with cycles in classes.
18578
18579         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
18580
18581         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
18582         missing a [MarshalAs] directive. Fixes #79203.
18583
18584         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
18585         klass->marshal_info. Fixes #79217.
18586
18587 2006-08-30  Martin Baulig  <martin@ximian.com>
18588
18589         Committing a patch from Joachim Ante <joe@otee.dk>:
18590         Add support for binary data symbol stores.
18591
18592         * debug-mono-symfile.c
18593         (mono_debug_open_mono_symbol_file): Renamed into
18594         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
18595         arguments.
18596
18597         * mono-debug.c
18598         (mono_debug_open_image): Added `raw_contents' and `size' args.
18599         (mono_debug_init_2_memory): New public function.
18600
18601 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
18602
18603         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
18604
18605 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18606
18607         * appdomain.c: implement support for ShadowCopyFiles.
18608
18609 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
18610
18611         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
18612         when value is NULL (and should remove CID #51).
18613
18614 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18615
18616         * image.c: moved 2 functions to ../utils.
18617
18618 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
18619
18620         * gc.c: cope with the target object of a GC handle being NULL
18621         (bug #78877).
18622
18623 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
18624
18625         * class.c: recursively check parent's explicit implementations
18626         of interface methods (fixes bug #79125).
18627
18628 2006-08-19  Miguel de Icaza  <miguel@novell.com>
18629
18630         * filewatcher.c: Avoid warnings when building, do not redefine
18631         constants that are defined.
18632
18633         Remove warnings.
18634
18635 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18636
18637         * image.c: don't fail when the link points to an absolute path.
18638
18639 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
18640
18641         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
18642         Fix CID #3.
18643
18644 2006-08-17  Miguel de Icaza  <miguel@novell.com>
18645
18646         * image.c (full_path): A new method used to obtain the actual path
18647         of an assembly even in the presence of symbolic links.  
18648
18649         This is necessary for the case where we are running a binary that
18650         has been GACed, but we are using the "published" path name
18651         ($prefix/mono/1.0/blah.exe) which happens to point to the real
18652         file in the GAC.
18653
18654         This was the source of the failure for the `xsp' command with the
18655         recent AppDomain changes, as far as the runtime was concerned,
18656         there were two different assemblies: $prefix/mono/1.0/blah.exe and
18657         $prefix/mono/gac/blah/version/blah.exe.
18658
18659         (do_mono_image_open): use full path
18660
18661 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18662
18663         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
18664
18665 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
18666
18667         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
18668         domain_id is supplied. Fix CID #241 and corlib's unit tests.
18669
18670 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18671
18672         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
18673         small structures. Fixes #78990.
18674
18675 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18676
18677         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
18678
18679         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
18680
18681 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18682
18683         * appdomain.c:
18684         * marshal.c: don't load all the assemblies from a domain into newly
18685         created ones. The new domains might have different rules and load
18686         assemblies from different locations. Fixes bug #76757.
18687
18688         Patch by Lluis. Conflicts resolved by Brian Crowell.
18689
18690 2006-08-16  Alp Toker  <alp@atoker.com>
18691
18692         * socket-io.c: First half of the fix for #79084.
18693         Set sa_size to the length of the content, not that of the struct.
18694         Don't add NULL suffix to the content, this should be done in
18695         managed code if needed.
18696
18697 2006-08-14  Raja R Harinath  <rharinath@novell.com>
18698
18699         Fix part of #79012
18700         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
18701         mono_metadata_parse_type returns NULL.
18702
18703 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
18704
18705         * normalization-tables.h : new file for string normalization data.
18706         * locales.c, locales.h, icall.c :
18707           added load_normalization_resource() for string normalization,
18708           and icall as well.
18709         * Makefile.am : added normalization-tables.h to the sources.
18710
18711 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
18712
18713         * marshal.c: Add more helper functions to reduce code duplication and use them
18714         everywhere.
18715
18716 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
18717
18718         * marshal.c: Fix non-x86 stdcall warnings.
18719         
18720         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
18721         them everywhere.
18722
18723 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
18724
18725         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
18726         type check on multi-dimensional arrays. Fixes #79000.
18727
18728 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
18729
18730         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
18731         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
18732         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
18733         * class-internals.h: add is_com_object to class structure.
18734         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
18735         null checks to COM object marshalling. Fix .ctor call on RCW.
18736         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
18737         
18738         All code is contributed under the MIT/X11 license.
18739
18740 2006-08-09  Dick Porter  <dick@ximian.com>
18741
18742         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
18743         racing mono_monitor_allocator_lock() somewhere, so don't delete
18744         the critical section for now.  Found by running and exiting
18745         monodevelop.
18746
18747 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
18748
18749         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
18750         (ves_icall_System_ComObject_FindInterface): Ditto.
18751         (ves_icall_System_ComObject_CacheInterface): Ditto.
18752
18753         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
18754         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
18755
18756 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18757
18758         * threadpool.c: treat pipes from process asynchronous reads as sockets
18759         when reading from them, so we get select/poll or epoll to wait for
18760         data.
18761
18762 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
18763
18764         * loader.c: Fix a typo (CID #233) in the null check.
18765
18766 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
18767
18768         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
18769         Hopefully fixes #78949.
18770         
18771         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
18772         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
18773         bytes. Fixes #78972.
18774
18775 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18776
18777         * filewatcher.c: we need to set errno here.
18778
18779 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18780
18781         * filewatcher.c: let Win32Exception get the error value.
18782
18783 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18784
18785         * filewatcher.c: translate errno into win32 errors for Win32Exception
18786         to know what happened.
18787
18788 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
18789
18790         * threadpool.c: Fix more warnings.
18791
18792         * assembly.c (search_loaded): Fix warnings.
18793
18794         * threadpool.c (mono_thread_pool_finish): Fix warnings.
18795         (mono_async_invoke): Ditto.
18796
18797 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
18798
18799         * object.c (mono_remote_class_vtable): Need to create proxy vtable
18800         entries for __ComObject type in addition to ComImport types.
18801         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
18802         about hash table.
18803         
18804         All code is contributed under the MIT/X11 license.
18805
18806 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
18807
18808         * image.c: avoid tentative loading of modulerefs that contain
18809         no metadata (P/Invoke library names).
18810
18811 2006-07-28  Dick Porter  <dick@ximian.com>
18812
18813         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
18814         mono_loader_lock() somewhere, so don't delete the critical section
18815         for now.  Found by running and exiting monodevelop.
18816
18817 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18818
18819         * filewatcher.c: define the inotify syscalls when we're building on
18820         linux and have sys/syscall.h. The build system might not have support
18821         for inotify but the target system might have it.
18822
18823 2006-07-26  Miguel de Icaza  <miguel@novell.com>
18824
18825         * domain.c: Documentation updates.
18826
18827         * loader.c (mono_free_method): Do not release the method
18828         information if we are being profiled, as profilers will use this
18829         information at shut down to present some data to the user.
18830
18831         This is needed so that the profiler does not crash, as the
18832         profiler tends to keep MonoMethods around, and they might become
18833         invalid if we free these.
18834
18835         (mono_get_method_constrained): Return the original CIL stream
18836         method as well, so verification can be performed against it.
18837
18838 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18839
18840         * filewatcher.[ch]: support for inotify file system watcher.
18841         * icall.c: add new internal calls for the inotify file system watcher.
18842
18843 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18844
18845         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
18846         #78888.
18847
18848 2006-07-20  Dick Porter  <dick@ximian.com>
18849
18850         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
18851         warning.
18852
18853 2006-07-20  Dick Porter  <dick@ximian.com>
18854
18855         * threads.c (start_wrapper): Do the thread cleanup while we still
18856         hold a reference to its object.  Fixes bug 78123.
18857
18858 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
18859
18860         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
18861         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
18862           "managed-to-managed".
18863         * icall.c: Redirect string constructors that take sbyte* to
18864           ves_icall_System_String_ctor_RedirectToCreateString.
18865         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
18866           to CreateString () methods with matching signature.
18867         * reflection.c: Use original security informations for
18868           MONO_WRAPPER_MANAGED_TO_MANAGED.
18869         * security-manager.c: Use original security informations for
18870           MONO_WRAPPER_MANAGED_TO_MANAGED.
18871         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
18872           that is a placeholder and only its address should be used.
18873         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
18874           that is a placeholder and only its address should be used.
18875
18876 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
18877
18878         Begin implementing COM Interop.
18879         * appdomain.c: Increment corlib version.
18880         * class.c: Set ComImport classes' parent to __ComObject.
18881         * loader.c: Mark cominterop methods as such.
18882         * domain.c: Add __ComObject class to MonoDefaults structure.
18883         * image.c: Add 2 hashtables to the image for COM Interop related methods
18884         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
18885         using the mempool allocator
18886         
18887         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
18888         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
18889         declaration for mono_metadata_type_dup_mp.
18890         
18891         * debug-helpers.c: Added strings for two additional wrapper types
18892         * object.c: Create proxy objects for ComImport classes
18893         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
18894         and added __ComObject class to MonoDefaults structure.
18895         
18896         * object-internals.h: Finish MonoRealProxy definition, and add definition of
18897         MonoComInteropProxy and MonoComObject.
18898         
18899         * marshal.c: Added support for COM Interop
18900         (signature_cominterop): Converts managed signature to corresponding
18901         unmanaged COM signature.
18902         (cominterop_get_function_pointer): gets unmanaged function pointer via
18903         COM object vtable
18904         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
18905         (cominterop_get_method_interface): returns interface type that method is defined on
18906         (mono_mb_emit_cominterop_call): emits native call to function pointer
18907         gotten from vtable
18908         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
18909         that matches signature of unmanaged function.
18910         (cominterop_get_native_wrapper): wrapper around adjusted method call.
18911         (cominterop_get_invoke): forwards call from proxy to __ComObject
18912         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
18913         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
18914         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
18915         
18916         * marshal.h: Added Marshal icall declarations.
18917         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
18918         so we can access them in finalizer
18919         
18920 2006-07-14  Dick Porter  <dick@ximian.com>
18921
18922         * object.c (mono_type_initialization_cleanup): Fix a race
18923         condition by temporarily commenting out the critical section
18924         deletion.
18925
18926 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
18927
18928         * reflection.c (create_custom_attr): Fix some warnings.
18929         (create_custom_attr_data): Ditto.
18930         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
18931         types. Fixes #78855.
18932
18933 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
18934
18935         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
18936
18937         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
18938
18939 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
18940
18941         * reflection.c (resolve_object): Add support for DynamicMethod.
18942
18943         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
18944         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
18945
18946 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
18947
18948         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
18949         don't leak GPtrArray's pdata has we have no use (nor free) for it.
18950
18951 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
18952
18953         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
18954         Fixes #77888.
18955
18956 2006-06-30  Raja R Harinath  <rharinath@novell.com>
18957
18958         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
18959         slightly: remove a shadow local variable.
18960
18961 2006-06-29  Raja R Harinath  <rharinath@novell.com>
18962
18963         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
18964         definition that introduces the virtual function slot.
18965         Also fix Coverity #105.
18966
18967 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
18968
18969         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
18970         for dynamic assemblies. Fixes #78724.
18971
18972 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
18973
18974         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
18975         Fixes #78722.
18976
18977 2006-06-21  Martin Baulig  <martin@ximian.com>
18978
18979         * reflection.c
18980         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
18981         fixes #76484.
18982
18983 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
18984
18985         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
18986
18987 2006-06-20  Raja R Harinath  <rharinath@novell.com>
18988
18989         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
18990         nor TYPEREFs.
18991         * class.c (mono_class_create_from_typespec): Add 'context' argument.
18992         Inflate result if necessary.
18993         (mono_class_get_full): Remove old version.  Rename from
18994         'mono_class_get' and add 'context' argument.  Pass it to
18995         ..._create_from_typespec.
18996         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
18997         (mono_ldtoken): Revert change below.
18998
18999 2006-06-20  Martin Baulig  <martin@ximian.com>
19000
19001         * class.c (mono_ldtoken): Don't pass the generic context to
19002         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
19003
19004 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
19005
19006         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
19007         and later freeing it. Fixes #78638.
19008
19009 2006-06-15  Miguel de Icaza  <miguel@novell.com>
19010
19011         * icall.c (mono_class_get_throw): Revert over-zealous error
19012         throwing, the caller for mono_class_get_throw will cope with
19013         errors when classes are not properly initialized already.
19014
19015         The code still copes with loader exceptions though.
19016
19017         Fixes the regression in reftype1 and reftype3 from the CAS tests.
19018         
19019 2006-06-14  Miguel de Icaza  <miguel@novell.com>
19020
19021         Fixes the `make run1' version of RuntimeAbort (to be commited,
19022         source is in Bugzilla).
19023         
19024         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
19025         FALSE on class loading failure instead of returning true.
19026
19027         * class.c (mono_class_create_from_typedef): It is possible for
19028         mono_metadata_interfaces_from_typedef_full to fail if a class is
19029         not found, cope with this.
19030         
19031
19032 2006-06-14  Dick Porter  <dick@ximian.com>
19033
19034         * socket-io.c: 
19035         * process.c: Fix a bunch of signed/unsigned warnings from gcc
19036         4.1.1
19037
19038 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
19039
19040         * culture-info-table.h : oops, forgot to make it nsync with r61548.
19041
19042 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
19043
19044         * icall.c: Another fix for building mono in Visual Studio.
19045
19046 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
19047
19048         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
19049         
19050 2006-06-09  Martin Baulig  <martin@ximian.com>
19051
19052         * debug-mono-symfile.c: Put this back and really fix it this
19053         time. Sorry for all the trouble.
19054
19055 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
19056
19057         * icall.c (mono_class_get_throw): Fix a warning.
19058         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
19059         ReflectionTypeLoadException if needed. Fixes #78606.
19060
19061         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
19062         (mono_class_init): Ditto.
19063
19064         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
19065         ref_only exceptions.
19066         (mono_loader_clear_error): Make this work even if there is no error.
19067
19068 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
19069
19070         * object-internals.h marshal.c marshal.h icall.c: Implement method 
19071         Marshal.GetComSlotForMethodInfo using internal call.
19072
19073 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
19074
19075         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
19076         a function for signalling it.
19077
19078         * class.c (mono_class_from_typeref): Use the new kind of loader error when
19079         a referenced assembly is not found.
19080
19081         * loader.c (mono_loader_error_prepare_exception): Add support for 
19082         LOADER_ERROR_ASSEMBLY. Fix formatting.
19083
19084 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
19085
19086         * domain.c appdomain.c class-internals.h marshal.c: Add support 
19087         for VARIANT marshalling on windows and increment corlib version
19088         since Variant struct was added.
19089
19090 2006-06-03  Miguel de Icaza  <miguel@novell.com>
19091
19092         * debug-mono-symfile.c: Revert Martin's previous patch which broke
19093         stack trace line information:
19094
19095         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
19096         (Martin) when looking up B which is between A and C, return A not C.
19097
19098         Bug is #78573.
19099
19100         Thanks to Alexander Olk for tracking this down.
19101
19102 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
19103
19104         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
19105         
19106         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
19107         avoid clobbering its value.
19108         (mono_string_to_lpstr): Fix a warning on windows.
19109
19110 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
19111
19112         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
19113
19114         * reflection.c loader.c: Removed references to 'dummy' flag.
19115
19116         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
19117
19118         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
19119         it gets GC tracking.
19120
19121         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
19122         GC tracking.
19123         
19124         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
19125
19126         * marshal.c threadpool.c: Update callers of mono_async_result_new.
19127
19128         * appdomain.c: Bump corlib version.
19129
19130 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
19131
19132         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
19133         CEE_STIND_REF when working with object references.
19134
19135 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
19136
19137         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
19138         Fixes #78539.
19139
19140 2006-05-30  Miguel de Icaza  <miguel@novell.com>
19141
19142         * loader.c (method_from_memberref): Fix argument value for
19143         mono_loader_set_error_method_load (I was passing the MonoClass
19144         instead of the class name char *).
19145
19146 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
19147
19148         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
19149         CEE_STIND_REF when working with object references.
19150
19151 2006-05-30  Martin Baulig  <martin@ximian.com>
19152
19153         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
19154         mono_method_full_name() change and replace the ':' with a '.'
19155         here.
19156
19157 2006-05-30  Martin Baulig  <martin@ximian.com>
19158
19159         * debug-mono-symfile.c
19160         (mono_debug_symfile_lookup_location): Fix the algorithm:
19161         when looking up B which is between A and C, return A not C.
19162
19163 2006-05-29  Martin Baulig  <martin@ximian.com>
19164
19165         * mono-debug.h
19166         (MonoDebugMethodInfo): Make the typedef public.
19167         (MonoDebugSourceLocation): New public struct.
19168
19169         * mono-debug.c
19170         (mono_debug_source_location_from_address): Removed.
19171         (mono_debug_source_location_from_il_offset): Removed.
19172         (mono_debug_il_offset_from_address): Removed.
19173         (mono_debug_address_from_il_offset): Removed.
19174         (mono_debug_lookup_method): New public function.
19175         (mono_debug_lookup_source_location): New public function; replaces
19176         the old mono_debug_source_location_from_*() functions; see the
19177         inline documentation.
19178         (mono_debug_free_source_location): New public function.
19179         (mono_debug_print_stack_frame): New public function; see the
19180         inline documentation.
19181
19182         * debug-mono-symfile.c
19183         (mono_debug_find_source_location): Renamed into
19184         mono_debug_symfile_lookup_location(); only take a
19185         `MonoDebugMethodInfo *' and an `offset' argument; added inline
19186         documentation.
19187         (mono_debug_find_method): Renamed into
19188         mono_debug_symfile_lookup_method().
19189
19190 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
19191
19192         * assembly.c (mono_assembly_open_full): Dont overwrite the status
19193         returned by mono_image_open_full ().
19194
19195         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
19196         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
19197         #78517.
19198
19199         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
19200         #78518.
19201
19202 2006-05-27  Miguel de Icaza  <miguel@novell.com>
19203
19204         * class.c (mono_class_from_typeref): handle missing images
19205         earlier, deals with bug #78418.   Refactor code; 
19206
19207         Fix a warning introduced in my previous commit (some stale code
19208         from before I revisited my patch).
19209
19210         * class.c (mono_class_create_from_typedef): On failure, remove the
19211         class from the MonoImage->class_cache as the class is not
19212         initialized;   Fixes the leak pointed out by Paolo.
19213
19214 2006-05-25  Dick Porter  <dick@ximian.com>
19215
19216         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
19217         DeleteCriticalSections until I figure out which one may still be
19218         sometimes locked when mono_thread_cleanup is called.
19219
19220 2006-05-24  Dick Porter  <dick@ximian.com>
19221
19222         * threads.c (mono_thread_cleanup): Move the threading cleanup out
19223         of mono_thread_manage and back into its own function, so it can be
19224         called after the finalizer thread has finished.
19225
19226         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
19227
19228 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
19229
19230         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
19231         Fixes #78495.
19232
19233         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
19234         with non-blittable elements.
19235         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
19236
19237 2006-05-24  Martin Baulig  <martin@ximian.com>
19238
19239         * mono-debug-debugger.h (MonoDebuggerEvent): Added
19240         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
19241
19242         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
19243         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
19244         `mono_debugger_event_handler' to NULL.
19245
19246 2006-05-24  Martin Baulig  <martin@ximian.com>
19247
19248         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
19249
19250 2006-05-24  Martin Baulig  <martin@ximian.com>
19251
19252         * mono-debug-debugger.h
19253         (mono_debugger_create_notification_function): Added
19254         `MonoCodeManager *' argument.
19255
19256 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
19257
19258         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
19259
19260 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
19261
19262         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
19263         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
19264         implementation.
19265
19266 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
19267
19268         * icall.c: precise GC support: objects can't be stored in unmanaged
19269         memory anymore, even if they are kept alive by other references: since
19270         they can move the GC needs to be able to always find them.
19271
19272 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
19273
19274         * object.c: precise GC support for static fields. Support
19275         for moving GCs: write barriers and pinned allocation for interned
19276         strings.
19277
19278 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
19279
19280         * domain.c, domain-internals.h: precise GC support for the MonoDomain
19281         structure.
19282
19283 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
19284
19285         * class.c, gc.c: sgen and precise GC updates.
19286
19287 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
19288
19289         * marshal.h, marshal.c: added write barrier wrapper and precise type
19290         fixes.
19291
19292 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
19293
19294         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
19295         support.
19296
19297 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
19298
19299         * reflection.c: precise and sgen GC updates.
19300
19301 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
19302
19303         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
19304
19305 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
19306
19307         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
19308
19309 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
19310
19311         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
19312         MONO_TYPE_OBJECT. Fixes #78462.
19313
19314 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
19315
19316         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
19317         and blittable types.
19318
19319 2006-05-17  Miguel de Icaza  <miguel@novell.com>
19320
19321         * class.c (mono_class_get_exception_for_failure): Implement parts
19322         of a TODO: if the loader error is set (instead of the class
19323         error), we return a Loader exception that can be properly thrown
19324         elsewhere.
19325
19326         This was exposed by some Winforms 2.0 code that I tried to run
19327         (Atsushi pointed me to it).
19328
19329 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
19330
19331         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
19332         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
19333         
19334         * marshal.c (emit_marshal_vtype): Add limited support for 
19335         UnmanagedType.LPStruct. Fixes #78427.
19336
19337         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
19338         Applied a patch from kangaroo to fix #77523.
19339
19340 2006-05-17  Martin Baulig  <martin@ximian.com>
19341
19342         * threads.c
19343         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
19344         (debugger_thread_created): Removed.
19345         (debugger_thread_exited): Removed.
19346
19347 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
19348
19349         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
19350
19351         * object-internals.h (MonoReflectionResource): Sync with managed version.
19352
19353 2006-05-12  Wade Berrier <wberrier@novell.com>
19354
19355         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
19356
19357 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
19358
19359         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
19360         functions try to allocate from the image mempool.
19361
19362 2006-05-12  Dick Porter  <dick@ximian.com>
19363
19364         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
19365
19366 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
19367
19368         * object.c: The FieldGetter and FieldSetter methods require the full
19369         name of the class, not only the name. Fixes bug #78277.
19370
19371 2006-05-11  Miguel de Icaza  <miguel@novell.com>
19372
19373         * loader.c (method_from_memberref): Do not pass the NULL klass to
19374         mono_loader_set_error_() methods.  Pass the non-NULL value
19375         (class). 
19376
19377 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
19378
19379         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
19380         (mono_assembly_close): Null out assembly->image->references after freeing it.
19381
19382         * image.c (mono_image_close): Free image->references.
19383         
19384         * reflection.c (mono_image_basic_init): Fix a small memory leak.
19385
19386 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
19387
19388         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
19389         before checking if it's NULL (g_assert).
19390
19391 2006-05-10  Martin Baulig  <martin@ximian.com>
19392
19393         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
19394         I thought I already killed that two months ago, but now it somehow reappeared.
19395
19396 2006-05-10  Martin Baulig  <martin@ximian.com>
19397
19398         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
19399
19400 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
19401
19402         * reflection.c: Allocate memory for dynamically created methods in the image
19403         mempools.
19404
19405 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
19406
19407         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
19408         don't use the ad pointer before checking if it's NULL (g_assert).
19409
19410 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
19411
19412         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
19413         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
19414
19415         * marshal.c: Allocate all signatures from mempools.
19416
19417         * marshal.c: Allocate some more signatures from mempools.
19418
19419 2006-05-09  Miguel de Icaza  <miguel@novell.com>
19420
19421         * object.c (mono_load_remote_field): The code used to provide a
19422         temporary variable for returning results if the user did not
19423         provide a result pointer.  But our temporary variable was allocted
19424         on the satck.
19425
19426         Fix calling code to always pass a result area.   Coverity ID 103.
19427
19428 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
19429
19430         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
19431         value, not the old. Fixes #78312.
19432         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
19433
19434         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
19435         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
19436         per-image cache.
19437
19438         * assembly.c (mono_assembly_close): Free image->references.
19439
19440         * assembly.c (mono_assembly_names_equal): Fix a warning.
19441         (mono_assemblies_cleanup): Cleanup more global data.
19442
19443         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
19444
19445         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
19446         ptr_cache and image->modules.
19447
19448         * image.c (mono_image_init): Allocate array_cache lazily.
19449         
19450 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19451
19452         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
19453         behavior was changed recently and has bad side effects.
19454
19455 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
19456
19457         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
19458         
19459         * assembly.c (mono_assembly_close): Remove a debug printf.
19460
19461         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
19462
19463         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
19464         to also allow for temporary references between mono_image_open ()/close ().
19465
19466         * domain.c (get_runtimes_from_exe): Add a FIXME.        
19467
19468 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
19469
19470         * marshal.c: Fix support for dynamic methods.
19471
19472         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
19473
19474         * marshal.c (mono_marshal_cleanup): New cleanup function.
19475
19476         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
19477         image mempools.
19478
19479         * class.c (mono_class_init): Fix leaking class->nested_classes.
19480
19481         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
19482
19483         * image.c (mono_image_init): Initialize the new cashes.
19484
19485         * image.c (mono_image_close): Destroy the new cashes.
19486
19487         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
19488
19489         * mempool.c (mono_mempool_strdup): New helper function.
19490
19491         * class-internals.h: Add prototype for mono_loader_unlock ().
19492
19493         * domain.c (mono_jit_info_table_find): Fix a warning.
19494         (mono_debugger_check_runtime_version): Ditto.
19495
19496         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
19497         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
19498         functions to these modules.
19499
19500         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
19501         metadata modules.
19502         
19503         * marshal.c (mono_free_bstr): Fix a warning.
19504
19505         * assembly.c (mono_assembly_open_full): Fix another small leak.
19506
19507         * object.c: Fix some unload leaks in the remoting code.
19508
19509         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
19510         function.
19511
19512         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
19513
19514         * reflection.c: Fix some unload leaks in dynamic assemblies.
19515
19516 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
19517
19518         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
19519         * marshal.h: Add BSTR support on Win32
19520         * icall.c: Add BSTR icalls
19521         * metadata.h: Add BSTR enums
19522
19523 2006-04-28  Miguel de Icaza  <miguel@novell.com>
19524
19525         Work to catch the crash from #76795 and turn it into an
19526         exception.   As I stubbed out pieces of the VisualBasic support,
19527         I found a number of places where the code was failing and I added
19528         checks to those places. 
19529         
19530         * metadata.c (do_mono_metadata_parse_generic_class): Make this
19531         function return a status code.  If we fail to parse the signature
19532         from mono_metadata_parse_generic_inst, return FALSE.
19533
19534         * loader.c (mono_get_method_from_token): If we fail to load the
19535         method (mono_class_get) return NULL.   
19536
19537         * (method_from_memberref): Return NULL if we are unable to parse
19538         the method signature
19539
19540         (mono_loader_error_prepare_exception): Since we now use the
19541         loader_error flag internally to stop processing, and obtaining
19542         exceptions that might be thrown will walk this code path the
19543         proper way of going from a MonoLoaderError into a
19544         MonoException was convoluted.   This new routine encapsulates the
19545         process of turning the error into an exception and *clearing* the
19546         error afterwards.
19547         
19548 2006-04-27  Miguel de Icaza  <miguel@novell.com>
19549
19550         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
19551         with missing assemblies), and to cope with:
19552
19553                 * Missing fieldref from a non-existing assembly.
19554                 * Missing methodref from a non-existing assembly.
19555
19556         The first batch of work to address *some* of the issues from 76661.
19557         
19558         * object.c (mono_class_create_runtime_vtable): If we fail to
19559         initialize the class raise the exception here. 
19560
19561         * metadata.c (mono_class_get_overrides_full): If any methods fail
19562         to load return the failure to the caller.
19563
19564         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
19565         flagging assemblies that failed to load.   
19566
19567         Do not crash if we are unable to load the assembly.
19568
19569         (mono_assembly_close): Do nothing with REFERENCE_MISSING
19570         assemblies. 
19571
19572         * loader.c (mono_loader_set_error_type_load): Change the
19573         convention to always pass unallocated strings, so we make our own
19574         copies (I know our own code had duplicated strings before, but
19575         this keeps the normal conventions).
19576         (method_from_memberref): Call mono_loader_set_error_method_load
19577         for all possible failures of loading the class. 
19578         Remove assert, turn into a loader error.
19579
19580         (mono_loader_error_to_exception): Move this routine from mini
19581         (mini_loader_error_to_exception) there was no need to have that in
19582         mini. 
19583
19584         * class.c (mono_class_from_typeref): If we were not able to load
19585         the assembly with mono_assembly_load_reference, call the
19586         mono_loader_set_error_type_load to register the problem.
19587
19588         (mono_class_setup_fields): If we fail to load the type from
19589         mono_metadata_parse_type_full, call mono_class_set_failure and
19590         break from the loop.
19591
19592         If class->exception_type is set, we do not layout the fields as
19593         that might crash the runtime, and instead return (from breaking
19594         from the previous loop).
19595
19596         (mono_class_setup_vtable): This now returns a boolean indicating
19597         whether the table was properly setup.   The decision is driven by
19598         mono_class_get_overrides_full which might run into non-existing
19599         methods. 
19600         
19601         (mono_class_init): Returns TRUE on success or FALSE if there was a
19602         problem in loading the type (incorrect assemblies, missing
19603         assemblies, methods, etc).
19604
19605         When we call mono_class_setup_fields we also check for a potential
19606         error inside this call (either a class exception or a general
19607         loader exception).
19608
19609         (mono_class_create_from_typedef): If the parent fails to load
19610         (calling mono_class_get_full) return NULL.
19611         
19612         ** Important **
19613
19614         calls to mono_metadata_parse_type_full should be checked
19615         everywhere and set the mono_class_set_failure
19616         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
19617
19618         The current patch checks the places where my manually constructed
19619         tests show the errors are showing up, but we should do it
19620         everywhere. 
19621
19622         ** Important2 **
19623
19624         mono_class_init return values should be tested everywhere, like
19625         the previous case this is something that we should audit
19626         everywhere and not only on the cases exposed by the tests I
19627         created. 
19628
19629 2006-04-26  Miguel de Icaza  <miguel@novell.com>
19630
19631         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
19632         boolean parameter and instead pass the information on `options'
19633         parameter (FileOptions).
19634
19635         * icall.c: Register the new signature for MonoIO.Open.
19636
19637         * debug-helpers.c (dis_one): Trying to understand how coverity
19638         works.  Fix Run 5, item 78.
19639
19640 2006-04-26  Dick Porter  <dick@ximian.com>
19641
19642         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
19643         dereference.
19644
19645 2006-04-25  Martin Baulig  <martin@ximian.com>
19646
19647         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
19648
19649         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
19650         debugger_thread_created().
19651         (debugger_gc_push_all_stacks): Don't handle the main thread in any
19652         special way.
19653         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
19654         (mono_debugger_finalize_threads): New function; undo the effects
19655         of mono_debugger_init_threads().
19656         (mono_debugger_create_all_threads): Removed.
19657
19658 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
19659
19660         * image.c (mono_image_close): Tidy up trace messages.
19661
19662         * assembly.c (mono_assembly_close): Ditto.
19663
19664         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
19665         no longer references an already freed assembly. Fixes #78168.
19666
19667 2006-04-21  Dick Porter  <dick@ximian.com>
19668
19669         * threads.c (mono_thread_detach): Fix reference counting when
19670         detaching threads.
19671
19672 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
19673
19674         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
19675         #78155.
19676
19677 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
19678
19679         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
19680         (mono_type_to_stind): Ditto.
19681
19682         * marshal.c: Use the new helper functions to simplify code.
19683
19684         * image.c (mono_image_close): Add some code for help debug assembly unloading
19685         problems.
19686
19687         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
19688         image mempool.
19689
19690         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
19691         assembly was already loaded in another appdomain. Fixes #78083.
19692
19693 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
19694
19695         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
19696         referenced assemblies.
19697         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
19698
19699         * domain.c (mono_domain_free): Add a trace message.
19700
19701         * appdomain.c (add_assemblies_to_domain): Ditto.        
19702
19703         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
19704         field.  
19705
19706 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
19707
19708         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
19709
19710 2006-04-12  Martin Baulig  <martin@ximian.com>
19711
19712         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
19713         `USE_INCLUDED_LIBGC'.   
19714
19715 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
19716
19717         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
19718         the patch contains ../ and a small directory name later. Hopefully fixes
19719         #78035.
19720
19721 2006-04-10  Martin Baulig  <martin@ximian.com>
19722
19723         Clean up the debugger's thread-handling code.
19724
19725         The debugger's thread-handling code has been moved from
19726         ../mini/debug-debugger.c to threads.c.  We now iterate directly
19727         over the `threads' hash, keep track of exiting threads and also
19728         use proper locking.
19729
19730         We can now debug XSP and XSP based applications with the debugger.
19731
19732         * object-internals.h (MonoThread): Added `gpointer end_stack'.
19733
19734         * threads.h
19735         (MonoThreadCallbacks): Removed; this was only used by the debugger.
19736         (mono_install_thread_callbacks): Likewise.      
19737
19738         * threads.c (mono_thread_callbacks): Removed.
19739         (debugger_thread_created, debugger_thread_exited): New static functions.
19740         (start_wrapper): Call debugger_thread_created().
19741         (thread_cleanup): Call debugger_thread_exited().
19742         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
19743         (mono_debugger_init_threads): New public function.
19744         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
19745         iterate directly over the `threads' hash and also use proper locking.
19746
19747         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
19748
19749         * mono-debug-debugger.h
19750         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
19751
19752 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
19753
19754         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
19755         argument type=array. Fixes #78057.
19756
19757 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
19758
19759         * culture-info-table.h : regenerated. Fixed bug #69652.
19760
19761 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
19762
19763         * loader.c metadata.c: Reapply a variant r59116.
19764         
19765         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
19766
19767         * class.c (mono_class_setup_interface_offsets): New internal function.
19768
19769         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
19770         interfaces too. Fixes #77398.
19771
19772         * reflection.c (encode_cattr_value): Add support for 
19773         parameter type=object, argument type=array.
19774         (load_cattr_value): Ditto. Fixes #77916.
19775
19776         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
19777         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
19778
19779         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
19780         a byval char array and CharSet is Ansi.
19781
19782         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
19783
19784 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
19785
19786         * metadata.c: Add some locking comments.
19787         
19788         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
19789         mempool.
19790         (mono_metadata_free_method_signature): Don't free the signature itself.
19791
19792         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
19793
19794         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
19795         reference the same MonoImage.
19796         (mono_assembly_load_from_full): Add an assert.
19797
19798 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
19799
19800         * image.c (mono_image_close): Don't put the image we are about to free into the
19801         loaded_images_guid_hash.
19802
19803         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
19804         to reduce code duplication.
19805
19806         * marshal.c: Register the native functions called by this module as icalls, to
19807         somewhat centralize the creation of MonoMethodSignature's.
19808
19809         * loader.c (mono_method_signature): Add a cache for method signatures.
19810
19811         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
19812         the parameter attributes of a method.
19813         (mono_metadata_parse_method_signature_full): Refactored the computation of
19814         parameter attributes into a separate function. Also avoid one allocation in
19815         most cases.
19816
19817         * assembly.c (mono_assembly_close): Ditto.
19818
19819         * image.c (mono_image_close): Log trace messages with INFO level.
19820
19821         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
19822
19823         * image.c reflection.c: Correct reference counting of image modules.
19824         
19825         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
19826         of this function from the image mempool.
19827         
19828         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
19829         to allow more cached types to be used.
19830
19831         * mono-debug.c (mono_debug_add_method): Appled patch from
19832         David S. Miller  <davem@sunset.davemloft.net>: Access 
19833         minfo->lexical_blocks[] entry elements using read32().
19834
19835 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
19836
19837         * loader.c (mono_free_method): No longer free the method header for non-dynamic
19838         methods as it is allocated from the mempool.
19839
19840         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
19841         image mempool.
19842
19843         * metadata-internals.h: Add comments describing the reference counting scheme
19844         used for MonoImage and MonoAssembly.
19845
19846         * image.c assembly.c reflection.c: Rework reference counting of images and 
19847         assemblies so they are freed when the runtime is shut down. Free some 
19848         additional memory structures when an image is unloaded.
19849         
19850 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
19851
19852         * class.c loader.c reflection.c: Allocate more data structures in
19853         the image mempool.
19854
19855 2006-03-31  Miguel de Icaza  <miguel@novell.com>
19856
19857         * icall.c
19858         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
19859         build on pre glib 2.4 systems.
19860
19861 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
19862
19863         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
19864
19865         * icall.c: Fix some warnings.
19866
19867 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
19868
19869         * culture-info-table.h : regenerated.
19870
19871 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
19872
19873         * threads.c, object-internals.h, verify.c: changed the culture caching
19874         code to use a normal MonoArray for storage so the GC can keep track of
19875         them easily. Fixed bits of the cache logic, too and simplified the
19876         code.
19877
19878 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
19879
19880         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
19881         thread for non-Boehm GCs.
19882
19883 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
19884
19885         * domain.c, object.c, domain-internals.h: reduce the amount of memory
19886         needed to keep track of the data for static fields.
19887
19888 2006-03-29  Raja R Harinath  <rharinath@novell.com>
19889
19890         Fix #75172
19891         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
19892         for interface classes.  Use 'num_methods' instead.
19893         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
19894         before using '->vtable_size' field.
19895
19896 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
19897
19898         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
19899         doesn't contain managed pointers, so use a normal hashtable.
19900
19901 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
19902
19903         * reflection.c, class-internals.h, domain.c: fixed handling of types
19904         used as values for objects in custom attributes (bug #77915):
19905
19906 2006-03-24  Martin Baulig  <martin@ximian.com>
19907
19908         * class.c (mono_class_setup_fields): Added support for generic
19909         instances; fixes #77580.
19910
19911 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19912
19913         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
19914
19915 2006-03-24  Dick Porter  <dick@ximian.com>
19916
19917         * file-io.c (get_file_attributes): More stat macro breakage.
19918         Fixes bug 77759.
19919
19920 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
19921
19922         * profiler.c: added the file=filename option in the default profiler
19923         to output the profile data to filename.
19924
19925 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19926
19927         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
19928         bug #77877.
19929
19930 2006-03-22  Martin Baulig  <martin@ximian.com>
19931
19932         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
19933         allocated `MonoClassField *' in `fb->handle'.
19934
19935 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
19936
19937         * class.c, image.c, metadata-internals.h: implemented new mechanism to
19938         allocate interface ID to save memory and allow better ID reuse on
19939         appdomain unload. setup_generic_vtable () removal from Martin.
19940
19941 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
19942
19943         * object.h, appdomain.c, domain.c, exception.c, icall.c,
19944         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
19945         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
19946         write barriers for reference stores with managed objects accessed with
19947         C structures in the runtime and in embedding programs.
19948
19949 2006-03-20  Raja R Harinath  <rharinath@novell.com>
19950
19951         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
19952         'interface_id' and 'max_interface_id' fields of MonoClasses
19953         representing open generic types.
19954
19955 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
19956
19957         * object.h, object.c, icall.c: added functions to deal with
19958         storing valuetypes that contain references in managed objects.
19959         * reflection.c, string-icalls.c, threads.c, marshal.c: small
19960         fixes and comments around uses of mono_array_addr ().
19961
19962 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
19963
19964         * object.h, icall.c, monitor.c: object.GetHashCode ()
19965         implementation that supports the moving garbage collector.
19966
19967 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
19968
19969         * icall.c, threads-types.h, threads.c: implemented finalizer for
19970         LocalDataStoreSlot.
19971
19972 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
19973
19974         * metadata.c (mono_type_size): Add a fixme.
19975         (mono_type_stack_size): Ditto.
19976
19977         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
19978         'type_forwarders' field.
19979
19980         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
19981         attribute from net 2.0.
19982
19983         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
19984         from class.c.
19985
19986         * class.c (mono_class_setup_fields): Fix a warning.
19987         
19988         * class.c (mono_class_from_name): Add support for assemblyref entries
19989         in the EXPORTEDTYPE table.
19990
19991         * reflection.c: Add support for handling type forwarders under net 2.0.
19992
19993         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
19994         
19995 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
19996
19997         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
19998         overwriting entries in ModuleBuild->types, also clean up the code
19999         a little. Fixes #77774.
20000
20001 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
20002
20003         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
20004         load friend assembly info when present.
20005
20006 2006-03-14  Raja R Harinath  <rharinath@novell.com>
20007
20008         Fix crasher on gtest-158.cs.
20009         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
20010         the return value if the MonoClass we want is yet in an
20011         inconsistent state.
20012         * class.c (mono_class_create_from_typedef): Add an comment
20013         explaining an order dependency between mono_class_setup_parent and
20014         mono_class_setup_mono_type.
20015
20016 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
20017
20018         * class.c: documentation updates and events bug fix.
20019
20020 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
20021
20022         * class.c: some cleanup, locking fixes.
20023
20024 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
20025
20026         * class.c: fix the generics code to setup nested
20027         type info to the instantiated type (bug #77770).
20028
20029 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
20030
20031         * marshal.c: fixed a few type correctness issues.
20032
20033 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
20034
20035         * loader.c: the Set/Get/Addrtess array methods should be public.
20036
20037 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
20038
20039         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
20040         
20041         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
20042         info->wrapper.
20043
20044 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
20045
20046         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
20047
20048         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
20049
20050         * mempool.c (mono_mempool_alloc): Speed this up a bit.
20051         (mono_mempool_alloc0): Ditto.
20052
20053 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20054
20055         * socket-io.c:
20056         (create_object_from_sockaddr): it was allocating 4 extra bytes
20057         for the AF_UNIX data. Fixes bug #77747.
20058
20059 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
20060
20061         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
20062
20063 2006-03-09  Dick Porter  <dick@ximian.com>
20064
20065         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
20066         Fixes bug 76966 again.
20067
20068 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
20069
20070         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
20071         names from r57532
20072         * appdomain.c: Bumped corlib version to 48 (due to r57532)
20073
20074 2006-03-07  Martin Baulig  <martin@ximian.com>
20075
20076         * object.c
20077         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
20078
20079 2006-03-07  Martin Baulig  <martin@ximian.com>
20080
20081         * class.c
20082         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
20083         regression introduced in r56970; see gtest-252.cs.
20084
20085         * loader.c (mono_get_method_constrained): Correctly handle generic
20086         methods; see gtest-253.cs.
20087
20088 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
20089
20090         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
20091
20092 2006-03-04  Martin Baulig  <martin@ximian.com>
20093
20094         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
20095         compute the parent type at runtime, just like we're already doing
20096         it for interfaces.
20097
20098         * reflection.c
20099         (mono_reflection_bind_generic_parameters): Don't compute the
20100         parent type anymore.
20101
20102         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
20103
20104 2006-03-04  Martin Baulig  <martin@ximian.com>
20105
20106         * mono-debug-debugger.h
20107         (mono_debugger_create_notification_function): Allocate memory at
20108         runtime and return a pointer to it.
20109
20110 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
20111
20112         * assembly.c: Fix windows build.
20113         
20114         * assembly.c: Fix build.
20115
20116         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
20117
20118         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
20119         
20120 2006-03-03  Dick Porter  <dick@ximian.com>
20121
20122         * process.c
20123         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
20124         Check parameters before dereferencing them.  Fixes Aaron's part of
20125         bug 77393.
20126
20127 2006-03-03  Raja R Harinath  <rharinath@novell.com>
20128
20129         Fix performance regression.
20130         * loader.c (find_method_in_class): Add 'from_class' argument.
20131         Rename 'klass' argument to 'in_class'.  The signature is compared
20132         against the method in 'in_class', and the corresponding method is
20133         returned from 'from_class'.
20134         (find_method): Walk both 'in_class' and 'from_class' in parallel.
20135         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
20136         type definition and generic instantiation in parallel.
20137         (mono_get_method_constrained): Update to changes.
20138
20139 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
20140
20141         * threads.c: make sure the domain is correct, too when doing
20142         mono_thread_attach ().
20143
20144 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
20145
20146         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
20147         windows. Fixes #77683.
20148
20149 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
20150
20151         * object.h, *: introduced specific way to set elements of an array
20152         of references to be used as write barrier. Still need to audit the
20153         uses of mono_array_addr.
20154
20155 2006-03-01  Miguel de Icaza  <miguel@novell.com>
20156
20157         * object-internals.h: New field to cache the assmebly name, patch
20158         from Tambet Ingo (tambet@ximian.com)
20159
20160 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
20161
20162         * decimal.h, class-internals.h, metadata-internals.h,
20163         file-io.h: mark a few function declarations as internal, to
20164         reduce the number of PLT entries.
20165
20166 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20167
20168         * file-io.c: fix typo in warning message.
20169
20170 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
20171
20172         * loader.c: on unix, lookup the "*A" version of a function
20173         if charset is auto as a second option before failing.
20174
20175 2006-02-28  Raja R Harinath  <rharinath@novell.com>
20176
20177         * class.h (mono_class_inflate_generic_method): Revert to two
20178         argument version.
20179         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
20180         (mono_class_inflate_generic_method_full): Add.
20181         * class.c (mono_class_inflate_generic_method_full): Rename from
20182         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
20183         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
20184         * loader.c, reflection.c: Update to changes.
20185
20186 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
20187
20188         * icall.c: const fixes and small improvements.
20189
20190 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20191
20192         * threadpool.c: for asynchronous connect(), enable the same workaround
20193         for BSD 6 as for the Mac. Fixes bug #77637.
20194
20195 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
20196
20197         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
20198         formatted classes. Fixes #77524.
20199
20200 2006-02-24  Raja R Harinath  <rharinath@novell.com>
20201
20202         * class.c (inflate_generic_type): Add a couple more
20203         micro-optimizations.
20204         (inflate_generic_context): Don't use the 'gmethod' from
20205         'inflate_with'.
20206         (mono_class_inflate_generic_method): If the method has generic
20207         parameters, but the passed-in context doesn't have a 'gmethod',
20208         create one.  Use the possibly simplified generic instantiation
20209         from the declaring class instead of the one passed in.
20210
20211 2006-02-24  Raja R Harinath  <harinath@gmail.com>
20212
20213         Make generic method signature and method header handling lazy.
20214         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
20215         (inflate_generic_header): Likewise.
20216         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
20217         parameter to avoid inflating types.
20218         (mono_get_inflated_method): Empty out.
20219         * class.h (mono_class_inflate_generic_method): Update to changes.
20220         * loader.c (mono_get_method_from_token): Don't parse signature for
20221         generic methods, nor methods of generic classes.
20222         (mono_method_signature): Rename from 'mono_method_signature'.
20223         Inflate signature on demand.
20224         (mono_method_get_header): Inflate method header on demand.
20225         * reflection.c: Update to changes.
20226
20227 2006-02-23  Raja R Harinath  <rharinath@novell.com>
20228
20229         * metadata.c (mono_metadata_inflate_generic_inst): If the
20230         instantiation is closed, don't bother expanding it in the new
20231         context.
20232         * class.c (inflate_generic_class): If the generic instantiation
20233         doesn't change after inflation, return the argument itself.
20234         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
20235         Add bounds checks.
20236         (inflate_generic_context): If neither the generic class nor the
20237         generic method instantiations change, return the original context.
20238         * reflection.c (mono_method_get_object): Do
20239         'mono_get_inflated_method' before accessing the ->klass field.
20240         (inflate_mono_method): Don't create a MonoGenericMethod unless
20241         necessary.
20242         (inflate_method): Don't pass a constructed type as the declaring
20243         type of a methodbuilder.
20244
20245 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
20246
20247         * object.c: fix memory overwrite.
20248
20249 2006-02-22  Dick Porter  <dick@ximian.com>
20250
20251         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
20252         it doesn't work any more.
20253         (mono_threads_request_thread_dump): Fix unused variable warnings.
20254
20255 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
20256
20257         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
20258         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
20259         the public header file.
20260
20261 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
20262
20263         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
20264
20265 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
20266
20267         * class-internals.h, object.c: reduce the size of MonoVTable
20268         and store the interface_offsets array at negative offsets.
20269
20270 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
20271
20272         * metadata.c: tweak table descriptors data structures to reduce
20273         size and runtime relocations.
20274
20275 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
20276
20277         * marshal.c: fix some types and opcodes to be type-safe
20278         in marshaling wrappers.
20279
20280 2006-02-21  Ankit Jain  <jankit@novell.com>
20281
20282         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
20283
20284 2006-02-21  Raja R Harinath  <rharinath@novell.com>
20285
20286         * metadata.c (get_constraints): Relax debugging checks for monodis.
20287
20288 2006-02-21  Ankit Jain  <jankit@novell.com>
20289
20290         * metadata.c (mono_metadata_load_generic_params): Move the code
20291         checking for ambiguous generic params from here to mono/dis/get.c
20292         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
20293
20294 2006-02-21  Raja R Harinath  <harinath@gmail.com>
20295
20296         Fix assertion triggered when compiling nemerle.
20297         * class.c (mono_get_shared_generic_inst): Rename from
20298         get_shared_inst and make non-static.
20299         * loader.c (mono_get_shared_generic_method): New.  Used to create
20300         the MonoGenericContext-equivalent of a MonoGenericContainer.
20301         (mono_get_method_from_token): Initialize the 'context' field of
20302         the created MonoGenericContainer.
20303         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
20304         * metadata.c (get_constraints): Add sanity check.
20305         * class-internals.h: Add new internal methods.
20306
20307         * reflection.c (verify_safe_for_managed_space): New sanity check.
20308         Currently checks that owner-less generic parameters aren't allowed
20309         in managed space.
20310         (mono_type_get_object): Use it.
20311         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
20312         that are now in mono_type_get_object.
20313         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
20314
20315 2006-02-19  Raja R Harinath  <harinath@gmail.com>
20316
20317         * metadata.c (mono_type_create_from_typespec): Rename from
20318         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
20319         argument and caching of types in the generic container.
20320         (unwrap_arrays, find_generic_param): Remove.
20321         * metadata-internals.h: Update.
20322         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
20323
20324 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
20325
20326         * class.c (mono_class_get_exception_for_failure): Fix a warning.
20327
20328         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
20329         return values. Fixes #77581.
20330
20331         * class.c (mono_fnptr_class_get): Switch name and name_space.
20332
20333         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
20334         classes and add support for [In, Out] attributes.
20335         (mono_marshal_free_asany): Ditto. Fixes #77524.
20336
20337 2006-02-18  Raja R Harinath  <harinath@gmail.com>
20338
20339         * class.c (mono_class_from_generic_parameter): Make more robust to
20340         incomplete MonoGenericContainers from monodis.
20341
20342 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
20343
20344         * class-internals.h: added some more exception types.
20345         * class.c, metadata.c: added a few checks to handle missing
20346         types.
20347
20348 2006-02-17  Raja R Harinath  <rharinath@novell.com>
20349
20350         Use owner-less generic-params some more.
20351         * class.c (my_mono_class_from_generic_parameter): Remove.
20352         (mono_class_from_generic_parameter): Handle null image,
20353         param->name and param->owner.
20354         (mono_class_from_mono_type): Update.
20355         (mono_class_create_from_typespec): Remove 'container' parameter.
20356         If that parameter is non-null, the result is always inflated by
20357         'mono_class_get_full' anyway.
20358         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
20359         parameter.
20360         (mono_class_get_full): Update.
20361
20362         * class.c (inflate_generic_type) [GENERICINST]: If the generic
20363         instance is not open, don't bother inflating.
20364         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
20365         parse metadata for inflated classes.
20366         (_mono_class_get): Change GenericContext* parameter to
20367         GenericContainer*.
20368         (mono_class_create_from_typespec): Likewise.  Simplify, and
20369         implement trivially.  All the cases are handled in
20370         mono_class_from_mono_type.  Don't inflate returned class.
20371         (mono_class_get_full): Delegate GENERICINST optimization to
20372         inflate_generic_type.
20373         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
20374
20375 2006-02-16  Dick Porter  <dick@ximian.com>
20376
20377         * socket-io.c (create_object_from_sockaddr): Fix typo.
20378         (create_sockaddr_from_object): Check array lengths before
20379         potentially accessing items off the end.
20380         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
20381         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
20382         (ves_icall_System_Net_Sockets_Socket_Send_internal)
20383         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
20384         length checks to avoid wraparound overflows.
20385         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
20386         contents of the array of sockets
20387         (hostent_to_IPHostEntry2)
20388         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
20389         Check return value of inet_ntop ().
20390         (addrinfo_to_IPHostEntry): Fix typo
20391
20392 2006-02-16  Raja R Harinath  <rharinath@novell.com>
20393
20394         Type metadata parsing doesn't use generic-instantiation information.
20395         * metadata.c (mono_metadata_parse_array_full): Change
20396         MonoGenericContext* parameter to MonoGenericContainer*.
20397         (mono_metadata_parse_type_full): Likewise.
20398         (mono_type_create_from_typespec_full): Likewise.
20399         (mono_metadata_parse_mh_full): Likewise.
20400         (mono_metadata_parse_generic_inst): Likewise.
20401         (do_mono_metadata_parse_generic_class): Likewise.
20402         (do_mono_metadata_parse_type): Likewise.
20403         * metadata-internals.h: Update to changes.
20404         * class.c (mono_class_find_enum_basetype): Likewise.
20405         (mono_class_setup_fields): Likewise.
20406         (mono_class_create_from_typespec): Likewise.
20407         * loader.c (method_from_methodspec): Likewise.
20408         (mono_get_method_from_token): Likewise.
20409         (mono_method_get_header): Likewise.
20410
20411 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
20412
20413         * marshal.c: handle additional GENERICINST case (patch from
20414         Thong Nguyen <tum@veridicus.com>).
20415         Fix a few cases where LDIND_I/STIND_I was used for references.
20416
20417 2006-02-16  Raja R Harinath  <rharinath@novell.com>
20418
20419         * reflection.c (mono_reflection_get_token): Remove unused variable.
20420
20421 2006-02-16  Martin Baulig  <martin@ximian.com>
20422
20423         * reflection.c (mono_reflection_get_token): Add support for fields
20424         in instantiated generic types.
20425
20426         * icall.c
20427         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
20428
20429 2006-02-15  Martin Baulig  <martin@ximian.com>
20430
20431         * icall.c
20432         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
20433         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
20434         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
20435         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
20436
20437 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
20438
20439         * class.c, metadata.c, metadata.h, object.c, icall.c,
20440         marshal.c: changed mono_type_get_underlying_type () to do
20441         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
20442         Fixed handling of instantiated generic valuetypes (bug #75479).
20443
20444 2006-02-15  Raja R Harinath  <rharinath@novell.com>
20445
20446         * metadata.c (mono_metadata_decode_signed_value): Simplify.
20447         Delegate to mono_metadata_decode_value, and work on the returned value.
20448
20449         * icall.c (ves_icall_MonoType_GetGenericArguments):
20450         Add consistency check here too.
20451         
20452 2006-02-15  Ankit Jain  <jankit@novell.com>
20453
20454         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
20455         char/short etc.
20456
20457 2006-02-15  Ankit Jain  <jankit@novell.com>
20458
20459         * metadata.c (mono_metadata_decode_signed_value): New function to decode
20460         signed values, used only for representing lower bounds of arrays.
20461         (mono_metadata_parse_array_full): Use new
20462         mono_metadata_decode_signed_value to decode lower bounds.
20463
20464 2006-02-14  Martin Baulig  <martin@ximian.com>
20465
20466         * reflection.c
20467         (mono_reflection_get_token): Support "MonoGenericMethod" and
20468         "MonoGenericCMethod" and allow generic instances / methods.
20469
20470 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
20471
20472         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
20473         to obtain the terminal size using an ioctl.
20474
20475         * object.c (mono_nullable_init): Revert this as nullable reference
20476         types are not valid.
20477         (mono_nullable_box): Ditto.
20478
20479 2006-02-09  Dick Porter  <dick@ximian.com>
20480
20481         * threads.c (mono_thread_detach): Drop a reference to the thread
20482         we're detaching.
20483
20484 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
20485
20486         * object.c (mono_nullable_init): Handle nullable reference types.
20487         (mono_nullable_box): Ditto. Fixes #77446.
20488
20489 2006-02-07  Martin Baulig  <martin@ximian.com>
20490
20491         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
20492
20493 2006-02-07  Ankit Jain  <jankit@novell.com>
20494
20495         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
20496         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
20497         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
20498         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
20499         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
20500         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
20501
20502 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
20503
20504         * class.c (mono_class_create_generic): Set type_token as well.
20505
20506         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
20507         compatible with MS.
20508
20509 2006-02-02  Martin Baulig  <martin@ximian.com>
20510
20511         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
20512         has never been used so far.
20513
20514 2006-02-02  Martin Baulig  <martin@ximian.com>
20515
20516         * mono-debug-debugger.h: Changed comment at the top of this file;
20517         the header is not installed, but it's safe to #include it from
20518         within the JIT.
20519
20520         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
20521         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
20522
20523 2006-02-02  Martin Baulig  <martin@ximian.com>
20524
20525         * mono-debug.h
20526         (MonoSymbolTable): Removed the `metadata_info' field.
20527
20528         * mono-debug.c
20529         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
20530
20531         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
20532         (mono_debugger_add_builtin_types): Removed.
20533         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
20534         (mono_debugger_create_notification_function): We now operate on a
20535         pre-allocated area; take a `gpointer' and return `void'.
20536
20537         * mono-debug-debugger.c
20538         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
20539         (mono_debugger_add_builtin_types): Removed.
20540
20541 2006-02-02  Martin Baulig  <martin@ximian.com>
20542
20543         * threads.c (mono_debugger_create_all_threads): New public method.
20544
20545 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
20546
20547         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
20548         breaks on several platforms.
20549
20550 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
20551
20552         * assembly.c: the VS.NET build doesn't supply default values for
20553         MONO_ASSEMBLIES and MONO_CFG_DIR.
20554
20555 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
20556
20557         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
20558         helper function.
20559
20560         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
20561
20562         * loader.c (method_from_memberref): Fix a warning.
20563
20564         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
20565
20566         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
20567         with explicit layout. Fixes #77433.
20568
20569 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
20570
20571         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
20572         max_interface_id is initialized before using it. Fixes #77398.
20573         (ves_icall_Type_GetInterfaces): Ditto.
20574
20575 2006-01-30  Raja R Harinath  <rharinath@novell.com>
20576
20577         * metadata.c (mono_metadata_parse_method_signature_full): Don't
20578         allocate memory for parameter attributes when parsing memberref
20579         signatures.
20580         * loader.c (mono_loader_set_error_method_load): Don't warn.
20581         (method_from_memberref): Ensure MissingMethodException gets thrown
20582         if method is not found.  Make warning more informative.
20583
20584 2006-01-29  Raja R Harinath  <harinath@gmail.com>
20585
20586         Fix #77397
20587         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
20588         return true if is byref.
20589         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
20590         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
20591         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
20592
20593 2006-01-27  Raja R Harinath  <rharinath@novell.com>
20594
20595         Fix tests/find-method.2.il
20596         * loader.c (find_method, find_method_in_class): Remove is_inflated
20597         argument.  Revert 2006-01-18 change.
20598         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
20599         is generic, search for method in its generic definition.
20600         * class.c (mono_class_setup_vtable_general): Print generic
20601         arguments of generic types in debugging printf.
20602
20603 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
20604
20605         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
20606
20607         * threads.c (mono_threads_request_thread_dump): New helper function.
20608
20609 2006-01-25  Raja R Harinath  <rharinath@novell.com>
20610
20611         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
20612
20613 2006-01-25  Ankit Jain  <jankit@novell.com>
20614
20615         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
20616         move definition to ..
20617         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
20618         
20619 2006-01-25  Ankit Jain  <jankit@novell.com>
20620             Raja R Harinath  <rharinath@novell.com>
20621
20622         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
20623         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
20624         as necessary.
20625
20626 2006-01-25  Martin Baulig  <martin@ximian.com>
20627
20628         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
20629         `MonoDebuggerThread' into debug-debugger.c.
20630
20631 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
20632
20633         * profiler.c: fix printing of data.
20634
20635 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
20636
20637         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
20638           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
20639
20640 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
20641
20642         * object.c: fix deadlock related to string interning.
20643
20644 2006-01-23  Martin Baulig  <martin@ximian.com>
20645
20646         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
20647
20648         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
20649
20650 2006-01-23  Martin Baulig  <martin@ximian.com>
20651
20652         * mono-debug.h: Moved the prototypes of some functions which are
20653         used by the JIT here from mono-debug-debugger.h.
20654
20655 2006-01-21  Martin Baulig  <martin@ximian.com>
20656
20657         * Makefile.am: Don't install mono-debug-debugger.h.
20658
20659 2006-01-21  Martin Baulig  <martin@ximian.com>
20660
20661         * mono-debug-debugger.h: Enforce the private status of this header
20662         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
20663         Moved some stuff from mono-debugger-jit-wrapper.h here.
20664
20665 2006-01-20  Raja R Harinath  <rharinath@novell.com>
20666
20667         * class.c (mono_class_from_typeref): Add a sanity test to help
20668         catch lack of assembly load/search hooks.
20669
20670 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
20671
20672         * marshal.c (emit_struct_conv): Relax the fields with same offset
20673         check even more. Fixes #77230.
20674
20675 2006-01-18  Martin Baulig  <martin@ximian.com>
20676
20677         * loader.c (find_method_in_class): Added `gboolean is_inflated'
20678         argument; if false, we compare the uninstantiated signatures.
20679         (method_from_memberref): Compare the uninstantiated signatures;
20680         fixes #76417.
20681
20682 2006-01-18  Robert Jordan  <robertj@gmx.net>
20683
20684         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
20685         Clear the weak link. Fixes bug #77170.
20686
20687         * gc.c (mono_gchandle_free):
20688         Reflect *-gc.c changes (tiny optimization).
20689
20690 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
20691
20692         * metadata.c (mono_metadata_signature_dup): Applied patch from
20693         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
20694         Fixes #77288.
20695
20696 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
20697
20698         * marshal.c (emit_struct_conv): Allow fields with the same offset when
20699         marshalling from native to managed code. Fixes #77230.
20700
20701 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20702
20703         * threadpool.c: fix problem (Mac only) when more than one asynchronous
20704         connect. Fixes bug #77020.
20705
20706 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
20707
20708         * class.c: fixed id assignement for nested interfaces (bug #77275).
20709         Added also better info for --print-vtable debugging.
20710
20711 2006-01-12  Martin Baulig  <martin@ximian.com>
20712
20713         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
20714         interfaces on-the-fly; fixes #76625.
20715
20716         * class-internals.h
20717         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
20718         don't need that anymore.
20719
20720 2006-01-12  Miguel de Icaza  <miguel@novell.com>
20721
20722         * socket-io.c
20723         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
20724         To avoid initing the nested_classes when not needed I turned the
20725         PeerCredData as a toplevel internal class, as it has to be shared
20726         anyways. 
20727
20728         Fixes the CASA issue.
20729
20730 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
20731
20732         * domain.c: Accessors for MonoJitInfo
20733
20734         * profiler-private.h: Add jitinfo to the end jit hook
20735
20736         * profiler.[ch]: Define new hooks, called after jitting which give
20737         the MonoJitInfo that was compiled
20738
20739 2006-01-10  Martin Baulig  <martin@ximian.com>
20740
20741         * class.c (mono_class_setup_events): Add support for generic
20742         classes; fixes #76440.
20743
20744 2006-01-06  Raja R Harinath  <rharinath@novell.com>
20745
20746         Fix #77160.
20747         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
20748         on passed-in method.
20749
20750 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
20751
20752         * object.c (mono_runtime_invoke_array): Add Nullable support.
20753
20754         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
20755
20756 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
20757
20758         * file-io.c: Don't consider sockets as directory and avoid an endless
20759         loop. Fix bug #76966.
20760
20761 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
20762
20763         * object.c (mono_nullable_init): New helper function.
20764         (mono_nullable_box): Ditto.
20765
20766         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
20767
20768         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
20769
20770         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
20771         
20772 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
20773
20774         * class.c (mono_class_is_assignable_from): Make T assignable to 
20775         Nullable<T>.
20776
20777 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
20778
20779         * appdomain.c: Bump corlib version to 46.
20780         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
20781         serialization purpose) and changed ves_icall_System_Reflection_
20782         Assembly_get_code_base signature to accept a boolean (to escape, or 
20783         not, the assembly code base).
20784
20785 2005-12-23  Dick Porter  <dick@ximian.com>
20786
20787         * icall.c: 
20788         * threads-types.h: 
20789         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
20790         CreateEvent icall now returns "created" boolean parameter.
20791
20792 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
20793
20794         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
20795         #76967.
20796
20797         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
20798         when attr_klass is an interface. Fixes #77045.
20799
20800 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
20801
20802         * marshal.c (emit_struct_conv): Fix previous patch.
20803         
20804         * marshal.c (emit_struct_conv): Add a check for fields with the same
20805         offset.
20806
20807 2005-12-20  Raja R Harinath  <rharinath@novell.com>
20808
20809         Fix regression in Mono.C5.
20810         * class.c (mono_class_create_generic): If 'klass' is an interface
20811         set up the interface offsets.
20812         (mono_class_is_assignable_from): Don't throw away generic arguments.
20813
20814 2005-12-19  Raja R Harinath  <rharinath@novell.com>
20815
20816         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
20817         type parameters.
20818
20819 2005-12-15  Raja R Harinath  <rharinath@novell.com>
20820
20821         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
20822         dead store.
20823         (do_mono_metadata_parse_generic_class): Don't pass the current
20824         generic context when parsing the type being instantiated: it
20825         cannot use it, anyway.
20826
20827         * loader.c (method_from_memberref): Don't inflate a signature if
20828         it doesn't contain any type parameters.
20829
20830 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
20831
20832         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
20833
20834 2005-12-14  Martin Baulig  <martin@ximian.com>
20835
20836         * class.c
20837         (mono_type_get_name_recurse): Don't return null for type
20838         parameters and open generic classes.
20839         (mono_class_setup_methods): Don't exclude generic instances.
20840         (mono_get_unique_iid): Use different IDs for different
20841         instantiations of the same generic type.
20842         (mono_class_setup_vtable): Only use setup_generic_vtable() for
20843         open generic instances; create a normal vtable for closed generic
20844         instances.
20845         (mono_class_setup_vtable_general): We're now also called for
20846         closed generic instances.
20847
20848         * reflection.c
20849         (mono_reflection_bind_generic_parameters): Correctly use
20850         mono_metadata_lookup_generic_inst() everywhere.
20851
20852 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
20853
20854         * object.c (mono_class_create_runtime_vtable): Call 
20855         mono_class_setup_vtable ().
20856
20857         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
20858         function.
20859         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
20860         #76959.
20861
20862         * loader.c (mono_loader_set_error_type_load): Print the type load
20863         warnings to the console so they are more visible to the user.
20864         (mono_loader_set_error_method_load): Ditto.
20865
20866         * reflection.c (ensure_runtime_vtable): Revert the last change as it
20867         is still broken.
20868         
20869         * reflection.c (ensure_runtime_vtable): Fix build.
20870
20871         * reflection.c (ensure_runtime_vtable): Disable an optimization which
20872         doesn't work in all cases.
20873
20874 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
20875
20876         * object.c (mono_array_new_full): Treat a single dimensional array
20877         with 0 lower bounds as an szarray. Fixes #76973.
20878
20879         * reflection.c (custom_attr_visible): Really fix this.
20880
20881 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
20882
20883         * reflection.c (custom_attr_visible): Allow nested public attributes
20884         as well.
20885
20886         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
20887         interface check.
20888
20889 2005-12-12  Raja R Harinath  <harinath@gmail.com>
20890
20891         * class.c (set_generic_param_owner): Delete.
20892         (mono_class_create_from_typedef): Don't set ->owner field of
20893         generic parameters to "param containers" of enclosing classes.
20894         * reflection.c (mono_reflection_initialize_generic_parameter):
20895         Likewise.
20896
20897 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
20898
20899         * reflection.c (custom_attr_visible): Fix build.
20900
20901 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
20902
20903         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
20904         private attributes.
20905         
20906         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
20907         handling of null parameter defaults.
20908
20909 2005-12-09  Raja R Harinath  <rharinath@novell.com>
20910
20911         * class.c (mono_class_from_generic_parameter): Don't set
20912         klass->generic_container.
20913         (my_mono_class_from_generic_parameter): Likewise.
20914
20915 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
20916
20917         * reflection.c (load_public_key): Fix a warning.
20918         (method_encode_code): Fix unaligned accesses.
20919
20920 2005-12-07  Martin Baulig  <martin@ximian.com>
20921
20922         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
20923
20924         * reflection.c
20925         (write_generic_param_entry): Encode our custom attrs.
20926
20927         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
20928
20929 2005-12-07  Martin Baulig  <martin@ximian.com>
20930
20931         * reflection.c (encode_new_constraint): Removed; we don't use the
20932         `NewConstraintAttribute' anymore.
20933
20934 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
20935
20936         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
20937         not fire a TypeResolve event when Assembly.GetType () is called.
20938
20939 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
20940
20941         Beginning of support for nullable types in the runtime. Parts of
20942         this patch are from Martin.
20943
20944         * appdomain.c (MONO_CORLIB_VERSION): Bump
20945
20946         * domain.c (mono_init_internal): get the nullable type
20947
20948         * class.c (mono_class_is_nullable): New method
20949         (mono_class_get_nullable_param): New mehod
20950         (mono_class_create_generic): In types T? set cast_class to T
20951
20952         * class-internals.h (MonoDefaults): new nullable default class
20953         (mono_class_get_nullable_param, mono_class_get_nullable_param):
20954         new methods.
20955
20956 2005-12-05  Raja R Harinath  <rharinath@novell.com>
20957
20958         * metadata.c (select_container): New.  Refactor code to select the
20959         appropriate GenericContainer given the type of generic parameter
20960         we are looking for.
20961         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
20962         not a MonoGenericContext.  Use select_container.  Update parameters.
20963         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
20964         and MONO_TYPE_MVAR.
20965         (unwrap_arrays): Remove duplicate tests.
20966         (find_generic_param): Rename from 'has_same_context'.  Now walks a
20967         generic instantiated class to find any arguments that are generic
20968         parameters.
20969         (mono_type_create_from_typespec_full): Use find_generic_param to
20970         avoid evicting some generic instantiations from the typespec
20971         cache.
20972
20973 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
20974
20975         * reflection.c: fixed writing of doubles on ARM FPA.
20976
20977 2005-12-02  Robert Jordan  <robertj@gmx.net>
20978
20979         * icall.c: Fixed EventInfo.ReflectedType (#76829).
20980
20981 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20982
20983         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
20984         least on SUSE 10 they are not the same (on debian, they are just the
20985         same thing).
20986
20987 2005-12-01  Raja R Harinath  <rharinath@novell.com>
20988
20989         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
20990         DeclaringType for VARs and MVARs.
20991         * class.c (set_generic_param_owner): Fix initialization of owner
20992         fields.
20993
20994 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
20995
20996         * icall.c: fixed Enum.ToObject() to correctly convert the values.
20997
20998 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20999
21000         * threadpool.c: workaround for a bug that shows up on the Mac:
21001         select()+connect() on a blocking socket is not like it should
21002         be, so we proceed to connect() in that case, wasting the I/O
21003         threadpool thread until connect succeedes. Fixes bug #75436.
21004
21005 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21006
21007         * threadpool.c: fix typo when setting file descriptor states.
21008
21009 2005-11-28  Raja R Harinath  <rharinath@novell.com>
21010
21011         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
21012         * metadata.c (mono_metadata_parse_method_signature_full): Don't
21013         create a temporary signature container.
21014         (mono_metadata_parse_generic_param): Update to changes.
21015         (mono_type_create_from_typespec_full): Update to changes.
21016         * loader.c (method_from_memberref): Don't use a
21017         MonoGenericContainer while parsing a memberref signature.
21018         (method_from_methodspec): Remove dead-store of the 'container'
21019         variable.  It's overwritten before use.
21020
21021         * metadata.c (mono_type_create_from_typespec_full): Make debugging
21022         checks tighter.
21023         (mono_metadata_parse_generic_param): Likewise.
21024         * loader.c (find_method_in_class): Does not need a
21025         MonoGenericContainer.  Use 'mono_method_signature' rather than
21026         'mono_method_signature_full'.
21027         (find_method, mono_get_method_constrained, method_from_memberref):
21028         Update to changes.
21029
21030         * metadata.c (mono_type_create_from_typespec_full): Ensure that
21031         owner-less generic-parameters are never evicted from the typespec
21032         cache.
21033
21034         * loader.c (method_from_memberref): Don't use the current context
21035         when parsing signatures.
21036         (method_from_methodspec, mono_get_method_from_token): Update to changes.
21037
21038         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
21039         side-effects in g_assert.
21040         * loader.c (mono_get_method_from_token): Resolve klass earlier so
21041         that we don't potentially lose information.
21042
21043 2005-11-26  Dick Porter  <dick@ximian.com>
21044
21045         * icall.c:
21046         * threads.c: icalls to implement basic (ie, not named)
21047         System.Threading.Semaphore.
21048
21049 2005-11-24  Dick Porter  <dick@ximian.com>
21050
21051         * process.c
21052         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
21053         Use GetProcessId() if it's available.
21054
21055 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
21056
21057         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
21058
21059 2005-11-23  Raja R Harinath  <rharinath@novell.com>
21060             Ankit Jain  <jankit@novell.com>
21061
21062         * loader.c (mono_get_method_from_token): Initialize 'method' field
21063         of all generic parameters before parsing the signature.  Remove
21064         code that "fixed"-up MVAR references.
21065
21066 2005-11-23  Ankit Jain  <jankit@novell.com>
21067
21068         * metadata.c (mono_metadata_has_generic_params):
21069         (mono_metadata_load_generic_param_constraints):
21070         (mono_metadata_load_generic_params): Move duplicate code ...
21071         (mono_metadata_get_generic_param_row): ... here. Returns the
21072         first row-id in GenericParam table for a given owner (token).
21073         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
21074         prototype.
21075
21076 2005-11-23  Raja R Harinath  <rharinath@novell.com>
21077             Ankit Jain  <jankit@novell.com>
21078
21079         * metadata.c (mono_metadata_class_equal): Pass signature_only when
21080         comparing VARs too.
21081         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
21082         type->data.generic_param only if the type is an MVAR.
21083         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
21084         leak owner-less VARs and MVARs into managed space.
21085
21086 2005-11-21  Martin Baulig  <martin@ximian.com>
21087
21088         * class-internals.h
21089         (MonoMethod): Moved the `generic_container' here from
21090         `MonoMethodNormal' since we now also need it for
21091         `MonoMethodPInvoke';
21092         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
21093         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
21094         an union containing both `MonoMethodNormal' and
21095         `MonoMethodPInvoke'.
21096
21097         * loader.c
21098         (mono_get_method_from_token): Allow implementing generic methods
21099         as interncalls.
21100
21101         * threads.c
21102         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
21103         icall.
21104
21105 2005-11-17  Dick Porter  <dick@ximian.com>
21106
21107         * icall.c: 
21108         * process.h: 
21109         * process.c: Split the Process Start_internal icall into
21110         ShellExecuteEx_internal and CreateProcess_internal, which are
21111         called depending on whether UseShellExecute is true.  Fixes bug
21112         76670.
21113
21114         * appdomain.c (MONO_CORLIB_VERSION): Incremented
21115
21116 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
21117
21118         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
21119         'msize' parameters, use the information in 'mspec' instead.
21120         (emit_object_to_ptr_conv): Ditto.
21121
21122         * marshal.c (emit_struct_conv): Handle explicit layout structs with
21123         fields out of order. Fixes #76733.
21124
21125 2005-11-17  Ankit Jain  <jankit@novell.com>
21126
21127         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
21128
21129 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
21130
21131         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
21132           bug #76575.
21133
21134 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
21135
21136         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
21137         for types with non-auto layout. Fixes #76717.
21138
21139 2005-11-16  Ankit Jain  <jankit@novell.com>
21140
21141         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
21142         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
21143         if generic_context is null.
21144           (mono_metadata_generic_param_equal): param->owner can be null.
21145           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
21146         null.
21147
21148 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
21149
21150         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
21151         the correct value.
21152
21153 2005-11-15  Martin Baulig  <martin@ximian.com>
21154
21155         * object.c (set_value): Use mono_class_from_mono_type() instead of
21156         the hack for generic instances; fixes #76136.
21157
21158 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
21159
21160         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
21161         fields.
21162
21163         * image.c (load_metadata_ptrs): Initialize the new fields.
21164
21165         * reflection.c (create_dynamic_mono_image): Ditto.
21166
21167         * reflection.c (build_compressed_metadata): Use the new fields.
21168
21169         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
21170         icall.
21171
21172         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
21173         icall.
21174         
21175 2005-11-15  Ankit Jain  <jankit@novell.com>
21176             Raja R Harinath  <harinath@gmail.com>
21177
21178         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
21179         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
21180         new per-generic_container cache if the cached MonoType's context matches
21181         the current context.
21182           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
21183         to the expected context.
21184           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
21185
21186 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21187
21188         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
21189         we changed the signature of an icall.
21190         * icall.c: Modify to mono_double_ParseImpl return true/false 
21191         depending on the success, instead of throwing the exception. This will
21192         help us in Double.TryParse methods.
21193         
21194 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
21195
21196         * marshal.c (emit_marshal_object): Throw an exception when
21197         marshalling 'object' instead of crashing. Fixes #76696.
21198
21199 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
21200
21201         * class-internals.h: Add prototype for mono_type_get_full_name ().
21202
21203 2005-11-11  Dick Porter  <dick@ximian.com>
21204
21205         * threads.c (mono_thread_manage): Make sure the main thread has
21206         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
21207
21208 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
21209
21210         * loader.c (mono_loader_set_error_type_load): Log a warning to the
21211         console about the missing type.
21212         (mono_loader_set_error_method_load): Ditto.
21213
21214 2005-11-09  Miguel de Icaza  <miguel@novell.com>
21215
21216         * mono-config.c (mono_get_config_dir): Set the system defaults if
21217         none is specified.
21218
21219         * assembly.c (mono_set_dirs): New API entry point to set the
21220         assembly and the config directory in one call
21221
21222 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
21223
21224         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
21225         the ftnptr was created from a delegate in a domain other than the
21226         current domain. Fixes #75377.
21227
21228         * exception.h exception.c: Add mono_get_exception_not_supported ().
21229
21230 2005-11-08  Martin Baulig  <martin@ximian.com>
21231
21232         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
21233
21234 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
21235
21236         * security-manager.h: Added definitions to deal with strongname key 
21237         pairs bigger (and smaller) than 1024 bits.
21238         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
21239         adjust wrt the public key length being used.
21240
21241 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
21242
21243         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
21244           Windows build (r51396-51397).
21245
21246 2005-11-03  Martin Baulig  <martin@ximian.com>
21247
21248         * class.c (mono_class_setup_vtable_general): Also add generic
21249         methods to the vtable; fixes #76581.
21250
21251 2005-11-01  Miguel de Icaza  <miguel@novell.com>
21252
21253         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
21254         sure that we lookup GetString method from the System.Text.Encoding
21255         class, not the derived class or we get an empty method.
21256
21257         Fixed class #76612.
21258
21259 2005-10-25  Miguel de Icaza  <miguel@novell.com>
21260
21261         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
21262         if it has been previously set (embedders). 
21263
21264         Make mono_set_rootdir available also on Unix.
21265
21266 005-10-24  Robert Jordan  <robertj@gmx.net>
21267
21268         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
21269
21270 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
21271
21272         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
21273         only calls which are made to native code use this flag.
21274
21275         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
21276
21277 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
21278
21279         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
21280         Add support for FieldBuilders.
21281
21282 2005-10-29  Martin Baulig  <martin@ximian.com>
21283
21284         * mono-debug.c
21285         (mono_debug_using_mono_debugger): New public method; returns
21286         whether we're running inside the debugger.
21287
21288 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
21289
21290         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
21291         for Method/Constructor/FieldBuilders.
21292
21293 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
21294
21295         * reflection.c (module_add_cattrs): Save custom attributes for global methods
21296         and fields as well.
21297
21298 2005-10-26  Martin Baulig  <martin@ximian.com>
21299
21300         * mono-debug-debugger.c
21301         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
21302
21303 2005-10-24  Raja R Harinath  <harinath@gmail.com>
21304
21305         * icall.c (base64_to_byte_array): Don't pass an out-of-range
21306         integer to isspace.
21307
21308 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
21309
21310         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
21311         when passing valuetypes byref. Fixes #76502.
21312
21313 2005-10-19  Jackson Harper  <jackson@ximian.com>
21314
21315         * profiler.c: Don't put a . in front of types that are not in a
21316         namespace.
21317
21318 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
21319
21320         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
21321
21322 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
21323
21324         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
21325         #76436.
21326         (mono_marshal_get_ldflda_wrapper): Fix a warning.
21327
21328 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21329
21330         * assembly.c metadata-internals.h icall.c: Define an additional
21331         parameter for mono_assembly_name_parse_full, so we can avoid creating
21332         S.R.AssemblyName.Version when no version info wasn't passed.
21333         
21334 2005-10-09  Miguel de Icaza  <miguel@novell.com>
21335
21336         * class.c (mono_type_get_full_name): Reimplement method that was
21337         removed. 
21338
21339         * image.c: Some docs
21340
21341 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
21342
21343         * profiler.c (output_newobj_profile): Fix printing of Total memory
21344         on x86.
21345
21346 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
21347
21348         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
21349
21350 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
21351
21352         * threads.c: remove debug output.
21353
21354 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
21355
21356         * threads.c (mono_thread_manage): Fix crashes if more than 64
21357         threads need to be aborted. Hopefully fixes #75899.
21358
21359         * assembly.c (mono_stringify_assembly_name): New helper function.
21360
21361         * class.c: Use mono_stringify_assembly_name instead of the similar
21362         static function.
21363
21364         * assembly.h assembly.c: Add support for calling a postload search 
21365         hook if an assembly cannot be loaded.
21366
21367         * appdomain.c: Register new search hooks which call the AssemblyResolve
21368         events in AppDomain. Fixes #75231
21369
21370 2005-10-07  Martin Baulig  <martin@ximian.com>
21371
21372         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
21373         methods without debug info.
21374
21375 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
21376
21377         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
21378         wrappers.
21379
21380 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21381
21382         * file-io.c: now that we return symlinks, use lstat and, when the file
21383         is a symbolic link, stat, to get the file attributes. Also avoid the
21384         conversion to/from utf16/external.
21385
21386 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
21387
21388         * class.c (mono_class_layout_fields): Compute klass->has_references
21389         correctly if an embedded valuetype is not yet initialized. Fixes
21390         #76331.
21391
21392 2005-10-04  Martin Baulig  <martin@ximian.com>
21393
21394         * metadata.c
21395         (mono_metadata_load_generic_param_constraints): New public
21396         function; splitted the constraints loading out from
21397         mono_metadata_load_generic_params().
21398
21399         * class.c (mono_class_create_from_typedef): Call
21400         mono_metadata_load_generic_param_constraints() after setting up
21401         the type and creating our parent; fixes #75329.
21402
21403 2005-10-04  Martin Baulig  <martin@ximian.com>
21404
21405         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
21406         non-dynamic parent classes.
21407
21408 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
21409
21410         * file-io.c : win32 build fix (ETXTBSY seems not found).
21411
21412 2005-10-04  Martin Baulig  <martin@ximian.com>
21413
21414         * reflection.c
21415         (mono_image_get_methodspec_token): Make the cache actually work;
21416         fixes #75974.
21417
21418 2005-10-04  Martin Baulig  <martin@ximian.com>
21419
21420         * class.c (mono_class_name_from_token): Removed the unneccessary
21421         `MonoGenericContext *' argument.
21422
21423 2005-10-04  Martin Baulig  <martin@ximian.com>
21424
21425         * loader.c
21426         (method_from_methodspec): Make the caching work again; fixes the
21427         performance regression from #76262.
21428
21429 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21430
21431         * file-io.c:
21432         * file-io.h:
21433         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
21434         GetFileSystemEntries that performs the same work but without going
21435         into io-layer, locking, etc.
21436
21437 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
21438
21439         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
21440         ThreadState_Stopped as well. Fixes #76047.
21441
21442 2005-09-29  Martin Baulig  <martin@ximian.com>
21443
21444         * class.c
21445         (inflate_generic_context): If the new context has a `gmethod', set
21446         its `container' that that gmethod's `container'.
21447
21448         * metadata.c
21449         (mono_metadata_parse_generic_param): Simplify things;
21450         `generic_container = generic_context->container;' is just fine.
21451
21452         * loader.c (method_from_methodspec): Code cleanups.
21453
21454 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
21455
21456         * decimal.c: fix warning (and let gcc generate correct
21457         code on ARM with optimizations).
21458
21459 2005-09-28  Martin Baulig  <martin@ximian.com>
21460
21461         * loader.c
21462         (method_from_memberref): Added `MonoGenericContext *class_context'
21463         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
21464         (method_from_methodspec): If we're a memberref, use the enclosing
21465         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
21466
21467 2005-09-28  Martin Baulig  <martin@ximian.com>
21468
21469         * object.c (mono_runtime_invoke_array): Added support for
21470         MONO_TYPE_GENERICINST; fixes #75917.
21471
21472 2005-09-27  Martin Baulig  <martin@ximian.com>
21473
21474         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
21475         `k->byval_arg.type' to determine the actual type.
21476
21477         * loader.c (method_from_methodspec): Removed some hacks.
21478
21479 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
21480
21481         * class-internals.h (mono_field_is_deleted): Do the test for
21482         rtspecialname before we check the actual name of the field. This
21483         prevents us from dereferencing a pointer into the string table,
21484         saving us from accessing a few pages
21485
21486         * *.c: Replace the use of {Enter,Leave}CriticalSection with
21487         macros. This will allow a deadlock debugger to easily be plugged
21488         in.
21489
21490 2005-09-27  Martin Baulig  <martin@ximian.com>
21491
21492         * loader.c (method_from_methodspec): Create a "signature"
21493         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
21494
21495 2005-09-27  Martin Baulig  <martin@ximian.com>
21496
21497         * class.c
21498         (inflate_generic_class): Correctly set the new context's
21499         container.
21500
21501         * loader.c
21502         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
21503         instead of a `MonoGenericContext *'.
21504         (mono_method_signature_full): Take a `MonoGenericContainer *'
21505         instead of a `MonoGenericContext *'.
21506
21507         * metadata.c
21508         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
21509         instead of a `MonoGenericContext *'.
21510         (mono_metadata_parse_method_signature_full): Likewise.
21511
21512 2005-09-26  Martin Baulig  <martin@ximian.com>
21513
21514         * class.c
21515         (mono_class_from_generic_parameter): Set `klass->generic_container'
21516         (mono_class_from_generic_parameter): Likewise.
21517         (mono_bounded_array_class_get): We inherit the generic container
21518         from the element class.
21519
21520         * loader.c
21521         (find_method, find_method_in_class): Take a `MonoGenericContext *'
21522         argument rather than computing it here.
21523         (method_from_memberref): Correctly set the generic context before
21524         parsing the signature.  Fixes #75681.
21525
21526 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
21527
21528         * object.c (mono_class_has_special_static_fields): Fix warnings.
21529
21530 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21531
21532         * assembly.c: Add parse_public_key function, to
21533         par the public keys. Also added mono_assembly_name_parse_full,
21534         to define it the parsed key should be freed or not.
21535         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
21536         to parse a long format assembly name.
21537         * metadata-internals.h: Keep mono_assembly_name_parse_full as
21538         private, since calling it to preserve the key requires
21539         freeing it manually.
21540         
21541 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
21542
21543         * locales.c : removed HAVE_ICU part.
21544
21545 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
21546
21547         * object.c (mono_class_create_runtime_vtable): Avoid calling 
21548         field_is_special_static if the klass has no special static fields.
21549
21550         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
21551         (MonoCachedClassInfo): Likewise.
21552
21553         * object.c (mono_class_has_special_static_fields): New helper function.
21554
21555 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21556
21557         * class.c (mono_class_create_from_typedef): Don't call 
21558         interfaces_from_typedef_full for enums.
21559         (mono_class_create_from_typedef): Compute the base types of enums directly
21560         without calling mono_class_setup_fields ().
21561         (mono_class_find_enum_basetype): New helper function.
21562
21563         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
21564         one place inside the string heap.
21565         
21566 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
21567
21568         * class.c: locking fixes, code cleanups, some docs added.
21569         Allocate some data structures in the image mempool.
21570
21571 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21572
21573         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
21574         the example code.
21575         
21576 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
21577
21578         * class-internals.h, class.c, reflection.c: reduce memory taken by
21579         MonoClass.
21580
21581 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
21582
21583         * metadata.c, metadata.h, loader.h: documentation updates, code and
21584         API cleanups.
21585
21586 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21587
21588         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
21589         the example code.
21590
21591         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
21592         page faults caused by the runtime while reading metadata.
21593
21594 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21595
21596         * socket-io.c: the field names were changed 3 months ago and no one
21597         realized until bug #76077 got filed!
21598
21599 2005-09-20  Martin Baulig  <martin@ximian.com>
21600
21601         * icall.c (assembly_icalls): Removed some unused debugger icalls.
21602
21603 2005-09-20  Martin Baulig  <martin@ximian.com>
21604
21605         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
21606         write the rank into the class entry.
21607
21608 2005-09-20  Martin Baulig  <martin@ximian.com>
21609
21610         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
21611
21612 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
21613
21614         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21615
21616         * icall.c (custom_attrs_defined_internal): New icall.
21617
21618         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
21619         function.
21620         (mono_custom_attrs_construct_by_type): New helper function.
21621
21622 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
21623
21624         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
21625         terminate the resulting string. Fixes #76123.
21626
21627 2005-09-16  Martin Baulig  <martin@ximian.com>
21628
21629         * mono-debug.c
21630         (mono_debug_add_method): Ignore inflated methods for the moment.
21631
21632 2005-09-14  Martin Baulig  <martin@ximian.com>
21633
21634         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
21635
21636 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
21637
21638         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
21639         return a success/failure indication.
21640         (mono_metadata_interfaces_from_typedef_full): Ditto.
21641         (get_constraints): Ditto.
21642
21643 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
21644
21645         * marshal.c (emit_marshal_array): Fix handling of null arrays.
21646         
21647         * marshal.c (emit_marshal_array): Add support for returning string
21648         arrays from delegates. Fixes #76063.
21649
21650         * marshal.c: Use the emit_ldloc/stloc macros where possible.
21651
21652 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
21653
21654         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
21655         icall.
21656
21657 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
21658
21659         * reflection.c icall.c: Fix after mono_get_exception_type_load
21660         signature change.
21661
21662         * assembly.c (mono_assembly_get_assemblyref): New helper function.
21663         (mono_assembly_load_reference): Use the new helper.
21664
21665         * class-internals.h (MonoLoaderError): New structure containing 
21666         information about type loading errors.
21667
21668         * class-internals.h loader.c: Add APIs to store per-thread loader
21669         error information.
21670
21671         * loader.c class.c: Set the loader error if needed.
21672
21673         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
21674
21675 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
21676
21677         * decimal.c: fixed to handle the broken ARM fp format.
21678
21679 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
21680
21681         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
21682         broken.
21683
21684 2005-09-06  Martin Baulig  <martin@ximian.com>
21685
21686         * domain.c (supported_runtimes): Added v2.0.50727.
21687
21688 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
21689
21690         * culture-info.h: reduce the size of some structures.
21691
21692 2005-09-05  Martin Baulig  <martin@ximian.com>
21693
21694         Reflect latest API changes in the August CTP.
21695
21696         * icall.c
21697         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
21698         ("MonoType.HasGenericArguments"): Removed.
21699         ("MonoMethod.BindGenericParameters"): Renamed to
21700         "MakeGenericMethod".
21701         ("MethodBuilder.BindGenericParameters"): Renamed to
21702         "MakeGenericMethod".    
21703
21704 2005-09-05  Martin Baulig  <martin@ximian.com>
21705
21706         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
21707
21708 2005-09-05  Martin Baulig  <martin@ximian.com>
21709
21710         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21711
21712         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
21713         generic_container is non-NULL.
21714
21715 2005-09-05  Martin Baulig  <martin@ximian.com>
21716
21717         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21718
21719         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
21720
21721 2005-08-29  Michal Moskal  <malekith@nemerle.org>
21722
21723         * reflection.c (encode_locals,
21724         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
21725         for large generic types.
21726
21727 2005-09-05  Martin Baulig  <martin@ximian.com>
21728
21729         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21730
21731         * class.c (mono_dup_array_type): New public method.
21732         (mono_metadata_signature_deep_dup): New public method.
21733         (dup_type): Correctly duplicate array and function types.
21734
21735 2005-09-05  Martin Baulig  <martin@ximian.com>
21736
21737         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21738
21739         * reflection.c (get_default_param_value_blobs): Handle generic types
21740         and generic methods.
21741
21742 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
21743
21744         * class.c: Fixed error reporting (method/class were inversed) for 
21745         inheritance demands.
21746         * security-manager.c|h: Added the AppDomain when calling the managed
21747         System.Security.SecurityManager.InheritanceDemand method.
21748
21749 2005-09-01  Raja R Harinath  <rharinath@novell.com>
21750
21751         * reflection.c (encode_marshal_blob): 'marshaltype' and
21752         'marshaltyperef' are alternate sources for the custom marshaler
21753         name.
21754
21755 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
21756
21757         * class.c: fix creation of array classes with rank == 1
21758         (patch by Ankit Jain <jankit@novell.com>).
21759
21760 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
21761
21762         * object.c: fix check for creating the bound data for arrays vs
21763         szarrays.
21764
21765 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21766
21767         * object.c: configuration file name is now based on the executable name,
21768         not the image name. Fixes bug #75931.
21769
21770 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
21771
21772         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
21773         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
21774
21775 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
21776
21777         * rand.c: Use wincrypt.h instead of WinCrypt.h.
21778
21779 2005-08-24  Ankit Jain  <jankit@novell.com>
21780             Raja R Harinath  <rharinath@novell.com>
21781
21782         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
21783           called by it recursively.
21784           (mono_class_init): Remove special case in pending_init handling, since it's
21785           superseded by the fix to mono_class_from_typeref.
21786
21787 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
21788
21789         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
21790         BROKEN_THREAD_START stuff.
21791
21792 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
21793
21794         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
21795         trampoline.
21796
21797         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
21798         
21799         * object.c (mono_delegate_ctor): Replace the original function address with
21800         a delegate trampoline.
21801
21802 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
21803
21804         * icall.c: add boolean argument to base64_to_byte_array and 
21805         InternalFromBase64String to control whether a whitespace-only string
21806         is allowed (or should casue a FormatException to be thrown). We need
21807         this as the behavior has changed between MS.NET 1.x and 2.0, and we
21808         to match the MS behaviour in both profiles.
21809         * appdomain.c: Bump corlib version.
21810
21811 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21812
21813         This patch implements a big portion of publisher policy
21814         support, used to bind assembly versions and redirect
21815         one assembly from version A to version B.
21816
21817         * assembly.c:
21818         New GSList loaded_assembly_bindings, for storing the cached
21819         assembly bindings.
21820         (assembly_binding_maps_name): New static function for checking if a 
21821         assembly binding information maps an assembly name.
21822         (mono_assembly_binding_info_free): New function for freeing
21823         assembly binding information resources.
21824         (get_publisher_policy_info): New static function for retrieving 
21825         assembly binding information from a MonoImage.
21826         (compare_versions): New static function for comparing an assembly
21827         binding information data and the version of an assembly name.
21828         (check_policy_versions): New static function for checking if an
21829         assembly binding info mapping an assembly name is valid for it.
21830         (mono_assembly_load_publisher_policy): New static function for
21831         loading the 'policy.major.minor.MyAssembly' image for an assembly
21832         with an assembly name 'aname'.
21833         (mono_assembly_bind_version): New static function for updating
21834         assembly redirection.
21835         (mono_assembly_apply_binding): New static function for applying
21836         assembly binding.
21837         (search_binding_loaded): New static function for searching 
21838         loaded assembly binding infos in the cache domain.
21839         (mono_assembly_load_full): Don't apply assembly binding for
21840         reflection only assemblies.
21841
21842         * metadata-internals.h: Add MonoAssemblyBindingInfo,
21843         which contains information about assembly binding. Also
21844         declare signature for mono_config_parse_publisher_policy ()
21845         function, used to retrieve pub policy info.
21846         
21847         * mono-config.c:
21848         (publisher_policy_start): New static function used to parse publisher 
21849         policy config files.
21850         (publisher_policy_parser): New static MonoParseHandler containing 
21851         the functions used when parsing config files.
21852         (mono_config_parse_publisher_policy): New function for parsing
21853         publisher policy files.
21854         
21855 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
21856
21857         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
21858
21859         * marshal.c (mono_delegate_free_ftnptr): Ditto.
21860
21861         * object.c (mono_get_addr_from_ftnptr): New helper function.
21862
21863         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
21864
21865         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21866
21867 2005-08-19  Dick Porter  <dick@ximian.com>
21868
21869         * threads.c, threads.h, appdomain.c, appdomain.h,
21870         profiler-private.h, monitor.c, object.c, object-internals.h,
21871         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
21872         store the thread ID, so it can hold a 64 bit value if needed.
21873
21874 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
21875
21876         * reflection.c (mono_reflection_create_dynamic_method): Store the
21877         handle class into the method references as well so ldtoken works in
21878         dynamic methods.
21879
21880         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
21881         types.
21882
21883 2005-08-19  Ankit Jain <jankit@novell.com>
21884
21885         Fix #75847.
21886         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
21887           here rather than using the method signature of a arbitrary function
21888           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
21889           two arguments.
21890           Hack done with Harinath.
21891
21892 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21893
21894         * threadpool.c: disable printing stack traces when we get a exception
21895         in a threadpool thread. I need to do more testing to figure out which
21896         cases actually print this. Fixes bug #75828.
21897
21898 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21899
21900         * icall.c: there might be ignored whitespace after the last '='. This
21901         fixes length computation and bug #75840.
21902
21903 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
21904
21905         * assembly.c (mono_assembly_load_full): Consider .exe extension as
21906         well. Fixes #75809.
21907
21908         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
21909         #75784.
21910         
21911         * reflection.c (create_custom_attr_data): Ditto.
21912
21913 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
21914
21915         * locales.c, culture-info.h : removed RegionLCIDMap.
21916         * culture-info-tables.h : regenerated.
21917
21918 2005-08-16  Martin Baulig  <martin@ximian.com>
21919
21920         * class.c (mono_type_get_name_recurse): Small fix.
21921
21922 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
21923
21924         * locales.c : indentation fixie.
21925
21926 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
21927
21928         * object-internals.h,
21929           locales.h,
21930           locales.c,
21931           culture-info.h,
21932           icall.c : added RegionInfo table support.
21933         * culture-info-table.h : regenerated for region support.
21934
21935 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
21936
21937         * reflection.c (resolve_object): handle all kinds of MonoMethod
21938         including generic ones
21939
21940 2005-08-12  Ankit Jain <jankit@novell.com>
21941
21942         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
21943           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
21944
21945 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
21946
21947         * process.c: Don't close a thread handle when it's NULL. This is a
21948         workaround for bug #75733.
21949
21950 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
21951
21952         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
21953
21954 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
21955
21956         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
21957
21958 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21959
21960         * threadpool.c: if a work item in the thread pool has a callback that
21961         catches a exception, don't propagate it after invoking the callback.
21962         Fixes bug #75336.
21963
21964 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
21965
21966         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
21967
21968         * class-internals.h (MonoCachedClassInfo): Add some new fields.
21969
21970         * class.c (mono_class_init): Load field info lazily in the AOT case.    
21971
21972         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
21973
21974 2005-08-03  Ankit Jain  <jankit@novell.com>
21975
21976         Fix #75683.
21977         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
21978           PInvoke calling convention is 0.
21979
21980 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
21981
21982         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
21983         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
21984
21985 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
21986
21987         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
21988         to handle threads not started by the GC (patch by Michael Meeks
21989         <michael.meeks@novell.com>).
21990
21991 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
21992
21993         * reflection.c: Make buffer used in emitting types larger for some
21994         big generic types (patch by Michal Moskal).
21995
21996 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
21997
21998         * mono-debug.c: Fix some (not all) alignment problems.
21999
22000 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22001
22002         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
22003         Invoke mono_image_load_from_data_full passing the refonly
22004         parameter.
22005
22006         * assembly.c
22007         (mono_assembly_open_from_bundle): Add the refonly argument, 
22008         in order to pass it to other methods it calls to.
22009         (do_mono_assembly_open): Add the refonly argument, in order 
22010         to pass it to other methods it calls to.
22011         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
22012         the refonly parameter to it.
22013
22014         * image.c: Add loaded_images_refonly_hash and
22015         loaded_images_refonly_guid_hash to cache the reflection
22016         only loaded images.
22017         (mono_images_init): Initialize the hash tables used for
22018         caching the reflection only images.
22019         (load_modules): Invoke mono_image_open_full passing the refonly
22020         parameter to load the modules the correct way.
22021         (build_guid_table): Add the refonly argument, to re-build the 
22022         correct hash table.
22023         (do_mono_image_open): Added the refonly argument, in order to
22024         define it for the loaded image.
22025         (mono_image_loaded_full): New function, which receives an
22026         additional parameter to look for the image in the refonly or
22027         non-refonly section.
22028         (mono_image_loaded): Updated, using mono_image_loaded_full.
22029         (mono_image_loaded_by_guid_full): The same case that happens
22030         with mono_image_loaded_full.
22031         (mono_image_loaded_by_guid): Likewise.
22032         (register_image): Use the ref_only variable inside MonoImage
22033         to decide in which hash table store the current image.
22034         (mono_image_open_from_data_full): Rename
22035         mono_image_open_from_data to mono_image_open_from_data_full,
22036         adding the refonly argument, to define the ref_only variable 
22037         inside MonoImage.
22038         (mono_image_open_from_data): Return 
22039         mono_image_open_from_data_full.
22040         (mono_image_open_full): Rename mono_image_open to
22041         mono_image_open_full, receiving the new refonly argument,
22042         to pass it to inner methods.
22043         (mono_pe_file_open): Update this function, to open
22044         a MonoImage as a non-refonly image.
22045         (mono_image_close): Use the refonly variable inside
22046         MonoImage to remove the image from the correct caches.
22047
22048         * image.h: Add the signatures of mono_image_open_full,
22049         mono_image_open_from_data_full, mono_image_loaded_full,
22050         mono_image_loaded_by_guid_full.
22051
22052         * metadata-internals.h: Add the ref_only field to 
22053         MonoImage.
22054         
22055 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22056
22057         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
22058         Fix the last behavior, which used to load the assemblies and
22059         extract MonoReflectionAssemblyName information, instead of
22060         extract it from the metadata tables. Needed for Reflection
22061         Only assemblies.
22062         
22063 2005-07-29  Martin Baulig  <martin@ximian.com>
22064
22065         * mono-debug-debugger.c
22066         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
22067         not initialized.
22068
22069         * mono-debug.c
22070         (mono_debug_address_from_il_offset): Check whether we have
22071         debugging support before attempting to take the lock.
22072         (mono_debug_source_location_from_address): Likewise.
22073         (mono_debug_source_location_from_il_offset): Likewise.
22074         (mono_debug_il_offset_from_address): Likewise.
22075         (mono_debug_address_from_il_offset): Likewise.
22076
22077 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
22078
22079         * class.c (mono_class_from_name_case): Add support for dynamic images.
22080         Fixes #75650.
22081
22082         * object.c (mono_class_compute_gc_descriptor): Add a workaround
22083         for #75479.
22084
22085 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
22086         
22087         * reflection.c (mono_method_get_object): Fix warning.
22088
22089 2005-07-28  Martin Baulig  <martin@ximian.com>
22090
22091         * mono-debug.c
22092         (mono_debug_add_wrapper): Also write the wrapper type.
22093
22094 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
22095
22096         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
22097         
22098         * class.c (mono_class_init): Avoid reading nested classes if the AOT
22099         data indicates the class has none.
22100
22101 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
22102
22103         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
22104         loader lock with the debugger lock. Prevents deadlocks for beagle.
22105
22106         Beagle can now run on an smp box for a weekend without any
22107         issues. Woohoo!
22108
22109 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
22110
22111         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
22112         in a module. Fixes #75629.
22113
22114 2005-07-26  Martin Baulig  <martin@ximian.com>
22115
22116         * mono-debug.c (mono_debug_add_wrapper): New static method.
22117         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
22118         interncall or a wrapper.
22119
22120         * mono-debug.h (MonoDebugWrapperData): New public typedef.
22121         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
22122         (MONO_DEBUGGER_VERSION): Bump to 51.
22123
22124         * mono-debug-debugger.c
22125         (mono_debugger_add_type): Removed this empty function.
22126         (mono_debugger_add_method): Likewise.
22127
22128 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
22129
22130         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
22131         before accessing method->slot.
22132
22133 2005-07-21  Jb Evain  <jbevain@gmail.com>
22134
22135         * reflection.c (method_encode_clauses/class): Handle filters clauses.
22136         Fixes #75010.
22137
22138 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
22139
22140         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
22141         #75587.
22142
22143 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
22144
22145         * image.h image.c: Add mono_image_get_guid () API function.
22146
22147 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
22148
22149         There were issues when multiple threads tried to load
22150         assemblies. A deadlock was created between assemblies_mutex and
22151         mono_domain_assemblies_lock. This fixes the issue by making the
22152         assembly ref counting be lock free. See bug 75586.
22153         
22154         * image.c (mono_image_close): The add ref function here was using
22155         Interlocked operations while the unref was using a mutex and a
22156         --. I don't think this was ever a bug that would be exposed in a
22157         non-pendantic way (ie, by an embedder doing a ref on one thread
22158         and an unref on another), but for the sake of correctness, this is
22159         now Interlocked.
22160
22161         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
22162         (mono_assembly_load_reference): Call mono_assembly_addref rather
22163         than touching the refcount ourselves.
22164         (mono_assembly_close): Use InterlockedDecrement to unref the
22165         assembly. Don't acquire the lock unless it is actually needed.
22166
22167 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
22168
22169         * class.c (mono_class_layout_fields): Fix calculation of has_references
22170         for generic types.
22171
22172 2005-07-12  Martin Baulig  <martin@ximian.com>
22173
22174         Applying a patch from Michal Moskal <malekith@nemerle.org>.
22175
22176         * metadata.c
22177         (mono_type_hash): Provide better hashing for generic instances.
22178         (mono_generic_inst_hash): Improve hashing.
22179         (mono_generic_class_hash): Likewise.
22180
22181         * reflection.c (mymono_metadata_type_hash): Improve hashing for
22182         generic instances.
22183
22184 2005-07-12  Martin Baulig  <martin@ximian.com>
22185
22186         * reflection.c (mono_reflection_create_runtime_class): Remove the
22187         hack for generic type definitions and non-`Run' assemblies.
22188         (mono_reflection_bind_generic_parameters): Also use
22189         `klass->wastypebuilder' to check for TypeBuilders.
22190
22191 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
22192
22193         * class.c (mono_class_layout_fields): Fix calculation of has_references
22194         for generic types.
22195
22196         * class.c (inflate_generic_class): Fix a leak.
22197         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
22198         for generic types.
22199
22200 2005-07-11  Martin Baulig  <martin@ximian.com>
22201
22202         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
22203         on error.
22204
22205 2005-07-11  Martin Baulig  <martin@ximian.com>
22206
22207         * loader.c (find_method): Also lookup in
22208         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
22209
22210 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22211
22212         * appdomain.c (mono_domain_unload): Don't free the error message
22213         before passing it to mono_get_exception_...
22214
22215         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
22216         
22217 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
22218
22219         * threads.c: try to better guess an available RT signal (bug #75387).
22220
22221 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22222
22223         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
22224         and CACHE_OBJECT.
22225
22226 2005-07-07  Martin Baulig  <martin@ximian.com>
22227
22228         * class.c (mono_type_get_name_full): Return NULL for
22229         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
22230         fixes #75408.
22231
22232 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22233
22234         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
22235         exit the appdomain as well being aborted.
22236
22237         * threadpool.c: Create all threadpool threads inside the root appdomain, and
22238         change back to the root domain after calling managed code. This enables
22239         appdomains using threadpools to be unloaded.
22240
22241 2005-07-07  Martin Baulig  <martin@ximian.com>
22242
22243         * class-internals.h
22244         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
22245         into `MonoDynamicGenericClass' since we only need it for dynamic
22246         types.
22247
22248         * reflection.c (mono_class_bind_generic_parameters): We don't need
22249         to compute the `parent' here.
22250
22251 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
22252
22253         * culture-info-table.h : regenerated.
22254
22255 2005-07-06  Martin Baulig  <martin@ximian.com>
22256
22257         * icall.c
22258         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
22259
22260         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
22261
22262 2005-07-06  Martin Baulig  <martin@ximian.com>
22263
22264         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
22265         we're doing a signature-only comparision; fixes #74945.
22266
22267 2005-07-06  Martin Baulig  <martin@ximian.com>
22268
22269         * class-internals.h (MonoGenericClass): Moved some things out into
22270         a new `MonoInflatedGenericClass' type.  
22271         (MonoInflatedGenericClass): New type; the `klass' of a
22272         `MonoGenericClass' is now computed lazyly in
22273         mono_get_inflated_generic_class().      
22274
22275         * class.c (mono_get_inflated_generic_class): New public function.
22276         (mono_class_inflate_generic_method): Removed the unused
22277         `MonoClass *' argument.
22278         (setup_generic_vtable): Don't call mono_get_inflated_method() on
22279         all the methods.
22280         (mono_class_create_generic): Make this static and merge it with
22281         mono_class_create_generic_2(); we're now called automatically from
22282         mono_get_inflated_generic_class().
22283
22284         * loader.c (mono_method_signature): Call
22285         mono_get_inflated_method() here.
22286
22287 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
22288
22289         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
22290         type of fields with RVA.
22291
22292         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
22293         for this pseudo class.
22294         (my_mono_class_from_generic_parameter): Likewise.
22295         (mono_class_init): Allow interfaces to have cctors.
22296
22297 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
22298
22299         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
22300         lazily for AOT methods.
22301
22302 2005-07-05  Martin Baulig  <martin@ximian.com>
22303
22304         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
22305         returns FALSE for a successful match, not TRUE.
22306
22307 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
22308
22309         * loader.c (mono_method_get_index): Optimize this a bit.
22310
22311 2005-07-04  Martin Baulig  <martin@ximian.com>
22312
22313         * class.c
22314         (class_compute_field_layout): Move the check for generic type
22315         definitions into mono_class_layout_fields().  Fixes #74684.
22316         (mono_class_from_generic_parameter): Correctly compute
22317         `klass->parent'; fixes #75457.
22318
22319         * reflection.c (register_assembly, register_module): Make sure
22320         `domain->rejobject_hash' is already created.
22321
22322 2005-07-02  Martin Baulig  <martin@ximian.com>
22323
22324         * class-internals.h
22325         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
22326         `MonoDynamicGenericClass'.      
22327
22328 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
22329
22330         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
22331         returned by a field getter is null, since null is a valid value.
22332
22333 2005-07-01  Martin Baulig  <martin@ximian.com>
22334
22335         * reflection.c (mono_reflection_generic_class_initialize): Update
22336         the `dgclass->fields [i].parent' to the correct class.
22337         (mono_image_get_fieldref_token): Use the declaring type, not the
22338         reflected type.
22339
22340 2005-07-01  Martin Baulig  <martin@ximian.com>
22341
22342         * loader.c (find_method): Also look in the interfaces; fixes #75429.
22343
22344 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
22345
22346         * threads.c (thread_cleanup): assert that thread != NULL
22347         (wait_for_tids_or_state_change): We were using the wrong variable
22348         when accessing wait->threads. `i' was always out of the bounds of
22349         the array.
22350
22351 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22352
22353         * loader.c: map user32 and kernel32 to libMonoSupportW
22354
22355 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
22356
22357         * appdomain.c (unload_thread_main): Mark this as WINAPI.
22358
22359 2005-06-28  Martin Baulig  <martin@ximian.com>
22360
22361         * loader.c (method_from_methodspec): Fix #75334.
22362
22363 2005-06-28  Martin Baulig  <martin@ximian.com>
22364
22365         Fix #74953 - Arrays now implement the generic IList<T> interface
22366         on the 2.0 platform.
22367
22368         * class-internals.h (MonoDefaults): Added `generic_array_class'.
22369
22370         * reflection.c (mono_class_bind_generic_parameters): New public
22371         function; similar to mono_reflection_bind_generic_parameters(),
22372         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
22373
22374         * domain.c (mono_init_internal): Try to initialize.
22375         `mono_defaults.generic_array_class' here; this'll only succeed if
22376         we're using the 2.0 corlib.
22377
22378         * icall.c
22379         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
22380         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
22381         (mono_lookup_internal_call): Added support for nested classes.
22382
22383         * loader.c
22384         (mono_get_method_from_token): Set `result->signature->pinvoke' if
22385         we're an interncall and have generic arguments.
22386
22387         * class.c
22388         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
22389         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
22390         instance of System.Array.InternalArray<T> for arrays, so they
22391         implement the generic IList<T> interface.
22392
22393 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
22394
22395         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
22396         (chastamar@yahoo.com). Fixes #75374.    
22397
22398 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
22399
22400         * culture-info-table.h: regenerated.
22401
22402 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22403
22404         * icall.c: handle spaces correctly for base64 strings.
22405
22406 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
22407
22408         * *.c: Kill some warnings.
22409
22410 2005-06-23  Duncan Mak  <duncan@novell.com>
22411
22412         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
22413         that this builds on Solaris 10 (x86).
22414
22415 2005-06-23  Martin Baulig  <martin@ximian.com>
22416
22417         * class.c
22418         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
22419         generic type definitions.
22420
22421 2005-06-23  Martin Baulig  <martin@ximian.com>
22422
22423         Fix #75331.
22424
22425         * metadata.c (mono_class_get_overrides): Renamed to
22426         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
22427         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
22428         pass it to mono_get_method_full().
22429
22430 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
22431
22432         * reflection.c (mono_reflection_create_runtime_class): take the
22433         mono_domain_lock in this method. Prevents deadlocks
22434
22435 2005-06-22  Martin Baulig  <martin@ximian.com>
22436
22437         * loader.c (method_from_methodspec): Fix #75330.
22438
22439 2005-06-22  Martin Baulig  <martin@ximian.com>
22440
22441         * reflection.c (type_get_qualified_name): Use
22442         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
22443         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
22444         argument; use it if we don't have an assembly name.
22445
22446 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
22447
22448         * object.c: In mono_message_init, set "copy out" flag for in
22449         parameters with the [Out] flag.
22450
22451 2005-06-21  Martin Baulig  <martin@ximian.com>
22452
22453         * class.c
22454         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
22455         and MONO_TYPE_PTR.
22456
22457 2005-06-21  Martin Baulig  <martin@ximian.com>
22458
22459         * class.c (mono_class_init): Don't initialize `class->fields' for
22460         generic instances since they're initialized again in
22461         compute_field_layout(). 
22462         (compute_field_layout): Set the field's `generic_info' here; fix
22463         #75320. 
22464
22465 2005-06-21  Martin Baulig  <martin@ximian.com>
22466
22467         * class-internals.h
22468         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
22469
22470         * metadata.c (mono_metadata_generic_method_equal): Also
22471         distinguish the `generic_class'; fixes #75334.
22472
22473 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22474
22475         * domain.c:
22476         * appdomain.c:
22477         * domain-internals.h:
22478         * reflection.c: 'domain_assemblies' field is now protected by its own
22479         lock. Don't call into managed code to run the AssemblyLoad event if we
22480         now there are no registered delegates for it.
22481
22482 2005-06-20  Martin Baulig  <martin@ximian.com>
22483
22484         * class.c (mono_class_is_assignable_from): Use a custom version of
22485         mono_class_has_parent() to make things work for generic instances;
22486         fix #75300.
22487
22488 2005-06-20  Martin Baulig  <martin@ximian.com>
22489
22490         * loader.c (method_from_methodspec): Apply a patch from
22491         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
22492
22493 2005-06-20  Martin Baulig  <martin@ximian.com>
22494
22495         * class.c (mono_class_init): Reverted Zoltan's last change; it
22496         breaks generics.
22497
22498 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
22499
22500         * threads.c (wait_for_tids_or_state_change): Add missing locking.
22501
22502 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22503
22504         * socket-io.c: fix the index in the socket array for writable/error
22505         sockets. Fixes bug #75306.
22506
22507 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
22508
22509         * class.c (mono_class_init): Allow interfaces to have static ctors.
22510
22511 2005-06-17  Martin Baulig  <martin@ximian.com>
22512
22513         * loader.c (method_from_methodspec): Use `context->container' when
22514         parsing the `gmethod->inst'.
22515
22516 2005-06-17  Martin Baulig  <martin@ximian.com>
22517
22518         * class.c (mono_type_get_name_recurse): Don't add the assembly
22519         name for type arguments.
22520
22521 2005-06-15  Martin Baulig  <martin@ximian.com>
22522
22523         * reflection.c (mono_image_get_inflated_method_token): Encode
22524         correct klass; fixes #75260.
22525
22526 2005-06-13 Michal Moskal <malekith@nemerle.org>
22527
22528         * icall.c: Make GetCorrespondingMethod/Constructor take
22529         MonoReflectionMethod method not MonoMethod. Removed
22530         MonoType.GetCorrespondingField, and make
22531         MonoGenericType.GetCorrespondingField take name not
22532         MonoClassField.
22533
22534 2005-06-13  Michal Moskal <malekith@nemerle.org>
22535
22536         * reflection.c (field_encode_signature, encode_locals):
22537          Make sizes of buffers for types larger (for big generic types).
22538          (create_generic_typespec,
22539          mono_reflection_sighelper_get_signature_local,
22540          mono_reflection_sighelper_get_signature_field):
22541          Add asserts for too small buffers.
22542
22543 2005-06-15  Martin Baulig  <martin@ximian.com>
22544
22545         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
22546         if our parent is not a dynamic type.
22547
22548 2005-06-15  Martin Baulig  <martin@ximian.com>
22549
22550         * class-internals.h (MonoTypeNameFormat): New enum.
22551
22552         * class.c
22553         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
22554         (mono_type_get_full_name): Removed.
22555         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
22556         argument instead of the boolean's.
22557
22558         * icall.c (ves_icall_System_MonoType_getFullName):
22559         Added `gboolean assembly_qualified'.    
22560
22561         * reflection.h
22562         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
22563
22564         * reflection.c (mono_reflection_parse_type): Parse the new type
22565         name format.
22566
22567 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22568
22569         * icall.c: no need to convert from utf16 to utf8 and then back again
22570         after the call to GetLogicalDrives.
22571
22572 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22573
22574         * icall.c: frombase64. Fix problems exposed by new tests.
22575
22576 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22577
22578         * icall.c: added internal calls for converting char [] and strings in
22579         base64 into byte [].
22580
22581 2005-06-10  Martin Baulig  <martin@ximian.com>
22582
22583         * class.c (mono_class_create_generic_2): Read the nested classes
22584         from the metadata rather than from `gklass->nested_classes' since
22585         `gklass' might not be initialized yet.
22586
22587 2005-06-09  Duncan Mak  <duncan@novell.com>
22588
22589         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
22590         all public headers. Fixes #74919.
22591
22592 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
22593
22594         * domain.c: The key for proxy_vtable_hash is now a pointer
22595         array. Added new GHashFunc and GCompareFunc functions for this.
22596
22597         * class.h: The list of interfaces in MonoRemoteClass is known in
22598         advance and can't grow (we create a new MonoRemoteClass if needed),
22599         so now the interface array can be allocated together with
22600         MonoRemoteClass.
22601         
22602         * object.c: Added a new method create_remote_class_key.
22603         Fixed mono_remote_class so it does not depend on
22604         mono_upgrade_remote_class.
22605         Removed extend_interface_array.
22606         Added new method clone_remote_class(), which makes a copy of a remote
22607         class and adds a new interface or class to it.
22608         mono_upgrade_remote_class() now creates a new remote class (or gets
22609         it from the cache) if an vtable upgrade is needed. In this way
22610         we make sure that other objects sharing the same remote class
22611         don't get the new vtable with unwanted interfaces.
22612         
22613         * object-internals.h:
22614         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
22615         
22616         * marshal.c: Track changes in mono_upgrade_remote_class().
22617
22618 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
22619         * icall.c: Add runtime methods for obtaining members of inflated
22620         class, which were created from supplied non-inflated members. It
22621         is used in internal Get{Method,Constructor,Field} methods in
22622         System.Type
22623
22624 2005-06-09  Martin Baulig  <martin@ximian.com>
22625
22626         * reflection.c
22627         (mono_reflection_bind_generic_method_parameters): Fix #75169.
22628
22629 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22630         * reflection.c (mono_image_basic_init): Define
22631         Version in MonoDynamicAssembly. 
22632         
22633 2005-06-08  Martin Baulig  <martin@ximian.com>
22634
22635         Fix #75136.
22636
22637         * loader.c
22638         (mono_method_signature_full): New public method; takes a
22639         `MonoGenericContext *'.
22640         (find_method): Use mono_method_signature_full() and pass the
22641         klass'es context to it.
22642
22643         * class.c (mono_class_is_inflated_method): Use
22644         mono_method_signature_full() and pass the context to it.
22645
22646 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
22647
22648         * object.c: add proper locking in mono_remote_class_vtable(),
22649         fixes possible memory corruption.
22650
22651 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
22652
22653         * marshal.c (mono_remoting_marshal_init): set
22654         initialized after initialization.
22655
22656 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
22657
22658         * locales.c : hush.
22659
22660 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
22661
22662         * object.c (extend_interface_array): fix really silly
22663         memory corrupting / comparison bug.
22664
22665 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22666
22667         * reflection.c: Functions added to support the creation
22668         of CustomAttributeData, which includes Attribute data
22669         used by ReflectionOnly methods.
22670
22671         * reflection.h:  mono_reflection_get_custom_attrs_data and
22672          mono_custom_attrs_data_construct added (functions exposed).
22673
22674          * icall.c: Added mono_reflection_get_custom_attrs_data
22675          as icall.
22676         
22677 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
22678
22679         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
22680         lupus's request.
22681
22682 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
22683
22684         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
22685
22686         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
22687         dynamic DllImportAttribute.
22688
22689         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
22690         dynamic DllImportAttribute.
22691
22692         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
22693         Fixes #75162.
22694
22695 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22696
22697         * threads.c: avoid segfault when an unstarted thread is aborted.
22698
22699 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
22700
22701         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
22702         Returns the name and version of the runtime for reporting.
22703
22704 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22705
22706         * appdomain.c: bump corlib version.
22707         * object-internals.h: new field in MonoReflectionAssembly.
22708
22709 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22710
22711         * object-internals.h: Carlos forgot to add this field.
22712
22713 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22714
22715         * icall.c: Added create_version to create instances
22716         of Version of MonoReflectionAssemblyName. This change helps
22717         the AssemblyName tests to keep running fine.
22718         
22719 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
22720   
22721         * object.c (mono_method_return_message_restore): A somehow less
22722         intrusive fix for #75138.
22723
22724 2005-06-03  Raja R Harinath  <rharinath@novell.com>
22725
22726         * object.c (mono_method_return_message_restore): Fix computation
22727         of expected number of out args.
22728
22729 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
22730
22731         * reflection.c (mono_image_get_method_info): Fix the case when the
22732         charset is empty.
22733
22734 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
22735
22736         * object.c: Added missing null check in
22737           mono_method_return_message_restore.
22738
22739 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
22740
22741         * reflection.c (mono_image_get_method_info): Handle the case when
22742         dllentry is empty.
22743
22744 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
22745
22746         * object.c: When creating the vtable for a proxy, take into account
22747         all inherited interfaces, not only the ones registered in
22748         iclass->interfaces. This fixs bug #74996.
22749         Also, in mono_method_return_message_restore, verify that the array
22750         of out args has the expected lengh.
22751
22752 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22753
22754         * socket-io.c: update the timeout in Poll when the call is interrupte.
22755
22756 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22757
22758         * socket-io.c: support abort/suspend in Select_internal after last
22759         change.
22760
22761 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22762
22763         * threadpool.c: remove warning.
22764
22765 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22766
22767         * icall.c:
22768         * socket-io.[ch]: Select_internal uses poll() now when available, thus
22769         removing the 1024 limit from select(). Runtime part of the fix for
22770         bug #71203.
22771
22772 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22773
22774         * socket-io.c: when resolving the addresses for the same
22775         host returned by gethostname(), get the local IPs from the interface
22776         list. Loopback addresses are discarded if the are interfaces up with
22777         non-loopback ones. Fixes bug #63265.
22778
22779 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
22780
22781         * appdomain.c, verify.c, object-internals.h, reflection.c:
22782         bumped corlib number to 36, and added new extra_flags field
22783         to ReflectionMethodBuilder and friends.  Fixes #75060.
22784
22785 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
22786
22787         * gc.c: register a new weak link only if the object is non-null
22788         (fixes bug#75047).
22789
22790 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
22791
22792         * culture-info.h : short time pattern too.
22793
22794 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
22795
22796         * culture-info.h : expand long time pattern string length.
22797
22798 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
22799
22800         * culture-info-table.h : update (more French date format; #72788).
22801
22802 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
22803
22804         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
22805         the method is static. Fixes #75029.
22806
22807 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
22808
22809         * reflection.c: Update the table_idx field of method builders after
22810         saving the module, since it can change. This is a workaround for
22811         bug #74914. 
22812
22813 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
22814
22815         * culture-info-table.h : update (additional French date format).
22816
22817 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
22818
22819         * icall.c (ves_icall_type_Equals): Revert last change.
22820         
22821         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
22822
22823         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
22824
22825 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
22826
22827         * class-internals.h: Added executioncontext_class field to 
22828         MonoDefaults structure.
22829         * domain.c: Cache System.Threading.ExecutionContext class in 
22830         mono_defaults.
22831         * object.c: Capture the ExecutionContext for asynchroneous calls in
22832          mono_async_result_new.
22833         * object-internals.h: Added execution_context and original_context 
22834         fields to MonoAsyncResult. Added execution_context to MonoThread.
22835         * security-manager.c|.h: Added mono_get_context_capture_method to 
22836         return the capture method (if required by the security manager or by
22837         the framework version used).
22838         * threadpool.c: Apply capture (if present) ExecutionContext in 
22839         mono_async_invoke and revert to original context after it completes.
22840
22841 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
22842
22843         * culture-info-table.h : updated (real hacky solution for zh-CHT).
22844
22845 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
22846
22847         * culture-info-table.h : zh-CHT related workaround.
22848
22849 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
22850
22851         * marshal.c (emit_marshal_custom): Add some error checking and call the
22852         methods in the ICustomMarshaler interface. Fixes #74875.
22853         
22854         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
22855         native->managed wrappers.
22856
22857 2005-05-12  Martin Baulig  <martin@ximian.com>
22858
22859         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
22860         here and use the loader lock.
22861
22862         * mono-debug.c: Properly lock when the debugger is not attached.
22863         (mono_debug_init): Release the initial lock if we're not running
22864         in the debugger.
22865
22866 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
22867
22868         * marshal.c (emit_marshal_custom): Pass through NULL values without
22869         calling the custom marshalling routines.
22870
22871         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
22872         conversion in structures. Fixes #74882.
22873
22874 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
22875
22876         * culture-info-table.h : zh-* cultures were missing.
22877
22878 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
22879
22880         * threads.c: Added a new event background_change_event which is signaled
22881         when a thread changes its background mode.
22882         Moved here several checks previously done in managed code. The checks
22883         require the thread lock, and using the thread lock in managed code
22884         can result in deadlocks.
22885         Merged Start_internal and Thread_internal into a single method. Now 
22886         Thread_internal does all work of creating and starting a thread.
22887         Added icalls for setting and getting the state of the object. Moved from
22888         managed code to avoid locking there.
22889         Added wait_for_tids_or_state_change() which is called instad of
22890         wait_for_tids when waiting for non-backround threads to end. This method
22891         will return if one of the threads ends or the background_change_event
22892         is signaled.
22893         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
22894         the background mode. This method signals the background_change_event
22895         event.
22896         * icall.c:
22897         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
22898         removed Start_internal.
22899         
22900 2005-05-11  Martin Baulig  <martin@ximian.com>
22901
22902         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
22903         to order of some fields to get proper alignment on 64-bit machines.
22904
22905 2005-05-11  Martin Baulig  <martin@ximian.com>
22906
22907         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
22908         changes as they're broken and completely fuck up the debugger.
22909
22910         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
22911
22912 2005-05-10  Martin Baulig  <martin@ximian.com>
22913
22914         * reflection.c (mono_reflection_generic_class_initialize): Don't
22915         call mono_class_setup_parent() here.
22916
22917 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22918
22919         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
22920         send/receive timeout use an integer in milliseconds. We were using a
22921         struct timeval.
22922
22923 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22924
22925         * locales.c:
22926         (internal_get_cultures): reserve the first slot of the array for the
22927         InvariantCulture, which will be filled in managed code.
22928
22929 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
22930
22931         * reflection.c (mono_image_fill_module_table): Initialize the
22932         GENERATION field as well.
22933
22934 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22935
22936         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
22937         Monitor.Enter on the object.
22938
22939 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
22940
22941         * threads.c: Enable the wait for running threads when exiting.
22942         * icall.c: Suspend all threads before exiting.
22943
22944 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
22945
22946         * assembly.c (mono_assembly_load_reference): Fix warning.
22947
22948 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22949
22950         * threadpool.c: changed the default number of threads per cpu. From now
22951         on, the default will be 20 + (5 * number of cpus) instead of 50.
22952
22953 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
22954
22955         * loader.c (mono_method_get_signature_full): Add locking here.
22956
22957 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
22958
22959         * appdomain.c: Moved methods for parsing and freeing assembly
22960         names to assembly.c.
22961         * assembly.c, domain-internals.h: Created public methods for parsing
22962         assembly names. Fixed mono_assembly_load_with_partial_name:
22963         it now finds the best match, taking into account the version,
22964         token and culture specified in the partial name. Also return
22965         the latest version if no version information is specified.
22966
22967 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
22968
22969         * threadpool.c: replace check for SocketAsyncCall class.
22970
22971 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22972
22973         * threadpool-internals.h:
22974         * Makefile.am: added threadpool-internals.h
22975
22976         * threadpool.c: call mono_unhandled_exception on exceptions not handled
22977         that happen in threadpool threads (tested on MS).
22978         (mono_thread_pool_remove_socket): new function that dispatch any pending
22979         AIO call on a socket that is closing. By now only epoll really needs it,
22980         as select/poll wake up when the socket closes.
22981
22982
22983         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
22984
22985 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
22986
22987         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
22988
22989 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
22990
22991         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
22992
22993 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
22994
22995         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
22996         has an abort request, convert it into a suspend request.
22997
22998 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
22999
23000         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
23001         warning for the usage of `UnmanagedFunctionPointerAttribute' which
23002         is not supported yet.
23003
23004 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23005
23006         * image.c: register assemblies loaded from data (bundles) in the loaded
23007         assemblies hash. Fixes bug #74772.
23008
23009 2005-04-29  Martin Baulig  <martin@ximian.com>
23010
23011         * class.c (mono_type_get_name_recurse): Update to the new naming
23012         schema from the latest .NET 2.x beta2.
23013         (mono_class_setup_vtable_general): If we're a generic instance,
23014         copy the vtable from our generic type definition and inflate all
23015         the methods in it.
23016
23017         * loader.c (find_method): Update to the new naming schema from the
23018         latest .NET 2.x beta2.
23019
23020 2005-04-29  Raja R Harinath  <harinath@gmail.com>
23021
23022         * class.c (mono_class_init): Add a mono_loader_unlock to the
23023         #74734 fix.
23024
23025 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
23026
23027         * icall.c (ves_icall_System_Environment_Exit): Remove the 
23028         suspend_all_other_threads () call for the time being, since it can hang.
23029
23030         * threads.c (mono_thread_manage): Similarly, disable the waiting for
23031         the background threads to exit, since it can also hang.
23032
23033         * class.c (mono_class_init): Applied patch from Ankit Jain 
23034         (radical@gmail.com). Avoid pending init errors when a field refers
23035         to a nested class using a typeref. Fixes #74734.
23036
23037         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
23038         this for dynamic modules.
23039
23040 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23041
23042         * threads.c: don't wait for threads that are in the process of aborting
23043         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
23044         and waiting for background threads to finish. This makes xsp and
23045         mod-mono-server exit without random length delays and/or hangs.
23046
23047 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23048
23049         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
23050
23051 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
23052
23053         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
23054         dynamic types to prevent infinite loops. Fixes #74727.
23055
23056         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
23057         ..._is_assignable_to.
23058
23059 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
23060
23061         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
23062
23063 2005-04-25  Martin Baulig  <martin@ximian.com>
23064
23065         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
23066
23067         * domain.c
23068         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
23069
23070         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
23071
23072         * reflection.c (build_compressed_metadata): Set metadata header
23073         version to 2.0.
23074
23075 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
23076
23077         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
23078         number into an integral and a decimal part. Fixes #70473.
23079
23080         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
23081
23082 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
23083
23084         * culture-info-table.h : reflected the latest locale-builder output.
23085
23086 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23087
23088         * threadpool.c: check for SuspendRequested too when deciding if
23089         mono_thread_interruption_checkpoint should be called.
23090
23091 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23092
23093         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
23094         * threads.c: remove interruption_mutex and use Interlocked instead. When
23095         suspending all the threads, wait for all the suspended events at once.
23096         If we're shutting down and get an APC that is going to be queued,
23097         call mono_thread_execute_interruption immediately, as the thread might
23098         be sleeping on a pthread condition or mutex.
23099
23100         * icall.c: call mono_runtime_set_shutting_down before suspending the
23101         threads.
23102
23103         Fixes bug #74693. And now xsp is happier when exiting.
23104
23105 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
23106
23107         * loader.c (mono_stack_walk): Fix #74690.
23108
23109 2005-04-22  Martin Baulig  <martin@ximian.com>
23110
23111         * mono-debug.h (MonoDebugMethodJitInfo): Added
23112         `MonoDebugMethodJitInfo *jit'.
23113
23114         * mono-debug.c (mono_debug_read_method): Cache the
23115         MonoDebugMethodJitInfo in `address->jit'.
23116         (mono_debug_free_method_jit_info): New public method.
23117
23118 2005-04-22  Martin Baulig  <martin@ximian.com>
23119
23120         * class.c (mono_class_is_assignable_from): Disallow
23121         type parameter -> interface.
23122
23123 2005-04-21  Dick Porter  <dick@ximian.com>
23124
23125         * threads.c (mono_thread_create): Turn an assertion into an error.
23126
23127 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
23128
23129         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
23130         
23131         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
23132         Fix some gcc 4.0 warnings.
23133
23134 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
23135
23136         * file-io.c: fix alt dir separator char on unix systems
23137         and cleanup (fixes bug #71214).
23138
23139 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
23140
23141         * marshal.c: Use CALLVIRT instead of CALL when dispatching
23142         a call to a remote domain, since the method may be an
23143         interface method in the client domain. This fixes bug #74192.
23144
23145 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23146
23147         * threadpool.c: recv/send are now performed before going back to managed
23148         code to save one transition.
23149
23150 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23151
23152         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
23153
23154         * metadata/threadpool.c: removed hack to workaround the bug above.
23155
23156         Fixes bug #74618.
23157
23158 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
23159
23160         * reflection.c reflection.h: Fix handling of parameter defaults in
23161         dynamic methods. Also fixes handling of parameter attributes.
23162         Fixes #74609.
23163
23164         * mono-debug.c (mono_debug_close_image): Fix warning.
23165
23166 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23167
23168         * socket-io.h: replaced old unused field with new 'blocking'.
23169         * threadpool.c: restore socket blocking state on windows(tm).
23170
23171 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
23172
23173         * icall.c: don't return the codebase in the AssemblyName[] returned by
23174         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
23175         * object-internals.h: Removed FIXME (fields were presents) and fixed
23176         versioncompat declaration.
23177
23178 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23179
23180         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
23181         not closed, so don't cleanup when it happens.
23182
23183 2005-04-13  Chris Toshok  <toshok@ximian.com>
23184
23185         * mono-debug-debugger.h: change prototype for
23186         mono_debugger_lookup_type.
23187
23188         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
23189         this function, although it should probably be named
23190         mono_debugger_init_type.
23191
23192 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23193
23194         * threadpool.c: fix non-AIO case.
23195
23196 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
23197
23198         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
23199         the built-in profiler to measure just JIT compilation times.
23200
23201 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23202
23203         * threadpool.c: the epollfd might be closed by another thread at
23204         any time, so ignore EBADF at treat it as a "we're closing" sign.
23205
23206 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23207
23208         * threadpool.c: release the semaphores with a count equals to the number
23209         of working threads in both IO and regular pools. Fixed typo that messed
23210         up the count of IO pool threads. Don't initialize the pipe handles if
23211         we're using epoll.
23212
23213 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23214
23215         * threadpool.c: some systems don't like a NULL when deleting the socket
23216         from epoll.
23217
23218 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23219
23220         * threadpool.c: fix semaphore allocation.
23221
23222 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23223
23224         * threadpool.c: added epoll() based implementation for asynchronous IO
23225         that is used instead of the default poll() when available.
23226         It can be disabled by setting MONO_DISABLE_AIO.
23227
23228 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23229
23230         * threadpool.c: windows needs 'closesocket' and instead of returning
23231         0 when the stream is closed while in select, it returns -1. Fixes bug
23232         #74573.
23233
23234 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
23235
23236         * class.c (class_compute_field_layout): Fix the regression caused by
23237         the previous try.
23238
23239 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23240
23241         * threadpool.c: separate pool for socket async. IO.
23242         * threadpool.h: mono_max_worker_threads is not a global any more.
23243
23244 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
23245
23246         * class.c (class_compute_field_layout): Fix #74549.
23247
23248 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23249
23250         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
23251         use 2 connected sockets instead.
23252
23253 2005-04-08  Miguel de Icaza  <miguel@novell.com>
23254
23255         * mono-config.c: Add new entry point for mkbundle
23256         mono_config_parse_memory. 
23257
23258 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23259
23260         * threadpool.c: removed another unused function.
23261
23262 2005-04-08  Ankit Jain  <radical@corewars.org>
23263
23264         * reflection.c (get_default_param_value_blobs): Add 'types'
23265         parameter to get the types encoded in the constant table.
23266         (mono_param_get_objects): Use the type from the constant table,
23267         not the type of the parameter, when creating default values.
23268         Handle null default values correctly.
23269
23270 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23271
23272         * file-io.c:
23273         * file-io.h:
23274         * threadpool.c:
23275         * threadpool.h:
23276         * icall.c:
23277         * socket-io.c: removed dead code for async IO.
23278
23279 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23280
23281         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
23282
23283         * threadpool.c: intercept socket async. calls and pass them to a thread
23284         that is polling and dispatching the job items to the threadpool as
23285         socket become ready. Fixes bugs #71217, #71933.
23286
23287         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
23288         between char and short/ushort arrays.
23289
23290         * socket-io.c: remove dead code.
23291
23292 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
23293
23294         * locales.c,
23295           icall.c : removed InternalToUpper_Comp() and
23296           InternalToLower_Comp().
23297
23298 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
23299
23300         * char-conversions.h : The tables were incorrectly generated. Should
23301           be generated against invariant culture.
23302
23303 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
23304
23305         * object.c (mono_runtime_invoke_array): Fix return value when 
23306         passing pre-created valuetype objects to ctors.
23307
23308         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
23309         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
23310         Fixes #74338.
23311
23312 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
23313
23314         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
23315         only used with --security and hides the wrong corlib version error.
23316
23317 2005-03-30  Joshua Tauberer  <tauberer@for.net>
23318
23319         * class.c: Changed mono_class_name_from_token so that types
23320         outside of a namespace don't have an initial period.  Improved
23321         the g_warning message used in _mono_class_get when loading
23322         fails.
23323         * assembly.c: In mono_assembly_load_reference, when an assembly
23324         can't be found, "No such file or directory" is misleading and
23325         unhelpful because a few paths were checked for the presence of
23326         the assembly.  When that happens (ENOENT), display a nicer
23327         message indicating the directories that were searched.  In all
23328         cases, the warning is made easier to read for non-hackers.
23329
23330 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
23331
23332         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
23333         project/solution.
23334         * appdomain.h|domain.c: Removed inline from functions.
23335         * appdomain.c: Reduced warnings when compiling on windows.
23336         * icall.c: Fixed output_debug declaration to gunichar2*.
23337         * mono-config.c: Reduced warnings when compiling on windows.
23338         * rand.c: Added missing "windows.h". Added missing return value.
23339         * rawbuffer.c: Added missing winsock2.h for windows.
23340         * sysmath.h: Added mono-compiler.h header to allow/ease 
23341         compilation with non-GCC compilers.
23342         * threads.c: Fixed declarations to compile with VS.NET C compiler.
23343         Removed cast warnings.
23344
23345         Adapted from the work of J Lothian (for VC6).
23346
23347 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
23348
23349         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
23350         from default_path.
23351
23352 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
23353
23354         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
23355         the 2.0 profile.
23356
23357 2005-03-27  Raja R Harinath  <harinath@gmail.com>
23358
23359         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
23360         has to be in $(exec_prefix).  $(prefix) is for arch-independent
23361         stuff, and it would probably use $(prefix)/share rather than
23362         $(prefix)/lib.
23363
23364 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23365
23366         * console-io.c: added 2 includes that might be missing.
23367
23368 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
23369
23370         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
23371         profile.
23372
23373         * reflection.c (create_custom_attr): Allocate the params array using
23374         alloca so it gets GC tracking.
23375
23376 2005-03-23  Chris Toshok  <toshok@ximian.com>
23377
23378         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
23379         out some spew.
23380
23381 2005-03-24  Raja R Harinath  <rharinath@novell.com>
23382
23383         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
23384         changes to pick up any changes in prefix, etc.
23385
23386 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
23387
23388         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
23389         
23390         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
23391         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
23392
23393 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
23394
23395         * class-internals.h object-internals.h class.c reflection.c: Extend the
23396         mono_lookup_dynamic_token () function to return the class of the
23397         token as well. 
23398
23399         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
23400         well. Fixes #73848.
23401
23402 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
23403
23404         * security-manager.c: Skip inheritance checks for intra-corlib
23405         class inheritance and method overrides. This skips a lot of checks
23406         and (anyway) permissions cannot work until corlib is loaded.
23407
23408 2005-03-23  Martin Baulig  <martin@ximian.com>
23409
23410         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
23411         MONO_TYPE_GENERICINST.  
23412
23413 2005-03-23  Martin Baulig  <martin@ximian.com>
23414
23415         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
23416
23417 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
23418
23419         * class.c: added locking comments to some functions.
23420         Cache the interface offsets arrays (saves about 20 KB
23421         of runtime memory in a typical app).
23422         Reduce the time overhead in mono_class_setup_supertypes ().
23423
23424 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
23425
23426         * icall.c: speedup and fix leaks in GetMethodsByName and
23427         GetPropertiesByName.
23428
23429 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
23430
23431         * reflection.c: some locking fixes.
23432
23433 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
23434
23435         * metadata.c: added missing break in case statement.
23436
23437 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
23438
23439         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
23440         typedbyref return values. Fixes #73941.
23441
23442 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
23443
23444         * security-manager.c|h: Added demandunmanaged method and 
23445         suppressunmanagedcodesecurity class to MonoSecurityManager.
23446         Renamed aptc class to allowpartiallytrustedcallers.
23447
23448 2005-03-17  Martin Baulig  <martin@ximian.com>
23449
23450         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
23451
23452 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23453
23454         * file-io.c: disabled file async. IO using aio_*. It uses the
23455         threadpool now. Workaround for bug #73718.
23456
23457 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
23458
23459         * assembly.h, mono-config.c: added code to deal with bundled configs
23460         for bundled assemblies.
23461
23462 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
23463
23464         * *.c, private.h: cleanup, removing old private.h header file.
23465
23466 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
23467
23468         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
23469         and throw_on_unmappable_char attributes.
23470
23471 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
23472
23473         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
23474         _ProcessName_internal.
23475
23476 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
23477
23478         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
23479         #73631.
23480
23481         * icall.c threads.c threads-types.h: Remove slothash icalls as they
23482         are no longer used.
23483
23484 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
23485
23486         * object.c (compute_class_bitmap): Add support for generics. Fixes
23487         #73527.
23488
23489 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
23490
23491         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
23492
23493 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23494
23495         * filewatcher.c: commented out the code for windows watcher, as we don't
23496         use it (we use the managed implementation instead).
23497
23498 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
23499
23500         * object-internals.h (MonoThread): Remove 'unused1' field.
23501
23502         * appdomain.c: Bump corlib version.
23503
23504         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
23505
23506         * reflection.c (mono_reflection_create_runtime_class): Remove the
23507         AssemblyBuilder.Save optimization since it causes too many problems.
23508
23509 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
23510
23511         * exception.c|h: Added mono_get_exception_reflection_type_load to
23512         create a ReflectionTypeLoadException object.
23513         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
23514         to return NULL is a InheritanceDemand fails during reflection. Updated
23515         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
23516         ReflectionTypeLoadException if an InheritanceDemand fails during 
23517         reflection. Added icall mapping for GetLinkDemandSecurity.
23518         * security-manager.c|h: Added ves_icall_System_Security_
23519         SecurityManager_GetLinkDemandSecurity internal call to return the
23520         class and methods permissions set for a LinkDemand. Removed unused
23521         fields in MonoSecurityManager.
23522
23523 2005-03-10  Martin Baulig  <martin@ximian.com>
23524
23525         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
23526         it's a generic instance.
23527
23528 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
23529
23530         * reflection.c (mono_get_object_from_blob): Applied patch from
23531         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
23532
23533         * class.c (mono_class_is_assignable_from): Another try at fixing 
23534         #73469 without breaking anything.
23535
23536 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
23537
23538         * class.c: (mono_class_is_assignable_from): Revert the last changes
23539         since they don't work with generics.
23540         
23541         * class.c (mono_class_is_assignable_from): Fix build bustage.
23542
23543         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
23544         the managed IsAssignableFrom method. Fixes #73469.
23545
23546         * reflection.c (mono_reflection_call_is_assignable_from): New helper
23547         function.
23548
23549 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
23550
23551         * object.c (mono_load_remote_field_new): Fix returning uninitialized
23552         memory when the remoting callback does not sets the out arguments.
23553         Fixes #73007.
23554
23555         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
23556         by mistake.
23557
23558         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
23559
23560         * object-internals.h (MonoStackFrame): Sync with managed object layout.
23561
23562         * appdomain.c: Bump corlib version.
23563
23564 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
23565
23566         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
23567         function.
23568
23569         * threads.c (mono_thread_attach): Detect threads which are not started
23570         by the GC pthread wrappers.
23571
23572 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
23573
23574         * icall.c: Added new icall for RNG.
23575         * rand.c|h: Added new icall to open the RNG. This allows to share a 
23576         single handle on Linux to access /dev/urandom and fix #73183.
23577
23578 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
23579
23580         * object.c: setting the new vtable in a transparent proxy object must
23581         not change the GC descriptor.
23582
23583 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
23584
23585         * object.c: fixed compilation without GCJ support.
23586         * reflection.c: for runtime-created types ensure klass->has_references
23587         is correct (bug #73215).
23588
23589 2005-03-02  Martin Baulig  <martin@ximian.com>
23590
23591         * class.c (mono_class_is_assignable_from): Make this work if
23592         `oklass' is a generic instance; fixes #72831.
23593
23594 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
23595
23596         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
23597         with hasthis set.
23598         
23599         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
23600
23601         * marshal.c: Reorganize native->managed marshalling code to also use
23602         the emit_marshal_... functions.
23603
23604 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
23605
23606         * object.c: typed allocs have issues with bitmap sizes > 30,
23607         so check for max_set >= 30.
23608
23609 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
23610
23611         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
23612         managed code. Fixes #73012.
23613
23614         * metadata.h (MonoMarshalSpec): Add elem_mult field.
23615
23616         * metadata.c reflection.c: Load/Emit elem_mult as well.
23617         
23618         * metadata.h (MonoMarshalSpec): Add comment.
23619
23620         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
23621
23622         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
23623         num_elem to -1 if not given.
23624
23625         * object-internals.h (MonoReflectionMarshal): Add has_size field.
23626
23627         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
23628         given values.
23629
23630 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
23631
23632         * null-gc.c (mono_gc_free_fixed): Was not compilable.
23633
23634 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
23635
23636         * reflection.c (encode_marshal_blob): Encode param_num field as well.
23637
23638         * object-internals.h (MonoReflectionMarshal): Add param_num field.
23639
23640 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
23641
23642         * object.c: generalized the reference bitmap creation
23643         and added hooks for the new GC.
23644         * class-internals.c: removed the gc_bitmap field from MonoClass.
23645
23646 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
23647
23648         * domain.c: help the compiler to produce better code
23649         in mono_jit_info_table_find ().
23650
23651 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
23652
23653         * object.c: make all allocations look typed.
23654
23655 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
23656
23657         * socket-io.c: load Mono.Posix if it's not loaded already
23658         (fixes bug#73033).
23659
23660 2005-02-24  Martin Baulig  <martin@ximian.com>
23661
23662         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
23663         * reflection.c (dup_type): Likewise.
23664
23665 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
23666
23667         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
23668         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
23669
23670 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
23671
23672         * domain.c, threads.c, object-internals.h: make the critical thread
23673         local vars use the fast access mode (even when we're compiled in
23674         a lib). Provide accessors to be used by the jit during codegen.
23675
23676 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
23677
23678         * appdomain.c: Changed hook functios behavior to include
23679         support for the reflection only assemblies. Some icalls were changed
23680         to support the mentioned assemblies too. Signatures of static methods
23681         try_assembly_resolve and real_load now have an additional parameter:
23682         refonly.
23683
23684         * assembly.c: General changes to mono_assembly_ methods to support
23685         reflection only api. Functions mono_assembly_open, mono_assembly_load,
23686         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
23687         suffix, to support an additional gbool parameter to specify whether
23688         the assembli is reflection only or not. Created some new hook functions 
23689         to add support for reflection only assemblies. Signatures of static 
23690         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
23691         have now an additional parameter: refonly.
23692
23693         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
23694         indicating whether the assembly is reflection only or not.
23695
23696         * exception.c: Add mono_get_exception_invalid_operation.
23697
23698         * icall.c: Throw an InvalidOperationException when trying to invoke
23699         a property/method/event, or trying to set/get the value of a field.
23700         Also add an icall to retrieve the ref_only flag to the
23701         MonoReflectionAssembly.
23702
23703 2005-02-23  Chris Toshok  <toshok@ximian.com>
23704
23705         Part of fix for #72827.
23706         * mono-debug.c (mono_debug_add_method): add lexical block data to
23707         the info we write.  Kind of a hack at the moment - we copy the
23708         lexical block info from the MonoDebugMethodInfo to the
23709         MonoDebugMethodJitInfo here, before writing it.
23710         (mono_debug_read_method): read the lexical block info.
23711
23712         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
23713
23714         * debug-mono-symfile.h: add lexical block support.
23715
23716         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
23717         support.
23718
23719 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
23720
23721         * loader.c (mono_lookup_pinvoke_call): Fix warning.
23722
23723         * object.c (mono_runtime_free_method): Call mono_free_method () and
23724         put the TODOs there.
23725
23726         * loader.c (mono_free_method): Free up most memory allocated for 
23727         dynamic methods.
23728
23729 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
23730
23731         * reflection.c: properly flag a Type argument to a
23732         named custom attr value (bug #72248).
23733
23734 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
23735
23736         * reflection.c: reduce code duplication in named custom
23737         attribute encoding.
23738
23739 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
23740
23741         * reflection.c: properly encode custom attrs of type object
23742         (bug #72649).
23743
23744 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
23745
23746         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
23747
23748 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
23749
23750         * socket-io.c: load System.dll if it's not loaded already
23751         (bug #72850 and #70477).
23752
23753 2005-02-21  Martin Baulig  <martin@ximian.com>
23754
23755         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
23756         generic instances.
23757
23758 2005-02-21  Martin Baulig  <martin@ximian.com>
23759
23760         * reflection.c (mono_image_build_metadata): We also need to
23761         "fixup" the MethodImpl table after we computed the final method
23762         indices.  Call fixup_methodimpl() to do that.
23763         (fixup_methodimpl): New private method.
23764
23765 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
23766
23767         * assembly.c: special case mscorlib.dll (bug#72536),
23768         patch from Carlos Alberto Cortez.
23769
23770 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
23771
23772         * threads-types.h threads.c: Fix build bustage.
23773
23774         * threads.c: Use a union for long<->double conversions.
23775
23776         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
23777         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
23778
23779         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
23780         containing the checkpoint call with NOT_TAKEN.
23781         
23782         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
23783         checkpoint before pushing the arguments, so they won't have to be
23784         spilled to stack.
23785
23786 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
23787
23788         * domain.c, assembly.c, domain-internals.h: make some data
23789         const and relocation-free.
23790
23791 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
23792
23793         * object.c, appdomain.c, class-internals.h: introduce the
23794         MonoClassRuntimeInfo structure to hold the info needed to
23795         use a class at runtime. Made mono_class_vtable() lock-free
23796         for all the appdomains.
23797
23798 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
23799
23800         * metadata-internals.h, image.c: introduce a per-image mempool to
23801         be used for memory that has the same lifetime as the image.
23802
23803 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
23804
23805         * domain.c: In mono_init_internal(), instead of selecting the first
23806         runtime version supported by an executable, get a list of all
23807         supported versions and select the one for which an mscorlib exists
23808         (since even if the runtime supports a given version, it doesn't mean
23809         that the framework for that version is installed).
23810         Modified get_runtimes_from_exe to support this behavior.
23811         In supported_runtimes, added information about additional system
23812         assembly versions.
23813         
23814         * assembly.c: Added support for more than one system assembly version
23815         per runtime version. Updated the assembly list.
23816         In mono_assembly_remap_version, removed the initial version check,
23817         since we don't know to which version we need to compare until we
23818         get the version set on which the assembly is based.
23819         Moved the code for loading corlib into the new method
23820         mono_assembly_load_corlib(), so it can be used by the initialization
23821         code.
23822         
23823         * domain-internals.h: Updated data structures and added declaration
23824         for mono_assembly_load_corlib.
23825
23826 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
23827
23828         * reflection.c (resolve_object): Fix the creation of the signature in 
23829         the SignatureHelper case.
23830
23831         * assembly.c (mono_assembly_remap_version): Fix binary search.
23832         
23833 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
23834  
23835         * class.c: Added inheritance check when a method is overloaded (from a
23836         virtual method or when implementing an interface) and when a class is
23837         inherited. Added functions to set a failure for a class and to 
23838         retreive the exception from a failure.
23839         * class-internals.h: Added fields to MonoClass to keep the exception
23840         information status for inheritance (or other exceptions) to be thrown
23841         later (i.e. not at load time).
23842         * object.c: Throw the inheritance SecurityException when a type is to 
23843         be created with either class or method inheritance violations.
23844         * reflection.c|h: Fix when getting declsec from a class. Removed 
23845         unrequired code for class. Improved sanity in parameter naming.
23846         * security-manager.c|h: Added functions to check for class and method
23847         inheritance.
23848
23849 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
23850
23851         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
23852         and has_finalize in dynamic types as well.
23853
23854 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
23855
23856         * culture-info-table.h : fixed currency format for en-GB (and so on).
23857
23858 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
23859
23860         * gc.c: ensure the GC handles never have 0 as a value.
23861
23862 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
23863
23864         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
23865         a pointer to a struct to unmanaged code. Fixes #72625.
23866
23867 2005-02-16  Martin Baulig  <martin@ximian.com>
23868
23869         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
23870
23871 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
23872
23873         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
23874
23875 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
23876
23877         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
23878
23879         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
23880         UnmanagedFunctionPointerAttribute, use it for determining calling convention
23881         etc. Fixes #71471.
23882
23883         * reflection.c (mono_custom_attrs_get_attr): New helper function.
23884
23885         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
23886
23887 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
23888
23889         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
23890         changes to make the current context a field in MonoThread.
23891
23892 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
23893
23894         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
23895         the last change.
23896         
23897         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
23898         extracted from mono_marshal_get_native_wrapper.
23899
23900         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
23901         to create wrappers around native functions.
23902
23903         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
23904         delegates for arbitrary function pointers. Fixes #71472.
23905
23906 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
23907
23908         * threads.c: cleaned up the code a little.
23909
23910 2005-02-15  Martin Baulig  <martin@ximian.com>
23911
23912         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
23913         the data table.
23914
23915         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
23916         allocate larger chunks if needed.
23917
23918 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
23919
23920         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
23921         in by mistake.
23922
23923 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
23924
23925         * domain.c: keep the domains in an array and ensure the domain ids
23926         are kept small, so they can be used as indexes to domain-specific data
23927         with a small memory overhead.
23928
23929 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
23930
23931         * icall.c: Handle byref types in Type icalls. Fixes #72544.
23932
23933 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
23934
23935         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
23936
23937 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
23938
23939         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
23940
23941         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
23942         values.
23943
23944         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
23945         
23946 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
23947
23948         * domain-internals.h: add the hashtable here.
23949
23950         * class-internals.h: Remove `info' from MonoMethod
23951
23952         * domain.c: Add a new hashtable, jit_trampoline_hash
23953
23954 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
23955
23956         * object.c: don't set the value of static fields
23957         (fixes bug#72494).
23958
23959 2005-02-11  Martin Baulig  <martin@ximian.com>
23960
23961         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
23962         (mono_debug_add_method): Silently ignore the method if it's too big.
23963         (mono_debug_add_type): Likewise.
23964
23965 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
23966
23967         * threads.c, appdomain.c: remove #ifdefs from the code.
23968
23969 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
23970
23971         * metadata-internals.h: Added flags to MonoAssembly to cache the most
23972         common security informations. This allows us to stay in unmanaged code
23973         when doing LinkDemand and it's special cases (except for the first 
23974         time for initialization). The flags a very much used with --security.
23975         * reflection.c|h: Added code to get declarative security attributes 
23976         for LinkDemand and InheritanceDemand. This required to refactor the
23977         existing code for Demand.
23978         * security-manager.c|h: Added new method fields for the special cases
23979         of LinkDemand.
23980
23981 2005-02-10  Martin Baulig  <martin@ximian.com>
23982
23983         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
23984         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
23985
23986 2005-02-10  Martin Baulig  <martin@ximian.com>
23987
23988         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
23989         debugging code; this is almost a complete rewrite.
23990
23991         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
23992
23993 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
23994
23995         * domain.c, object.h: expose mono_string_equal () and 
23996         mono_string_hash ().
23997         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
23998         it's implemented in managed code.
23999
24000 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24001
24002         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
24003         lo leak objects between appdomains.
24004
24005 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24006
24007         * assembly.c: old compilers compilation fix from 
24008         robertj@gmx.net (Robert Jordan).
24009
24010 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
24011
24012         * class-internals.h: Little reminder for the future.
24013
24014         * debug-helpers.c: Fix up wrapper_type_names
24015
24016 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24017
24018         * image.c, metadata-internals.h: when loading an image from a file,
24019         mmap all of it and use the same codepaths as when using a
24020         in-memory image: the code is simpler and we use less memory
24021         (both writable and readonly).
24022
24023 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
24024
24025         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
24026         API to alloc runtime data structures that need to be tracked by the
24027         GC and contain pointers.
24028         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
24029         make the code more readable and eventually use a different GC.
24030
24031 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
24032
24033         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
24034         for out arguments.
24035         
24036 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
24037
24038         * object.c: In release_type_locks(), don't release the cctor lock
24039         if it has already been released. This fixes a crash in the
24040         thread5 test.
24041
24042 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
24043
24044         * gc.c, marshal.c, icall.c: register a delegate for finalization
24045         only when the native function pointer has been allocated for it.
24046
24047 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24048
24049         * object.c: cleaned up some code, allocate objects that are
24050         pointer free with the atomic malloc variant. Allocate memory
24051         for static data from the mempool if it's pointer-free.
24052         Allocate the bounds array at the end of the array data, when needed.
24053         * object-internals.h, object.h: move a private function in a private
24054         header.
24055         * class.c: handle missing case in tracking references in fields.
24056
24057 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
24058
24059         * class.c, class-internals.h: keep track if a type has
24060         reference fields in either the instance or static fields.
24061
24062 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
24063
24064         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
24065         and renamed to MonoRuntimeInfo. Added fields to store the expected
24066         framework assembly version. Changed mono_get_framework_version and
24067         mono_get_runtime_version for a single mono_get_runtime_info method.
24068         
24069         * assembly.c: Added method to remap system assembly versions to the
24070         current executing runtime version. Removed old mapping code.
24071         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
24072         
24073         * icall.c, reflection.c: Track api changes.
24074
24075 2005-02-06  Miguel de Icaza  <miguel@novell.com>
24076
24077         * loader.c (method_from_memberref): Improve error reporting,
24078         produce the class name instead of the typeref/typedef index. 
24079
24080 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
24081
24082         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
24083
24084 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24085
24086         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
24087         stdcall and charset name mangling.  Reorganize the code and add
24088         some tracing stuff.
24089
24090 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
24091
24092         * monodiet.c: More iters!
24093
24094         * marshal.c: Iter usage.
24095
24096         * icall.c: Iter usage.
24097
24098         * object.c: Use iters.
24099
24100         * debug-helpers.c: More iters
24101
24102 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24103
24104         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
24105         under win32.
24106
24107 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
24108
24109         * mono-debug-debugger.c: use iters
24110
24111         * class.c, class-internals.h: mono_class_setup_events is static
24112         now
24113
24114         * All callers: use iters
24115
24116 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24117
24118         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
24119         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
24120
24121 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
24122
24123         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
24124
24125         * marshal.h: Add prototypes for ldfld/stfld_remote.
24126
24127         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
24128         this is called during startup.
24129         
24130 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
24131
24132         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
24133         MonoThreadsSync struct private in monitor.c. Changed the way
24134         MonoThreadsSync is allocated so it's faster and there is no
24135         need to keep track of it with a finalizer and it uses less memory.
24136         This also finally allows us to allocate mono objects as ptrfree when
24137         there are no reference fields.
24138
24139 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
24140
24141         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
24142         disappearing link to the GC interface and use them to simplify
24143         the gchandles code.
24144
24145 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
24146
24147         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
24148         stfld_remote which call mono_load/store_field_new. This allows methods
24149         calling ldfld/stfld wrappers to be AOTed.
24150
24151         * console-io.c: Include sys/filio.h under solaris.
24152         
24153         * console-io.c: Include curses.h if needed correctly.
24154
24155 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
24156         
24157         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
24158         method->klass as well.
24159
24160         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
24161
24162         * class.c (mono_class_init): Switch on lazy initialization of 
24163         methods.
24164
24165         * class.c (mono_class_get_finalizer): Handle the case when the 
24166         finalizer is inherited.
24167
24168 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24169
24170         * console-io.c: <curses.h> is needed by term.h on solaris.
24171
24172 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
24173
24174         * icall.c, class-internals.h, monodiet.c, class.c: Remove
24175         mono_class_setup_properties where possible. Remove this ftn from
24176         the header file, and make it static.
24177
24178 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
24179
24180         * loader.c: Add missing setup_... call.
24181
24182         * class.c: Add missing setup_... calls.
24183
24184         * class.c (mono_class_init): Switch on lazy initialization of 
24185         the generic vtable.
24186         
24187         * class.c (mono_class_init): Fix generics broken by the recent changes.
24188
24189         * monodiet.c (handle_type): Add missing setup_... calls.
24190
24191         * class.c: Back out garbage in previous patch.
24192         
24193         * class.c: Add missing setup_... calls.
24194
24195         * class.c (mono_class_get_method_from_name_flags): Avoid calling
24196         mono_class_setup_methods () if possible.
24197
24198         * class-internals.h (MonoClass): Add 'has_cctor' flag.
24199
24200         * class-internals.h (MonoCachedClassInfo): New structure.
24201
24202         * class.c: Initialize properties and events fields of MonoClass lazily.
24203
24204         * class.c: Add infrastructure for lazily initializing the methods and
24205         vtable fields of MonoClass. Not yet used.
24206
24207         * class.c (mono_class_get_finalizer): New helper function.
24208
24209         * class.c: Add infrastructure for loading some class related data from
24210         an AOT file.
24211
24212         * object.c: Add infrastructure for initializing the vtable from data
24213         in the AOT file.
24214
24215         * gc.c (run_finalize): Use mono_class_get_finalizer ().
24216
24217         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
24218         appropriate initialization function before accessing parts of the
24219         MonoClass structure.
24220
24221         * marshal.c: Fix warnings.
24222         
24223         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
24224
24225         * mono-debug-debugger.c (get_exception_message): Use 
24226         mono_class_get_method_from_name_flags ().
24227
24228 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
24229
24230         * reflection.c, appdomain.c: Replace a few manual searches that
24231         Zoltan missed. (Paolo approved this part of my initial patch).
24232
24233 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
24234
24235         * profiler.c: disable recording statistical events at report time.
24236
24237 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24238
24239         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
24240         to byteswap arrays of enum values, too (bug #72080).
24241
24242 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
24243
24244         * appdomain.c (set_domain_search_path): Allow this to be called if
24245         domain->setup is not yet set.
24246
24247         * loader.c (mono_method_get_index): New helper function.
24248
24249         * loader.c reflection.c: Use mono_method_get_index ().
24250
24251         * class.c (mono_class_get_method_from_name_flags): New helper method.
24252
24253         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
24254         this.
24255
24256         * class.c (mono_class_get_cctor): New helper method.
24257
24258         * string-icalls.c object.c class.c marshal.c reflection.c: Use
24259         mono_class_get_method () to look up methods.
24260
24261 2005-02-01  Miguel de Icaza  <miguel@novell.com>
24262
24263         * console-io.c: Fix the build, this should work on Windows.
24264
24265 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
24266
24267         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
24268         be set to null to keep things valid
24269
24270 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24271
24272         * icall.c: added Console 2.0 icalls.
24273         * Makefile.am: added console-io.[ch]
24274         * console-io.[ch]: internal calls for Console 2.0 API.
24275
24276 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24277
24278         * class.c: make sure we consider all the interfaces
24279         when calculating max_interface_id (bug found by
24280         Jeroen Frijters running ikvm).
24281
24282 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
24283
24284         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
24285         valuetype fields to null.
24286
24287         * object.c (set_value): Ditto. Fixes #71669.    
24288
24289 2005-01-31  Martin Baulig  <martin@ximian.com>
24290
24291         * metadata.c (mono_metadata_has_generic_params): New public
24292         function; checks whether something is a generic method.
24293
24294 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
24295
24296         * appdomain.c: fix infinite recursion when adding assemblies.
24297
24298 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
24299
24300         * object.c: Fix small typo to return all items for Environment.
24301         GetCommandLineArgs.
24302
24303 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
24304
24305         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
24306         reflection.c: more domain and assembly-unload related fixes
24307         and memory leaks plugs.
24308
24309 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
24310
24311         * 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.
24312
24313 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
24314
24315         * loader.c (mono_method_signature): Make this method lazy
24316         (mono_get_method_from_token): Don't computate the signature here.
24317
24318         Doing this saves quite a bit of memory. I got 90 kb on starting up
24319         monodoc. It should also save some disk reads on startup.
24320
24321         * *: MonoMethod->signature might be NULL now. You *MUST* use
24322         mono_method_signature.
24323
24324 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
24325
24326         * object.c (mono_runtime_get_main_args): Return an array from the
24327         current domain here. Fixes #71938.
24328
24329 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
24330
24331         * monitor.c: formatting changes to comply with the
24332         mono coding style and remove #ifdefs from the code.
24333
24334 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
24335
24336         * metadata.c, private.h: remove some unneeded data
24337         and use a more compact representation for table schemas.
24338
24339 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
24340
24341         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
24342         to get a better distribution in hash tables.
24343         * *.c: use mono_aligned_addr_hash() where appropriate.
24344         * assembly.c: make var static.
24345
24346 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
24347
24348         * domain-internals.h: Put MonoJitInfo on a diet.
24349
24350         * domain.c: Fix a warning.
24351
24352 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24353
24354         * gc.c: rework the gc handles code to reuse handles
24355         when freed.
24356
24357 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
24358
24359         * domain.c: fixed long standing bug in mono_string_equal() which
24360         was brought to light with the ldstr changes.
24361
24362 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
24363
24364         * reflection.c: Remove warning by adding missing include for marshal.h
24365
24366 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24367
24368         * domain.c, object.c: change the ldstr_table to hold
24369         MonoString* as keys: makes the runtime isinterned lookup
24370         faster and simplifies memory management.
24371
24372 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
24373  
24374         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
24375         possible to add imperative security checks before calling the icall.
24376         * reflection.c: Return security attributes on the original MonoMethod
24377         (and not the wrapped one). This fix permissions on icalls.
24378
24379 2005-01-25  Dick Porter  <dick@ximian.com>
24380
24381         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
24382         the check for mktime() support actually test the mktime() return
24383         value.  "Fixes" bug 71682, though the output is still different to
24384         MS.
24385
24386 2005-01-25  Martin Baulig  <martin@ximian.com>
24387
24388         * class.c (mono_class_is_assignable_from): Make this work for
24389         generic instances.
24390
24391 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
24392
24393         * marshal.c (mono_string_utf8_to_builder)
24394         (mono_string_builder_to_utf16): We might not have ownership of the
24395         string. In thise case, we need to create a new buffer.
24396
24397         * object-internals.h (mono_stringbuilder_capacity): sb->str might
24398         be null, in which case, use the default capacity.
24399
24400 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24401
24402         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
24403         GC events to the profiler.
24404
24405 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
24406
24407         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
24408         if you don't want the GC to run.
24409
24410 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
24411
24412         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
24413         start providing a GC API and keeping different implementations in
24414         their own file.
24415         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
24416
24417 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
24418
24419         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
24420         mmap rather than allocating a huge buffer.
24421         (mono_debug_close_mono_symbol_file): Free the buffer allocated
24422         above.
24423
24424 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
24425
24426         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
24427         and CheckExecutionRights.
24428         * reflection.c|h: Keep the index of the declarative security to be 
24429         used, instead of the pointer, when AOT compiler is used. Also add 
24430         class initialization when requesting demands.
24431         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
24432         CheckExecutionRights. Both properties are now FALSE by default, and
24433         unmodifiable, unless the --security option is used.
24434
24435 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24436
24437         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
24438         reflection.c: properly refcount images and assemblies, many leaks fixed.
24439
24440 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24441
24442         * threadpool.c: increase the timeout for threads in the thread pool to
24443         10s.  Fixes bug #67159.
24444
24445 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
24446
24447         * class-internals.h: Sun's compiler insists on explicit
24448         signed on bit fields to handle then correctly.
24449
24450 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
24451
24452         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
24453         Make the size of the array fit only the number of invalid path
24454         chars that we have.
24455
24456         * class.c (_mono_class_get): Improve the error reporting when a
24457         class referenced is not found, to assist debugging. 
24458
24459 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
24460
24461         * threads.c: fix off-by-one error.
24462         * domain.c: free data allocated in the domain.
24463
24464 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
24465
24466         * reflection.c (mono_method_body_get_object): Fill out exception info
24467         as well.
24468
24469         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
24470         structure.
24471         
24472 2005-01-19  Martin Baulig  <martin@ximian.com>
24473
24474         * loader.c (mono_get_method_constrained): Make this work again.
24475
24476 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
24477
24478         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
24479         guint16 to match the managed side.
24480
24481         * reflection.c (mono_reflection_body_get_object): Fill out local
24482         variables array.
24483
24484         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
24485         as well.
24486
24487         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
24488         'local_var_sig_token'.
24489
24490 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
24491
24492         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
24493         System.Drawing.
24494
24495         * reflection.c (mono_method_body_get_object): Handle abstract and
24496         runtime methods.
24497
24498 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
24499
24500         * marshal.c, loader.c, class-internals.h, reflection.c:
24501         store the emthod data for a wrapper in an array instead of a list.
24502
24503 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
24504
24505         * marshal.c: change the code to allocate memory more
24506         conservatively for method wrappers.
24507
24508 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
24509
24510         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
24511         fields from MonoClass to the marshal info structure where they belong.
24512
24513 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24514
24515         * class.c, object.c, class-internals.h, marshal.c: rearrange
24516         some fields and tweak some types to lower memory usage.
24517
24518 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
24519
24520         * threads.c (signal_thread_state_change): Handle the case when the
24521         target thread is the current thread.
24522
24523         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
24524
24525         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
24526         emit_ptr_to_object_conv. 
24527
24528         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
24529         marshalling. Fixes #71352.
24530
24531 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
24532
24533         * metadata.h, blob.h: move table enum to blob.h so it can be included
24534         in any header.
24535         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
24536         cut the size of MonoImage/MonoDynamicImage.
24537
24538 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
24539
24540         * profiler.c (mono_profiler_install_simple): Fix default arguments.
24541
24542 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
24543
24544         * reflection.c, reflection.h, icall.c: add a function to check
24545         if an attribute type is defined for a metadata object.
24546
24547 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
24548
24549         * object-internals.h: Added some needed fields from StringBuilder class.
24550         * marshal.c: Set the maxCapacity when creating a StringBuilder.
24551
24552 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
24553
24554         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
24555         threads before shutting down the runtime.
24556
24557         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
24558
24559 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
24560
24561         * object-internal.h, threads.c: implement stacksize and 
24562         parameterized thread start functionality (requires
24563         matching corlib). Marked broken code for later removal.
24564
24565 2005-01-12  Martin Baulig  <martin@ximian.com>
24566
24567         * class-internals.h (MonoGenericClass): Moved the `initialized'
24568         flag to MonoDynamicGenericClass, removed `init_pending'.
24569         (MonoGenericInst): Added `is_reference' flag.
24570
24571 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
24572
24573         * reflection.c (mono_image_create_pefile): Only set the pe_offset
24574         inside the MSDOS header. Fixes #71201.
24575
24576         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
24577         gc thread.
24578         (mono_domain_finalize): Ditto.
24579
24580 2005-01-12  Martin Baulig  <martin@ximian.com>
24581
24582         * class.c (mono_get_shared_generic_class): Use the cache for
24583         non-dynamic generic classes.
24584
24585         * class-internals.h (mono_class_create_generic_2): Removed
24586         function prototype, this function is now static inside class.c.
24587
24588         * class.c (mono_class_create_generic_2): Made this static, only
24589         call it from mono_class_init() and mono_class_setup_parent().
24590         (collect_implemented_interfaces_aux): Call mono_class_init() on
24591         the interfaces we collect.
24592         (mono_class_setup_vtable): Call mono_class_init (class->parent).
24593
24594 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
24595
24596         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
24597         it a real thread handle.
24598
24599         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
24600         MonoJitExceptionInfo, since each catch clause needs its own variable.
24601         
24602 2005-01-11  Dick Porter  <dick@ximian.com>
24603
24604         * image.c (mono_pe_file_open): New variant on mono_image_open()
24605         that does not set up the CLI metadata; used for FileVersionInfo so
24606         it can get the data for windows binaries too.
24607         
24608         * process.c (process_read_string_block): Don't read off the end of
24609         the StringTable block.
24610
24611         These both fix bug 70766.
24612
24613 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
24614
24615         * gc.c: set some fields to NULL at GC cleanup time.
24616         * threads.c: if we quit the main thread, call exit ().
24617
24618 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
24619
24620         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
24621
24622 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
24623
24624         * threads.h, threads.c, object.c: added accessor and settor for
24625         main_thread. Handle it specially when exiting from it: wait
24626         for other foreground threads to exit.
24627
24628 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
24629
24630         * process.c, verify.c: remove some bloat.
24631
24632 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
24633
24634         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
24635         the calling convention to cdecl under win32.
24636
24637 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
24638
24639         * object.c (mono_object_get_size): New function to get the size of
24640         an object instance.
24641
24642         * profiler.c (simple_allocation): Use above.
24643
24644 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
24645
24646         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
24647         ves_icall_System_AppDomain_getRootDomain (as it's not required to
24648         get an appdomain by it's id and we can't assume the root's id is 0).
24649         * domain-internals.h: Change the function prototype to match.
24650         * icall.c: Change the icall table for AppDomain.
24651
24652 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
24653
24654         * locales.c (string_invariant_compare_char): Only compute
24655         GUnicodeTypes in the case where we need them.  Test for ordinality
24656         first and return if so.
24657
24658         From the commit:
24659
24660                 /*
24661                  * FIXME: here we must use the information from c1type and c2type
24662                  * to find out the proper collation, even on the InvariantCulture, the
24663                  * sorting is not done by computing the unicode values, but their
24664                  * actual sort order.
24665                  */
24666
24667 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
24668
24669         * loader.c: for P/Invoke methods, allow the "Internal" shared
24670         library name to refer to the calling process symbol namespace.
24671
24672 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
24673
24674         * Makefile.am: Add the security manager to the build.
24675         * security-manager.c|h: New. Initialization of the security manager.
24676
24677 2005-01-07  Dick Porter  <dick@ximian.com>
24678
24679         * threads.c: 
24680         * monitor.c: Update thread state during Monitor and WaitHandle
24681         waits.  Fixes bug 71031.
24682
24683 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
24684
24685         * reflection.c (property_encode_signature): Correctly handle when the
24686         property has no methods.
24687
24688 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
24689
24690         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
24691         
24692         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
24693         fields from mb, not rmb. Fixes #71017.
24694
24695         * marshal.c (emit_ptr_to_str_conv): Add support for 
24696         ByValTStr -> string conversion. Fixes #71015.
24697
24698         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
24699
24700         * mempool.c (mono_mempool_contains_addr): New helper function.
24701
24702 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
24703
24704         * metadata.c (mono_metadata_compute_size): Fix size calculation of
24705         HasSematics encoded fields.
24706         
24707         * metadata.c (mono_type_to_unmanaged): Improve error message for 
24708         invalid string marshalling.
24709
24710         * metadata.c: Fix warnings.
24711         
24712 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24713
24714         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
24715         profiler support.
24716
24717 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
24718
24719         * domain.c object.c domain-internals.h: Revert part of r38077 since the
24720         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
24721         tests.
24722
24723 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
24724
24725         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
24726         so methods containing these can be AOTed.
24727
24728 2005-01-03  Martin Baulig  <martin@ximian.com>
24729
24730         * loader.c (find_method): Removed the hack for generic instances.
24731         (method_from_memberref): If our parent is a generic instance, pass
24732         its generic type definition to find_method() and then inflate the
24733         method.
24734         (mono_get_method_constrained): Pass the generic type definition to
24735         find_method() and inflate the method later.
24736
24737         * class-internals.h (MonoStats): Added `generic_class_count'.
24738
24739         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
24740         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
24741
24742         * reflection.c (mono_custom_attrs_from_params): Don't ignore
24743         generic type definitions.
24744
24745 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
24746
24747         * loader.c icall.c: Fix warnings.
24748
24749 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
24750
24751         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
24752         blittable types. Fixes #70864.
24753
24754 2004-12-29  Martin Baulig  <martin@ximian.com>
24755
24756         * icall.c
24757         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
24758
24759         * reflection.c (mono_method_get_object): Create a
24760         "System.Reflection.MonoGenericMethod" for inflated methods; don't
24761         call mono_get_inflated_method().
24762
24763         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
24764
24765 2004-12-27  Martin Baulig  <martin@ximian.com>
24766
24767         * class-internals.h (MonoMethod): Added `is_inflated' flag.
24768         (MonoMethodInflated): Added `inflated' field.
24769
24770         * class.c (mono_class_inflate_generic_method): Don't really
24771         inflate the method here; just set the `is_inflated' flag in the
24772         MonoMethod.
24773         (mono_class_get_inflated_method): Actually inflate the method here
24774         if it's not already inflated; we use the MonoMethodInflated's new
24775         `inflated' field as a cache.
24776
24777 2004-12-26  Martin Baulig  <martin@ximian.com>
24778
24779         * class.c
24780         (inflate_generic_class): Moved some code out of inflate_generic_type().
24781         (mono_class_inflate_generic_method): If we're already inflated,
24782         inflate the context and use the declaring method; ie. make sure
24783         the declaring method of an inflated method is always the generic
24784         method definition.
24785         (mono_class_create_from_typedef): Create
24786         `class->generic_container->context->gclass'.
24787
24788 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
24789
24790         * metadata-internals.h, marshal.c, reflection.c: More
24791         MonoGHashTable->GHashTable.
24792
24793         * domain-internals.h, class.c: Change MonoGHashTable's into
24794         GHashTables for some cases where no gc stuff is used
24795
24796         All users: update apis
24797
24798 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
24799
24800         * metadata.c (builtin_types): Make this `const'. Makes this get
24801         put into the shareable section.
24802         (mono_metadata_init): Casts to make gcc happy.
24803
24804 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
24805
24806         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
24807
24808 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
24809
24810         * icall.c: Added an internal call to retrieve the position and length
24811         of assembly-level declarative security attributes (RequestMinimum, 
24812         RequestOptional and RequestRefuse). This is used by the Assembly class
24813         to re-create the corresponding permission sets.
24814
24815 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
24816
24817         * marshal.c: fix the stelemref wrapper to be type correct
24818         (and faster).
24819
24820 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
24821
24822         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
24823         to do key & 0x7fffffff. Hashtable already does this. It just
24824         results in longer code.
24825
24826 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
24827
24828         * appdomain.c: Bump corlib version.
24829         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
24830         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
24831         * reflection.c|h: Add functions to get declarative security infos
24832         (blob position and length) for assemblies, classes and methods.
24833
24834 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
24835
24836         * reflection.c: sort the constant table (bug #70693).
24837
24838 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
24839
24840         * object-internals.h, threads.c, domain.c: add accessors for
24841         the MonoThread and MonoDomain tls keys.
24842
24843 2004-12-18  Martin Baulig  <martin@ximian.com>
24844
24845         * class.c (inflate_generic_type): If we're inflating a generic
24846         instance, set `ngclass->context->container = context->container';
24847         ie. the container we inflated into.
24848
24849         * metadata.c (mono_metadata_parse_generic_param): Reflect above
24850         inflate_generic_type() changes.
24851
24852 2004-12-17  Martin Baulig  <martin@ximian.com>
24853
24854         * class-internals.h
24855         (MonoGenericClass): Replaced `MonoType *generic_type' with
24856         `MonoClass *generic_class'.  Removed `dynamic_info'; if
24857         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
24858         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
24859
24860 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
24861
24862         * exception.c (mono_exception_from_token): New helper function.
24863
24864 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
24865
24866         * assembly.c (mono_assembly_load_with_partial_name): Call 
24867         mono_assembly_loaded before invoking the preload hooks. Fixes
24868         #70564.
24869
24870         * object-internals.h (MonoThread): Change culture_info and 
24871         ui_culture_info into an array.
24872
24873         * threads.c: Cache culture info objects from more than one appdomain.
24874
24875         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
24876         current UI culture.
24877
24878 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
24879
24880         * threads.h threads.c appdomain.c: Clear the culture_info field of
24881         all threads during unloading if they point to an object in the dying
24882         appdomain.
24883
24884 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
24885
24886         * culture-info.h (TextInfoEntry): New struct
24887         * object-internals.h: sync with managed
24888         * locales.c: fill the `text_info_data' field
24889         * culture-info-tables.h: update
24890
24891 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
24892
24893         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
24894         collector.
24895
24896 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
24897
24898         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
24899         (ves_icall_ModuleBuilder_getMethodToken): Ditto
24900
24901 2004-12-12  Martin Baulig  <martin@ximian.com>
24902
24903         * mono-debug-debugger.c (write_type): If we're an enum and the
24904         builtin types have already been initialized, call mono_class_init().
24905
24906 2004-12-11  Martin Baulig  <martin@ximian.com>
24907
24908         * metadata.c (mono_metadata_load_generic_params): Added
24909         `MonoGenericContainer *parent_container' argument; automatically
24910         compute `container->is_method'; pass the correct owner to
24911         get_constraints().      
24912
24913         * reflection.c (compare_genericparam): Sort the GenericParam table
24914         according to increasing owners. 
24915
24916 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
24917
24918         * profiler.c: allow disabling the default profiler.
24919
24920 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
24921
24922         * decimal.c, icall.c: allow disabling System.Decimal support.
24923
24924 2004-12-09  Marek Safar <marek.safar@seznam.cz>
24925
24926         * reflection.c: Add support for null attribute arguments.
24927
24928 2004-12-09  Martin Baulig  <martin@ximian.com>
24929
24930         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
24931         names to get rid of compiler warnings.
24932
24933 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
24934
24935         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
24936         mono_marshal_load_type_info (). Fixes #69625.
24937         (mono_marshal_get_ptr_to_struct): Likewise.
24938
24939 2004-12-08  Martin Baulig  <martin@ximian.com>
24940
24941         * mono-debug.h: Bumped version number to 47.
24942
24943         * mono-debug-debugger.c
24944         (mono_debugger_event_handler, mono_debugger_event): Take two
24945         guint64 arguments insteed of a gpointer and a guint32.  
24946
24947 2004-12-08  Martin Baulig  <martin@ximian.com>
24948
24949         * debug-mono-symfile.h
24950         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
24951         `address' to `native_offset'.
24952
24953 2004-12-08  Martin Baulig  <martin@ximian.com>
24954
24955         * class.c (mono_class_create_from_typespec): Only inflate if we
24956         either have `context->gclass' or `context->gmethod'.
24957
24958 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
24959
24960         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
24961
24962         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
24963
24964         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
24965
24966         * reflection.c (mono_assembly_get_object): Remove the workaround put
24967         in for the release.
24968         
24969         * appdomain.c: Use the corlib_internal field from MonoAssembly.
24970
24971         * appdomain.c: Bump corlib version.
24972
24973         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
24974         be visible in other appdomains.
24975
24976 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
24977
24978         * threads.c: Interlocked inc and dec for longs were messed up,
24979         use a KISS based impl for this. Fixes 70234
24980
24981 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
24982
24983         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
24984
24985 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
24986
24987         * icall.c: fix to follow policy not to allow struct
24988         arguments in icalls.
24989
24990 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24991
24992         * process.c: make the patch that handles spaces in file paths work
24993         on mono/windows too.
24994
24995 2004-12-06  Martin Baulig  <martin@ximian.com>
24996
24997         * class.c (mono_class_create_generic): Call
24998         mono_class_setup_supertypes() if we're dynamic.
24999         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
25000
25001 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
25002
25003         * object-internals.h: Add new fields to MonoThread.
25004
25005         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
25006
25007         * icall.c threads-types.h threads.c: Add new icalls.
25008
25009         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
25010
25011         * object-internals.h (MonoReflectionAssembly): Sync object layout with
25012         managed side.
25013
25014         * appdomain.c: Bump corlib version.
25015
25016         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
25017         internal assemblies. Fixes #69181.
25018
25019 2004-12-05  Martin Baulig  <martin@ximian.com>
25020
25021         * class.c (mono_class_inflate_generic_signature): Make this a
25022         no-op if `context' is NULL or we don't have any type parameters;
25023         also copy `sentinelpos'.        
25024
25025 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
25026
25027         * image.c: Add unbox_wrapper_cache.
25028
25029         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
25030
25031         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
25032         function generator.
25033         
25034         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
25035         Fixes #70173.
25036
25037         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
25038         
25039 2004-12-04  Martin Baulig  <martin@ximian.com>
25040
25041         * loader.c (mono_method_get_signature_full): New public function;
25042         like mono_method_get_signature(), but with an additional
25043         `MonoGenericContext *' argument.
25044
25045         * class.c (mono_class_inflate_generic_signature): Formerly known
25046         as inflate_generic_signature(); make this public.
25047
25048 2004-12-04  Martin Baulig  <martin@ximian.com>
25049
25050         * metadata.c
25051         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
25052         instead of a `MonoGenericContainer *'.  
25053         (mono_metadata_parse_array_full): Likewise.
25054         (mono_metadata_parse_signature_full): Likewise.
25055         (mono_metadata_parse_method_signature_full): Likewise.
25056         (mono_metadata_parse_generic_inst): Likewise.
25057         (mono_metadata_parse_generic_param): Likewise.
25058         (mono_metadata_parse_mh_full): Likewise.
25059         (mono_type_create_from_typespec_full): Likewise.
25060
25061 2004-12-03  Martin Baulig  <martin@ximian.com>
25062
25063         * class-internals.h (MonoGenericContainer): Replaced the
25064         `MonoGenericContext * pointer with a `MonoGenericContext'
25065         structure and made it the first element.
25066
25067 2004-12-03  Martin Baulig  <martin@ximian.com>
25068
25069         * class.c
25070         (inflate_generic_type): Set the `context->container' when creating
25071         a new MonoGenericContext.
25072         (mono_class_inflate_generic_method): Likewise.
25073         (mono_class_create_from_typespec): Just use `context->container'
25074         to get the container.
25075
25076         * loader.c (method_from_methodspec): Set `context->parent' from
25077         `context->container' - and if that's a method container, use its
25078         parent.  Also set the `context->container' when creating a new
25079         MonoGenericContext.
25080         (mono_get_method_from_token): Use just `context->container' to get
25081         the container.
25082
25083         * metadata.c (do_mono_metadata_parse_generic_class): Also set
25084         `gclass->context->container'.
25085
25086         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
25087         the `context->container' when creating a new MonoGenericContext.
25088
25089 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
25090
25091         * reflection.c (compare_genericparam): Sort params with identical
25092         owner by their number. Fixes gen-111 on sparc.
25093
25094 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
25095
25096         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
25097         around the domain changes.
25098
25099         * appdomain.c (mono_domain_unload): Handle the case when the thread
25100         calling Unload is itself being aborted during unloading. Fixes #70022.
25101
25102         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
25103
25104         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
25105         checkpoint_func as an icall so it gets a wrapper.
25106         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
25107         in the cross-appdomain wrappers too.
25108
25109         * threads.c (mono_thread_has_appdomain_ref): Make this public.
25110
25111         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
25112
25113         * reflection.c: Fix some memory leaks.
25114         
25115 2004-12-02  Martin Baulig  <martin@ximian.com>
25116
25117         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
25118
25119         * metadata.c (generic_class_cache): New static hashtable.
25120         (mono_metadata_lookup_generic_class): New public method.
25121
25122 2004-12-02  Martin Baulig  <martin@ximian.com>
25123
25124         * class.c (mono_class_create_from_typedef): Call
25125         mono_class_setup_parent() and mono_class_create_mono_type() before
25126         parsing the interfaces.
25127
25128 2004-12-02  Martin Baulig  <martin@ximian.com>
25129
25130         * metadata.c (generic_inst_cache): New static hashtable.
25131         (mono_metadata_lookup_generic_inst): New public function.
25132         (mono_metadata_inflate_generic_inst): New public function.
25133         (mono_metadata_parse_generic_inst): New public function.
25134         (do_mono_metadata_parse_generic_class): Use the new
25135         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
25136         since this'll also use the cache.
25137
25138         * reflection.c (mono_reflection_bind_generic_method_parameters):
25139         Use mono_metadata_lookup_generic_inst() to use the new cache.
25140
25141         * class.c (inflate_mono_type): Use
25142         mono_metadata_inflate_generic_inst() to inflate a generic
25143         instance; this'll also use the new cache.
25144
25145         * loader.c (method_from_methodspec): Use
25146         mono_metadata_parse_generic_inst() and
25147         mono_metadata_inflate_generic_inst() rather than parsing it
25148         manually, so we can use the new cache.
25149
25150 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
25151
25152         * threads.c (wait_for_tids): Do not incorrectly free threads when 
25153         the wait times out.
25154
25155 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
25156
25157         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
25158         iter->args based on whether parameters are passed in registers (i.e.
25159         MONO_ARCH_REGPARMS is defined)
25160
25161 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
25162
25163         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
25164         the exception message. Fixes #70070.
25165         (method_from_methodspec): Fix warnings.
25166
25167 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25168
25169         * process.c: (complete_path) return the path quoted
25170
25171 2004-12-01  Martin Baulig  <martin@ximian.com>
25172
25173         * class-internals.h (MonoGenericInst): New structure.
25174         (MonoGenericClass): Replaced `type_argc', `type_argv' and
25175         `is_open' with `MonoGenericInst *inst'.
25176         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
25177         `is_open' with `MonoGenericInst *inst'.
25178
25179 2004-11-30  Martin Baulig  <martin@ximian.com>
25180
25181         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
25182
25183         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
25184         to `generic_class_cache'.
25185
25186         * metadata.c
25187         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
25188         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
25189         (mono_generic_inst_is_valuetype): Renamed to
25190         mono_generic_class_is_valuetype().
25191
25192         * class-internals.h
25193         (MonoGenericInst): Renamed to MonoGenericClass.
25194         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
25195         (MonoClass): Renamed `generic_inst' to `generic_class'.
25196         (MonoGenericContext): Renamed `ginst' to `gclass'.
25197
25198         * object-internals.h
25199         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
25200
25201         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
25202         mono_reflection_generic_class_initialize().
25203
25204         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
25205         now known as "System.Reflection.MonoGenericClass".
25206         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
25207
25208 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
25209
25210         * class-internals.h: Added a flag field to MonoClass to cache the
25211         declarative security attributes actions associated with the class.
25212         * domain-internals.h: Added booleans to MonoJitInfo to cache the
25213         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
25214         applicable to the JITted method.
25215         * reflection.c|h: Added functions to extract (as flags) which security
25216         actions are available (declaratively) for a method, class or assembly.
25217         * metadata.c|h: Added functions to search the declarative security
25218         table in the metadata.
25219         
25220 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
25221
25222         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
25223         EXPORTEDTYPES are already in the class name cache, so there is no
25224         need to add extra code here to look at them. Just removes a bit of
25225         cruft.
25226
25227         (ves_icall_System_Environment_get_TickCount): No need for #if
25228         WINDOWS. We already have the code in io-layer.
25229
25230 2004-11-28  Martin Baulig  <martin@ximian.com>
25231
25232         * loader.c
25233         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
25234         Fixes gen-112.cs.
25235
25236 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
25237
25238         * assembly.c (do_mono_assembly_open): Instead of having a
25239         conditional WITH_BUNDLE, incorporate support for bundles here, by
25240         having a global `bundles' variable holding a pointer to the actual
25241         bundles. 
25242
25243         (mono_register_bundled_assemblies): New API call used by the
25244         bundle code. 
25245
25246         See mkbundle.1 for details.
25247         
25248 2004-11-27  Martin Baulig  <martin@ximian.com>
25249
25250         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
25251         the vtable for generic methods.
25252
25253 2004-11-26  Martin Baulig  <martin@ximian.com>
25254
25255         * metadata.c
25256         (mono_metadata_generic_method_hash): New public function.
25257         (mono_metadata_generic_method_equal): Likewise.
25258
25259         * class-internals.h
25260         (MonoGenericContainer): Added `GHashTable *method_hash'.
25261
25262         * reflection.c (ReflectionMethodBuilder): Added
25263         `MonoGenericContainer *generic_container'.
25264         (reflection_methodbuilder_to_mono_method): Don't create a new
25265         MonoGenericContainer each time we're called.
25266         (mono_reflection_bind_generic_method_parameters): Use
25267         `container->method_hash' to cache the results so we don't create a
25268         different method if we're called several times with the same
25269         arguments.
25270
25271         * loader.c (method_from_methodspec): Use the new
25272         `container->method_hash' here, too.
25273
25274 2004-11-26  Martin Baulig  <martin@ximian.com>
25275
25276         * class.c (inflate_generic_signature): Correctly compute
25277         `res->has_type_parameters'.
25278         (mono_class_vtable): Use the `has_type_parameters' flag to
25279         determine whether we're a generic method.
25280
25281         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
25282
25283 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
25284
25285         * object.c (mono_runtime_run_main): Fix a small memory leak.
25286
25287 2004-11-25  Martin Baulig  <martin@ximian.com>
25288
25289         * class.c (set_generic_param_owner): Fixed the loop.
25290
25291 2004-11-25  Martin Baulig  <martin@ximian.com>
25292
25293         * object.c (mono_class_vtable): Don't create any JIT wrappers for
25294         generic methods.
25295
25296 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
25297
25298         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
25299         names. Fixes #69787.
25300
25301 2004-11-24  Martin Baulig  <martin@ximian.com>
25302
25303         * class.c (mono_class_create_generic_2): If we don't have a
25304         `ginst->parent', inflate `gklass->parent' to get our parent.
25305
25306 2004-11-24  Martin Baulig  <martin@ximian.com>
25307
25308         * reflection.c (compare_genericparam): Correctly sort the
25309         GenericParam table; fixes #69779.
25310
25311 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
25312
25313         * reflection.c: When writing a PE file, don't create a huge
25314         buffer in memory. Just write the arrays we have to the file.
25315         This reduces memory usage.
25316
25317         * metadata-internals.h: MonoDynamicStream pefile is no longer used
25318         globally.
25319
25320 2004-11-17  Martin Baulig  <martin@ximian.com>
25321
25322         * class.c (mono_class_init): Don't setup `class->parent' for
25323         dynamic instances; moved this to mono_class_generic_2().
25324         (mono_class_create_generic): Also set `klass->inited' for dynamic
25325         generic instances.
25326         (mono_class_create_generic_2): Don't do anything for dynamic
25327         generic instances.  Set `klass->parent' here and also call
25328         mono_class_setup_parent() here. 
25329
25330         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
25331         `MonoType *parent' argument; set `ginst->parent' before calling
25332         mono_class_create_generic_2(), so we set the correct parent.
25333
25334 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
25335
25336         * reflection.c: allow getting attributes from ModuleBuilder
25337         (used by ikvm).
25338
25339 2004-11-17  Martin Baulig  <martin@ximian.com>
25340
25341         * class.c (mono_class_create_from_typedef): If a type parameter is
25342         inherited from an outer class, set its owner to that class.
25343
25344 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
25345
25346         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
25347           for (int*) written size. This fixes bug #69592.
25348
25349 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
25350
25351         * icall.c: Added IsAuthenticodePresnet internal call.
25352         * image.c|h: New function that check a MonoImage for an Authenticode
25353         signature in the certificate PE data directory.
25354         * security.c|h: New internal call to ask the runtime if an 
25355         Authenticode signature seems referenced in the PE header.
25356
25357 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
25358
25359         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
25360
25361         * reflection.c (mono_image_create_pefile): Free the assembly streams
25362         after writing out the assembly file.
25363
25364         * object.c (mono_runtime_run_main): Fix small memory leak.
25365
25366         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
25367         property access modifiers. Fixes #69389.
25368
25369 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
25370
25371         * domain.c, object.c, object-internals.h, domain-internals.h,
25372         object.h, marshal.c: keep dynamic code info per domain.
25373
25374 2004-11-15  Martin Baulig  <martin@ximian.com>
25375
25376         * class.c (mono_type_get_name_recurse): Put type arguments in
25377         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
25378         see bug #68387.
25379
25380 2004-11-15  Martin Baulig  <martin@ximian.com>
25381
25382         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
25383         (mono_class_setup_vtable): When computing `the_cname' for a
25384         generic instance, don't include the namespace since we'd otherwise
25385         add it twice.
25386
25387 2004-11-15  Martin Baulig  <martin@ximian.com>
25388
25389         * class.c (mono_class_create_generic): Changed return type to void.
25390         (mono_class_create_generic_2): New public function; setup
25391         `class->method', `class->field' and `class->interfaces' here
25392         instead of in mono_class_init().
25393
25394         * class.h (mono_class_create_generic): Moved to class-internals.h.
25395
25396 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
25397
25398         * reflection.c (mono_image_create_pefile): take a file HANDLE.
25399         rather than writing to memory, write to this file. Right now,
25400         we are just writting into a buffer, and copying that. However
25401         we can avoid the buffer later.
25402
25403         (mono_dynamic_stream_reset): new function
25404
25405         * icall.c, object-internals.h: update for the above.
25406
25407 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
25408
25409         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
25410         have been using gc'd memory. First it is slower, unlikely
25411         the comment in the source code said, secondly, it increases
25412         our footprint to do it in the gc.
25413
25414         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
25415         the method so that it does not have to copy to managed code.
25416
25417 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
25418
25419         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
25420
25421 2004-11-12  Martin Baulig  <martin@localhost>
25422
25423         * reflection.c (mono_image_create_token): Allow generic method
25424         definitions here, since they may appear in an `.override'; see
25425         gen-98/gen-99 for an example.
25426
25427 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
25428
25429         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
25430         #69365.
25431
25432         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
25433         descriptive.
25434
25435 2004-11-11  Martin Baulig  <martin@ximian.com>
25436
25437         * class.c (mono_class_setup_vtable): In an explicit interface
25438         implementation, the method name now includes the arity.
25439
25440 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
25441
25442         * object.c (mono_array_full_copy): Fix warning.
25443
25444 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
25445
25446         * appdomain.c: Removed look_for_method_by_name(). Use the new method
25447         mono_class_get_method_from_name() instead.
25448         
25449         * class-internals.h: Added two new types of wrappers. 
25450         Added MonoRemotingTarget enum. Added new trampoline function type, which
25451         takes an additional MonoRemotingTarget value as parameter, so it is
25452         possible to request a trampoline for a specific target.
25453         
25454         * class.c: Added new mono_class_get_method_from_name() method.
25455         
25456         * class.h: In MonoRemoteClass, we can have now to vtables, one for
25457         general remoting sinks and one specific for cross domain calls.
25458         
25459         * debug-helpers.c: Added new wrapper names.
25460         
25461         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
25462         of a remote class.
25463         
25464         * image.c: Porperly delete value objects form the remoting invoke hashtable.
25465         
25466         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
25467         with several other methods (mono_marshal_get_xappdomain_dispatch,
25468         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
25469         and others) can generate a fast remoting wrapper for cross domain calls.
25470         More information can be found in docs/remoting.
25471         Other changes: Removed mono_find_method_by_name, and used
25472         mono_class_get_method_from_name instead.
25473         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
25474         is stored in the remoting invoke hashtable.
25475         
25476         * marshal.h: published the new method for getting the xdomain wrapper,
25477         and also added a method for getting the adequate wrapper for a given
25478         method and target.
25479         
25480         * object-internals.h, object.c: Added a couple of methods for capying and
25481         cloning arrays.
25482         Modified mono_install_remoting_trampoline, which takes the new remoting
25483         trampoline that has a remoting target as parameter.
25484         mono_class_proxy_vtable now also takes a remoting target as parameter, and
25485         will return the most suitable vtable for the target.
25486         Added mono_remote_class_vtable, which returns the vtable of a remote class
25487         (which can be the normal remoting vtable or the xdomain vtable).
25488         
25489         * threads.c: the xdomain invoke and dispatch wrappers must also be
25490         protected against interruptions.
25491
25492 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25493
25494         * icall.c: use memmove in BlockCopyInternal when the source and
25495         destination arrays are the same.
25496
25497 2004-11-09  Martin Baulig  <martin@ximian.com>
25498
25499         * class-internals.h (MonoGenericContainer): Removed `method' and
25500         `signature', replaced them with `is_method' and `is_signature'
25501         flags.  Added `context'.
25502
25503         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
25504         instead of a `MonoGenericContainer *'.
25505
25506         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
25507         for dynamic type parameters.
25508         (mono_metadata_load_generic_params): Setup `container->context'.
25509
25510         * reflection.c (mono_reflection_setup_generic_class): Setup
25511         `tb->generic_container->context'.
25512         (do_mono_reflection_bind_generic_parameters): Use
25513         mono_class_inflate_generic_type() to correctly inflate types,
25514         rather than using our own hack just for MONO_TYPE_VAR.
25515
25516 2004-11-09  Martin Baulig  <martin@ximian.com>
25517
25518         * class.c (mono_class_inflate_generic_method): Small fix; don't
25519         crash here.
25520
25521         * icall.c
25522         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
25523         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
25524         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
25525         (ves_icall_Type_BindGenericParameters): Likewise.
25526         (ves_icall_Type_get_IsGenericInstance): Likewise.
25527         (ves_icall_Type_GetGenericParameterPosition): Likewise.
25528         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
25529         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
25530         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
25531
25532 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
25533
25534         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
25535         assembly versions and public key tokens. Fixes #69113.
25536
25537 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
25538
25539         * metadata.c: fix bug introduced with the type cache changes
25540         on 2004-11-06.
25541
25542 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
25543
25544         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
25545         the MonoClass pointer instead of the token in exception clauses.
25546         * reflection.c: updates for the above and make the code not depend
25547         on the structure of MonoExceptionClause.
25548
25549 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
25550
25551         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
25552         Add support for dynamic assemblies. Fixes #69114.
25553
25554         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
25555
25556 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
25557
25558         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
25559         since most only those methods use it. the code member of
25560         MonoMethodPInvoke was dead, so that can be removed too. Also,
25561         remove inline_count (again, not used), and move slot so that it
25562         can share bits with some other flags. This saves 8 bytes in the
25563         structure and gives us about 50 kb back for mcs helloworld.cs
25564
25565         * *.[ch]: Do naming changes for the above.
25566
25567         * loader.c (mono_method_get_header): Lazily init the header
25568         on first access.
25569         (mono_get_method_from_token): don't init the header here
25570         (mono_free_method): the header may never be allocated
25571
25572         Overall, this saves 150 kb of unmanaged allocations
25573         for mcs helloworld.cs. That accounts for 10% of the unmanaged
25574         memory at runtime.
25575         
25576         * loader.c, loader.h (mono_method_get_header): new accessor.
25577
25578         * *.[ch]: use the above method. Prepares us to lazily load
25579         the header.
25580
25581         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
25582         three warnings, which are actual bugs (see 69206).
25583
25584         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
25585         unused. Saves a cool 4 bytes / method.
25586
25587 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
25588
25589         * metadata.c (builtin_types): Add types for System.Object here.
25590         (mono_metadata_parse_type_full): Cache MonoType*'s that are
25591         for a class or valuetype from klass->this_arg or klass->byval_arg.
25592
25593         On mcs for a hello world, this gets us down from 21836 MonoType's
25594         to 14560.
25595
25596         (mono_metadata_free_type): Account for the above change.
25597
25598 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
25599
25600         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
25601         exception instead of asserting if name is null.
25602         (ves_icall_System_AppDomain_GetData): Ditto.
25603
25604 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
25605
25606         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
25607         EnumBuilder.
25608
25609         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
25610         Return NULL when the domain does not have entry_assembly set.
25611
25612         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
25613         Add a 'resource_modules' argument.
25614         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
25615
25616         * reflection.c (mono_reflection_create_runtime_class): Move setting
25617         of wastypebuilder here, so mono_get_type_object () returns a MonoType
25618         for enums too.
25619
25620         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
25621         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
25622         Throw an ArgumentNullException if 'ptr' is null.
25623
25624         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
25625         assemblies here. Fixes #69020.
25626
25627 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
25628
25629         * reflection.c (build_compressed_metadata): Fix the previous patch for
25630         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
25631         the stack.
25632
25633 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
25634
25635         * assembly.c (mono_assembly_names_equal): Allow a match if one of
25636         the cultures is false. Fixes #69090.
25637
25638         * reflection.c (build_compressed_metadata): Fix invalid memory read 
25639         detected by valgrind.
25640         
25641         * reflection.c (mono_reflection_get_type): Avoid triggering a 
25642         TypeResolve multiple times for the same type. Fixes #65577.
25643
25644 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
25645
25646         * marshal.c: Avoid using ldftn to call managed functions. It is
25647         much slower than just a call.
25648
25649         * reflection.c (mono_module_get_object): free the basename we
25650         allocate here from glib.
25651         
25652         * reflection.c (ensure_runtime_vtable): make sure to free
25653         overrides.  Also, we were allocating an array of MonoMethod not an
25654         array of MonoMethod*.
25655
25656         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
25657
25658         * image.c (mono_image_close): free image->guid here.
25659
25660 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
25661
25662         * reflection.c: Fix some spec conformance issues with the PE file
25663         structures so mcs compiled apps run on the Net 2.0 beta.
25664
25665 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
25666
25667         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
25668         Implement this. Fixes #67264.
25669
25670         * debug-helpers.h debug-helpers.c marshal.c: Move 
25671         mono_find_method_by_name to debug-helpers.c.
25672
25673 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
25674
25675         * object.c (mono_release_type_locks): type_initialization_hash is
25676         a GHashTable.
25677
25678         * reflection.c object.c object-internals.h: Fix warnings.
25679
25680         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
25681         without accessors. Fixes #61561.
25682
25683         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
25684         application base from the root domain if not set. Fixes #65641.
25685         (mono_runtime_init): Fix warning.
25686
25687 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25688
25689         * appdomain.c: call mono_thread_pool_init.
25690         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
25691         of worker threads based on the number of CPUs and the environment
25692         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
25693         for non-windows (windows) systems.
25694
25695 2004-10-27  Chris Toshok  <toshok@ximian.com>
25696
25697         * mono-debug-debugger.c (write_class): don't call mono_class_init
25698         here, as even with the check for (!klass->init_pending), we get
25699         into a situation where we're hitting cycles in class
25700         initialization.  Fixes #68816.
25701
25702 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
25703
25704         * image.c: Avoid overwriting values in the loaded_images_hash when an
25705         assembly is loaded multiple times. Fixes #61152.
25706
25707         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
25708         so multiple satellite assemblies for the same name can be loaded.
25709         Fixes #68259.
25710
25711         * mono_domain_assembly_preload: Actually return the loaded assembly, 
25712         not NULL.
25713
25714         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
25715         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
25716
25717         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
25718         pending finalizers are not invoked after the appdomain has been 
25719         unloaded. Fixes #67862.
25720
25721 2004-10-22  Martin Baulig  <martin@ximian.com>
25722
25723         * mono-debug-debugger.c
25724         (mono_debugger_runtime_invoke): Don't box valuetypes.
25725
25726 2004-10-22  Chris Toshok  <toshok@ximian.com>
25727
25728         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
25729         don't hide private methods.
25730
25731 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
25732
25733         * icall.c: Allows the runtime to "share" (when known) the public key
25734         token of an assembly. This avoid the need to recalculate the token 
25735         (from the public key) in managed code.
25736
25737 2004-10-21  Chris Toshok  <toshok@ximian.com>
25738
25739         * debug-helpers.c (append_class_name): argh, revert last patch.
25740         
25741 2004-10-21  Chris Toshok  <toshok@ximian.com>
25742
25743         * debug-helpers.c (append_class_name): use '+' as the delimiter,
25744         not '/', so that it matches what the debugger uses to look up
25745         methods.
25746
25747 2004-10-21  Martin Baulig  <martin@ximian.com>
25748
25749         * mono-debug-debugger.c (mono_debugger_throw_exception): New
25750         public method; this is called each time an exception is thrown and
25751         allows the debugger to use exception catch points.
25752
25753 2004-10-21  Martin Baulig  <martin@ximian.com>
25754
25755         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
25756         the stack pointer and the exception object in some struct and pass
25757         that to the debugger.
25758
25759 2004-10-21  Chris Toshok  <toshok@ximian.com>
25760
25761         * mono-debug-debugger.c (do_write_class): add instance/static
25762         event support.  We don't expose "raise" or "other" yet.
25763         (event_is_static): new method.
25764
25765 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
25766
25767         * mono-debug-debugger.c
25768         (mono_debugger_handle_exception): Remove
25769         bogus return value for fussy compilers.
25770
25771 2004-10-20  Martin Baulig  <martin@ximian.com>
25772
25773         * mono-debug-debugger.c
25774         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
25775         (mono_debugger_handled_exception): Likewise.
25776
25777 2004-10-20  Martin Baulig  <martin@ximian.com>
25778
25779         * mono-debug-debugger.h (MonoDebuggerEvent): Added
25780         MONO_DEBUGGER_EVENT_EXCEPTION.
25781
25782         * mono-debug-debugger.c (mono_debugger_handle_exception): New
25783         public function to send the debugger a notification for an
25784         exception and inform it about a catch/finally clause.
25785
25786 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
25787
25788         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
25789         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
25790         fix 2.95 build. 
25791
25792         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
25793
25794 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
25795
25796         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
25797         marshalled as [In,Out]. Fixes #58325.
25798
25799 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
25800
25801         * reflection.c (mono_method_body_get_object): Implement some fields.
25802
25803 2004-10-12  Martin Baulig  <martin@ximian.com>
25804
25805         * reflection.c (mono_reflection_bind_generic_parameters): Small
25806         fix, correctly retrieve our parent from a generic instance.
25807
25808 2004-10-12  Martin Baulig  <martin@ximian.com>
25809
25810         * metadata.c (mono_metadata_generic_param_equal): We always have
25811         an owner.
25812
25813         * class.c
25814         (mono_class_from_generic_parameter): We need to have an owner.
25815         (my_mono_class_from_generic_parameter): Likewise.
25816
25817         * reflection.c (mono_reflection_setup_generic_class): Renamed to
25818         mono_reflection_create_generic_class() and added a new
25819         mono_reflection_setup_generic_class().  
25820         (mono_reflection_initialize_generic_param): If we're a nested
25821         generic type and inherited from the containing class, set our
25822         owner to the outer class.
25823
25824 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
25825
25826         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
25827
25828         * reflection.c (mono_method_body_get_object): New function to create
25829         a MethodBody object.
25830
25831         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
25832
25833 2004-10-11  Martin Baulig  <martin@ximian.com>
25834
25835         * metadata.c (_mono_metadata_type_equal): Renamed to
25836         do_mono_metadata_type_equal() and made static.
25837
25838 2004-10-11  Martin Baulig  <martin@ximian.com>
25839
25840         * appdomain.c: Bump corlib version number to 28.
25841
25842 2004-10-10  Martin Baulig  <martin@ximian.com>
25843
25844         * class-internals.h
25845         (MonoGenericInst): Added `MonoGenericContainer *container'.
25846         (MonoGenericMethod): Likewise.
25847         (MonoGenericContext): Likewise.
25848         (MonoGenericParam): Added `MonoGenericContainer *owner'.
25849
25850         * metadata.c
25851         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
25852         (do_mono_metadata_parse_generic_inst): Likewise.
25853         (mono_metadata_parse_type_full): New public method.  This is the actual
25854         mono_metadata_parse_type() implementation - with an additional
25855         `MonoGenericContainer *' argument.
25856         (mono_metadata_parse_array_full): Likewise.
25857         (mono_metadata_parse_signature_full): Likewise.
25858         (mono_metadata_parse_method_signature_full): Likewise.
25859         (mono_metadata_parse_mh_full): Likewise.
25860         (mono_type_create_from_typespec): Likewise.
25861         (mono_metadata_interfaces_from_typedef_full): New public method;
25862         this is similar to the other _full() methods, but we take a
25863         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
25864         (mono_metadata_parse_generic_param): Take an additional
25865         `MonoGenericContainer *' argument and lookup the MonoGenericParam
25866         from that container.
25867         (mono_metadata_generic_param_equal): New static method to compare
25868         two type parameters.
25869         (_mono_metadata_type_equal): New static method; takes an
25870         additional `gboolean signature_only' argument - if true, we don't
25871         compare the owners of generic parameters.
25872         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
25873         with a TRUE argument - do a signature-only comparision.
25874
25875         * loader.c: Use the new _full() methods and pass the
25876         MonoGenericContainer to them.
25877
25878         * object-internals.h (MonoReflectionTypeBuilder): Added
25879         `MonoGenericContainer *generic_container' field.
25880         (MonoReflectionMethodBuilder): Likewise.
25881
25882 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
25883
25884         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
25885         case initial images of dynamic assemblies.
25886
25887         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
25888
25889         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
25890
25891         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
25892         length of event->other array.
25893         (typebuilder_setup_events): Ditto.
25894
25895         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
25896         'assembly_by_name' and add an 'assemblies' list.
25897
25898         * assembly.h assembly.c: Add a new search hook for determining whenever
25899         an assembly is already loaded. Use this instead of searching in the
25900         loaded_assemblies list.
25901
25902         * domain.c appdomain.c: Implement the new search hook so loaded 
25903         assemblies are now scoped by appdomain. Fixes #67727.
25904
25905 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
25906
25907         * threads.c (mono_thread_attach): Initialize synch_lock field so
25908         mono_thread_detach works again.
25909
25910         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
25911         'lib' too. Fixes #63130.
25912
25913 2004-10-06  Jackson Harper  <jackson@ximian.com>
25914
25915         * culture-info-tables.h: regenerated.
25916
25917 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
25918
25919         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
25920         implemented by other interfaces in the result. Fixes #65764.
25921         
25922         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
25923         Handle unloadable modules without crashing.
25924
25925         * image.c (load_modules): Revert the previous patch since modules must
25926         have a fixed index inside the array.
25927         
25928         * image.c (load_modules): Don't include native modules in the modules
25929         array.
25930
25931 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
25932
25933         * reflection.h: Add param_defaults field.
25934
25935         * reflection.c: Add support for parameter defaults in dynamic methods.
25936         Fixes #64595.
25937
25938         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
25939         an empty string when a type has no namespace. Fixes #64230.
25940
25941 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
25942
25943         * tabledefs.h: Added "internal" security actions to support non-CAS
25944         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
25945         Note: they do not seems to be used anymore in 2.0 (new metadata format)
25946
25947 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
25948
25949         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
25950         constructor of abstract class. Fixes #61689.
25951
25952 2004-10-04  Martin Baulig  <martin@ximian.com>
25953
25954         * class-internals.h (MonoGenericContainer): New type.
25955         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
25956         `MonoGenericContainer *generic_container'.
25957         (MonoClass): Replaced `gen_params' and `num_gen_params' with
25958         `MonoGenericContainer *generic_container'.
25959
25960         * metadata.c (mono_metadata_load_generic_params): Return a
25961         `MonoGenericContainer *' instead of a `MonoGenericParam *';
25962         removed the `num' argument.
25963
25964 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
25965
25966         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
25967         for dynamic images.
25968
25969         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
25970         machine fields.
25971
25972         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
25973
25974         * reflection.c: Save pe_kind and machine values into the generated
25975         image file.
25976
25977         * appdomain.c: Bump corlib version number.
25978
25979         * object-internals.h: Reorganize layout of LocalBuilder.
25980
25981         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
25982         New helper function.
25983
25984         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
25985         created MonoType for dynamic types. Fixes #66180.
25986
25987 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
25988
25989         * threadpool.c: the ares hashtable needs a critical section around it.
25990         this prevents some nasty segfaults
25991
25992 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
25993
25994         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
25995         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
25996         bug 67324).
25997         
25998 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
25999
26000         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
26001         
26002 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
26003
26004         * image.c: Always canonicalize image file names, to avoid loading
26005         the same assembly twice when referenced using a relative path.
26006
26007 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
26008
26009         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
26010
26011         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
26012
26013         * marshal.c: Fix warnings.
26014
26015 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
26016
26017         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
26018         attempting to marshal the delegate_trampoline as the method_addr.
26019         This patch has a static hashtable of marshalled delegates so that 
26020         we can map delegate_trampoline addresses back to delegates.  This
26021         allows a delegate passed to managed code to be passed back into native
26022         code.  Fixes #67039
26023
26024 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
26025
26026         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
26027
26028         * reflection.c (method_encode_code): Align method headers properly.
26029         Fixes #66025.
26030
26031 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
26032
26033         * marshal.c: In the runtime invoke wrapper, reset the abort
26034         exception if it is cached. This avoids the automatic rethrowal of 
26035         the exception after the catch of the wrapper. Also check for pending
26036         interruptions before calling the managed method. This is done using
26037         the new method emit_thread_force_interrupt_checkpoint, since the
26038         normal checkpoint method is ignored when running the invoke wrapper.
26039         * object.c: If the abort exception is rethrown, set the abort_exc
26040         field of the thread, so it will be rethrown aftere every catch.
26041         * threadpool.c: Only run an interruption checkpoint if what has been
26042         requested is a stop of the thread (aborts will be ignored).
26043         * threads.c: By default, a thread will now never be interrumped while
26044         running the runtime invoke wrapper (this ensures that runtime_invoke
26045         will always return to the caller if an exception pointer is provided).
26046         There is a new special method mono_thread_force_interruption_checkpoint()
26047         to force an interruption checkpoint even if running a protected
26048         wrapper, which is used by the same runtime invoke wrapper to do a check
26049         at a safe point.
26050
26051 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
26052
26053         * object.c, object-internals.h: Implemented mono_release_type_locks,
26054         which releases the cctor locks held by a thread.
26055         * threads.c, threads.h: In thread_cleanup, release cctor locks held
26056         by a thread. Added mono_thread_exit() method to be used to safely stop
26057         a thread.
26058
26059 2004-09-28  Raja R Harinath  <rharinath@novell.com>
26060
26061         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
26062         Move null check before dereference.  Avoid indexing beyond the end
26063         of the 'modules' array.
26064
26065 2004-09-28  Raja R Harinath  <rharinath@novell.com>
26066
26067         * metadata-internals.h (MonoImage): Add module_count field.
26068         * image.c (load_modules): Set image->module_count.
26069         (mono_image_load_file_for_image): Use image->module_count.
26070         * reflection.c (mono_image_load_module): Append to image->modules array 
26071         of dynamic assembly.
26072         (mono_module_get_object): Fix loop to actually increment index.
26073         Use image->module_count.
26074         * assembly.c (mono_assembly_load_references): Use image->module_count.
26075         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
26076         Likewise.
26077
26078 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
26079
26080         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
26081         Avoid assert on generic types.
26082
26083 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
26084
26085         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
26086
26087         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
26088
26089         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
26090         function to convert a MarshalSpec structure to its managed counterpart.
26091
26092         * reflection.c: Fix warnings.
26093         
26094         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
26095         field.
26096
26097         * icall.c (mono_create_icall_signature): Fix build.
26098
26099 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
26100
26101         * icall.c: Add MakePointType icall.
26102
26103         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
26104         warnings.
26105
26106 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26107
26108         * threadpool.c: reuse allocated slots in the queue.
26109
26110 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
26111
26112         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
26113
26114         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
26115
26116         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
26117         previous change.
26118
26119         * tabledefs.h: Add constants for pinvoke attributes BestFit and
26120         ThrowOnUnmappableChar.
26121
26122         * icall.c (ves_icall_Type_GetPacking): New icall.
26123
26124 2004-09-24  Martin Baulig  <martin@ximian.com>
26125
26126         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
26127
26128 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26129
26130         * appdomain.c:
26131         (mono_domain_set): allow setting a domain that is being unloaded.
26132         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
26133         being unloaded.
26134
26135 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
26136
26137         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
26138         the GetCustomAttributes icall.
26139
26140 2004-09-23  Martin Baulig  <martin@ximian.com>
26141
26142         * object-internals.h (MonoReflectionGenericParam): Replaced
26143         'has_ctor_constraint', `has_reference_type' and `has_value_type'
26144         with `guint32 attrs'.
26145
26146 2004-09-23  Martin Baulig  <martin@ximian.com>
26147
26148         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
26149
26150 2004-09-23  Martin Baulig  <martin@ximian.com>
26151
26152         * object-internals.h (GenericParameterAttributes): New enum.
26153
26154 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
26155
26156         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
26157         
26158         * class.c (init_events): Fill out event->other field.
26159
26160         * class.c: Fix warnings.
26161
26162         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
26163
26164 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
26165
26166         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
26167         walk which doesn't supply the IL offset.
26168
26169 2004-09-22  Martin Baulig  <martin@ximian.com>
26170
26171         * reflection.c (mono_reflection_setup_internal_class): If we're
26172         System.ValueType, System.Object or System.Enum, set
26173         `klass->instance_size' and create the vtable.
26174         (mono_reflection_create_internal_class): If we're an enum type,
26175         get the base class from our current corlib.
26176
26177 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
26178
26179         * reflection.h (MonoResolveTokenError): New type.
26180
26181         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
26182         icall.
26183
26184         * icall.c: Add an 'error' argument to the ResolveToken icalls.
26185
26186 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
26187
26188         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
26189         Support also calling constructors, but only for already allocated objects.
26190
26191 2004-09-17  Geoff Norton <gnorton@customerdna.com>
26192
26193         * reflection.c (type_get_qualified_name): If the klass is null
26194         return the typename to avoid a NullRefEx.
26195         (encode_cattr_value): Get the qualified name of the boxed type,
26196         not the underlying enumtype.  Fixes #62984.
26197
26198 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
26199
26200         * marshal.c: Fix problems with previous checkin.
26201
26202 2004-09-21    <vargaz@freemail.hu>
26203
26204         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
26205         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
26206
26207         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
26208
26209 2004-09-21  Geoff Norton <gnorton@customerdna.com>
26210
26211         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
26212         should only return a type for pointers, arrays, and passbyref types.
26213         Fixes bug #63841.
26214
26215 2004-09-21  Martin Baulig  <martin@ximian.com>
26216
26217         * domain.c (mono_debugger_check_runtime_version): New public
26218         function.
26219
26220         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
26221
26222 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
26223
26224         * reflection.c: Added missing sort to the declarative security 
26225         attributes table. MS implementation stops seeing the attributes if the
26226         token number regress in the table (as shown by ildasm and permview).
26227
26228 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
26229
26230         * object-internals.h (MonoReflectionModule): Add 'token' field.
26231         
26232         * reflection.c (mono_reflection_get_token): Add support for Module
26233         and Assembly.
26234         (mono_module_get_object): Set 'token' field.
26235         (mono_module_file_get_object): Set 'token' field.
26236
26237         * icall.c: Add new Assembly and Module icalls.
26238
26239         * appdomain.c: Bump corlib version.
26240
26241 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
26242
26243         * loader.h loader.c class.h class.c: Add helper functions for obtaining
26244         tokens of metadata objects.
26245
26246         * reflection.h reflection.c (mono_reflection_get_token): New function
26247         to obtain the token of a metadata object.
26248
26249         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
26250
26251 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
26252
26253         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
26254         
26255         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
26256
26257 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
26258
26259         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
26260         * object-internals.h: Added 3 MonoArray* members to MonoReflection
26261         AssemblyBuilder to access the permissions set in the class lib.
26262         * reflection.c: Added security attributes encoding step in 
26263         mono_image_build_metadata.
26264         * tabledefs.h: Added new security actions defined in 2.0:
26265         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
26266
26267 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
26268
26269         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
26270         macro parameter.
26271
26272 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
26273  
26274         * locales.c: nullify the ICU_collator member of CompareInfo when it is
26275           finalized. There where random SIGSEVs at program termination, when
26276           an object being finalized was trying to do a string comparison and
26277           the current culture was already finalized.
26278  
26279 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26280
26281         * threads.c: call thread_cleanup before finishing the thread if we get
26282         there.
26283
26284 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
26285
26286         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
26287         assemblies from the parent. Fixes #65665.
26288
26289 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
26290
26291         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
26292         modifiers.
26293
26294 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
26295
26296         * reflection.h: add prototype for mono_get_dbnull_object
26297         * reflection.c: add prototypes for get_default_param_value_blobs 
26298         and mono_get_object_from_blob for fussier compilers
26299
26300 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
26301  
26302         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
26303         false deadlock checks in class initialization.
26304  
26305 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
26306
26307         * image.c (mono_image_addref): Fix comment.
26308
26309         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
26310         possible.
26311
26312 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
26313
26314         * reflection.c (mono_param_get_objects): Modified to return
26315         ParameterInfo.DefaultValue object.
26316
26317         (get_default_param_value_blobs):
26318         (mono_get_object_from_blob):
26319         (mono_get_dbnull_object): New helper routines. 
26320
26321         * object.c (mono_get_constant_value_from_blob): New helper routine
26322         carved out from get_default_field_value ()
26323
26324         * object-internals.h (mono_get_constant_value_from_blob): Added
26325         function declaration.
26326
26327 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
26328
26329         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
26330         referenced assemblies. Fixes #62135.
26331
26332         * exception.h exception.c (mono_get_exception_file_not_found2): New
26333         helper function.
26334
26335 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
26336
26337         * class.h class.c: Add mono_type_get_underlying_type ().
26338
26339 2004-09-09  Geoff Norton <gnorton@customerndna.com>
26340
26341         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
26342         Fix GetTypes() to support dynamically created assemblies.
26343
26344 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
26345
26346         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
26347         
26348         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
26349         previous patch.
26350
26351         * reflection.h reflection.c loader.c: Allow dynamic construction of
26352         pinvoke methods. Fixes #65571.
26353         
26354         * reflection.c (mono_reflection_get_type): Revert previous change since
26355         it causes regressions.
26356
26357 2004-09-08  Martin Baulig  <martin@ximian.com>
26358
26359         * class.c (class_compute_field_layout): Don't call
26360         mono_class_layout_fields() for open generic instances.
26361
26362 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
26363         * threads.c appdomain.c: fix typo in GC macro
26364
26365 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26366
26367         * threads.c: don't call mono_thread_detach() in start_wrapper(),
26368         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
26369
26370 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
26371
26372         * image.c (mono_image_close): Applied patch from 
26373         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
26374         assembly is loaded multiple times from data.
26375         
26376         * image.c (mono_image_open): Fix warning.
26377
26378 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26379
26380         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
26381         once. Fixes #58334.
26382         
26383         * reflection.c (mono_reflection_create_runtime_class): Initialize
26384         klass->nested_classes. Fixes #61224.
26385
26386 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
26387
26388         * threads.c: sched_yield() on exit, to allow threads to quit.
26389
26390 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26391
26392         * object.c (mono_unhandled_exception): Remove leftover debug code.
26393
26394 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
26395
26396         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
26397
26398 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26399
26400         * marshal.c (emit_marshal_array): Really null terminate string arrays.
26401         
26402         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
26403
26404 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26405
26406         * marshal.c (emit_marshal_array): Null terminate string arrays.
26407         
26408         * marshal.c (raise_auto_layout_exception): Fix warning.
26409
26410         * reflection.c (mono_param_get_objects): Initialize the default value
26411         with DBNull.Value, not null. Fixes #62123.
26412
26413 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
26414
26415         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
26416         throw an exception with a cute explanation.
26417
26418 2004-09-06  Dick Porter  <dick@ximian.com>
26419
26420         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
26421         Close the new process's thread handle, as we don't use it.  The
26422         handle stays around forever otherwise.
26423
26424 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26425
26426         * object.c (arith_overflow): Fix warning.
26427
26428         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
26429         calling conventions in method refs. Fixes #65352.
26430
26431         * reflection.c: Fix warnings.
26432
26433 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
26434
26435         * icall.c: Add a new icall for Array.Clear
26436
26437 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
26438
26439         * object.c: When allocating an array, we have to throw
26440         an overflow exception if any of the lengths are < 0.
26441
26442 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26443
26444         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
26445         properly. Also move implementation of string array marshalling to 
26446         managed code. Fixes #42316.
26447
26448 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26449
26450         * assembly.c: provide more information when loading an assembly fails.
26451
26452 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26453
26454         * filewatcher.c: don't expect the development fam package to be
26455         installed.
26456
26457 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
26458
26459         * marshal.c: Make a copy of the signature cookie since it will be
26460         freed by the caller.
26461         
26462         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
26463
26464         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
26465
26466         * metadata.c (mono_metadata_free_marshal_spec): New function to free
26467         marshal specs.
26468
26469         * marshal.c: More refactoring.
26470         
26471         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
26472         smaller functions.
26473
26474 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
26475
26476         * object.c: In mono_message_invoke, fill the output parameter array after
26477           calling the managed method (it was done before the call). This fixes
26478           bug #59299.
26479
26480 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
26481
26482         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
26483         as well.
26484
26485 2004-09-02  Martin Baulig  <martin@ximian.com>
26486
26487         * class.c (mono_class_instance_size): Don't allow generic type
26488         definitions or open generic instances.
26489         (mono_class_array_element_size): If we're a value type, call
26490         mono_class_instance_size() on the original class.
26491
26492         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
26493         handle generic instances.
26494
26495         * mono-debug-debugger.c (write_type): Handle generic instances
26496         like classes.
26497
26498 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
26499
26500         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
26501         the allocation request fails. Fixes #65089.
26502
26503         * object.c (mono_runtime_free_method): Do not call mono_free_method.
26504         
26505         * object.c (mono_runtime_free_method): New function to free a dynamic
26506         method.
26507
26508         * marshal.c (mono_delegate_free_ftnptr): New function to free the
26509         delegate trampoline.
26510
26511         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
26512         with hasthis as dynamic,
26513
26514         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
26515
26516         * domain.c (mono_jit_info_table_remove): New function to remove an
26517         entry from the jit info table.
26518
26519         * class-internals.h (MonoMethod): Add 'dynamic' field.
26520
26521         * loader.c: Fix warnings.
26522
26523 2004-09-01  Martin Baulig  <martin@ximian.com>
26524
26525         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
26526         instead of mono_debugger_lock() because the latter one is a no-op
26527         unless running in the debugger.
26528
26529 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
26530
26531         * class.c (class_compute_field_layout): Classes with auto-layout or
26532         reference fields are not blittable.
26533         
26534 2004-09-01  Dick Porter  <dick@ximian.com>
26535
26536         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
26537         mono_image_get_filename() to get the assembly location.
26538
26539         * icall.c:
26540         * metadata.h: Fix compile warnings
26541
26542 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
26543
26544         * class.c (class_compute_field_layout): System.Object is blittable.
26545
26546         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
26547         as in/out. Fixes #59909.
26548
26549 2004-09-01  Martin Baulig  <martin@ximian.com>
26550
26551         * metadata.h (MONO_TYPE_ISREFERENCE): Call
26552         mono_metadata_generic_inst_is_valuetype() if we're a generic
26553         instance to check whether our underlying type is a reference type.
26554
26555 2004-09-01  Martin Baulig  <martin@ximian.com>
26556
26557         * metadata.c (mono_type_size): If we're a generic instance, call
26558         mono_class_value_size() for value types.
26559
26560 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
26561
26562         * marshal.c: Implement more custom marshalling functionality. Fixes
26563         #64915.
26564
26565 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
26566
26567         * mono-debug.c, debug-mono-symfile.c: add some locking love.
26568
26569 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
26570
26571         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
26572
26573         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
26574
26575         * icall.c: Fix some warnings.
26576
26577         * threads.c (abort_appdomain_thread): Fix unref errors.
26578         (mono_thread_current): Fix THREAD_DEBUG define.
26579
26580 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
26581
26582         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
26583
26584         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
26585
26586 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
26587
26588         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
26589         string arrays.
26590
26591 2004-08-28  Martin Baulig  <martin@ximian.com>
26592
26593         * metadata.c
26594         (mono_metadata_generic_inst_is_valuetype): New public function.
26595
26596         * metadata.h (MONO_TYPE_ISSTRUCT): Call
26597         mono_metadata_generic_inst_is_valuetype() if we're a generic
26598         instance to check whether our underlying type is a valuetype.
26599
26600 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
26601
26602         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
26603         #63768.
26604
26605 2004-08-25  Martin Baulig  <martin@ximian.com>
26606
26607         * loader.c (mono_get_method_from_token): Abstract methods can also
26608         be generic and thus have type parameters.
26609
26610         * metadata-internals.h
26611         (MonoDynamicImage): Added `GPtrArray *gen_params'.
26612
26613         * reflection.c (mono_image_get_generic_param_info): Don't create a
26614         metadata row, just add an entry to the `gen_params' array.
26615         (build_compressed_metadata): Sort the `gen_params' array and then
26616         actually create the metadata.
26617
26618 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26619
26620         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
26621
26622 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
26623
26624         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
26625
26626 2004-08-24  Martin Baulig  <martin@ximian.com>
26627
26628         * class.cs (mono_class_is_subclass_of): Like an interface, a
26629         generic instance also derives from System.Object.
26630
26631 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
26632
26633         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
26634         custom modifiers to be in any order. Fixes #61990.
26635
26636 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
26637
26638         * object.c: Register mono_object_new_fast icall.
26639         
26640         * object.c (mono_class_get_allocation_ftn): Return to calling
26641         mono_object_new_fast, since it seems faster to compute the object 
26642         size in unmanaged code than passing it as a parameter.
26643
26644         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
26645
26646         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
26647         this function with Boehm as the oom handler, so we don't have to check
26648         the result of GC_malloc.
26649
26650         * object.c: Remove checks for oom.
26651
26652         * object.h object.c (mono_class_get_allocation_ftn): New function to
26653         return the icall which can be used to allocate an instance of a given
26654         class. 
26655
26656         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
26657
26658         * class-internals.h: Add 'enabled' field.
26659
26660 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
26661
26662         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
26663
26664 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
26665         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
26666         value 0x0010.
26667
26668 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
26669
26670         * appdomain.c: use the Tls function for appdomain too,
26671         at Zoltan's request. Actually return in mono_context_get
26672
26673         * appdomain.c, profiler.c, threads.c: use __thread
26674
26675 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
26676
26677         * appdomain.c threads.c: Call GC_CreateThread on windows.
26678
26679         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
26680         multiple libraries since this don't work on windows.
26681
26682 2004-08-18  Martin Baulig  <martin@ximian.com>
26683
26684         * class-internals.h
26685         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
26686         MonoMethodHeader.
26687
26688         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
26689         MonoMethodNormal since we also need it for abstract and interface
26690         methods.
26691
26692         * reflection.c
26693         (build_compressed_metadata): Sort the GenericParam table.
26694         (mono_image_create_token): Added `gboolean create_methodspec'
26695         argument; this is false when generating a MethodImpl token.
26696         (reflection_methodbuilder_to_mono_method): Abstract and interface
26697         methods may also have generic parameters.
26698
26699 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
26700
26701         * appdomain.c: thread local alloc
26702
26703 2004-08-17  Martin Baulig  <martin@ximian.com>
26704
26705         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
26706
26707         * icall.c
26708         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
26709         argument.
26710
26711         * class.c (mono_type_get_full_name): New public function.
26712         (mono_type_get_name): Don't include the type arguments.
26713
26714 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
26715
26716         * Makefile.am: Build static versions of libmetadata and libmonoruntime
26717         for inclusion into the mono executable.
26718
26719 2004-08-16  Martin Baulig  <martin@ximian.com>
26720
26721         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
26722         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
26723
26724 2004-08-14  Martin Baulig  <martin@ximian.com>
26725
26726         * class.c (dup_type): Also copy the `byref' field.
26727
26728 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
26729
26730         * reflection.c (create_dynamic_mono_image): Revert the last change 
26731         since it breaks bootstrap.
26732
26733 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
26734
26735         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
26736
26737         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
26738         not free them with g_free.
26739
26740 2004-08-11  Martin Baulig  <martin@ximian.com>
26741
26742         * reflection.c (mono_reflection_setup_internal_class): Also call
26743         mono_class_setup_mono_type() if we already have a `tb->type.type'.
26744
26745 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
26746
26747         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
26748         called during default (first) AppDomain creation. Keep track of
26749         Evidence when loading assemblies.
26750
26751 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
26752
26753         * opcodes.c, opcodes.h: reduce runtime relocations.
26754
26755 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
26756
26757         * culture-info.h, locales.c: fixes and chages to sue the new
26758         optimized format of the locale data.
26759         * culture-info-tables.h: regenerated.
26760
26761 2004-08-06  Geoff Norton <gnorton@customerdna.com>
26762         
26763         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
26764
26765 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
26766
26767         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
26768         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
26769         * domain-internals.h: icall declaration.
26770         * icall.c: icall registration.
26771         * object-internals.h: New fields in MonoAssembly for CAS.
26772
26773 2004-08-05  Duncan Mak  <duncan@ximian.com>
26774
26775         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
26776         CEE_LDELEM_ANY.
26777
26778 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
26779
26780         * reflection.c: fix to deal with object[] arrays in custom ctors
26781         (bug #62550).
26782
26783 2004-08-05  Martin Baulig  <martin@ximian.com>
26784
26785         * class.c (mono_class_array_element_size): Added support for
26786         generic instances and correctly handle "recursive" types.
26787
26788 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
26789
26790         * assembly.c: Fix warnings.
26791
26792 2004-08-04  Martin Baulig  <martin@ximian.com>
26793
26794         * class.c
26795         (mono_type_get_name_recurse): Added `gboolean include_arity'
26796         argument specifying whether or not we should include the generic
26797         arity in the type name.
26798         (_mono_type_get_name): New static function.
26799         (mono_class_setup_vtable): If we're a generic instance, don't
26800         include the generic arity in the names of explicit method
26801         implementations.        
26802
26803 2004-08-03  Martin Baulig  <martin@ximian.com>
26804
26805         * class.c (mono_type_get_name_recurse): Enclose the generic type
26806         arguments in `<', '>'.
26807
26808 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
26809
26810         * gc.c: make GC warning messages use the trace API, they are just
26811         noise to most of the users.
26812
26813 2004-08-03  Martin Baulig  <martin@ximian.com>
26814
26815         * debug-mono-symfile.c (read_string): Correctly read the string.
26816
26817 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
26818
26819         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
26820         
26821         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
26822         icalls.
26823         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
26824
26825 2004-07-30  Martin Baulig  <martin@ximian.com>
26826
26827         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
26828         Reflect latest symbol writer changes.   
26829
26830 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
26831
26832         * object.c: always create an object if null is passed
26833         to Invoke() where a valuetype is expected.
26834
26835 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
26836
26837         * marshal.c (mono_marshal_init): make managed
26838         signatures match native ones better for 64bits.
26839
26840 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26841
26842         * appdomain.c: hack to build correctly the private bin path on windows.
26843         Fixes bug #61991.
26844
26845 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
26846
26847         * assembly.c: Load mscorlib from the correct framework directory
26848           (mono/<version>/mscorlib.dll).
26849         * appdomain.h: Added prototypes for new functions.
26850         * internals.h: Added some prototypes.
26851         * domain.c: When initializing the runtime, get from the executable and
26852           the configuration files the runtime version that the app supports.
26853           Added support methods for reading app.exe.config. Added list of versions
26854           supported by the JIT. Added two new methods: mono_init_from_assembly,
26855           which initializes the runtime and determines the required version from
26856           the provided exe file, and mono_init_version, which initializes
26857           the runtime using the provided version.
26858         * icall.c: Get machine.config from version-specific directory.
26859         * reflection.c: When generating an image, embed the version number
26860           of the current runtime.
26861
26862 2004-07-28  Dick Porter  <dick@ximian.com>
26863
26864         * socket-io.c
26865         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
26866         returned sockaddr size before creating the remote address object.
26867         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
26868         61608.
26869
26870 2004-07-28  Dick Porter  <dick@ximian.com>
26871
26872         * locales.c (string_invariant_compare_char): Fix invariant char
26873         compares between upper and lower cases.  Fixes bug 61458.
26874
26875 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
26876         
26877         * marshal.c: actually cache stelem.ref wrappers.
26878         
26879 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
26880
26881         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
26882         sections and remove the mono_cli_rva_map () function.
26883
26884 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
26885
26886         * debug-mono-symfile.c: fix one more endianess issue, from a patch
26887         by Geoff Norton (<gnorton@customerdna.com>).
26888
26889 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
26890
26891         * class.c: fix class loads for pointer types (typeof(int) !=
26892         typeof(int*)).
26893
26894 2004-07-27  Martin Baulig  <martin@ximian.com>
26895
26896         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
26897         reading the debugging information from an external ".mdb" file.
26898
26899 2004-07-24  Martin Baulig  <martin@ximian.com>
26900
26901         * reflection.c (mono_image_get_type_info): Only write a class
26902         layout entry if we actually have a size or a packing size.
26903
26904 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
26905
26906         * reflection.c (type_get_fully_qualified_name): 
26907         insert cast to get type checking of ?: with non-gcc compilers
26908
26909 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
26910
26911         * rand.c: use g_getenv for both lookups of
26912         MONO_EGD_SOCKET
26913
26914 2004-07-17  Martin Baulig  <martin@ximian.com>
26915
26916         * reflection.c (mono_reflection_bind_generic_method_parameters):
26917         Set `gmethod->reflection_info'.
26918
26919 2004-07-17  Martin Baulig  <martin@ximian.com>
26920
26921         * class.c (mono_class_create_from_typedef): Insert the newly
26922         created class into the hash table before computing the interfaces
26923         since we could be called recursively.
26924
26925 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
26926
26927         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
26928         function to implement stelem.ref in managed code
26929         * class-internals.h, debug-helpers.c: a new wrapper type
26930         for the above.
26931
26932 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
26933
26934         * gc.c: allow GC handles to work even when no GC is compiled in.
26935         Fix part of bug #61134 (GetAddrOfPinnedObject).
26936
26937 2004-07-13  Peter Williams  <peter@newton.cx>
26938  
26939         * process.c (complete_path): Make sure we don't attempt to execute
26940         directories.
26941  
26942 2004-07-12  Geoff Norton <gnorton@customerdna.com>
26943
26944         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
26945           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
26946           and will add/subtract the hour if needed
26947
26948 2004-07-12  Martin Baulig  <martin@ximian.com>
26949
26950         * reflection.c (mono_field_get_object): If we have
26951         `field->generic_info', take the attributes from
26952         `field->generic_info->generic_type'.    
26953
26954 2004-07-12  Martin Baulig  <martin@ximian.com>
26955
26956         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
26957         This function must be called before initializing the runtime.
26958         (mono_debug_init_1): New function; call this after initializing
26959         the runtime, but before loading the assembly.  It tells the
26960         debugger to load corlib and the builtin types.
26961
26962         * mono-debug-debugger.c: Did some larger changes in the debugging
26963         code; support recursive class declarations, make sure we actually
26964         add all classes.
26965
26966 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26967
26968         * debug-helpers.c: undo my previous patch and fixed the real issue in
26969         ../mini/exceptions-x86.c
26970
26971 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26972
26973         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
26974         when no HOME env. variable was set and a NullRef was thrown in a .cctor
26975         called from other .cctors.
26976
26977 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
26978
26979         * loader.c: Removed the mono_loader_wine_init hack now that we are
26980         doing a managed version of Windows.Forms.
26981
26982 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
26983
26984         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
26985         threadpool.c, threads.c: remove static data from rootset.
26986
26987 2004-07-09  Dick Porter  <dick@ximian.com>
26988
26989         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
26990         Don't do any more processing if the matched length was 0.  It was
26991         increasing the size of the string before.  Fixes bug 61167.
26992
26993 2004-07-09  Dick Porter  <dick@ximian.com>
26994
26995         * socket-io.h:
26996         * socket-io.c
26997         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
26998         Add support for SO_PEERCRED if its available.
26999
27000 2004-07-09  Peter Bartok <pbartok@novell.com>
27001         * loader.c: winelib.exe.so error message is now only displayed if
27002         MONO_DEBUG is set. To help us avoid questions when people are trying
27003         out the new Managed.Windows.Forms.
27004
27005 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
27006
27007         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
27008         for isinst and castclass wrappers.
27009
27010         * class-internals.h icall.c: Move registration and lookup of JIT icalls
27011         to libmetadata from the JIT, so they could be used by the marshalling
27012         code and the interpreter.
27013
27014         * marshal.c: Register marshalling related JIT icalls here instead of
27015         in mini.c. Use CEE_MONO_ICALL instead of the family of 
27016         CEE_MONO_PROC<x> opcodes to call marshalling functions.
27017
27018         * metadata.h: Remove unneeded marshalling conversions.
27019
27020         * opcodes.c: Update for new opcodes.
27021         
27022 2004-07-08  Martin Baulig  <martin@ximian.com>
27023
27024         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
27025         (mono_debug_get_domain_data): Make this function static.
27026
27027 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
27028
27029         * gc.c, object.h: add nice GC handle API for embedders.
27030
27031 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
27032
27033         * reflection.c: more changes for the new api
27034
27035         * object.c: When we reflect on a field w/ a constant value, it
27036         will not have a memory location, so we must access metadata. Also,
27037         allow easier reading of strings so that we can read them from
27038         the constant data.
27039
27040         * class.c (mono_class_layout_fields): no need for literal fields here.
27041
27042         * class-internals.h: api changes for const fields
27043
27044         * icall.c (ves_icall_get_enum_info): use new apis for const fields
27045
27046 2004-07-06  Martin Baulig  <martin@ximian.com>
27047
27048         * mono-debug.h: Increment version number to 44.
27049
27050         * mono-debug.c (mono_debug_add_wrapper): The second argument is
27051         now a gpointer, rewrote this whole method.
27052
27053         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
27054         function.  Add information about the wrapper in a new "misc table".
27055
27056         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
27057         for the new misc table.
27058
27059 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
27060
27061         * metadata-internals.h image.c: Add a cache for helper signatures.
27062
27063         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
27064
27065 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
27066
27067         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
27068         delegates from a delegate. Fixes #61033.
27069         
27070         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
27071         marshalling of stringbuilder arrays. Fixes #59900.
27072
27073 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
27074
27075         * icall.c: Add EnumBuilder:setup_enum_type icall.
27076
27077 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
27078
27079         * icall.c: Added a new icall for the property version of
27080         OffsetOfStringData.
27081
27082 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
27083
27084         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
27085         it has a constant size across platforms.
27086
27087         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
27088         stack trace.
27089
27090 2004-06-29  Martin Baulig  <martin@ximian.com>
27091
27092         * mono-debug.c (mono_debug_add_method): Protect the whole function
27093         in mono_debugger_lock(), not just parts of it.
27094
27095 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
27096
27097         * reflection.c: make sure padding bytes in heaps are zeroed.
27098
27099 2004-06-24  David Waite  <mass@akuma.org>
27100
27101         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
27102         image.c, loader.c, locales.c, marshal.c, metadata.c,
27103         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
27104         string-icalls.c, threads.c: change to C90-style comments from C99 /
27105         C++ -style
27106
27107 2004-06-24  Dick Porter  <dick@ximian.com>
27108
27109         * threads.c
27110         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
27111         return createdNew.  Fixes bug 60412.
27112
27113         * threads-types.h: 
27114         * icall.c: Add createdNew parameter to CreateMutex icall
27115
27116 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
27117
27118         * reflection.c, object-internals.h: save default value in params.
27119
27120 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27121
27122         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
27123         no need to build a new path combining that with the application base.
27124         Fixes bug #60442.
27125
27126 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
27127
27128         * reflection.c: fixed minor standard compliance issues.
27129
27130 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
27131
27132         * reflection.c: fixed issue with encoding some custom attributes
27133         (arrays in properties and fields, bug #60411).
27134
27135 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27136
27137         * reflection.c: fix start address when copying the public key token.
27138
27139 2004-06-23  Martin Baulig  <martin@ximian.com>
27140
27141         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
27142         the `exc' object in a static object to put it into the GC's root set.
27143
27144 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
27145
27146         * reflection.c: make mono_reflection_setup_internal_class ()
27147         callable a second time to setup a new parent class.
27148
27149 2004-06-23  Dick Porter  <dick@ximian.com>
27150
27151         * threads.c: Check for WAIT_IO_COMPLETION return values.
27152
27153 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
27154
27155         * appdomain.c: Removed the g_free on the public key token. Now copy 
27156         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
27157         * assembly.c: Added public key token string value when loading 
27158         assemblies. Fix bug #60439.
27159         * icall.c: Added missing informations (like public key) in 
27160         GetReferencedAssemblies. Fix #60519.
27161         * image.h: Changed definition for public key token from const char*
27162         public_tok_value to guchar public_key_token [17];
27163         * reflection.c: Updated for changes to public key token.
27164
27165 2004-06-22  Lluis Sanchez Gual
27166
27167         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
27168         for the field in base classes.
27169
27170 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
27171
27172         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
27173         mark headers as not supported, they are installed only for use by the
27174         debugger.
27175
27176 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
27177
27178         * *.c, *.h: avoid namespace pollution in public headers.
27179
27180 2004-06-21  Martin Baulig  <martin@ximian.com>
27181
27182         * exception.c (mono_get_exception_security): It's in
27183         "System.Security", not in "System".
27184
27185         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
27186         the exception classes.
27187
27188 2004-06-21  Martin Baulig  <martin@ximian.com>
27189
27190         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
27191         Protect the exception object from being finalized.
27192
27193 2004-06-21  Martin Baulig  <martin@ximian.com>
27194
27195         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
27196         public function.
27197
27198 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
27199
27200         * reflection.c: Load the assembly in mono_reflection_type_from_name,
27201         if it was not loaded before. Fix parts of #60439.
27202
27203 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
27204
27205         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
27206         code that was broken since Ben's change: wrappers are now
27207         dependent on the method signature only again.
27208
27209 2004-06-21  Martin Baulig  <martin@ximian.com>
27210
27211         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
27212         added interface support.
27213
27214 2004-06-21  Martin Baulig  <martin@ximian.com>
27215
27216         * class.c (mono_vtable_get_static_field_data): New public method.
27217
27218 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
27219
27220         * filewatcher.c : Windows build fix to be compliant with API changes.
27221
27222 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
27223
27224         * class.h, class.c: more accessors.
27225         * metadata.h, metadata.c: prepare for hiding MonoType and
27226         MonoMethodSignature: people should use the accessors from now on
27227         outside of the tree.
27228
27229 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
27230
27231         * *.c, *.h: more API cleanups.
27232
27233 2004-06-18  Jackson Harper  <jackson@ximian.com>
27234
27235         * assembly.c: Trace loading assemblies.
27236         * loader.c: Trace loading native libraries.
27237         * mono-config.c: Trace loading config files.
27238         
27239 2004-06-18  Dick Porter  <dick@ximian.com>
27240
27241         * locales.c: Tell ICU the lengths of strings, it can cope with
27242         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
27243
27244 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
27245
27246         * image.c: swapped name/filename;
27247
27248 2004-06-18  Martin Baulig  <martin@ximian.com>
27249
27250         * mono-debug-debugger.c (write_class): Write the parent class at
27251         the end of the header.
27252
27253 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
27254
27255         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
27256
27257 2004-06-17  Raja R Harinath  <rharinath@novell.com>
27258
27259         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
27260         (bundle_obj): New conditional define.
27261         (BUILT_SOURCES): Remove.
27262         ($(bundle_srcs)): Make parallel-make safe.
27263         (libmonoruntime_la_LIBADD): Make unconditional.
27264         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
27265         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
27266
27267 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
27268
27269         * culture-info-tables.h: It was inconsistent with the latest
27270           supp info files.
27271
27272 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
27273
27274         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
27275         be loaded.
27276
27277         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
27278         with gcc 2.95.
27279
27280 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
27281
27282         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
27283         cleaned up public header threads.h.
27284
27285 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
27286
27287         * Makefile.am, *.c, *.h: more API cleanups.
27288
27289 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
27290
27291         * Makefile.am: removed monosn from compilation.
27292         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
27293         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
27294         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
27295         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
27296         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
27297         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
27298
27299 2004-06-15  Jackson Harper  <jackson@ximian.com>
27300
27301         * assembly.c: Make locales lower case when searching the GAC for
27302         assemblies. gacutil will always make locales lowercase when
27303         installing so this effectively makes them case insensitive.
27304         
27305 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
27306
27307         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
27308         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
27309           parameter which allows to choose whether the wait can be interrupted or 
27310           not. Also added the method mono_monitor_enter(), which locks the monitor
27311           using an infinite wait and without allowing interruption.
27312           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
27313           interrupted.
27314         * object.h: Added new fields in MonoThread. suspend_event holds the event
27315           used to susped/resume the thread. synch_lock is the lock object to use for
27316           modifying the thread state.
27317         * threads.c: Use the new synch_lock object for locking, instead of "this",
27318           which can generate deadlocks.
27319           Moved thread state change in Thread.Sleep and Thread.Join from managed
27320           to unmanaged code. This avoids a deadlock when the thread was suspended
27321           just after acquiring the thread lock.
27322           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
27323           Implemented Thread.Suspend using an event instead of ThreadSuspend,
27324           which is not fully implemented in the io-layer.
27325         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
27326
27327 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
27328
27329         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
27330         threads-types.h: more API cleanups.
27331
27332 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
27333
27334         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
27335         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
27336         threadpool.c, threads.c: first pass at the exported API cleanup.
27337
27338 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
27339
27340         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
27341
27342 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27343
27344         * icall.c: added internalGetHome.
27345
27346 2004-06-14  Dick Porter  <dick@ximian.com>
27347
27348         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
27349         possible to return successfully when '.' or '..' were the only
27350         entries in a directory, but were skipped.  The MonoIOStat was not
27351         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
27352         Fixes bug 59574.
27353
27354 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
27355
27356         * reflection.c: make binaries run on .Net 1.1 by default.
27357
27358 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
27359
27360         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
27361
27362 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
27363
27364         * marshal.c: keep track of struct size with explicit layout
27365         (bug #59979).
27366
27367 2004-06-12  Martin Baulig  <martin@ximian.com>
27368
27369         * mono-debug-debugger.c: Comment out a debugging g_message().
27370
27371 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
27372
27373         * reflection.c, reflection.h: do not free custom attrs that are cached.
27374         * icall.c: use braces to make code clearer.
27375
27376 2004-06-11  Martin Baulig  <martin@ximian.com>
27377
27378         * class.h (MonoInflatedField): New type.
27379         (MonoClassField): Replaced `MonoType *generic_type' with
27380         `MonoInflatedField *generic_info'.
27381
27382         * icall.c
27383         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
27384
27385 2004-06-11  Martin Baulig  <martin@ximian.com>
27386
27387         * reflection.c (mono_image_create_method_token): Correctly encode
27388         varargs methods.
27389
27390 2004-06-11  Martin Baulig  <martin@ximian.com>
27391
27392         * metadata.c (mono_metadata_parse_method_signature): When parsing
27393         a MethodDef which has VarArgs, also set sentinelpos if we don't
27394         have any parameters.
27395
27396 2004-06-11  Martin Baulig  <martin@ximian.com>
27397
27398         * verify.c (mono_method_verify): In CEE_CALL, use
27399         mono_method_get_signature() to get the method's signature, unless
27400         we're a PInvoke method.
27401
27402 2004-06-10  Jackson Harper  <jackson@ximian.com>
27403
27404         * assembly.c: Use <path>/lib/mono/gac for the extra paths
27405         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
27406         logical name as the supplied path is just a prefix to the gac not
27407         the direct path to it.
27408         
27409 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
27410
27411         * reflection.c: make the token for a created method match
27412         the token of the MethodBuilder it was created from
27413         (IKVM requires this behaviour now).
27414
27415 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
27416
27417         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
27418         reflection.c, socket-io.c: leak fixes.
27419
27420 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
27421
27422         * icall.c: handle sentinel pos in vararg methods in position different
27423         from 0.
27424
27425 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27426
27427         * culture-info-tables.h: freshly generated.
27428
27429 2004-06-09  Martin Baulig  <martin@ximian.com>
27430
27431         * loader.c (mono_get_method_constrained): Call `mono_class_init
27432         (constrained_class)'.   
27433
27434 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
27435
27436         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
27437         any methods. Fixes #59629.
27438
27439 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27440
27441         * culture-info-tables.h: reflecting locale-builder updates.
27442
27443 2004-06-08  Dick Porter  <dick@ximian.com>
27444
27445         * object.h:
27446         * locales.c: Fixed compile warnings, including a real bug in
27447         CompareInfo_internal_compare.
27448         
27449 2004-06-08  Dick Porter  <dick@ximian.com>
27450
27451         * locales.c
27452         (ves_icall_System_Globalization_CompareInfo_internal_index):
27453         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
27454         Double-check the resuls of usearches, because ICU currently
27455         ignores most of the collator settings here.  Fixes bug 59720.
27456         
27457 2004-06-08  Dick Porter  <dick@ximian.com>
27458
27459         * locales.c
27460         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
27461         Fix memory leak and segfault-causing typo.  No idea how this one
27462         lasted so long without being noticed.
27463
27464 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
27465
27466         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
27467         any methods. Fixes #59629.
27468
27469 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27470
27471         * assembly.c:
27472         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
27473         own the critical section before). Removed dead code (that's done
27474         in the preload hook).
27475
27476         (mono_assembly_load_with_partial_name): call the preload hook.
27477
27478 2004-06-08  Martin Baulig  <martin@ximian.com>
27479
27480         * metadata.c (mono_metadata_signature_alloc): Default
27481         `sentinelpos' to -1.
27482
27483         * reflection.c (mono_image_get_array_token): Likewise.
27484
27485 2004-06-08  Martin Baulig  <martin@ximian.com>
27486
27487         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
27488
27489         * metadata.c (mono_metadata_parse_method_signature): When parsing
27490         a MethodDef which has VarArgs, set sentinelpos.
27491
27492         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
27493         `gint16' since we're using -1 for non-varargs methods.
27494
27495         * reflection.c
27496         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
27497         (method_encode_signature): Added varargs support.
27498         (method_builder_encode_signature): Likewise.
27499         (mono_image_get_varargs_method_token): New static method.
27500         (mono_image_create_method_token): New public method; this is
27501         called via an icall instead of mono_image_create_token() when
27502         calling a varargs method.       
27503
27504 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
27505
27506         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
27507
27508 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27509
27510         * culture-info-tables.h : Reflecting the latest locale-builder that
27511           fixed empty array representation ({} to {0}).
27512
27513 2004-06-07  Jackson Harper  <jackson@ximian.com>
27514
27515         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
27516         looking up extra gac paths. This allows MONO_GAC_PATH to act
27517         exactly like a prefix.
27518         
27519 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
27520
27521         * reflection.c (mono_reflection_type_from_name): Make a copy of the
27522         type name before modifying it. Fixes #59405.
27523
27524 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27525
27526         * culture-info.h: added fields for "all datetime patterns".
27527         * locales.c: (  ves_icall_System_Globalization_CultureInfo
27528           _construct_datetime_format ()): fill xxx_patterns fields.
27529         * object.h: added fields for "all datetime patterns" to
27530           MonoDateTimeFormatInfo.
27531         * culture-info-tables.h: reflecting locale-builder updates.
27532
27533 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
27534
27535         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
27536         the event has no add and remove methods. Fixes #59629.
27537
27538 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
27539
27540         * object.c: Fixed possible integer overflow when allocating large
27541         strings.
27542
27543 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
27544
27545         * culture-info-tables.h: reflecting locale-builder updates.
27546
27547 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
27548
27549         * culture-info-tables.h: reflecting locale-builder updates.
27550
27551 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
27552
27553         * culture-info-tables.h: reflecting locale-builder updates.
27554
27555 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
27556
27557         * threads.c: Made Thread.Sleep abortable.
27558
27559 2004-06-02  Martin Baulig  <martin@ximian.com>
27560
27561         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
27562
27563         * debug-mono-symfile.h: Bumped symbol file version number to 37.
27564
27565 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
27566
27567         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
27568
27569 2004-05-30  Jackson Harper  <jackson@ximian.com>
27570
27571         * reflection.c: Do not hardcode assembly versions or public key
27572         tokens anymore. All of this except the corlib section was dead
27573         code anyways.
27574         
27575 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
27576
27577         * object.c (mono_runtime_invoke_array): Automatically create boxed
27578         objects for byref valuetypes if needed. Fixes #59300.
27579         
27580         * object.c (mono_method_return_message_restore): Handle 
27581         MONO_TYPE_OBJECT as well.
27582
27583 2004-05-28  Jackson Harper  <jackson@ximian.com>
27584
27585         * reflection.c: The modified type encoding was causing build
27586         problems. Reverted for now.
27587         
27588 2004-05-28  Jackson Harper  <jackson@ximian.com>
27589
27590         * reflection.c/h: Take an assembly ref so that we dont create
27591         fully qualified names when encoding types in the same assembly as
27592         the custom attribute being emitted.
27593         * appdomain.c: Increment version number.
27594         
27595 2004-05-26  Duncan Mak  <duncan@ximian.com>
27596
27597         * icall.c
27598         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
27599         Set the full version number (major, minor, build, revision).
27600
27601 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
27602
27603         * marshal.c (emit_struct_conv): increment src/dst after blit
27604         (mono_marshal_get_managed_wrapper,
27605         mono_marshal_get_native_wrapper): make sure we have marshalling
27606         info before marshalling params (info computation affects
27607         blittable)
27608
27609         * class.c (class_compute_field_layout): correctly deal with
27610         blittable
27611         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
27612         value types (as per what windows dows by default)
27613         (mono_class_setup_mono_type): System.ValueType is blittable
27614         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
27615         blittable
27616
27617         * marshal.c (mono_marshal_load_type_info): flag types  as
27618         non-blittable if the native layout doesn't match the managed
27619         layout
27620
27621 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27622
27623         * appdomain.c: don't add stuff in the private search path that is
27624         above the application base. If application base is not set, there's
27625         no private search path.
27626
27627 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
27628
27629         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
27630         byref struct arguments in native->managed marshalling.
27631
27632 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
27633
27634         * marshal.c (mono_marshal_get_runtime_invoke): correctly
27635         cache methods using signature (special case for methods
27636         that are value type or string class)
27637         
27638         * image.c (mono_image_close): clean up allocated GSList's
27639         in runtime_invoke_cache.
27640
27641 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27642
27643         * mono-config.c: set the correct path for mono_cfg_dir on windows when
27644         there's no MONO_CFG_DIR environment variable defined.
27645
27646 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27647
27648         * threads.c: windows version must be >= 0x0500 to include OpenThread.
27649
27650 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
27651
27652         * threadpool.c: Really wait for 500ms after the async call, even if the wait
27653           is interrumped.
27654         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
27655           before waiting for it, and call CloseHandle after the wait to unref it.
27656           This will make sure that handles are not disposed too early.
27657
27658 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27659
27660         * appdomain.c:
27661         * appdomain.h:
27662         * icall.c: removed
27663         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
27664         needed now.
27665
27666         * object.c: se the application_base only for the domain that runs
27667         Main. Fixes bug #59216,
27668
27669 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27670
27671         * appdomain.c:
27672         * object.c: only the domain in which Main is run have
27673         SetupInformation.ConfigurationFile set, so moved a few lines from
27674         appdomain.c to object.c.
27675
27676 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27677
27678         * appdomain.c: we tried to load [name].(dll|exe), but according
27679         to bug #57710, we must also try [culture]/[name].(dll|exe) and
27680         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
27681         There's a test case attached to bug #58922.
27682
27683 2004-05-27  Dick Porter  <dick@ximian.com>
27684
27685         * icall.c:
27686         * file-io.c: Implemented icalls for locking and unlocking regions
27687         in a file.
27688         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
27689         FALSE on error (fixes both compiler warning and real bug.)
27690
27691 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
27692
27693         * culture-info-tables.h: reflecting locale-builder updates.
27694
27695           (Added missing ChangeLog entry for 05/26)
27696
27697 2004-05-27  Jackson Harper  <jackson@ximian.com>
27698
27699         * locales.c: Fix some cut and paste errors.
27700         
27701 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27702
27703         * mono-config.c: set the correct path for config. directory on windows.
27704
27705 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
27706
27707         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
27708           on win32.
27709
27710 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
27711
27712         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
27713         from pinvoke functions.
27714         
27715         * marshal.c (mono_ftnptr_to_delegate): Implement this.
27716
27717 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
27718
27719         * culture-info-tables.h: reflecting locale-builder updates.
27720
27721 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
27722
27723         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
27724         #59086.
27725
27726 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
27727
27728         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
27729         * icall.c: Modified icalls for RNG.
27730         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
27731         Windows (CryptoAPI).
27732
27733 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
27734
27735         * locales.c: Fix build.
27736
27737 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
27738
27739         * culture-info-tables.h: reflecting locale-builder updates.
27740
27741 2004-05-25  Jackson Harper  <jackson@ximian.com>
27742
27743         * locales.c: When creating the current culture use the $LANGs
27744         specific culture. So DateTimeFormat and NumberFormat entries are created.
27745         
27746 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
27747
27748         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
27749         a char array as parameter.
27750
27751 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
27752
27753         * image.c: In mono_image_open(), always use an absolute path name to
27754           look for already loaded images.
27755
27756 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
27757
27758         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
27759         missing in the windows build (like older cygwin include files).
27760
27761 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
27762
27763         * icall.c: Fixed check for possible integer overflow in Buffer_
27764         BlockCopy icall. Replaced comments style // by /* */.
27765
27766 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
27767
27768         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
27769         
27770         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
27771         check after MONO_VTADDR. Fixes pinvoke2.exe.
27772
27773         * marshal.h marshal.c metadata.h: Add beginnings of support for
27774         ftnptr -> delegate marshalling.
27775
27776 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
27777
27778         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
27779         * threads.c: Fix warnings.
27780
27781 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
27782
27783         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
27784         * icall.c: Registered icalls for Suspend and Resume.
27785         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
27786           Thread.Abort.
27787         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
27788         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
27789         * process.c: Use WaitForSingleObjectEx.
27790         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
27791           checkpoints.
27792         * threads.c, threads.h: Make use of new Ex wait methods. Improved
27793           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
27794           for Suspend and Resume. Added new mono_thread_stop, used for stoping
27795           background threads. Added basic support for Abort in Windows.
27796           Start new threads using a managed delegate invoke wrapper. This wrapper
27797           has an interruption checkpoint that is needed since an interruption
27798           can be requested before the thread leaves the unmanaged code that starts 
27799           the thread.
27800         * marshal.c: Added interruption checkpoint after every native call, and
27801           also before managed calls for wrappers called from unmanaged code to
27802           go into managed code.
27803         * object.h: Added new field in MonoThread to keep track of interruption
27804           requests.
27805
27806 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
27807
27808         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
27809         calls.
27810
27811 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27812
27813         * appdomain.c:
27814         * assembly.c:
27815         * gc.c:
27816         * locales.c:
27817         * mono-config.c:
27818         * rand.c: getenv -> g_getenv (windows!)
27819
27820         * process.c: complete_path is also used on non-windows platforms.
27821
27822 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27823
27824         * icall.c: new signature for Process_Start.
27825
27826         * process.[ch]: new signature for Process_Start. If we're on windows
27827         and UseShellExecute is false, we have to search for the program by
27828         ourselves if we don't get a full path.
27829
27830 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
27831
27832         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
27833         marshalling and call CleanUpNativeData if needed. Fixes #58646.
27834
27835 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27836
27837         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
27838         Fixes bug #58373.
27839
27840 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27841
27842         * process.c: use double quotes to quote program name and arguments on
27843         windows. Fixes bug #58575.
27844
27845 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27846
27847         * file-io.c: don't return "." and ".." when using windows Find*File.
27848
27849 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
27850
27851         * marshal.c: Don't pass wrappers to message init because method 
27852         addressed used to lookup metadata. part of remoting[2|3] fix.
27853
27854 2004-05-15  Jackson Harper  <jackson@ximian.com>
27855
27856         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
27857         path is essentially the same as MONO_PATH except that it points to
27858         GACs instead of lib directories.
27859         * loader.h: The user gac is gone so we dont need function to
27860         enable/disable it.
27861         * mono-config.c: user gac option is now gone.
27862         
27863 2004-05-15  Jackson Harper  <jackson@ximian.com>
27864
27865         * culture-info.h: Make defines more consistent, add calendar data
27866         to the culture info table.
27867         * culture-info-tables.h: Add basic calendar data. Basically
27868         everyone gets default gregorian until all the data is
27869         updated.
27870         * locales.c: Use the new consistent defines. Set calendar data for
27871         culture info objects.
27872         * object.h: add a field for calendar data to CultureInfo
27873         
27874 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
27875
27876         * image.c: image->runtime_invoke_cache is keyed on signatures now.
27877         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
27878         a signature.
27879         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
27880         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
27881         an extra param that is the pointer of the method to invoke. The IL for
27882         the invoke method is no longer specific to the method, but to the
27883         signature of the method. Thus, we can share the same code for multiple
27884         methods. This reduces the number of methods that have to be compiled.
27885
27886 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
27887
27888         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
27889
27890         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
27891
27892         * icall.c: Optimize Buffer.BlockCopy.
27893
27894 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27895
27896         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
27897         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
27898         quote). Changed them to "MMMM yyyy".
27899
27900 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
27901
27902         * rand.c
27903         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
27904
27905 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
27906
27907         * reflection.h: Updated after changes to managed structures.
27908
27909         * appdomain.c: Bump corlib version.
27910
27911 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27912
27913         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
27914         windows.
27915
27916 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27917
27918         * Makefile.am: link to ../os/libmonoos.la on windows.
27919
27920         * assembly.c:
27921                 -If MONO_DEBUG, warn about non-existing directories in
27922                 MONO_PATH.
27923                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
27924                 compile time variable.
27925                 -Removed init_default_path and call mono_set_rootdir from
27926                 libmonoos.a instead (windows only).
27927
27928         * assembly.h: declare mono_assembly_getrootdir().
27929
27930         * domain.c:
27931         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
27932
27933         * loader.c: s/getenv/g_getenv/
27934
27935 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
27936
27937         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
27938
27939         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
27940
27941         * metadata.h: Add new marshalling conversions.
27942
27943         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
27944         function.
27945
27946         * reflection.c (mono_reflection_get_type): Lookup the type in all
27947         modules of a multi-module assembly. Fixes #58291.
27948
27949 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
27950
27951         * threads.c: Before aborting a background, set the StopRequested
27952         state.  This avoids throwing the Abort exception.
27953         In mono_thread_manage, don't continue with the shutdown until all
27954         aborted threads have actually stopped.
27955
27956 2004-05-10  Jackson Harper  <jackson@ximian.com>
27957
27958         * locales.c: Remove the modifier from culture names.
27959         
27960 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27961
27962         * Makefile.am: monosn is not installed any more. It has been deprecated
27963         in favor of sn.
27964
27965 2004-05-07  Jackson Harper  <jackson@ximian.com>
27966
27967         * locales.c
27968         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
27969         Fix array construction, add bailout if the length is 0.
27970
27971 2004-05-07  Dick Porter  <dick@ximian.com>
27972
27973         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
27974         machine doesn't have a DNS entry.  Patch by Urs Muff
27975         (umuff@quark.com), fixes bug 57928.
27976
27977 2004-05-06  Jackson Harper  <jackson@ximian.com>
27978
27979         * reflection.c: Handle null PublicTokens properly. alloc mem for
27980         assembly names culture so we dont crash when freeing it.
27981         
27982 2004-05-06  Jackson Harper  <jackson@ximian.com>
27983
27984         * assembly.c: Check the usergac when loading with partial names.
27985         
27986 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
27987
27988         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
27989         does nothing for now (not required for Linux/Windows) but the class
27990         library can call it (and a newer or modified runtime could need it).
27991         * icall.c: Registred icall.
27992
27993 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27994
27995         * loader.c: prints a message on module loading error we set MONO_DEBUG
27996         environment variable.
27997
27998 2004-05-05  Jackson Harper  <jackson@ximian.com>
27999
28000         * appdomain.c: Handle PublicKeyToken=null properly.
28001         
28002 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
28003
28004         * environment.c|h: Added icall ves_icall_System_Environment_
28005         GetOSVersionString to get the current OS version as a string.
28006         * icall.c: Registred icall.
28007
28008 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
28009
28010         * object.c: in mono_object_get_virtual_method(), take into account that
28011         non-virtual methods don't have a slot in the vtable. Check needed when
28012         the object is a proxy.
28013
28014 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
28015
28016         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
28017         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
28018
28019         * object.c (mono_class_compute_gc_descriptor): Fix warning.
28020
28021         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
28022         passed when a valuetype is expected.
28023
28024         * object.c (mono_unhandled_exception): Only set the exit code if the
28025         exception happens in the main thread. Fixes thread5.exe.
28026
28027         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
28028         invalid names. Fixes #58047.
28029
28030 2004-05-03  Jackson Harper  <jackson@ximian.com>
28031
28032         * assembly.c: This line was committed accidently and is unneeded.
28033         
28034 2004-05-03  Jackson Harper  <jackson@ximian.com>
28035
28036         * icall.c: Add new icall for Assembly::LoadWithPartialName
28037         * assembly.c/.h: new function that probes the GAC to load partial
28038         assembly names by Paolo Molaro.
28039         
28040 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28041
28042         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
28043         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
28044         (type_get_fully_qualified_name): Added PublicKeyToken when building a
28045         full type name.
28046
28047 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28048
28049         * appdomain.c: fixed check for 'neutral' culture and removed warning.
28050         * reflection.c: fix bug when parsing a full type name and Version is not
28051         the last thing in the string.
28052
28053 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
28054
28055         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
28056         crashes when it is freed.
28057
28058 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28059
28060         * assembly.c: print the compat warning to stderr.
28061
28062 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
28063
28064         * assembly.c (mono_assembly_load_references): Add a compatibility
28065         hack to run old applications that might be still referencing the
28066         3300-based assemblies, only do this for System.xxx.
28067
28068 2004-05-01  Jackson Harper  <jackson@ximian.com>
28069
28070         * appdomain.c: If the culture is neutral we set it to "".
28071         
28072 2004-04-29  Jackson Harper  <jackson@ximian.com>
28073
28074         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
28075
28076 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
28077  
28078         * string-icalls.c: added low overhead function for copying chars
28079         * icall.c: added needed icall for the above function
28080  
28081 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28082
28083         * icall.c: fix return value of get_global_assembly_cache.  Implemented
28084         Environment.GetLogicalDrives.
28085
28086 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
28087
28088         * rand.c: try and talk to egd or prngd
28089         for random bytes if opening devices fail.
28090
28091 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
28092
28093         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
28094         alignment for the type using the native alignment of its members 
28095         instead of using klass->min_align.
28096
28097         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
28098
28099 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28100
28101         * file-io.c:
28102         * socket-io.c: added check for sys/aio.h.
28103
28104 2004-04-28  Dick Porter  <dick@ximian.com>
28105
28106         * threads.c: Don't abort a thread thats already aborting, when
28107         terminating everything.
28108
28109 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28110
28111         * icall.c: added 2 new async calls for Socket.
28112
28113         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
28114         IO on *nix systems.
28115
28116         * threadpool.c: removed unused variable.
28117
28118 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
28119
28120         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
28121
28122 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
28123
28124         * locales.c: put back string_invariant_tolower () and
28125         string_invariant_toupper ().
28126
28127 2004-04-26 David Waite <mass@akuma.org>
28128
28129         * file-io.h:
28130         * socket-io.h:
28131         * threads.h:
28132         * unicode.h: remove comma from end of enumeration declarations
28133
28134 2004-04-26 David Waite <mass@akuma.org>
28135
28136         * debug-mono-symfile.h:
28137         * decimal.c:
28138         * mono_debug.h:
28139         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
28140
28141
28142 2004-04-26  Jackson Harper  <jackson@ximian.com>
28143
28144         * appdomain.c: Increment version number.
28145         
28146 2004-04-26  Jackson Harper  <jackson@ximian.com>
28147
28148         * appdomain.c: Set assembly references public token value when
28149         PublicKeyToken is specified, not the hash_value. Free public token
28150         values when free assembly name data. Previously the public key
28151         token was hex decoded, however we are using hex encoded public key
28152         tokens, so this is not neccasary.
28153         * assembly.c: Lookup assemblies in the gac if their public token
28154         value is set. Add function to allow enabling user gac
28155         lookups. Specify whether or not the assembly was loaded from the
28156         GAC. Compare full assembly names when checking the cache for
28157         assemblies (Temporarily disabled see comment in code). Remove
28158         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
28159         specifies trace-loader they get extra info to stdout on the
28160         loading of assemblies.
28161         * image.h: Add a field for an assembly references public token
28162         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
28163         whether an assembly has been loaded from the GAC.
28164         * image.c: Remove a corlib -> mscorlib name mapping.
28165         * loader.h: Add function to enable/disable the user gac.
28166         * mono-config.c: Check if the usergac is enabled in the config
28167         file.
28168         * icall.c: New icall to determine whether or not an assembly has
28169         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
28170         * tabldefs.h: Add constant for assemblyref flag that specifies a
28171         full public key is used instead of a public token.
28172         * reflection.c: Remove mscorlib -> corlib mappings. Set
28173         PublicTokenValue instead of hash value. This value is a hex
28174         string so it does not need to be expanded.
28175
28176 2004-04-26  Martin Baulig  <martin@ximian.com>
28177
28178         * mono-debug-debugger.c (mono_debugger_initialize): Set
28179         `mono_debugger_initialized' before calling mono_debug_lock().
28180
28181 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
28182
28183         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
28184           InternalToUpper/InternalToLower.
28185         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
28186           removed invariant culture shortcut.  This is now done in managed code.
28187         * locales.c: (string_invariant_toupper/tolower) removed.
28188
28189 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28190
28191         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
28192         Added Poll internal call.
28193
28194         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
28195         call for Poll. Select was too heavy for polling a single socket.
28196
28197         * threadpool.[ch]: added mono_threadpool_cleanup.
28198         * threads.c: use it. Don't use Thread_Abort on windows.
28199
28200 2004-04-23  Martin Baulig  <martin@ximian.com>
28201
28202         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
28203
28204 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
28205
28206         * icall.c: Registred new icalls for key pair protection and added an
28207         icall for Environment.GetFolderPath on Windows.
28208         * security.c|h: Added new icalls for key pair protection.
28209
28210 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28211
28212         * socket-io.c: don't display the non-supported family warning for known
28213         families. Now this is not displayed on windows when checking support
28214         for IPv4/IPv6.
28215
28216 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28217
28218         * class.c: don't display the layout warning for static fields.
28219
28220 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
28221
28222         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
28223         * locales.c, locales.h: Added new icalls for culture-specific
28224         Char.ToLower and Char.ToUpper.
28225
28226 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28227
28228         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
28229         by David Waite.
28230
28231 2004-04-20  Martin Baulig  <martin@ximian.com>
28232
28233         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
28234         of the type name before passing it to mono_reflection_type_from_name().
28235
28236 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
28237
28238         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
28239         encodings here. Fixes #56965.
28240
28241 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
28242
28243         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
28244         fix test on strstr result not that I can see anything that
28245         relies on the result.
28246
28247 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
28248
28249         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
28250         Fixes #57081.
28251
28252         * marshal.c (mono_marshal_get_string_encoding): New helper function.
28253
28254         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
28255         function to determine which marshalling to use for strings. Fixes
28256         #56965.
28257
28258         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
28259
28260         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
28261
28262 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
28263
28264         * icall.c: #include mono-config.h
28265
28266 2004-04-15  Jackson Harper  <jackson@ximian.com>
28267
28268         * culture-info-tables.h: Fix date formats for en-US culture.
28269         
28270 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
28271
28272         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
28273         ThreadPool.SetMinThreads.
28274         * threadpool.c: Implemented ThreadPool.GetMinThreads and
28275         ThreadPool.SetMinThreads.
28276
28277 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
28278
28279         * mono-config.c: also load the .config file in the directory
28280         where the assembly was found.
28281
28282 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
28283
28284         * assembly.c: load per-assembly config files.
28285         * icall.c: decrapified code to get the config dir and moved to
28286         mono-config.c.
28287         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
28288         per-assembly config files. When doing a dll map lookup give precedence
28289         to the per-assembly data.
28290
28291 2004-04-14  Martin Baulig  <martin@ximian.com>
28292
28293         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
28294         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
28295         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
28296
28297         * mono-debugger-debugger.c: While the debugger is locked, remember
28298         whether the symbol tables have changes and send one single
28299         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
28300
28301 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
28302
28303         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
28304
28305         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
28306         function.
28307
28308         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
28309         account when marshalling string arrays. Fixes #56965.
28310
28311 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
28312
28313         * icall.c: Add new icalls mapping for security.
28314         * security.c|h: Add internal calls for WindowsIdentity,
28315         WindowsImpersonationContext and WindowsPrincipal.
28316
28317 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
28318
28319         * class.c: Added comment to ensure the System.MonoDummy class
28320         is removed when no longer necessary
28321
28322 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
28323
28324         * appdomain.c: Pass arguments to the bootstraping exceptions to
28325         minimize JITed methods at boot
28326
28327         * metadata.c (mono_exception_from_name_two_strings): Allow for the
28328         second string to be null.
28329
28330         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
28331         Change the protocol to minimize the JIT methods at startup.  Now
28332         it Returns the internal codepage, if the value of "int_code_page"
28333         is 1 at entry, and we can not compute a suitable code page
28334         number, returns the code page as a string.
28335
28336 2004-04-13  Jackson Harper  <jackson@ximian.com>
28337
28338         * culture-info-tables.h: Fix number of decimal digits for all
28339         english locales.
28340
28341 2004-04-13  Jackson Harper  <jackson@ximian.com>
28342
28343         * icall.c: Clairfy out of sync error message. It is not always
28344         your corlib that is out of sync.
28345
28346 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
28347
28348         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
28349         properties when only the set accessor is overriden. Fixes #55874.
28350
28351 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
28352
28353         * assembly.c (mono_assembly_load_references): Make this thread safe.
28354         Fixes #56327.
28355
28356 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
28357
28358         * monosn.c: Add missing initialization calls.
28359
28360 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
28361
28362         * locales.c:
28363         ves_icall_System_Globalization_CultureInfo_construct_number_format
28364         Fix g_assert so it compiles on fussier compilers re int/ptr
28365         mismatch
28366
28367 2004-04-08  Dick Porter  <dick@ximian.com>
28368
28369         * socket-io.h:
28370         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
28371         53992.  Also rearrange the code so that the internal calls return
28372         an error value and exceptions are thrown from managed code.
28373
28374         * icall.c: Add type info to the socket icalls.
28375
28376 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28377
28378         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
28379         owes me a beer.
28380
28381 2004-04-07  Martin Baulig  <martin@ximian.com>
28382
28383         * class.c (mono_class_from_generic_parameter): Don't default
28384         `klass->parent' to `mono_defaults.object_type'.
28385
28386 2004-04-07  Martin Baulig  <martin@ximian.com>
28387
28388         * reflection.c (mono_reflection_initialize_generic_parameter): Set
28389         `param->pklass->reflection_info'.       
28390
28391 2004-04-07  Jackson Harper  <jackson@ximian.com>
28392
28393         * culture-info-tables.h: Fix date separator symbol.
28394         
28395 2004-04-07  Martin Baulig  <martin@ximian.com>
28396
28397         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
28398         from System.Type to System.MonoType.
28399
28400 2004-04-07  Martin Baulig  <martin@ximian.com>
28401
28402         * reflection.h
28403         (MonoReflectionGenericParam): Added `has_reference_type' and
28404         `has_value_type' fields.
28405
28406         * reflection.c (mono_image_get_generic_param_info): Encode the
28407         correct flags if we have the `class' or `struct' constraint.
28408
28409 2004-04-07  Martin Baulig  <martin@ximian.com>
28410
28411         * reflection.h
28412         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
28413
28414 2004-04-07  Jackson Harper  <jackson@ximian.com>
28415
28416         * appdomain.c: Revert extra patches, just wanted to bump the
28417         version number.
28418         
28419 2004-04-07  Jackson Harper  <jackson@ximian.com>
28420
28421         * Makefile.am: Add culture-info private headers.
28422         * icall.c: Add new icalls for contructing locales.
28423         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
28424         * locales.h: Declare new culture info construction methods.
28425         * object.h: Add new fields used to avoid the CultureMap to
28426         MonoCultureInfo.
28427         * culture-info.h: Definition of structs used in the culture info
28428         tables.
28429         * culture-info-tables.h: Autogenerated tables that contain culture
28430         info data. This file was generated with the locale-builder tool.
28431         * appdomain.c: Incement corlib version number.
28432         
28433 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
28434
28435         * appdomain.c: (mono_runtime_init) move mono_thread_init
28436         to before mono_object_new calls so critical sections
28437         are initialized before use.
28438
28439 2004-04-07  Martin Baulig  <martin@ximian.com>
28440
28441         * icall.c
28442         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
28443         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
28444         (ves_icall_MonoGenericParam_initialize): Removed.
28445         (monogenericparam_icalls): Removed.
28446         (generictypeparambuilder_icalls): Added new table for
28447         System.Reflection.Emit.GenericTypeParameterBuilder.
28448
28449         * reflection.c
28450         (mono_reflection_define_generic_parameter): Removed.
28451         (mono_reflection_initialize_generic_parameter): This is now called
28452         from GenericTypeParameterBuilder's .ctor.
28453
28454 2004-04-06  Martin Baulig  <martin@ximian.com>
28455
28456         * class.c (mono_class_init): Don't inflate nested classes in a
28457         generic instance.
28458         (mono_type_get_name_recurse): Include the generic arguments for
28459         generic instances and generic type declarations.
28460         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
28461         (_mono_class_get_instantiation_name): Removed.
28462         (mono_class_create_generic): Always use `gklass->name' as our name.
28463
28464         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
28465
28466         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
28467         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
28468         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
28469         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
28470         closed generic methods here.
28471
28472         * reflection.c
28473         (mono_reflection_generic_inst_get_nested_types): Removed.
28474         (inflate_mono_method): Copy the generic parameters from the
28475         MonoMethodHeader into out MonoGenericMethod.
28476
28477 2004-04-06  Martin Baulig  <martin@ximian.com>
28478
28479         * row-indexes.h
28480         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
28481
28482         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
28483
28484         * reflection.c (build_compressed_metadata): If we have any entries
28485         in the GenericParam, MethodSpec or GenericParamConstraint tables,
28486         set the header version to 1.1.
28487
28488 2004-04-06  Martin Baulig  <martin@ximian.com>
28489
28490         * class.c (mono_class_init): If we're a generic instance,
28491         initialize our nested classes, too.
28492         (_mono_class_get_instantiation_name): Deal with the new `!%d'
28493         suffix. 
28494
28495 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28496
28497         * process.c: quote the argument passed to the shell on windows.
28498
28499 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
28500
28501         * threads.c (mono_alloc_special_static_data): Allow this to be
28502         called during startup.
28503
28504 2004-04-02  Martin Baulig  <martin@ximian.com>
28505
28506         * icall.c
28507         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
28508
28509 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
28510
28511         * icall.c: Fix build.
28512
28513 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
28514
28515         * Makefile.am: Added security.c|h.
28516         * icall.c: Added icall for get_UserName;
28517         * security.c: New file for security related icalls. Added function
28518         get_UserName for System.Environment (fix #56144).
28519         * security.h: New. Header file for security.c
28520
28521 2004-04-02  Dick Porter  <dick@ximian.com>
28522
28523         * icall.c: Deleted the icalls that were obsoleted some time ago
28524         by the ICU string code, and which were mixed into the icall
28525         rearranging.  Fixes bug 55969.
28526
28527         * string-icalls.h: 
28528         * string-icalls.c: Deleted the code that those icalls reference.
28529
28530 2004-04-01  Martin Baulig  <martin@ximian.com>
28531
28532         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
28533
28534         * class.c (mono_class_from_generic_parameter): Don't set 
28535         TYPE_ATTRIBUTE_INTERFACE.
28536         (my_mono_class_from_generic_parameter): Likewise.
28537
28538 2004-04-01  Martin Baulig  <martin@ximian.com>
28539
28540         * loader.c (find_method): Added an optional `MonoClass *ic'
28541         argument to search in a specific interface.
28542         (mono_get_method_constrained): New public function.
28543
28544 2004-04-01  Martin Baulig  <martin@ximian.com>
28545
28546         * reflection.c (mono_image_get_generic_field_token): Use the
28547         `handleref' cache here.
28548
28549 2004-04-01  Martin Baulig  <martin@ximian.com>
28550
28551         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
28552
28553         * reflection.c (create_generic_typespec): Use the `typespec' hash
28554         here, not the `typeref' one.    
28555
28556 2004-04-01  Martin Baulig  <martin@ximian.com>
28557
28558         * class.c (mono_class_inflate_generic_type): Moved the
28559         functionality into a new static inflate_generic_type() which
28560         returns NULL if it didn't do anything.  Only increment the
28561         `mono_stats.inflated_type_count' if we actually inflated
28562         something.
28563         (mono_class_get_full): Check the classes type to see whether we
28564         need to inflate it; also inflate MONO_TYPE_(M)VAR.
28565
28566 2004-04-01  Jackson Harper  <jackson@ximian.com>
28567
28568         * reflection.c: Set culture for assembly references.
28569         
28570 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
28571
28572         * reflection.[ch], icall.[ch], Fix support for pinning variables.
28573
28574 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28575
28576         * assembly.c:
28577         (do_mono_assembly_open): the critical section also covers
28578         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
28579
28580 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28581
28582         * threads.c:
28583         (mono_manage_threads): abort the background threads when finishing.
28584         Fixes bug #47232.
28585
28586 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28587
28588         * gc.c: only close the done_event handle if there was no timeout.
28589         C-ified comments.
28590
28591 2004-03-30  Martin Baulig  <martin@ximian.com>
28592
28593         * icall.c (icall_entries): It's called "System.Activator", not
28594         "System.Activation".    
28595
28596 2004-03-30  Martin Baulig  <martin@ximian.com>
28597
28598         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
28599         (mono_class_create_from_typespec): Likewise.
28600
28601 2004-03-30  Martin Baulig  <martin@ximian.com>
28602
28603         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
28604         `has_ctor_constraint' and `initialized'.
28605
28606 2004-03-30  Martin Baulig  <martin@ximian.com>
28607
28608         * reflection.c (encode_new_constraint): New static function to add
28609         the constructor constraint attribute to a type parameter.
28610         (encode_constraints): Call encode_new_constraint() if necessary.
28611
28612         * reflection.h
28613         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
28614
28615         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
28616         
28617 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
28618
28619         * reflection.c, icall.c: add support for pinning variables. 
28620
28621 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
28622
28623         * marshal.c (mono_marshal_get_managed_wrapper):
28624         init bool local with zero rather than null.
28625
28626 2004-03-29  Martin Baulig  <martin@ximian.com>
28627
28628         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
28629         the "official" behavior here.
28630         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
28631
28632 2004-03-29  Martin Baulig  <martin@ximian.com>
28633
28634         * icall.c: Reflect latest API changes.
28635
28636 2004-03-29  Martin Baulig  <martin@ximian.com>
28637
28638         * loader.c (mono_get_method_from_token): Also call
28639         mono_metadata_load_generic_params () for abstract and interface
28640         methods; replace the type arguments in the method signature with
28641         the ones which are loaded from the metadata.
28642
28643 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
28644
28645         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
28646         of the lock is not the current thread. MS.NET don't do it, in spite of
28647         what the documentation says. See bug #56157.
28648
28649 2004-03-28  Martin Baulig  <martin@ximian.com>
28650
28651         * class.c (mono_class_init): Don't call init_properties() and
28652         init_events() for generic instances; set `prop->parent' when
28653         inflating properties.
28654
28655         * reflection.c (mono_generic_inst_get_object): Call
28656         `mono_class_init (ginst->klass)'.
28657         (mono_type_get_object): Only create a MonoGenericInst if your
28658         generic type is a TypeBuilder.
28659         (do_mono_reflection_bind_generic_parameters): Only set
28660         `ginst->is_dynamic' if our generic type is a TypeBuilder.
28661
28662 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
28663
28664         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
28665         Fixes #56091.
28666
28667 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28668
28669         * icall.c: added Kill_internal icall.
28670         * process.[ch]: added Kill_internal icall.
28671
28672 2004-03-25  Martin Baulig  <martin@ximian.com>
28673
28674         * class.h (MonoStats): Added `generic_instance_count',
28675         `inflated_method_count', `inflated_type_count' and
28676         `generics_metadata_size'.       
28677
28678 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28679
28680         * reflection.c: no warnings now.
28681
28682 2004-03-25  Martin Baulig  <martin@ximian.com>
28683
28684         * class.c (mono_class_get_full): New public function; does a
28685         mono_class_get(), but also takes a `MonoGenericContext *'.
28686
28687         * loader.c (mono_field_from_memberref): Renamed to
28688         `field_from_memberref', made static and added `MonoGenericContext *'
28689         argument.
28690         (mono_field_from_token): Added `MonoGenericInst *' argument.
28691         (method_from_memberef): Likewise.
28692         (mono_get_method_from_token): Likewise.
28693         (mono_get_method_full): New public function; does a
28694         mono_get_method(), but also takes a `MonoGenericContext *'.
28695
28696         * verify.c (mono_method_verify): Get the method's generic context
28697         and pass it to mono_field_from_token(), mono_get_method_full() and
28698         mono_class_get_full().
28699
28700 2004-03-25  Martin Baulig  <martin@ximian.com>
28701
28702         * class.c (mono_class_inflate_generic_type): Take a
28703         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
28704         `MonoGenericMethod *'.
28705
28706 2004-03-25  Martin Baulig  <martin@ximian.com>
28707
28708         * loader.h (MonoMethodInflated): Store the MonoGenericContext
28709         instead of the MonoGenericMethod here.
28710
28711 2004-03-25  Martin Baulig  <martin@ximian.com>
28712
28713         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
28714         each time we create a new MonoGenericInst, we also create a new
28715         context which points back to us.
28716
28717         * class.c (inflate_method): Use `ginst->context' instead of
28718         creating a new context.
28719
28720         * loader.c (method_from_memberref): Use
28721         `klass->generic_inst->context' instead of creating a new context.
28722
28723 2004-03-25  Martin Baulig  <martin@ximian.com>
28724
28725         * class.h (MonoGenericContext): New struct.
28726         (MonoGenericMethod): Removed `generic_inst'.
28727
28728         * class.c (mono_class_inflate_generic_method): Take a
28729         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
28730
28731 2004-03-25  Martin Baulig  <martin@ximian.com>
28732
28733         * loader.h (MonoMethodInflated): New typedef.
28734
28735         * metadata.h (MonoMethodSignature): Removed `gen_method', make
28736         `generic_param_count' consume just 30 bits, added `is_inflated'
28737         and `has_type_parameters' flags (one bit each).
28738
28739         * class.c (mono_class_inflate_generic_method): Create a
28740         MonoMethodInflated instead of a MonoMethodNormal and set
28741         `is_inflated' in the method signature.
28742
28743         * class.h (MonoGenericMethod): Removed `generic_method'.
28744
28745 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
28746
28747         * image.c: Make sure the name of a MonoImage is always an absolute path.
28748           This fixes bug #54415.
28749
28750 2004-03-24  Martin Baulig  <martin@ximian.com>
28751
28752         * class.c (mono_class_setup_vtable): If we're a generic instance,
28753         use our generic type's vtable size.
28754
28755 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
28756
28757         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
28758         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
28759         problems.
28760
28761 2004-03-23  Martin Baulig  <martin@ximian.com>
28762
28763         * class.h (MonoDynamicGenericInst): Added `int count_events' and
28764         `MonoEvent *events'.
28765
28766         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
28767         (typebuilder_icalls): Added "get_event_info"; calls
28768         mono_reflection_event_builder_get_event_info(). 
28769
28770         * reflection.c (mono_reflection_generic_inst_initialize): Added
28771         `MonoArray *events'.
28772         (mono_reflection_event_builder_get_event_info): New function.
28773
28774 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
28775
28776         * object.h: add mono_type_initialization_init
28777
28778         * object.c (mono_runtime_class_init): 
28779         implement class constructor synchronization rules
28780         to cope with threading issues.  
28781         add mono_type_initialization_init
28782
28783         * appdomain.c (mono_runtime_init): call 
28784         mono_type_initialization_init
28785
28786         * class.h: removing initializing field from MonoVTable
28787
28788 2004-03-23  Martin Baulig  <martin@ximian.com>
28789
28790         * class.c (my_mono_class_from_generic_parameter): Use
28791         `param->name' if it's not NULL. 
28792
28793 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
28794
28795         * class.c: do not insert non-virtual methods in the vtable.
28796         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
28797         that means the method is non-virtual. This never would have
28798         happened before.
28799
28800 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
28801
28802         * profiler.c: Added lock for accessing coverage_hash.
28803
28804 2004-03-22  Martin Baulig  <martin@ximian.com>
28805
28806         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
28807         `method->method->signature->generic_param_count != 0' to make it
28808         work for interface methods.
28809
28810 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28811
28812         * process.c: quote the string passed to the shell using g_shell_quote.
28813
28814 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28815
28816         * threads.c:
28817         (mono_threads_manage): don't remove the finalizer thread and self
28818         from the threads hash table so that mono_thread_manage can be called
28819         more than once.
28820
28821 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28822
28823         * process.c: quote the arguments when UseShellExecute is true. Fixes
28824         bug #55790.
28825
28826 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28827
28828         * threads.c: set mono_thread_detach as a cleanup routine for every
28829         thread. This way it's always executed upon thread termination, either
28830         aborted or finished normally. No more xsp hangs!
28831
28832 2004-03-17  Martin Baulig  <martin@ximian.com>
28833
28834         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
28835         `int count_nested' and a `MonoType **nested'.
28836
28837         * reflection.c (mono_reflection_bind_generic_parameters): Moved
28838         most of the functionality into a new static
28839         do_mono_reflection_bind_generic_parameters() and don't take a
28840         `MonoType *nested_in' argument any more.  Don't compute nested
28841         types here.
28842         (mono_reflection_generic_inst_get_nested_types): New public method
28843         to get nested types.
28844
28845         * class.c (mono_class_create_generic): Set `klass->nested_in' if
28846         we're a nested class.
28847
28848         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
28849         mono_reflection_generic_inst_get_nested_types() to compute the
28850         nested types.
28851
28852 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
28853
28854         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
28855         descriptive error message under windows.
28856         
28857 2004-03-17  Martin Baulig  <martin@ximian.com>
28858
28859         * class.c (dup_type): Added `const MonoType *original' argument;
28860         copy the attrs from the original type.
28861
28862 2004-03-17  Martin Baulig  <martin@ximian.com>
28863
28864         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
28865         `m->generic_inst_cache' here.
28866
28867 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
28868
28869         * exception.h exception.c: Add stack_overflow_exception.
28870
28871 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28872
28873         * threadpool.c:
28874         (overlapped_callback): call SetEvent *after* invoking the callback.
28875         No need to call CloseHandle.
28876
28877 2004-03-16  Martin Baulig  <martin@ximian.com>
28878
28879         * reflection.c (mono_image_get_fieldref_token): Take a
28880         `MonoReflectionField *' instead of a `MonoClassField *' and a
28881         `MonoClass *'; store the `MonoReflectionField *' in the hash.
28882
28883 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28884
28885         * appdomain.c: don't add the culture to the filename we're looking for
28886         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
28887
28888 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28889
28890         * locales.c: don't ignore symbols when doing case insensitive compares.
28891         Thanks Dick! Fixes bug #54046.
28892
28893         * threads.c: surround 'threads' usage with enter/leave in
28894         mono_thread_manage.
28895
28896 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
28897
28898         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
28899         implicitly marshalled as [Out]. Fixes #55450.
28900
28901         (mono_marshal_get_runtime_invoke): Zero out the result if there is
28902         an exception.
28903
28904 2004-03-16  Martin Baulig  <martin@ximian.com>
28905
28906         * class.c (mono_class_from_generic_parameter): Use the actual
28907         parameter name. 
28908
28909 2004-03-16  Martin Baulig  <martin@ximian.com>
28910
28911         * reflection.c (type_get_signature_size): New static function.
28912         Compues the size of the type in a method signature.
28913         (method_get_signature_size): New static function; calls
28914         type_get_signature_size() to compute the actual size of the
28915         method's signature.
28916         (method_encode_signature): Use method_get_signature_size() to get
28917         the signature's size rather than using `nparams * 10'.
28918
28919 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28920
28921         * file-io.h: define here WapiOverlapped on windows. I don't want the
28922         regular OVERLAPPED one.
28923
28924         * file-io.c:
28925         * threadpool.c: somehow, BindIoCompletionCallback is not found.
28926         Disabling AIO on windows.
28927
28928 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28929
28930         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
28931         bug #55385.
28932
28933 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28934
28935         * appdomain.c: upgraded corlib version.
28936
28937         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
28938         and BeginWrite. Allow opening files for asynchrnous operations.
28939
28940         * file-io.h: new struct that maps FileStreamAsyncResult.
28941         * icall.c: added new icalls.
28942         * process.[ch]: support setting child process environment variables
28943         and use the SHELL or COMSPEC when UseShellExecute is true.
28944
28945         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
28946         callback for async. IO is here and also BindHandle.
28947
28948         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
28949         from here.
28950
28951 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
28952
28953         * reflection.c (create_custom_attr): Allow len == 0.
28954
28955         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
28956         computation on big-endian machines.
28957
28958 2004-03-13  Martin Baulig  <martin@ximian.com>
28959
28960         * class.h (MonoGenericInst): Added `int count_ifaces'.
28961
28962         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
28963         `ginst->count_ifaces' instead `klass->interface_count' since we
28964         may get called before the vtable is created.
28965
28966         * loader.c (mono_method_get_param_names): If we're a generic
28967         instance, return and don't initialize the class.
28968
28969         * reflection.c (mono_reflection_setup_generic_class): Don't call
28970         ensure_runtime_vtable().
28971         (mono_reflection_bind_generic_parameters): Set
28972         `ginst->count_ifaces'.
28973
28974 2004-03-11  Jackson Harper <jackson@ximian.com>
28975
28976         * icall.c:
28977         * unicode.c:
28978         * unicode.h: Remove unused System.Char icalls.
28979         
28980 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
28981
28982         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
28983         code when we P/Invoke the first library in Windows.Forms, instead
28984         of when we first open the assembly.
28985
28986         * assembly.c: Drop the lookup from here.
28987
28988 2004-03-10  Martin Baulig  <martin@ximian.com>
28989
28990         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
28991         class for properties, fields and events.  Finally fixes #54945.
28992
28993 2004-03-10  Martin Baulig  <martin@ximian.com>
28994
28995         * metadata.c (mono_metadata_class_equal): New static function;
28996         checks whether two generic instances or two generic parameters are
28997         equal.
28998         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
28999         compare classes.        
29000
29001 2004-03-10  Martin Baulig  <martin@ximian.com>
29002
29003         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
29004
29005         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
29006         argument and write it into the `reflection_info' field.
29007
29008         * icall.c
29009         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
29010         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
29011
29012 2004-03-09  Jackson Harper  <jackson@ximian.com>
29013
29014         * char-conversions.h: use 8 bits for numeric data its all we need
29015         * icall.c: numeric data is only 8 bits now.
29016
29017 2004-03-09  Martin Baulig  <martin@ximian.com>
29018
29019         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
29020
29021         * class.c (init_properties, init_events): Initialize the new
29022         `parent' field.
29023
29024         * reflection.c (typebuilder_setup_properties): Likewise.
29025         (typebuilder_setup_events): Likewise.
29026
29027         * reflection.h (MonoEventInfo): Replaced `parent with
29028         `declaring_type' and `reflected_type'.
29029
29030         * icall.c (ves_icall_get_property_info): Distinguish between
29031         declaring and reflected type.
29032         (ves_icall_get_event_info): Likewise.
29033
29034 2004-03-09  Martin Baulig  <martin@ximian.com>
29035
29036         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
29037         (ves_icall_Type_GetField): Correctly set field->klass.
29038
29039 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
29040
29041         * loader.h: Fix warning.
29042
29043 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
29044
29045         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
29046         library routine if present.  Notice that it will still continue
29047         executing even if its missing, for those working on the Gtk#
29048         edition of Windows.Forms.
29049
29050         * assembly.c (do_mono_assembly_open): If loading the
29051         System.Windows.Forms call mono_loader_wini_init.
29052
29053 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
29054
29055         * class.h: Added MonoRemoteClass struct.
29056         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
29057         function for MonoStrings.
29058         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
29059         Added internal call for getting the proxy type.
29060         * marshal.c: Get the type of transparent proxies from its remote_class.
29061         Added methods that generate the IL for type checks and casts:
29062         mono_marshal_get_isinst, mono_marshal_get_castclass, 
29063         mono_marshal_get_proxy_cancast.
29064         * marshal.h: Declaration of the previous new methods.
29065         * object.c: Added new moethods for creating and updating MonoRemoteClass
29066         instances: mono_remote_class, mono_upgrade_remote_class, 
29067         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
29068         * verify.c: FIx transparent_proxy_fields layout.
29069         * appdomain.c: Bump corlib version.
29070
29071 2004-03-04  Jackson Harper  <jackson@ximian.com>
29072
29073         * icall.c: Add icall to access char conversion tables.
29074         * char-conversions.h: Character conversion tables.
29075         * Makefile.am: Add char-conversions.h private header file.
29076         
29077 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
29078
29079         * appdomain.c (unload_thread_main): Increase unloading timeout to
29080         10 sec as a temporary workaround for Nant problems.
29081
29082 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
29083
29084         * gc.c: Add checks for GC_enable and GC_disable.
29085
29086         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
29087         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
29088         (bug #54988).
29089         
29090 2004-02-27  Martin Baulig  <martin@ximian.com>
29091
29092         * reflection.c (mono_reflection_bind_generic_parameters): Take a
29093         `MonoReflectionType *' instead of a `MonoType *'.
29094
29095 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
29096
29097         * gc.c (run_finalize): Avoid finalizing the object representing the
29098         finalizer thread.
29099         (finalizer_thread): Fix warning.
29100
29101 2004-02-25  Martin Baulig  <martin@ximian.com>
29102
29103         * class.c (_mono_class_get_instantiation_name): Added `int offset'
29104         argument for nested types.
29105         (mono_class_create_generic): Added support for nested generictypes.
29106
29107         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
29108         `GList *nested'.
29109
29110         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
29111
29112         * reflection.c (method_encode_signature): Increase the minimum
29113         value of `size' from 10 to 11.
29114         (mono_reflection_bind_generic_parameters): Take `int type_argc'
29115         and `MonoType **types' arguments instead of the `MonoArray
29116         *types'; added `MonoType *nested_in'.  Recursively instantiate
29117         nested classes. 
29118
29119 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
29120
29121         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
29122         stack_overflow_ex members which are used by exception handling.
29123
29124         * appdomain.c (mono_runtime_init): Initialize the new members.
29125
29126         * gc.c (mono_gc_enable): New helper function.
29127         * gc.c (mono_gc_disable): New helper function.
29128
29129 2004-02-23  Martin Baulig  <martin@ximian.com>
29130
29131         * icall.c: I must have been really stupid - make it actually work
29132         this time ;-)
29133
29134 2004-02-23  Martin Baulig  <martin@ximian.com>
29135
29136         * loader.c (method_from_memberref): Only inflate the method if
29137         it's in another klass.
29138
29139 2004-02-23  Martin Baulig  <martin@ximian.com>
29140
29141         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
29142         (mono_class_init): If we're a generic instance and an interface,
29143         compute `class->interface_id'; also create `class->interfaces'
29144         here and inflate them.
29145
29146         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
29147         `ginst->is_open'.
29148         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
29149
29150         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
29151
29152 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
29153
29154         * reflection.c (method_encode_code): Improved the error message
29155         generated by the exception.
29156
29157 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29158
29159         * icall.c: Martin did not do what he said in the ChangeLog for
29160         2004-02-18, but put back the changes for properties and events.
29161         Commenting those changes out again and adding comment to bug #54518.
29162         
29163         * process.c: removed warning.
29164
29165 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
29166
29167         * marshal.c (emit_struct_conv): Print an error message instead of
29168         asserting when a type does not have the StructLayout attribute.
29169
29170 2004-02-20  Martin Baulig  <martin@ximian.com>
29171
29172         * reflection.c (mono_type_get_object): Also use the cache for
29173         generic instances.
29174         (mono_reflection_bind_generic_parameters): Always compute
29175         `ginst->ifaces'.        
29176
29177 2004-02-20  Martin Baulig  <martin@ximian.com>
29178
29179         * class.h (MonoGenericMethod): Removed `klass'.
29180
29181         * class.c (mono_class_inflate_generic_method): Added `MonoClass
29182         *klass' argument.
29183
29184 2004-02-20  Martin Baulig  <martin@ximian.com>
29185
29186         * reflection.c (method_encode_methodspec): Actually use the
29187         uninflated signature for the memberref.
29188
29189 2004-02-20  Martin Baulig  <martin@ximian.com>
29190
29191         * class.h (MonoGenericMethod): Removed `declaring'.
29192
29193         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
29194         is NULL, compute it here.
29195
29196 2004-02-20  Martin Baulig  <martin@ximian.com>
29197
29198         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
29199
29200         * metadata.c (mono_metadata_generic_inst_hash): New method.
29201         (mono_metadata_generic_inst_equal): New method.
29202
29203         * reflection.c (mono_reflection_bind_generic_parameters): Use the
29204         `klass->image->generic_inst_cache' cache to avoid creating
29205         duplicate MonoGenericInst's.
29206
29207         * class.c (mono_class_inflate_generic_type): Use the cache.
29208
29209 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
29210
29211         * object.c: fixed gc descriptor calculation for embedded valuetypes.
29212
29213 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29214
29215         * icall.c: added Socket.WSAIoctl icall.
29216
29217         * socket-io.[ch]: implemented
29218         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
29219
29220 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
29221
29222         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
29223
29224 2004-02-18  Urs C Muff  <umuff@quark.com>
29225
29226         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
29227         this work on PPC and other big-endian architectures.
29228
29229         * debug-mono-symfile.h: Prepended the names of all the `guint32'
29230         fields with an underscore to make sure they're only accessed by
29231         the read32() macro.
29232
29233 2004-02-18  Martin Baulig  <martin@ximian.com>
29234
29235         * icall.c: Put the klass->refclass changes back for methods and
29236         fields, but not for properties and events.  We're currently not
29237         distinguishing between DeclaringType and ReflectedType for
29238         properties and events, that's what caused the regressions.
29239
29240 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29241
29242         * object.c:
29243         (mono_async_result_new): the handle can be NULL.
29244
29245         * threadpool.c: Use an event instead of a semaphore, don't initialize
29246         it until needed. This saves quite a few semaphores from being created
29247         when using the threadpool.
29248
29249 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
29250
29251         * object.c (mono_string_is_interned_lookup): Fix interning of long
29252         strings. Fixes #54473.
29253
29254         * domain.c (ldstr_equal): Optimize if the two strings are equal.
29255
29256         * icall.c: Revert the klass->refclass changes since they introduce
29257         regressions (bug #54518).
29258
29259 2004-02-18  Martin Baulig  <martin@ximian.com>
29260
29261         * class.c (mono_class_init): If we're a generic instance and don't
29262         come from a TypeBuilder, inflate our members here.
29263         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
29264         (mono_class_create_generic): New public method.
29265         (mono_class_initialize_generic): Removed.
29266         (get_instantiation_name): Renamed to
29267         _mono_class_get_instantiation_name() and made it public.
29268
29269 2004-02-18  Martin Baulig  <martin@ximian.com>
29270
29271         * class.c (mono_class_inflate_generic_type): Clear the new
29272         instance's `nginst->klass' when inflating a generic instance.
29273         (mono_class_is_subclass_of): Added (basic) support for generic
29274         instances.
29275
29276 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
29277
29278         * appdomain.h, domain.c: use a MonoCodeManager instead of a
29279         MonoMempool to hold compiled native code.
29280
29281 2004-02-17  Martin Baulig  <martin@ximian.com>
29282
29283         * class.h (MonoDynamicGenericInst): Added `count_properties' and
29284         `properties'.
29285
29286         * reflection.c (mono_reflection_generic_inst_initialize): Added
29287         `MonoArray *properties' argument.
29288
29289         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
29290
29291 2004-02-17  Martin Baulig  <martin@ximian.com>
29292
29293         * icall.c (ves_icall_Type_GetFields): Renamed to
29294         ves_icall_Type_GetFields_internal() and added a
29295         `MonoReflectionType *rtype' argument; pass it to
29296         mono_field_get_object() to set the field's "reflected" type.
29297         (ves_icall_Type_GetConstructors): Likewise.
29298         (ves_icall_Type_GetEvents): Likewise.
29299         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
29300         argument; pass it to mono_method_get_object() to set the method's
29301         "reflected" type.       
29302
29303 2004-02-17  Martin Baulig  <martin@ximian.com>
29304
29305         * class.h (MonoDynamicGenericInst): New type.
29306         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
29307
29308         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
29309         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
29310         (ves_icall_MonoGenericInst_GetFields): New interncall.
29311
29312         * class.c (mono_class_from_generic): Don't call
29313         mono_class_initialize_generic() if this is a dynamic instance;
29314         ie. it's being created from a TypeBuilder.
29315         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
29316         `class->byval_arg.type'.
29317
29318         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
29319         to `inflate_method' and made static.
29320         (mono_reflection_inflate_field): Removed.
29321         (mono_reflection_generic_inst_initialize): New public method.
29322
29323         * reflection.h (MonoReflectionGenericInst): Removed `methods',
29324         `ctors' and `fields'; added `initialized'.
29325
29326 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
29327
29328         * debug-helpers.c (mono_method_full_name): Fix output for empty
29329         namespaces.
29330
29331 2004-02-12  Martin Baulig  <martin@ximian.com>
29332
29333         * class.h (MonoClassField): Added `MonoType *generic_type'.
29334
29335         * reflection.c (mono_image_get_fieldref_token): Added support for
29336         instantiated generic types.
29337         (field_encode_inflated_field): Removed.
29338         (mono_image_get_inflated_field_token): Removed.
29339         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
29340
29341         * reflection.h (MonoReflectionInflatedField): Removed.
29342
29343 2004-02-12  Martin Baulig  <martin@ximian.com>
29344
29345         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
29346         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
29347
29348         * reflection.c (mono_image_get_methodspec_token): Take a
29349         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
29350         (mono_image_create_token): Check whether we have a
29351         `method->signature->gen_method' and call
29352         mono_image_get_methodspec_token() if appropriate.
29353         (inflated_method_get_object): Removed.
29354         (mono_reflection_bind_generic_method_parameters): Return a
29355         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
29356         (mono_reflection_inflate_method_or_ctor): Likewise.
29357
29358         * reflection.h (MonoReflectionInflatedMethod): Removed.
29359
29360 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
29361
29362         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
29363         for custom valuetype marshalling.
29364
29365         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
29366
29367 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29368
29369         * icall.c: fixed WSAGetLastError_internal name.
29370
29371 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
29372
29373         * threads.c (mono_thread_attach): Allow this to be called multiple
29374         times for a thread.
29375         
29376         * threads.c (build_wait_tids): Do not wait for ourselves.
29377
29378         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
29379         appdomain list is empty.
29380
29381         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
29382         memory returned by mono_string_builder_to_utf16, since it points into
29383         managed memory. Thanks to Bernie Solomon for noticing this.
29384
29385         * icall.c: Add AppDomainSetup icalls.
29386
29387         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
29388
29389         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
29390         types.
29391
29392         * reflection.c (reflection_methodbuilder_to_mono_method): Save
29393         custom attributes to the method_aux struct. Also fix array indexes etc.
29394
29395         * loader.c (mono_method_get_param_names): Make dynamic case work again.
29396         
29397 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
29398
29399         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
29400         (both static and runtime) and reduce startup time.
29401
29402 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
29403
29404         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
29405         AsAny marshalling conversion instead of crashing.
29406
29407         * marshal.c: Fix warnings.
29408
29409 2004-02-09  Martin Baulig  <martin@ximian.com>
29410
29411         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
29412
29413         * reflection.h (MonoReflectionInflatedMethod): Removed the
29414         `declaring' field, it's now in the unmanaged MonoGenericMethod.
29415
29416         * reflection.c (method_encode_methodspec): Removed the `method'
29417         argument; we get it from `gmethod->declaring'.
29418         (inflated_method_get_object): Removed the `declaring' argument.
29419
29420 2004-02-09  Martin Baulig  <martin@ximian.com>
29421
29422         * class.h (MonoGenericMethod): New type.
29423         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
29424         `generic_method'.
29425
29426         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
29427         a `MonoGenericMethod *gen_method' one.
29428
29429         * class.c (mono_class_inflate_generic_type): Take an additional
29430         `MonoGenericMethod * argument.  This is only non-NULL if we're
29431         inflating types for a generic method.   
29432         (mono_class_inflate_generic_signature): Renamed to
29433         inflate_generic_signature() and made static; take a
29434         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
29435         (inflate_generic_header): Take a `MonoGenericMethod *' argument
29436         instead of a `MonoGenericInst *' one.
29437         (mono_class_inflate_generic_method): Likewise.
29438
29439         * reflection.c (encode_generic_method_sig): Take a
29440         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
29441         (method_encode_methodspec): Likewise.
29442         (inflated_method_get_object): Likewise. 
29443
29444         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
29445         field with a `MonoGenericMethod *gmethod' one.  
29446
29447 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
29448
29449         * class.h (mono_class_has_parent): add parens to expansion
29450         so you can ! this.
29451
29452 2004-02-08  Martin Baulig  <martin@ximian.com>
29453
29454         * image.h (MonoImage): Removed `generics_cache'.
29455
29456         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
29457         instead of a `MonoType *' argument; removed the `inflate_methods'
29458         argument.  Don't inflate methods here.
29459
29460         * loader.c (find_method): If it's a generic instance, call
29461         mono_class_init() on the `sclass->generic_inst->generic_type'.
29462
29463         * metadata.c (mono_type_size): Make this work on uninitialized
29464         generic instances; call it on the `ginst->generic_type's class.
29465
29466         * reflection.c (mono_reflection_bind_generic_parameters): Call
29467         mono_class_from_generic() to create the `ginst->klass'.
29468
29469 2004-02-08  Martin Baulig  <martin@ximian.com>
29470
29471         * class.h (MonoClass): Changed type of `generic_inst' from
29472         `MonoType *' to `MonoGenericInst *'.
29473
29474 2004-02-08  Martin Baulig  <martin@ximian.com>
29475
29476         * icall.c (ves_icall_Type_BindGenericParameters): Just call
29477         mono_type_get_object(), this is now creating a `MonoGenericInst'
29478         for MONO_TYPE_GENERICINST.
29479         (ves_icall_MonoGenericInst_GetParentType): Likewise.
29480         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
29481
29482         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
29483         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
29484         (inflated_method_get_object): Added `MonoClass *refclass' argument.
29485         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
29486         and reflected type.
29487
29488         * reflection.h (MonoReflectionInflatedMethod): Removed
29489         `declaring_type' and `reflected_type'.
29490
29491 2004-02-08  Martin Baulig  <martin@ximian.com>
29492
29493         * class.h (MonoGenericInst): Added `MonoType *parent' and
29494         `MonoType **ifaces'.
29495
29496         * reflection.h (MonoReflectionGenericInst): Removed `klass',
29497         `parent' and `interfaces'.
29498
29499         * reflection.c (mono_reflection_bind_generic_parameters): Take a
29500         `MonoType *' argument and return a `MonoType *'.
29501
29502         * icall.c
29503         (ves_icall_MonoGenericInst_GetParentType): New interncall.
29504         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
29505
29506 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
29507
29508         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
29509         valuetype marshalling.
29510
29511 2004-02-06  Martin Baulig  <martin@ximian.com>
29512
29513         * class.c
29514         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
29515         (my_mono_class_from_generic_parameter): Likewise.
29516
29517 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
29518
29519         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
29520         contents of the symbol files lazily.
29521
29522         * object.h (MonoThread): Add 'name' and 'name_len' fields.
29523
29524         * threads.h threads.c icall.c: New icalls for getting and setting the
29525         threads name.
29526
29527 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
29528
29529         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
29530         Raise an exception when the domain is not found.
29531
29532 2004-02-03  Martin Baulig  <martin@ximian.com>
29533
29534         * reflection.c (mono_image_get_methodspec_token): Use the
29535         uninflated signature; fixes gen-33.
29536
29537 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
29538
29539         * gc.c threads.c: Make the finalizer thread a normal managed thread so
29540         the finalizer code can use thread functionality.
29541
29542         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
29543         the finalizer thread.
29544
29545         * threads.c: Make some functions more robust.
29546
29547         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
29548
29549         * metadata.h: Add new marshalling conventions.
29550
29551         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
29552         stringbuilder marshalling. Fixes #53700.
29553
29554         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
29555
29556         * reflection.c (mono_image_get_type_info): Save declarative security
29557         info.
29558
29559         * reflection.c (mono_image_get_field_info): Handle uninitialized 
29560         unmanaged fields as well.
29561
29562         * appdomain.c: Bump corlib version.
29563
29564 2004-02-01  Martin Baulig  <martin@ximian.com>
29565
29566         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
29567         method type arguments.  
29568
29569 2004-01-30  Duncan Mak  <duncan@ximian.com>
29570
29571         * marshal.h: Add prototype for
29572         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
29573         and
29574         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
29575         fix the build.
29576
29577 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
29578
29579         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
29580         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
29581
29582 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
29583
29584         * marshal.c (mono_marshal_get_native_wrapper): Add support for
29585         custom marshalling of valuetypes.
29586
29587         * marshal.c: Fix some warnings.
29588
29589 2004-01-29  Martin Baulig  <martin@ximian.com>
29590
29591         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
29592         for generic method parameters.
29593
29594         * reflection.c (method_encode_methodspec): Write the uninflated
29595         signature into the methodspec table.
29596         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
29597         is always the uninflated method.
29598         (reflection_methodbuilder_to_mono_method): Copy the generic
29599         parameters from the MethodBuilder into `header->gen_params'.
29600
29601 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
29602
29603         * class.c (mono_class_from_generic_parameter): Fix warning.
29604
29605 2004-01-27  Martin Baulig  <martin@ximian.com>
29606
29607         * class.c (mono_class_from_generic_parameter): Don't create
29608         `klass->methods' here.  
29609
29610 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
29611
29612         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
29613         extension since it does not work with libraries named lib<FOO>.dll.so.
29614
29615 2004-01-25  Martin Baulig  <martin@ximian.com>
29616
29617         * class.c (mono_class_inflate_generic_type): Added support for
29618         MONO_TYPE_GENERICINST.
29619
29620         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
29621         inflate methods on open constructed types.      
29622
29623 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29624
29625         * object.c: fire ProcessExit event in the root AppDomain after running
29626         Main. Fixes bug #53299.
29627
29628 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
29629
29630         * socket-io.c: include the new socket-wrappers.h header.
29631         Use the wrappers instead of the unix socket functions to make the code
29632         more clear.
29633
29634 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
29635
29636         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
29637
29638         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
29639         Fixes #22532.
29640
29641 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
29642
29643         * reflection.c (mono_image_create_pefile): Handle the case when the
29644         entry point is not a MethodBuilder.
29645
29646         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
29647         field to ReflectionMethod since it is not allways a builder.
29648
29649         * reflection.c (type_get_fully_qualified_name): New helper function to
29650         return the fully qualified name of a type.
29651
29652         * reflection.c (encode_marshal_blob): Always emit the fully qualified
29653         type name for custom marshallers.
29654
29655         * reflection.c (mono_marshal_spec_from_builder): Ditto.
29656
29657         * class.c (mono_class_setup_vtable): If a parent class already 
29658         implements an interface, use the implementing methods from that class.
29659         Fixes #53148.
29660
29661 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29662
29663         * threadpool.c: just return instead of ExitThread to allow for thread
29664         clean up earlier.
29665
29666 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
29667
29668         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
29669         when closing resource modules.
29670
29671         * reflection.c (mono_image_create_pefile): Handle the case when the
29672         entry point is not a MethodBuilder.
29673
29674         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
29675         field to ReflectionMethod since it is not allways a builder.
29676
29677 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
29678
29679         * marshal.c (mono_marshal_get_managed_wrapper): 
29680         mono_marshal_alloc takes native int so CONV_I
29681         the arg for 64bits.
29682
29683 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
29684
29685         * reflection.c (fixup_cattrs): New function to fixup the methoddef
29686         tokens in the cattr table. Fixes #53108.
29687
29688 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29689
29690         * loader.c: don't trim ".dll" before looking up in the config file.
29691         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
29692
29693 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
29694
29695         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
29696         Return the module which contains the resource as well.
29697         (ves_icall_System_Reflection_Module_Close): New icall.
29698
29699         * appdomain.c: Bump corlib version number.
29700
29701         * image.c (mono_image_addref): New public function.
29702
29703         * assembly.c: Call mono_image_addref.
29704
29705         * reflection.c (mono_module_get_object): Increase reference count of 
29706         the image.
29707
29708         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
29709         Fixes #22532.
29710
29711         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
29712         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
29713         proper exceptions on DllImport problems.
29714
29715 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
29716
29717         * class.c, metadata.c: eliminate CSIZE macro.
29718
29719 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
29720
29721         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
29722         * object.h: Added async_callback field in MonoAsyncResult.
29723         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
29724         * verify.c: Added async_callback in MonoAsyncResult layout.
29725
29726 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
29727
29728         * reflection.c (mono_reflection_get_custom_attrs): Add support
29729         for Modules.
29730
29731 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
29732
29733         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
29734         marshalling.
29735         (mono_marshal_method_from_wrapper): Add null pointer check.
29736
29737 2004-01-16  Martin Baulig  <martin@ximian.com>
29738
29739         * debug-mono-symfile.h: Set version number to 36 and reflect
29740         latest symbol writer changes.
29741
29742 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
29743
29744         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
29745         multi-dimensional arrays.
29746         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
29747         (mono_class_from_mono_type): Use bounded_array_class_get.
29748         
29749         * class.c (mono_bounded_array_class_get): New function which takes
29750         a 'bounded' bool argument to distinguish vectors from one dimensional
29751         arrays.
29752
29753         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
29754         bounded_array_class_get if the array has bounds.
29755
29756         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
29757         Search modules loaded using AssemblyBuilder:AddModule as well.
29758
29759 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29760
29761         * appdomain.c: increased corlib version.
29762         * filewatcher.c: removed g_print.
29763         * icall.c:
29764         (get_property_info): only allocate what is actually requested.
29765         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
29766
29767 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29768
29769         * Makefile.am: added filewatcher.[ch]
29770         * filewatcher.[ch]: FileSystemWatcher runtime support.
29771         * icall.c: added new FSW icalls.
29772
29773 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
29774
29775         * string-icalls.c: fix stringbuilder regression as suggested by
29776         Iain McCoy <iain@mccoy.id.au>.
29777
29778 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
29779
29780         * process.c (process_read_stringtable_block): Recognize '007f' as
29781         a language neutral stringtable block.
29782
29783 2004-01-12  Patrik Torstensson
29784
29785         * object.h (MonoStringBuilder) : Changed layout to support our
29786         new stringbuilder class.
29787         * marshal.c: Change marshalling to support the new layout of 
29788         string builder.
29789         * appdomain.c: increased version number because new layout of
29790         string builder.
29791
29792 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
29793
29794         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
29795         assembly name as an string instead of an AssemblyName, since it is
29796         easier to extract info from it.
29797
29798         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
29799         the culture subdirectories too. Fixes #52231.
29800
29801 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29802
29803         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
29804         It takes 2 new parameters with an optional name for the method to look
29805         for and case ignoring info.
29806
29807         * threadpool.c: removed unused variable.
29808
29809 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29810
29811         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
29812         It takes 2 new parameters with an optional name for the property to look
29813         for and case ignoring info.
29814         Fixes bug #52753.
29815
29816 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
29817
29818         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
29819         Fix #52451.
29820
29821 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29822
29823         * appdomain.c:
29824         * assembly.c: escape the uri before passing it to g_filename_from_uri.
29825         Fixes bug #52630.
29826
29827 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
29828
29829         * reflection.c: Add support for more than one unmanaged resource.
29830
29831         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
29832         in field->def_value, as done in all other cases.
29833
29834         * reflection.c (mono_reflection_get_custom_attrs): Add support for
29835         TypeBuilders.
29836
29837         * reflection.c (mono_reflection_create_runtime_class): Remove 
29838         errorneous assignment to klass->element_class, since it is already
29839         done in mono_reflection_setup_internal_class.
29840
29841 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29842
29843         * gc.c: added missing LeaveCriticalSection.
29844         * icall.c: indented a couple of lines.
29845         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
29846         if we call EndInvoke inside a callback. Fixes bug #52601.
29847
29848 2004-01-07  Martin Baulig  <martin@ximian.com>
29849
29850         * mono-debug-debugger.h
29851         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
29852
29853 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
29854
29855         * appdomain.c: Use messages in NotImplementedException.
29856
29857         * exception.c (mono_get_exception_not_implemented): Now this takes
29858         a message argument.
29859
29860         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
29861         exception instead of g_asserting an aborting when something is not
29862         implemented.
29863
29864         Add some inline docs.
29865
29866 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
29867
29868         * reflection.h: Update after changes to object layout.
29869
29870         * reflection.c: Implement saving of unmanaged aka win32 resources.
29871
29872         * appdomain.c: Bump version number.
29873
29874         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
29875         Handle missing domains gracefully.
29876
29877 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
29878
29879         * file-io.c : On Windows, there are much more invalid_path_chars.
29880
29881 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
29882
29883         * class.h, object.c: prepare for GetType () speedup.
29884
29885 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
29886
29887         * profiler.c: workaround for --profile null reference exception on
29888           cygwin. Patch by Patrik Torstensson.
29889
29890 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
29891
29892         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
29893         make work for unaligned access.
29894
29895 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
29896
29897         * class.c: small cleanup (class->fields [i] -> field).
29898         * image.c: check address of metadata is valid.
29899
29900 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
29901
29902         * assembly.h assembly.c (mono_assembly_loaded): New public function to
29903         search the list of loaded assemblies.
29904
29905         * reflection.c (mono_reflection_type_from_name): Use 
29906         mono_assembly_loaded instead of mono_image_loaded.
29907
29908         * reflection.c: Fix warnings.
29909
29910 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
29911
29912         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
29913         is dynamic. This is needed since an assembly can contain both dynamic and
29914         non-dynamic images.
29915
29916         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
29917         assembly->dynamic.
29918
29919         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
29920
29921         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
29922         to store modules loaded using AddModule.
29923
29924         * reflection.c (mono_image_fill_file_table): Generalize this so it works
29925         on Modules.
29926
29927         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
29928
29929         * reflection.c (mono_image_fill_export_table_from_module): New function to
29930         fill out the EXPORTEDTYPES table from a module.
29931
29932         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
29933         into a separate function. Also handle loaded non-dynamic modules.
29934
29935         * reflection.c (mono_image_basic_init): Fix memory allocation.
29936
29937         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
29938
29939         * assembly.c (mono_assembly_load_references): Make this public.
29940
29941 2003-12-19  Martin Baulig  <martin@ximian.com>
29942
29943         * class.c (mono_class_initialize_generic): Made this static, take
29944         a `MonoGenericInst *' instead of a `MonoClass *'.
29945         (mono_class_from_generic): Call mono_class_initialize_generic()
29946         unless we're already initialized or being called from
29947         do_mono_metadata_parse_generic_inst().
29948
29949         * class.h (MonoGenericInst): Added `initialized' and
29950         `init_pending' flags.
29951
29952         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
29953         `mono_class_init (gklass)' or mono_class_initialize_generic()
29954         here; set `generic_inst->init_pending' while parsing the
29955         `type_argv'.
29956
29957 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
29958
29959         * locales.c: include string.h for memxxx prototypes
29960
29961 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
29962
29963         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
29964         constructor when accessing literal fields.
29965
29966 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
29967
29968         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
29969
29970         * reflection.c (assembly_add_resource_manifest): New function to fill
29971         the MANIFESTRESOURCE table.
29972
29973         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
29974
29975         * reflection.h: Update to changes in class layout.
29976
29977         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
29978         Reenable call to mono_runtime_is_shutting_down ().
29979
29980         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
29981         determine if the runtime is shutting down.
29982
29983 2003-12-16  Jackson Harper <jackson@ximian.com>
29984
29985         * icall.c: comment out call to mono_runtime_is_shutting_down to
29986         fix build.
29987         
29988 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
29989
29990         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
29991         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
29992
29993 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
29994
29995         * reflection.c: move definition of swap_with_size
29996         to before its first call
29997
29998 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
29999
30000         * appdomain.c (mono_runtime_is_shutting_down): New public function.
30001
30002         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
30003         icall.
30004
30005         * object.c: Fix warnings.
30006
30007         * icall.c (ves_icall_Type_Get...): Only consider inherited static
30008         members if FlattenHierarchy is set.
30009
30010         * reflection.c (mono_image_add_decl_security): New function to emit
30011         declarative security.
30012
30013         * reflection.h reflection.c: Add support for declarative security.
30014
30015         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
30016         
30017 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
30018
30019         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
30020         
30021         * appdomain.c verify.c: Moved corlib version checking into its own
30022         function in appdomain.c since it needs to create vtables etc.
30023
30024 2003-12-13  Patrik Torstensson <p@rxc.se>
30025
30026         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
30027         instead of unwrapped server.
30028
30029 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
30030
30031         * verify.c (check_corlib): Fix field index.
30032
30033 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
30034
30035         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
30036         GetGacPath icall.
30037
30038 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
30039
30040         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
30041         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
30042         cope with sizeof(size_t) != sizeof(guint32).
30043
30044 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30045
30046         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
30047         in case of failure.
30048
30049 2003-12-10  Mark Crichton <crichton@gimp.org>
30050
30051         * icall.c: removed the GetNonZeroBytes.  We now handle this case
30052         in managed code.
30053
30054         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
30055
30056 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
30057
30058         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
30059         marked as deleted.
30060
30061 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
30062
30063         * verify.c (check_corlib): Handle the case when the version field is 
30064         initialized by a static constructor.
30065
30066 2003-12-08  Patrik Torstensson  <p@rxc.se>
30067
30068     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
30069
30070 2003-12-08  Martin Baulig  <martin@ximian.com>
30071
30072         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
30073         a MonoReflectionGenericParameter, also take the parameter index
30074         and name as arguments.
30075         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
30076         (ves_icall_MonoGenericParam_initialize): New interncall.
30077         (ves_icall_Type_make_byref_type): New interncall.
30078
30079         * reflection.h (MonoReflectionGenericParam): Derive from
30080         MonoReflectionType, not just from MonoObject.  Added `refobj' and
30081         `index' fields.
30082
30083         * reflection.c (mono_reflection_define_generic_parameter): Create
30084         and return a new MonoReflectionGenericParam; don't initialize the
30085         constraints here.
30086         (mono_reflection_initialize_generic_parameter): New public method;
30087         initializes the constraints and creates the `param->pklass'.
30088
30089 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
30090
30091         * reflection.h reflection.c: Use the new fields 'num_types', 
30092         'num_fields' and 'num_methods' to track the number of types etc.
30093
30094         * verify.c (check_corlib): Check corlib version number.
30095
30096 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
30097
30098         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
30099         function works on all methods.
30100
30101 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
30102
30103         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
30104         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
30105         the custom_type_info flag of the transparent proxy.
30106         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
30107         objects that supports IRemotingTypeInfo.
30108         * object.h: Added custom_type_info field in transparent proxy.
30109
30110 2003-12-06  Martin Baulig  <martin@ximian.com>
30111
30112         * class.c (mono_class_create_from_generic): Removed.
30113         (mono_class_from_generic): Check `ginst->klass' before doing
30114         anything else.  This is important to fully support "recursive"
30115         generic types.
30116
30117         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
30118         empty `generic_inst->klass' before doing anything else.
30119
30120 2003-12-06  Dick Porter  <dick@ximian.com>
30121
30122         * verify.c: 
30123         * object.h:
30124         * icall.c:
30125         * locales.c: Use C structs to access class fields.  Don't do a
30126         conversion between MonoString and UChar because both are
30127         platform-endian UTF-16.  Compare now takes startindex and count
30128         parameters.  Add a char overload for IndexOf.  Speed up the
30129         invariant string IndexOf.
30130
30131 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
30132
30133         * Makefile.am (monosn_LDADD): Fix parallel build.
30134
30135 2003-12-04  Martin Baulig  <martin@ximian.com>
30136
30137         * icall.c
30138         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
30139         (ves_icall_Type_make_array_type): New interncall.       
30140
30141 2003-12-04  Martin Baulig  <martin@ximian.com>
30142
30143         * locales.c: also change it in the !HAVE_ICU case.
30144
30145 2003-12-04  Dick Porter  <dick@ximian.com>
30146
30147         * icall.c:
30148         * locales.c: construct_compareinfo is now in CompareInfo, not
30149         CultureInfo.
30150
30151 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
30152
30153         * image.c (mono_image_load_file_for_image): Cache loaded images in the
30154         image->files array.
30155
30156         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
30157         table as well.
30158
30159         * assembly.c (mono_assembly_load_references): Only load references
30160         once.
30161
30162         * class.c (mono_class_from_name): Avoid linear search of the 
30163         EXPORTEDTYPE table.
30164
30165         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
30166
30167 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
30168
30169         * image.h (MonoImage): Add 'field_cache' field.
30170
30171         * loader.c (mono_field_from_token): Cache field lookups.
30172         
30173         * reflection.c (mono_module_get_object): Fix name property.
30174
30175         * icall.c (ves_icall_get_enum_info): Update after changes to 
30176         mono_metadata_get_constant_index ().
30177
30178         * icall.c: Get rid of get_type_info icall, use a separate icall for
30179         each type property to avoid needless memory allocations. Fixes #51514.
30180
30181         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
30182         to avoid needless binary searches.
30183
30184         * class.c (class_compute_field_layout): Move the initialization of
30185         field->def_value to mono_class_vtable ().
30186
30187         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
30188         non-corlib types.
30189
30190         * object.c (mono_object_allocate): Make it inline.
30191
30192         * object.c (mono_object_allocate_spec): Make it inline.
30193         
30194 2003-12-02  Dick Porter  <dick@ximian.com>
30195
30196         * locales.c (create_NumberFormat): NumberFormatInfo construction.
30197         Patch by Mohammad DAMT (mdamt@cdl2000.com).
30198
30199 2003-12-01  Dick Porter  <dick@ximian.com>
30200
30201         * threads.c: Fix signature and call in CreateMutex and
30202         CreateEvent.
30203
30204 2003-12-01  Dick Porter  <dick@ximian.com>
30205
30206         * icall.c: 
30207         * locales.c: Implement string compares and searching
30208
30209         * object.h: Add extra Thread field
30210
30211 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
30212
30213         * reflection.c (fixup_method): Add support for MonoCMethod.
30214
30215 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
30216
30217         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
30218
30219         * reflection.c (assembly_name_to_aname): Allow extra characters in
30220         assembly names. Fixes #51468.
30221
30222 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
30223
30224         * exception.c (mono_exception_from_name_domain): New helper function.
30225
30226         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
30227         exception object in the correct domain.
30228
30229         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
30230         formatting + make a copy a the input data.
30231
30232         * loader.c (mono_get_method_from_token): Methods which contain
30233         native code do not have entries in the ImplMap.
30234
30235         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
30236         Thanks to Gonzalo for spotting this.
30237         
30238         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
30239         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
30240
30241         * assembly.h (mono_assembly_load_from): Split the second part of 
30242         assembly loading into a new public function.
30243
30244         * exception.h (mono_get_exception_bad_image_format): New function.
30245
30246 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
30247
30248         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30249         Enumerate all modules inside a dynamic assembly. Fixes #51293.
30250         
30251         * icall.c: Add new icall for creating dynamic methods.
30252
30253         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
30254
30255         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
30256
30257         * reflection.c (mono_reflection_create_dynamic_method): New icall to
30258         create a dynamic method.
30259
30260         * reflection.c (resolve_object): New helper function.
30261
30262         * reflection.c: Generalize ReflectionMethodBuilder and the functions
30263         which manipulate it so they can also work on dynamic methods.
30264
30265         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
30266         creating the MonoReflectionMethodAux structure if it is not needed.
30267         
30268         * reflection.h verify.c: Update after changes to object layout.
30269
30270         * reflection.c (method_builder_encode_signature): Fix compilation on
30271         gcc 2.95.x.
30272
30273 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
30274
30275         * appdomain.h: Added support for context static fields. Added static_data
30276           field to MonoAppContext and renamed thread_static_fields to a more
30277           generic special_static_fields in MonoAppDomain, since it can now contain
30278           context static fields.
30279         * domain.c: Updated hashtable name.
30280         * object.c: Replaced field_is_thread_static() for a more generic
30281           field_is_special_static() which also checks for context static attribute.
30282           In mono_class_vtable(), added support for static context fields.
30283         * threads.c: Changed methods that manage thread static fields to more
30284           generic methods so they can be reused both for thread and context static
30285           data.
30286         * threads.h: Declared some new methods.
30287
30288 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
30289
30290         * reflection.h: Update after changes to the managed types.
30291
30292         * reflection.c (encode_custom_modifiers): New helper function.
30293
30294         * reflection.c (method_encode_signature): Emit custom modifiers.
30295
30296         * reflection.c (field_encode_signature): Emit custom modifiers.
30297
30298 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
30299
30300         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
30301
30302         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
30303         implementation.
30304
30305         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
30306         icall.
30307
30308         * object.c (mono_field_get_value_object): New function.
30309
30310         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
30311         specific.
30312
30313 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
30314
30315         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
30316         return a preallocated out-of-memory exception instance.
30317
30318         * object.c (out_of_memory): Use the new function.
30319
30320         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
30321         flag is before the custom modifiers. Fixes #49802.
30322
30323 2003-11-16  Martin Baulig  <martin@ximian.com>
30324
30325         * class.c (mono_class_is_open_constructed_type): Implemented the
30326         MONO_TYPE_GENERICINST case.
30327
30328 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
30329
30330         * assembly.c (mono_assembly_fill_assembly_name): New function to
30331         fill out the MonoAssemblyName structure.
30332         (mono_assembly_open): Use the new function.
30333
30334         * icall.c (fill_reflection_assembly_name): New helper function.
30335
30336         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
30337         new function.
30338
30339         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
30340
30341 2003-11-15  Martin Baulig  <martin@ximian.com>
30342
30343         * class.c (mono_class_is_open_constructed_type): New public
30344         function; checks whether a type is an open constructed type,
30345         ie. whether it still contains type parameters.
30346         (mono_class_inflate_generic_type): If we're a type parameter and
30347         the inflated type is also a MONO_TYPE_(M)VAR, return the original
30348         type.
30349
30350         * class.h (MonoGenericInst): Added `guint32 is_open'.
30351
30352         * loader.c (method_from_methodspec): Check whether we're an open
30353         or closed constructed type and set `ginst->is_open'.
30354
30355         * reflection.c (mono_reflection_bind_generic_parameters): Check
30356         whether we're an open or closed constructed type and set
30357         `ginst->is_open'.
30358         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
30359         from open constructed types.
30360
30361 2003-11-15  Martin Baulig  <martin@ximian.com>
30362
30363         * reflection.c (mono_reflection_bind_generic_parameters): If we're
30364         a generic instance (instead of a generic type declaration) with
30365         unbound generic parameters, bind them to our actual types.
30366
30367 2003-11-14  Martin Baulig  <martin@ximian.com>
30368
30369         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
30370
30371         * reflection.c (mono_reflection_bind_generic_parameters): If we're
30372         an interface type, populate `res->interfaces' with instantiated
30373         versions of all the interfaces we inherit.
30374
30375 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
30376
30377         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
30378         when MONO_PATH is set but doesn't contain the install dir.
30379
30380 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30381
30382         * icall.c:
30383         (ves_icall_Type_GetInterfaces): don't return an interface twice when
30384         it's also implemented in base classes. Fixes bug #50927.
30385
30386 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
30387
30388         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
30389         if this method is called from a finalizer. Fixes #50913.
30390
30391 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
30392
30393         * threads.c: Implement VolatileRead/VolatileWrite
30394
30395         * icall.c: Add new icalls for VolatileRead/VolatileWrite
30396
30397 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30398
30399         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
30400         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
30401         2.95.3.
30402
30403         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
30404         from Peter Ross (pro@missioncriticalit.com).
30405         
30406 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
30407
30408         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
30409
30410 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30411
30412         * assembly.c (mono_assembly_load_references): Disable check because it
30413         triggers on older corlibs which lots of people have.
30414
30415 2003-11-12  Jackson Harper  <jackson@ximian.com>
30416
30417         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
30418         load corlib.dll if mscorlib.dll is not found.
30419         * assembly.h: Remove corlib name define.
30420         * class.c:
30421         * domain.c:
30422         * image.c: Change corlib name to mscorlib.
30423         
30424 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30425
30426         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
30427
30428 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
30429
30430         * appdomain.h: Added loader_optimization here to sync with the C#
30431         code, and add disallow_binding_redirects field.
30432
30433 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
30434
30435         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
30436
30437         * reflection.c (mono_image_build_metadata): Fix crash on modules
30438         with no types.
30439
30440         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
30441
30442         * icall.c (ves_icall_get_method_info): Return callingConvention as
30443         well.
30444
30445         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
30446         namespaces from the EXPORTEDTYPE table as well.
30447
30448         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
30449         from all modules inside the assembly.
30450         
30451 2003-11-11  Martin Baulig  <martin@ximian.com>
30452
30453         * reflection.c (mono_reflection_bind_generic_parameters): Make
30454         this work for interfaces.
30455
30456 2003-11-11  Martin Baulig  <martin@ximian.com>
30457
30458         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
30459
30460 2003-11-11  Martin Baulig  <martin@ximian.com>
30461
30462         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
30463         "MonoInflatedMethod" and "MonoInflatedCtor".
30464
30465 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
30466
30467         * reflection.c (resolution_scope_from_image): Use the assembly table
30468         from the manifest module, since other modules don't have it.
30469
30470         * debug-helpers.c (mono_type_full_name): New helper function.
30471
30472         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
30473
30474         * image.c (mono_image_load_file_for_image): New public function which
30475         is a replacement for the load_file_for_image in class.c.
30476
30477         * assembly.c (mono_assembly_load_module): A wrapper for the function
30478         above which does assembly association and reference loading too.
30479
30480         * class.c (mono_class_from_name): Call mono_assembly_load_module.
30481
30482 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30483
30484         * appdomain.c: not all of the attributes for the full assembly name
30485         are required and the order doesn't matter. Fixes bug #50787.
30486
30487 2003-11-10  Dick Porter  <dick@ximian.com>
30488
30489         * locales.c: Use platform-endian UTF16
30490
30491 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
30492
30493         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
30494         
30495 2003-11-10  Martin Baulig  <martin@ximian.com>
30496
30497         * metadata.c
30498         (mono_metadata_load_generic_params): Make this actually work.
30499
30500         * reflection.c (mono_reflection_bind_generic_parameters): If our
30501         parent is a generic instance, pass all the `types' to it, no
30502         matter whether it has the same number of type parameters or not.
30503
30504 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
30505
30506         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
30507
30508         * assembly.c (mono_assembly_load_references): Move the image<->assembly
30509         assignment code to this function so it gets called recursively for all
30510         modules.
30511
30512         * image.c (load_modules): Remove the assembly assignment since it is
30513         now done by mono_assembly_load_references.
30514         
30515         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30516         Add 'module' argument.
30517         (mono_module_get_types): New helper function.
30518         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
30519
30520 2003-11-08  Martin Baulig  <martin@ximian.com>
30521
30522         * class.c (mono_class_inflate_generic_method): Interface method
30523         don't have a header.
30524
30525         * reflection.c (mono_image_get_methodspec_token): Take an
30526         additional `MonoGenericInst *' argument instead of reading it from
30527         the header; this is necessary to support interfaces.
30528         (mono_image_create_token): Pass the `MonoGenericInst *' from the
30529         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
30530         (inflated_method_get_object): Take an additional `MonoGenericInst *'
30531         argument.
30532
30533         * reflection.h (MonoReflectionInflatedMethod): Added
30534         `MonoGenericInst *ginst'.
30535
30536 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
30537
30538         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
30539
30540 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
30541
30542         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
30543
30544 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
30545
30546         * reflection.c 
30547         (reflection_methodbuilder_from_method_builder):
30548         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
30549         initialize a ReflectionMethodBuilder structure.
30550         (mono_image_get_methodbuilder_token):
30551         (mono_image_get_ctorbuilder_token): New functions to emit memberref
30552         tokens which point to types in another module inside the same assembly.
30553
30554         * reflection.c: Use the new helper functions.
30555         
30556         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
30557
30558         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
30559         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
30560
30561         * reflection.c (resolution_scope_from_image): Emit a moduleref if
30562         neccesary.
30563
30564         * reflection.c (mono_image_build_metadata): Emit metadata only for the
30565         current module. Emit the manifest only for the main module.
30566
30567         * reflection.c (mono_image_create_token): Add assertion when a 
30568         memberref needs to be created.
30569
30570         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
30571
30572         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
30573         larger buffer for the custom attribute blob. Fixes #50637.
30574         
30575 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30576
30577         * threadpool.c: notify listener on async processing handles after
30578         invoking the async callback. Thanks to Zoltan.
30579
30580 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30581
30582         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
30583         avoid code duplication.
30584
30585         * reflection.h (MonoDynamicImage): New type which is currently unused,
30586         but will be used through the ref.emit code in place of 
30587         MonoDynamicAssembly.
30588
30589         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
30590         object layout.
30591
30592         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
30593         a MonoDynamicImage instead of just a MonoImage.
30594         
30595         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
30596         icalls to ModuleBuilder but keep their semantics, so they will work
30597         with moduleb->assemblyb. This will change later.
30598         
30599 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30600
30601         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
30602         object layout.
30603
30604         * reflection.c (mono_image_build_metadata): Avoid creation of a default
30605         main module, since it is now done by the managed code.
30606
30607 2003-11-03  Martin Baulig  <martin@ximian.com>
30608
30609         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
30610         `ginst->klass' here.
30611         (method_encode_methodspec): Don't use the `ginst->generic_method's
30612         klass if it's a generic instance, use `ginst->klass' in this case.
30613
30614 2003-11-03  Martin Baulig  <martin@ximian.com>
30615
30616         * reflection.c (mono_image_get_generic_method_param_info):
30617         Removed, use mono_image_get_generic_param_info() instead.
30618         (mono_image_get_type_info): Write the GenericParam table before
30619         the Method table.  This is neccessary because in the GenericParam
30620         table, type parameters of the class (ie. '!0' etc.) must come
30621         before the ones from its generic methods (ie. '!!0' etc).
30622
30623 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30624
30625         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
30626
30627 2003-11-02  Martin Baulig  <martin@ximian.com>
30628
30629         * reflection.c (create_generic_typespec): Take a
30630         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
30631         the generic parameters from it.
30632
30633 2003-11-02  Martin Baulig  <martin@ximian.com>
30634
30635         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
30636         instead of a `MonoClassField *' since we just need the type.
30637         (create_generic_typespec): New static function.  Creates a
30638         TypeSpec token for a generic type declaration.
30639         (mono_image_get_generic_field_token): New static function.
30640         (mono_image_create_token): If we're a FieldBuilder in a generic
30641         type declaration, call mono_image_get_generic_field_token() to get
30642         the token.
30643
30644 2003-11-02  Martin Baulig  <martin@ximian.com>
30645
30646         * reflection.h
30647         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
30648         `MonoReflectionGenericInst *declaring_type' and
30649         `MonoReflectionGenericInst *reflected_type' fields.
30650
30651         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
30652         `MonoReflectionGenericInst *declaring_type' and a
30653         `MonoReflectionGenericInst *reflected_type' argument instead of a
30654         single `MonoReflectionGenericInst *type' one.  Set
30655         `res->declaring_type' and `res->reflected_type' from them.
30656         (mono_reflection_inflate_field): Likewise.      
30657
30658 2003-11-02  Martin Baulig  <martin@ximian.com>
30659
30660         * class.c (mono_class_setup_vtable): Don't store generic methods
30661         in the vtable.  
30662
30663 2003-11-02  Martin Baulig  <martin@ximian.com>
30664
30665         * reflection.h (MonoReflectionGenericInst): Added
30666         `MonoReflectionType *declaring_type'.
30667
30668         * reflection.c (mono_reflection_bind_generic_parameters): Use
30669         `if (tb->parent)' instead of `klass->parent'.
30670
30671 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
30672
30673         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
30674         with an empty ASSEMBLY table.
30675
30676         * reflection.c (mono_image_build_metadata): Avoid using the same loop
30677         variable in the inner and outer loops.
30678
30679 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
30680
30681         * metadata.h (mono_metadata_make_token): Put parentheses around macro
30682         argument.
30683
30684         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
30685         
30686         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
30687         icalls. Instead, do everything in managed code. This is needed since
30688         it is hard to restore the original domain etc. in unmanaged code in the
30689         presence of undeniable exceptions.
30690
30691         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
30692         New icalls to push and pop appdomain refs.
30693
30694 2003-10-31  Martin Baulig  <martin@ximian.com>
30695
30696         * class.c (inflate_generic_type): Renamed to
30697         mono_class_inflate_generic_type() and made it public.
30698
30699         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
30700         New interncall.
30701
30702         * loader.c (mono_field_from_memberref): Also set the retklass for
30703         typespecs.
30704
30705         * fielder.c (mono_image_get_inflated_field_token): New static
30706         method; creates a metadata token for an inflated field.
30707         (mono_image_create_token, fixup_method): Added support for
30708         "MonoInflatedField".
30709         (fieldbuilder_to_mono_class_field): New static function.
30710         (mono_reflection_inflate_field): New public function.
30711
30712         * reflection.h
30713         (MonoReflectionGenericInst): Added `MonoArray *fields'.
30714         (MonoReflectionInflatedField): New typedef.     
30715
30716 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
30717
30718         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
30719         for Solaris and other platforms without s6_addr16
30720
30721 2003-10-30  Martin Baulig  <martin@ximian.com>
30722
30723         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
30724         argument instead of two.
30725         (mono_class_inflate_generic_signature): Likewise.
30726         (inflate_generic_header): Likewise.
30727         (mono_class_inflate_generic_method): Likewise.  In addition, if
30728         `ginst->klass' is set, it becomes the new `method->klass'.
30729
30730         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
30731         field.
30732
30733         * reflection.c (encode_generic_method_sig): Write a 0xa as the
30734         first byte. [FIXME]
30735         (method_encode_methodspec): If we have generic parameters, create
30736         a MethodSpec instead of a MethodRef.
30737         (fixup_method): Added support for "MonoInflatedMethod" and
30738         "MonoInflatedCtor".
30739         (mono_image_create_token): Added support for "MonoInflatedMethod"
30740         and "MonoInflatedCtor".
30741         (inflated_method_get_object): New static function; returns a
30742         managed "System.Reflection.MonoInflatedMethod" object.
30743         (mono_reflection_bind_generic_method_parameters): Return a
30744         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
30745         (mono_reflection_inflate_method_or_ctor): Likewise.
30746         (mono_image_get_generic_method_param_info): Initialize unused
30747         fields to zero.
30748         (mono_image_get_generic_param_info): Likewise.
30749
30750         * reflection.h (MonoReflectionInflatedMethod): New public
30751         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
30752         "S.R.MonoInflatedCtor" classes.
30753
30754         * loader.c (method_from_memberref): If we're a TypeSpec and it
30755         resolves to a generic instance, inflate the method.
30756
30757 2003-10-28  Dick Porter  <dick@ximian.com>
30758
30759         * object.c (mono_runtime_run_main): Convert command-line arguments
30760         into utf8, falling back to the user's locale encoding to do so.
30761
30762 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
30763
30764         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
30765         at this time.
30766
30767         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
30768
30769         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
30770         up icalls at method definition time. Partially fixes #33569.
30771
30772 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
30773
30774         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
30775         marshalling of arrays. Fixes #50116.
30776
30777         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
30778
30779         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
30780         points to a vtable in the dying appdomain.
30781
30782         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
30783         listeners into unmanaged code inside the lock.
30784
30785         * object.c (mono_class_vtable): Turn off typed allocation in non-root
30786         domains and add some comments.
30787
30788 2003-10-25  Martin Baulig  <martin@ximian.com>
30789
30790         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
30791
30792         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
30793
30794         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
30795         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
30796         currently parsing.  Create the generic class and store it in
30797         `generic_inst->klass' before parsing the type arguments.  This is
30798         required to support "recursive" definitions; see mcs/tests/gen-23.cs
30799         for an example.
30800         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
30801         to support recursive typespec entries.
30802
30803         * class.c (mono_class_setup_parent): If our parent is a generic
30804         instance, we may get called before it has its name set.
30805         (mono_class_from_generic): Splitted into
30806         mono_class_create_from_generic() and mono_class_initialize_generic().
30807
30808 2003-10-25  Martin Baulig  <martin@ximian.com>
30809
30810         * icall.c (ves_icall_Type_BindGenericParameters): Return a
30811         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
30812         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
30813         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
30814
30815         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
30816         (create_typespec): Likewise.
30817         (mono_reflection_bind_generic_parameters): Return a
30818         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
30819         (mono_reflection_inflate_method_or_ctor): New public function.
30820
30821         * reflection.h (MonoReflectionGenericInst): New typedef.        
30822
30823 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
30824
30825         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
30826         inside the domain lock. Fixes #49993.
30827         
30828         * object.c (mono_class_vtable): When typed allocation is used, 
30829         allocate vtables in the GC heap instead of in the mempool, since the
30830         vtables contain GC descriptors which are used by the collector even
30831         after the domain owning the mempool is unloaded.
30832
30833         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
30834
30835         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
30836         reflect what it does. Also invalidate mempools instead of freeing
30837         them if a define is set.
30838
30839         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
30840         of the appdomain.
30841         
30842         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
30843         hold the finalizable objects in this domain.
30844
30845         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
30846         appdomain.
30847
30848         * appdomain.c (mono_domain_set): New function to set the current
30849         appdomain, but only if it is not being unloaded.
30850
30851         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
30852         appdomain which is being unloaded.
30853         
30854         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
30855         unloading of the root appdomain.
30856
30857         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
30858         icall to execute a method in another appdomain. Intended as a 
30859         replacement for InternalSetDomain, which can confuse the code 
30860         generation in the JIT.
30861
30862         * appdomain.c (mono_domain_is_unloading): New function to determine
30863         whenever an appdomain is unloading.
30864
30865         * appdomain.c (mono_domain_unload): New function to correctly unload
30866         an appdomain.
30867
30868         * assembly.c (mono_assembly_load_references): Check that an assembly
30869         does not references itself.
30870
30871         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
30872         domain manually, it asks the finalizer thread to do it, then waits for
30873         the result. Also added a timeout.
30874
30875         * icall.c: Register the new icalls.
30876
30877         * threads.h threads.c: Export the mono_gc_stop_world and 
30878         mono_gc_start_world functions.
30879         
30880         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
30881         function to fill out the mempool with 0x2a.
30882
30883 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
30884
30885         * reflection.h (MonoReflectionMethodAux): New structure to store
30886         information which is rarely used, thus is not in the MonoMethod
30887         structure.
30888
30889         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
30890         store the aux info.
30891
30892         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
30893         and marshalling info into the aux structure.
30894
30895         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
30896         from the aux structure.
30897
30898         * loader.c (mono_method_get_param_names): Retrieve the param names from
30899         the aux structure.
30900         
30901 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
30902
30903         * exception.h exception.c: Add AppDomainUnloadedException && fix 
30904         warning.
30905
30906 2003-10-21  Dick Porter  <dick@ximian.com>
30907
30908         * socket-io.c
30909         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
30910         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
30911
30912 2003-10-21  Martin Baulig  <martin@ximian.com>
30913
30914         * reflection.c (mono_reflection_bind_generic_parameters):
30915         `klass->parent' is NULL for interfaces.
30916
30917 2003-10-21  Martin Baulig  <martin@ximian.com>
30918
30919         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
30920
30921 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
30922
30923         * exception.c (mono_exception_from_name_msg): New helper function for
30924         creating exceptions and initializing their message field.
30925
30926         * exception.c: Simplify functions using the new helper.
30927
30928         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
30929         New function.
30930
30931         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
30932         mono_raise_exception, since otherwise gcc doesn't generate the function
30933         epilog for raise_exception, confusing the stack unwinding in the JIT.
30934         Fixes #45043.
30935
30936         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
30937         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
30938         Fixes #49499.
30939
30940 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30941
30942         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
30943         utf8.
30944
30945 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
30946
30947         * icall.c: Removed GetUninitializedObject method because
30948           AllocateUninitializedClassInstance does the same.
30949
30950 2003-10-18  Martin Baulig  <martin@ximian.com>
30951
30952         * class.c (inflate_generic_signature): Renamed to
30953         mono_class_inflate_generic_signature() and made it public.
30954         (my_mono_class_from_generic_parameter): New static function; if we
30955         don't already have the generic parameter's MonoClass, create a
30956         very simple one which is just used internally in the runtime and
30957         not passed back to managed code.
30958
30959         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
30960
30961         * metadata.h (MonoMethodSignature): Moved the
30962         `MonoGenericParam *gen_params' to the MonoMethodHeader.
30963         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
30964
30965         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
30966         ves_icall_MonoMethod_GetGenericArguments(); this is now an
30967         interncall on the MonoMethod class, not on MethodInfo.
30968         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
30969         calling mono_reflection_bind_generic_method_parameters() directly.
30970
30971         * loader.c (mono_method_get_signature): If this is a MethodSpec;
30972         return the already computed `method->signature'.
30973         (method_from_methodspec): New static function to load a method
30974         from a MethodSpec entry.
30975         (mono_get_method_from_token): Call the new method_from_methodspec()
30976         for MethodSpec tokens.  
30977         (mono_get_method_from_token): If we're a generic method, load the
30978         type parameters.
30979
30980         * reflection.c (mono_image_get_memberref_token): Allow
30981         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
30982         table.
30983         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
30984         (mono_image_create_token): First check whether it's a generic
30985         method (so we'd need to create a MethodSpec), then do the other
30986         two alternatives.
30987         (mono_reflection_bind_generic_method_parameters): Return a
30988         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
30989         called directly from the interncall.
30990
30991 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
30992
30993         * reflection.c (load_public_key): Move loading of the public key
30994         into managed code.
30995
30996         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
30997
30998         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
30999         fields.
31000
31001         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
31002         culture, hash_alg and public_key. Fixes #49555.
31003
31004 2003-10-17  Martin Baulig  <martin@ximian.com>
31005
31006         * class.h (MonoGenericInst): Moved this declaration here and added
31007         `MonoMethod *generic_method'.
31008
31009         * icall.c
31010         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
31011         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
31012
31013         * metadata.c (mono_metadata_type_equal): Two types of
31014         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
31015         index; ie. don't compare the address of the `MonoGenericParam'
31016         structure.
31017         (mono_metadata_load_generic_params): Removed the `MonoMethod
31018         *method' argument.
31019
31020         * metadata.h (MonoGenericInst): Moved declaration to class.h.
31021         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
31022
31023         * reflection.c (method_encode_signature): Encode the number of
31024         generic parameters.
31025         (encode_generic_method_sig): New static function.
31026         (method_encode_methodspec): New static function; creates an entry
31027         in the MethodSpec table for a generic method.
31028         (mono_image_get_methodspec_token): New static function.
31029         (mono_image_create_token): Call mono_image_get_methodspec_token()
31030         for generic methods.
31031         (mono_reflection_bind_generic_method_parameters): New public
31032         function.  Instantiates a generic method.
31033
31034 2003-10-16  Martin Baulig  <martin@ximian.com>
31035
31036         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
31037         *gen_params' here from MonoMethodHeader.
31038
31039         * metadata.c (mono_metadata_parse_method_signature): If we have
31040         generic parameters, initialize `method->gen_params' and then set
31041         the correct `type->data.generic_param' in all the parameters.
31042
31043 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
31044
31045         * threads.c (mono_threads_get_default_stacksize): New function to 
31046         return the default stacksize.
31047
31048         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
31049         termination of the finalizer thread, since the previous method had
31050         race conditions. Fixes #49628.
31051
31052         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
31053         as for the other managed threads.
31054
31055 2003-10-16  Martin Baulig  <martin@ximian.com>
31056
31057         * class.c (inflate_generic_signature): Copy `generic_param_count'
31058         and `gen_params'.
31059
31060         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
31061         New interncall.
31062
31063         * metadata.c (mono_metadata_parse_method_signature): Actually set
31064         the `method->generic_param_count' here.
31065         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
31066
31067 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
31068
31069         * object.h: Add a new field to TypedRef to simplify the implementation
31070         of the REFANY opcodes in the JIT.
31071
31072         * icall.c: Make use of the new field.
31073
31074         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
31075         dynamically.
31076
31077 2003-10-15  Martin Baulig  <martin@ximian.com>
31078
31079         * class.c (mono_class_from_gen_param): Renamed to
31080         mono_class_from_generic_parameter() and moved most of the
31081         functionality from mono_reflection_define_generic_parameter()
31082         here; ie. we create a "real" class here.
31083         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
31084         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
31085         previously been called.
31086
31087         * class.h (MonoGenericParam): Moved the declaration of this struct
31088         here from metadata.h and added `MonoMethod *method'.
31089
31090         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
31091         interncall.
31092
31093         * loader.c (mono_get_method_from_token): If we have any generic
31094         parameters, call mono_metadata_load_generic_params() to read them
31095         from the MONO_TABLE_GENERICPAR.
31096
31097         * metadata.c (mono_metadata_load_generic_params): Added
31098         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
31099
31100         * metadata.h (MonoMethodSignature): Replaced
31101         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
31102         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
31103
31104         * reflection.c (mono_reflection_define_generic_parameter): Moved
31105         most of the functionality into the new
31106         mono_class_from_generic_parameter(); set the `method' field if
31107         we're a method parameter.       
31108
31109 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
31110
31111         * marshal.c (emit_struct_conv): if native size is 0
31112         emit no code.
31113
31114 2003-10-14  Martin Baulig  <martin@ximian.com>
31115
31116         * icall.c: The generics API has changed in the spec since it was
31117         added to System.Type; these modifications make it match the spec
31118         again.
31119         (ves_icall_Type_GetGenericParameters): Renamed to
31120         `ves_icall_Type_GetGenericArguments'.
31121         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
31122         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
31123         `ves_icall_MonoType_get_HasGenericArguments'.
31124         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
31125         `ves_icall_MonoType_get_IsGenericParameter'.
31126         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
31127         this is no interncall anymore.
31128         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
31129         `ves_icall_TypeBuilder_get_IsGenericParameter'.
31130
31131 2003-10-14  Martin Baulig  <martin@ximian.com>
31132
31133         * reflection.c (mono_reflection_bind_generic_parameters): Also
31134         inflate generic methods if we're reading the class from IL.
31135
31136 2003-10-13  Martin Baulig  <martin@ximian.com>
31137
31138         * reflection.c (mono_reflection_define_generic_parameter): This
31139         method isn't called directly from the icall anymore; take a
31140         `MonoReflectionAssemblyBuilder *' so we can use this for type and
31141         method generic parameters.
31142         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
31143         (method_builder_encode_signature): Encode generic parameters.
31144         (mono_image_get_method_info): Write generic params to the
31145         MONO_TABLE_GENERICPARAM table.
31146
31147         * reflection.h (MonoReflectionMethodBuilder): Added
31148         `MonoArray *generic_params'.
31149
31150         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
31151
31152         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
31153         wrapper for mono_reflection_define_generic_parameter().
31154         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
31155
31156 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
31157
31158         * marshal.h: Add missing function to fix build.
31159
31160         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
31161         the SetLastError pinvoke attribute.
31162
31163         * marshal.c (mono_marshal_set_last_error): New helper function called
31164         by the generated code.
31165         
31166         * marshal.c (mono_mb_emit_branch): New helper function.
31167
31168         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
31169
31170         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
31171         classes as parameters and return values of delegates. Fixes #29256. 
31172
31173 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
31174
31175         * locales.c: use gint32 in non HAVE_ICU case
31176
31177 2003-10-11  Martin Baulig  <martin@ximian.com>
31178
31179         * mono-debug.c (mono_debug_add_method): Added a workaround for
31180         bug #48591.
31181
31182 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
31183
31184         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
31185         delegates passed to native code must use the STDCALL calling 
31186         convention. Fixes #35987.
31187
31188 2003-10-10  Martin Baulig  <martin@ximian.com>
31189
31190         * class.c (inflate_generic_type): If we're inflating for a generic
31191         type instance (and not for a generic method), return
31192         MONO_TYPE_MVAR unchanged.
31193
31194 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31195
31196         * string-icalls.c: Join ignores null strings in the source array.
31197         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
31198         * threads.c: GetAvailableTheads is slightly more accurate.
31199
31200 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
31201
31202         * threads.h threads.c : add mono_threads_set_default_stacksize
31203         and pass default to CreateThread calls.
31204
31205 2003-10-09  Dick Porter  <dick@ximian.com>
31206
31207         * icall.c:
31208         * locales.h:
31209         * locales.c: Internal calls for constructing CultureInfo and
31210         related objects from libicu (if its available.)
31211
31212 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
31213
31214         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
31215
31216 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31217
31218         * threadpool.c: added an argument to async_invoke_thread that is the
31219         item to process, pass the MonoAsyncResult to the thread start function
31220         when creating a new thread. This way we don't need to acquire any lock
31221         when we're creating a new thread. Readded a semaphore for faster
31222         response times (instead of that Sleep i added).
31223
31224 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
31225
31226         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
31227         get daylight change dates better on Windows, fix handling
31228         of platforms without tm_gmtoff.
31229
31230 2003-10-06  Martin Baulig  <martin@ximian.com>
31231
31232         * class.c (inflate_generic_method): Renamed to
31233         mono_class_inflate_generic_method() and made public.
31234         (mono_class_init): Don't inflate the generic methods here.
31235         (mono_class_from_generic): Added `gboolean inflate_methods'
31236         argument.  Inflate the methods here.
31237
31238         * loader.c (mono_method_get_param_names): Ignore instances of
31239         generic types for the moment.
31240
31241         * reflection.c (fixup_method): Added support for inflated methods.
31242         (mono_image_create_token): Use mono_image_get_methodref_token()
31243         for inflated methods.
31244         (mono_custom_attrs_from_param): Ignore instances of generic types
31245         for the moment.
31246         (mono_reflection_bind_generic_parameters): New public function.
31247         Moved all the functionality from
31248         ves_icall_Type_BindGenericParameters() here and added support for
31249         dynamic types.
31250         (mono_reflection_define_generic_parameter): Initialize
31251         `klass->methods' here.
31252
31253         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
31254         functionality into mono_reflection_define_generic_parameter().
31255         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
31256         TypeBuilder, return that TypeBuilder.
31257
31258 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31259
31260         * appdomain.c: removed mono_delegate_semaphore.
31261
31262         * threadpool.c:
31263         (mono_thread_pool_add): moved hash table creation inside and the thread 
31264         creation outside of the critical region.
31265         (mono_thread_pool_finish): removed obsolete code.
31266         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
31267         continue or exit the thread depending on the queue.
31268
31269 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
31270
31271         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
31272         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
31273         handle more bool marshalling options
31274
31275 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
31276
31277         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
31278         arrays of structs. Also add a more descriptive error message when
31279         a structure member is marshalled as LPArray.
31280
31281 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
31282
31283         * marshal.c (mono_marshal_get_native_wrapper): Add support for
31284         marshalling arrays of complex types. Fixes #29098. Also remove an
31285         usused and incomplete function.
31286
31287 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
31288
31289         * gc.c: report heap_size - free_bytes as total memory allocated
31290         (bug#49362).
31291
31292 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
31293
31294         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
31295         fix timezone handling problems on Windows.
31296         
31297         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
31298         asserts when the year is outside the range handled by ms the functions.
31299
31300         * class.c (setup_interface_offsets): If the class is an interface,
31301         fill out its interface_offsets slot.
31302
31303 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31304
31305         * threadpool.c: mark threadpool threads as background.
31306
31307 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
31308
31309         * decimal.c - define DECINLINE to nothing if not using GCC
31310
31311 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
31312
31313         * assembly.c: More refcount fixes.
31314
31315 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31316
31317         * string-icalls.c: if we're not trimming, return the same string.
31318         When not splitting, don't create a new string.
31319
31320 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31321
31322         * image.c:
31323         (mono_image_open): increment the ref_count inside the critical section.
31324
31325 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
31326
31327         * image.c (mono_image_open): Fix reference counting bug.
31328
31329 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
31330
31331         * marshal.c (mono_marshal_type_size) struct alignment changed for 
31332         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
31333         64bits. Avoid leak in mono_marshal_get_native_wrapper when
31334         mono_lookup_pinvoke_call throws.        
31335
31336 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
31337
31338         * reflection.c (mono_reflection_parse_type): Fix #49114.
31339
31340         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
31341         temporary workaround for cygwin header problem.
31342
31343         * object.c (mono_object_isinst): Synchronize this with the code
31344         generated by the JIT for casts.
31345
31346 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
31347
31348         * reflection.c (encode_type): Fix #38332.
31349
31350 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
31351
31352         * marshal.c (mono_marshal_method_from_wrapper): New function to return
31353         the original method from the wrapper method.
31354
31355 2003-09-25  Martin Baulig  <martin@ximian.com>
31356
31357         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
31358         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
31359         (ves_icall_Type_get_IsGenericInstance): New interncall.
31360
31361 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
31362
31363         * object.c: fix cast warning in big endian code.
31364
31365 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
31366
31367         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
31368         
31369 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31370
31371         * assembly.c: don't call check_env from mono_assembly_load. It's
31372         already done once in mono_assemblies_init and may cause headaches when
31373         multiple threads are loading assemblies.
31374
31375 2003-09-19  Martin Baulig  <martin@ximian.com>
31376
31377         * reflection.c (mono_reflection_define_generic_parameter): Don't
31378         allocate `klass->methods', set `klass->flags' to
31379         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
31380
31381 2003-09-18  Martin Baulig  <martin@ximian.com>
31382
31383         * class.c (mono_class_init): Don't create `class->methods' if it's
31384         already initialized.
31385
31386         * metadata.c (mono_metadata_load_generic_params): Make this
31387         actually work.
31388
31389         * reflection.c (mono_reflection_define_generic_parameter): Set
31390         parent class and interfaces from the constraints.
31391
31392         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
31393         to keep this struct in sync with the declaration in TypeBuilder.cs.
31394
31395 2003-09-17  Martin Baulig  <martin@ximian.com>
31396
31397         * metadata.h (MonoType): Replaced the data's `int type_param'
31398         field with `MonoGenericParam *generic_param'.
31399         (MonoGenericParam): Added `MonoClass *klass'.
31400
31401         * class.c (mono_class_from_gen_param): Removed the
31402         `MonoImage *image' and `int type_num' arguments.
31403
31404         * metadata.c (mono_metadata_parse_generic_param): New static
31405         method; creates a MonoGenericParam which just contains the index.
31406         (do_mono_metadata_parse_type): Call
31407         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
31408         MONO_TYPE_MVAR.
31409
31410         * reflection.c (mono_image_typedef_or_ref): Generic type
31411         parameters may be in the same assembly, but never use a typedef
31412         for them.
31413         (mono_reflection_define_generic_parameter): We're now creating a
31414         "real" class for the type parameter; it's now safe to call
31415         mono_class_from_mono_type() on the class'es type, it'll do the
31416         right thing.
31417
31418 2003-09-16  Martin Baulig  <martin@ximian.com>
31419
31420         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
31421         `symfile->range_entry_size' and `symfile->class_entry_size' here;
31422         the `symfile' data structure must be fully initialized before it
31423         gets added to the table.
31424
31425 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
31426
31427         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
31428
31429         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
31430         class init trampolines.
31431
31432 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
31433
31434         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
31435         to the built-in profiler to turn off time and allocation profiling
31436         respectively.
31437
31438 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
31439
31440         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
31441         g_direct_equal.
31442
31443         * debug-helpers.c (mono_method_full_name): Print the wrapper type
31444         in human readable form.
31445
31446 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
31447
31448         * reflection.c icall.c: Fixed warnings.
31449
31450         * image.c (load_class_names): Use a temporary hash table to hold the
31451         namespaces in order to avoid doing many string comparisons.
31452
31453         * image.h: Fix typo.
31454
31455         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
31456         Pass NULL instead of g_direct_equal to the GHashTable constructor 
31457         since the NULL case is short-circuited inside g_hash_table_lookup, 
31458         leading to better performance.  
31459
31460         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
31461         obtain the first custom attribute for a given index. Depends on the
31462         CustomAttribute table being sorted by the parent field.
31463
31464         * reflection.c (mono_custom_attrs_from_index): Use the new function 
31465         for better performance.
31466
31467 2003-09-07  Martin Baulig  <martin@ximian.com>
31468
31469         * class.c (mono_class_init): If we're a generic instance, inflate
31470         all our methods instead of loading them from the image.
31471         (mono_class_from_generic): Set `class->methods = gklass->methods'.
31472
31473 2003-09-07  Martin Baulig  <martin@ximian.com>
31474
31475         * mono-debug-debugger.c: Added support for constructors.
31476
31477 2003-09-06  Martin Baulig  <martin@ximian.com>
31478
31479         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
31480         New interncall.
31481
31482         * reflection.c (mono_reflection_setup_generic_class): Call
31483         ensure_runtime_vtable() to create the vtable.
31484
31485 2003-09-05  Martin Baulig  <martin@ximian.com>
31486
31487         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
31488         MONO_TYPE_MVAR.
31489
31490 2003-09-04  Martin Baulig  <martin@ximian.com>
31491
31492         * reflection.c (mono_reflection_define_generic_parameter): Generic
31493         parameters start with zero.
31494
31495 2003-09-04  Martin Baulig  <martin@ximian.com>
31496
31497         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
31498
31499         * reflection.h (MonoReflectionGenericParam): New typedef.
31500         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
31501         the generic parameters from the managed TypeBuilder.
31502
31503         * reflection.c (mono_reflection_define_generic_parameter): New function.
31504         (mono_reflection_create_runtime_class): Encode generic parameters.
31505         (mono_reflection_setup_generic_class): New function; this is
31506         called after adding adding all generic params to the TypeBuilder.
31507         (encode_type): Added MONO_TYPE_VAR.
31508
31509 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
31510
31511         * class.h class.c (mono_class_needs_cctor_run): Moved this method
31512         here from the JIT.
31513
31514         * assembly.h assembly.c: Moved the AOT loading code into an assembly
31515         load hook.
31516
31517 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
31518
31519         * reflection.h reflection.c class.h class.c: Delete duplicate 
31520         definition of mono_type_get_name () from reflection.c and export the
31521         one in class.c.
31522
31523         * class.c: Class loading fixes from Bernie Solomon 
31524         (bernard@ugsolutions.com).
31525
31526         * reflection.c: Endianness fixes from Bernie Solomon 
31527         (bernard@ugsolutions.com).
31528         
31529 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
31530
31531         * assembly.h assembly.c: Define a file format version for AOT
31532         libraries.
31533         
31534         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
31535
31536         * appdomain.h (MonoJitInfo): New field to determine whenever the
31537         code is domain neutral.
31538         
31539 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
31540
31541         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
31542
31543 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
31544
31545         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
31546         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
31547         Avoid caching the result since strings must be domain specific. Fixes
31548         #48050.
31549
31550 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
31551
31552         * marshal.c (mono_marshal_init): Make this callable multiple times
31553         since it is hard to find a correct place to call it.
31554
31555         * object.c (mono_runtime_class_init): Execute static constructors in
31556         the correct appdomain.
31557
31558         * image.c (build_guid_table): Handle the case when multiple images have
31559         the same GUID.
31560
31561 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31562
31563         * icall.c: added a couple of icalls for System.Web.
31564
31565 2003-08-28  Martin Baulig  <martin@ximian.com>
31566
31567         * icall.c (ves_icall_Type_BindGenericParameters): Use
31568         `klass->generic_inst' instead of `&klass->byval_arg' in the
31569         mono_type_get_object() call.  The returned type must be
31570         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
31571
31572 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
31573
31574         * NOTES: New file.
31575
31576         * object.c (mono_class_proxy_vtable): Make it thread safe.
31577
31578         * pedump.c: Fix warning.
31579
31580         * object.c appdomain.h: Get rid of metadata_section. 
31581         It is no longer needed and it was causing deadlocks with domain->lock.
31582
31583         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
31584
31585 2003-08-26  Martin Baulig  <martin@ximian.com>
31586
31587         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
31588
31589 2003-08-26  Martin Baulig  <martin@ximian.com>
31590
31591         * pedump.c (main): Call mono_metadata_init(),
31592         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
31593         and mono_loader_init().
31594
31595 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
31596
31597         * loader.h: Add missing include to fix build.
31598
31599         * image.h: mono_image_load_references is no more.
31600
31601         * assembly.c: Reworked assembly loading to make it really thread safe.
31602         After these changes, the assembly returned by mono_assembly_open is
31603         fully initialized, i.e. all its references assemblies are loaded.
31604
31605         * assembly.c (mono_image_load_references): Renamed to 
31606         mono_assembly_load_references, and made private, since clients no
31607         longer need to call it.
31608
31609         * class.c: Removed calls to mono_assembly_load_references, since it was
31610         a source of deadlocks.
31611
31612         * loader.h loader.c class.h class.c: Protect data structures using a 
31613         new lock, the loader lock.
31614
31615         * class.c (mono_class_setup_vtable): Create temporary hash tables and
31616         GPtrArrays only when needed.
31617
31618         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
31619         into empty structures by mcs. Fixes pinvoke7.cs.
31620         
31621         * domain.c (mono_init): Call a new initialization function.
31622
31623         * appdomain.c (mono_runtime_init): Call the new initializer function
31624         of the marshal module.
31625
31626         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
31627         inserted into empty structures by mcs. Fixes pinvoke7.cs.
31628
31629         * marshal.h marshal.c: Added locks around the wrapper caches to make
31630         this module thread safe.
31631
31632         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
31633         this argument. Fixes pinvoke1.exe.
31634
31635 2003-08-25  Lluis Sanchez <lluis@ximian.com>
31636
31637         * object.h: Added call_type field to MonoMethodMessage and the corresponding
31638         enumeration of values. Removed fields to store remote call output values in
31639         MonoAsyncResult. Not needed any more.
31640         * object.c: Initialize call_type and async_result fields in mono_message_init.
31641         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
31642         dispatching the message.
31643         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
31644         async call to finish. To do it use a message with EndInvoke call type.
31645
31646 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
31647
31648         * loader.h loader.c (mono_method_hash_marhal_info): New function which
31649         determines whenever a method has marshalling info.
31650
31651 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31652
31653         * assembly.c: fix the build on windows.
31654
31655 2003-08-22 Lluis Sanchez <lluis@ximian.com>
31656
31657         * object.cs: Fixed bug #47785.
31658
31659 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
31660
31661         * string-icalls.c (StringReplace): If their are no occurances of
31662         the old string found return a reference to the supplied
31663         string. This saves some memory and matches MS behavoir.
31664         
31665 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31666
31667         * socket-io.c: fixed compilation for systems that define AF_INET6
31668         and don't define SOL_IP/SOL_IPV6.
31669
31670 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
31671
31672         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
31673         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
31674
31675         * rawbuffer.c rawbuffer.h: Make this module thread safe.
31676
31677         * domain.c: Make this module thread safe.
31678
31679         * domain.c (mono_init): Call new initialization function.
31680
31681         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
31682         reference types too. Fixes #38812.
31683
31684         * image.c (mono_image_init): Fixed warnings.
31685
31686         * class.c (mono_class_from_typeref): Handle assembly load failure
31687         correctly.
31688
31689         * appdomain.c (add_assemblies_to_domain): Handle the case when
31690         the references of an assembly are not yet loaded.
31691
31692         * metadata.c image.c assembly.c: Moved initialization of global
31693         variables to a separate function called at startup since lazy 
31694         initialization of these variables is not thread safe.
31695         
31696         * image.c assembly.c: Made this module thread safe by adding locks in 
31697         the appropriate places.
31698
31699         * domain.c (mono_init): Call the new initialization functions of the
31700         three modules.
31701
31702 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
31703
31704         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
31705           make a direct call. It is proxy's work to make the call asynchronous.
31706           mono_delegate_end_invoke(): If the targe is a proxy, just collect
31707           the return values.
31708         * object.cs: mono_method_call_message_new(): read AsyncResult and
31709           state object from parameters list, if this info is requested.
31710         * object.h: Added fields to store remote call output values in
31711           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
31712
31713 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
31714
31715         * object.h: add needed fields to MonoThread.
31716         * threads.c, threads.h: allow registering a function to cleanup data
31717         allocated per thread by the JIT.
31718
31719 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
31720
31721         * loader.h: portability fix by Bernie Solomon
31722         * <bernard@ugsolutions.com>.
31723
31724 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
31725
31726         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
31727         return a MonoArray. This simplifies the code and also ensures that
31728         the cache allways contains an object reference as a value.
31729
31730         * icall.c (ves_icall_get_parameter_info): Simplified using the new
31731         function.
31732
31733 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31734
31735         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
31736         fixes a problem with byte ordering when getting the address family for
31737         a socket.
31738
31739 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
31740
31741         * .cvsignore: Added monosn.
31742
31743         * reflection.h reflection.c loader.c: Added support for parameter
31744         marshalling to dynamically created types. Fixes #47295.
31745
31746 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
31747
31748         * rand.c: remove useless warnings.
31749
31750 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
31751
31752         * class.c: implemented ldtoken for methods and fieldrefs.
31753
31754 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31755
31756         * threadpool.c: when mono_async_invoke was called, no one took care of
31757         monitoring the queue. So if the method invoked took some time and we
31758         got new async invoke requests after 500 ms (the thread created waited
31759         that long in WaitForSingleObject), the new async invoke was not called
31760         until the previous one finished.
31761
31762         This is fixed now. Thanks to Totte for helping with it.
31763
31764 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31765
31766         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
31767
31768 2003-08-11  Martin Baulig  <martin@ximian.com>
31769
31770         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
31771
31772 2003-08-06  Martin Baulig  <martin@ximian.com>
31773
31774         * mono-debug-debugger.c: Added support for static fields,
31775         properties and methods.
31776
31777 2003-08-06  Martin Baulig  <martin@ximian.com>
31778
31779         * mono-debug-debugger.c: Don't store the MonoString's vtable to
31780         make this work for applications with multiple application domains.
31781
31782 2003-08-04  Martin Baulig  <martin@ximian.com>
31783
31784         * mono-debug-debugger.c: Completely reworked the type support; the
31785         most important thing is that we're now just using one single
31786         `MonoType' instance per type.
31787
31788 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
31789
31790         * mono-endian.h, mono-endian.c, icall.c: Added icall
31791         ves_icall_System_Double_AssertEndianity to assert double word endianity
31792         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
31793
31794 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
31795
31796         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
31797         support, icalls and fixes.
31798
31799 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
31800
31801         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
31802         classes that are a punctuation character in .NET is not the same a
31803         g_unichar_ispunct.
31804
31805 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
31806
31807         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
31808
31809 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
31810
31811         * icall.c: Add new MemCopy internalcall.
31812         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
31813         Simplified code; It is not necessary to handle all the cases here,
31814         as the C# code takes care of it.  Only handle the case of the name
31815         resource embedded into the assembly.
31816
31817         Changed signature to return the data pointer and the size of the
31818         data. 
31819
31820 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
31821
31822         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
31823         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
31824
31825 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
31826
31827         * socket-io.c: ignore EINTR error in select.
31828
31829 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
31830
31831         * class.h, class.c: removed unused subclasses field in MonoClass.
31832
31833 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
31834
31835         * icall.c: improve fix of get_base_definition(). If the parent class
31836           doesn't have the mehod, look at the parent of the parent.
31837         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
31838           to check if a parameter is an in or out parameter
31839           (PARAM_ATTRIBUTE_IN is not set by default).
31840           mono_method_return_message_restore(): Use mono_class_value_size to
31841           get the size of a value type. mono_type_stack_size (parameterType)
31842           does not return the correct value if parameterType is byRef.
31843           mono_load_remote_field(), mono_load_remote_field_new(),
31844           mono_store_remote_field(), mono_store_remote_field_new():
31845           raise exception if the remote call returns an exception.
31846
31847 2003-07-28  Martin Baulig  <martin@ximian.com>
31848
31849         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
31850         method.  This is a wrapper around mono_runtime_invoke() which
31851         boxes the instance object if neccessary.
31852
31853 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
31854
31855         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
31856         metadata.h, row-indexes.h, verify.c: first cut of generics support.
31857
31858 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
31859
31860         * icall.c: disable mcs bug workaround.
31861
31862 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
31863
31864         * object.c (mono_runtime_class_init): Take the metadata_section
31865         mutex before obtaining the domain mutex.
31866
31867         * appdomain.h: Added definition of metadata_section mutex here. 
31868
31869         * object.c: define metadata_mutex here.
31870
31871 2003-07-24  Ravi Pratap  <ravi@ximian.com>
31872
31873         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
31874         fixed.
31875
31876 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
31877
31878         * reflection.c: Fix bug #46669
31879
31880 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31881
31882         * exception.c:
31883         * exception.h:
31884         * icall.c:
31885         * object.h: fill in the type name for TypeLoadException.
31886
31887 2003-07-23  Ravi Pratap  <ravi@ximian.com>
31888
31889         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
31890         relationship between TypeBuilders while compiling corlib) and bug
31891         45993 (Array types returned from the runtime while compiling
31892         corlib were from the loaded corlib).
31893
31894 2003-07-22  Martin Baulig  <martin@ximian.com>
31895
31896         * mono-debug-debugger.c: Reworked the type support a bit more;
31897         distinguish between types and classes.
31898
31899 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
31900
31901         * icall.c: add IsArrayImpl icall.
31902
31903 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
31904
31905         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
31906         initializing real_size only once. Also fix bug #46602.
31907
31908 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
31909
31910         * object.c: Renamed mono_metadata_section to metadata_section.
31911
31912 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
31913
31914         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
31915           empty array if the type is an array. Fixed.
31916           ves_icall_MonoMethod_get_base_definition: if the base method
31917           is abstract, get the MethodInfo from the list of methods of
31918           the class.
31919         * reflection.c: ParameterInfo.PositionImpl should be zero-based
31920           and it was 1-based. Fixed in mono_param_get_objects.
31921
31922 2003-07-20  Martin Baulig  <martin@ximian.com>
31923
31924         * mono-debug.h: Set version number to 31.
31925         (mono_debug_init): Added `MonoDomain *' argument.
31926
31927         * mono-debug-debugger.c: Reworked the type support; explicitly
31928         tell the debugger about builtin types; pass the `klass' address to
31929         the debugger.
31930
31931 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
31932
31933         * image.c: Allow new metadata tables to be loaded without a
31934         warning. Also update the warning message to give the new constant value.
31935                 
31936 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
31937
31938         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
31939         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
31940         array type representation changes.
31941
31942 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
31943
31944         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
31945         on Environment.Exit () call.
31946
31947 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
31948
31949         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
31950         requires a matching corlib.
31951
31952 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
31953
31954         * Changelog: My editor decided to add a CR to each line. Sorry about that.
31955           Committed again without the CRs.
31956         
31957 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
31958
31959         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
31960           getting it from the "this" socket instance. Did not work
31961           if the socket is a subclass of Socket.
31962           Also fixed bug #35371.
31963
31964 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
31965
31966         * metadata.c: fixed size for TypedByRef.
31967         * loader.c: when searching for a method, consider the vararg amrker.
31968         * unicode.c, decimal.c: constify some arrays.
31969
31970 2003-07-15  Dick Porter  <dick@ximian.com>
31971
31972         * socket-io.c: Fixed compilation for gcc < 3.2.
31973
31974         Fixed compilation for machines that don't have AF_INET6 (thanks to
31975         Bernie Solomon <bernard@ugsolutions.com> for that part.)
31976
31977         Fixed compile warnings.
31978         
31979         Fixed formatting and line endings.
31980
31981 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
31982
31983         * socket-io.h:
31984         * socket-io.c: Added IPv6 support.
31985
31986 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
31987
31988         * class.c (mono_class_is_assignable_from): New function to implement
31989         the is_assignable_from logic. Used by mono_object_isinst, 
31990         Type::IsAssignableFrom () and the interpreter.
31991
31992         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
31993         Object, even interfaces.
31994         
31995         * object.c (mono_object_isinst): Implement in terms of 
31996         is_assignable_from.
31997
31998         * icall.c (ves_icall_type_is_assignable_from): New icall.
31999
32000 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
32001
32002         * domain.c (foreach_domain): fix compiler warning.
32003
32004 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
32005
32006         * image.c (load_metadata_ptrs): use g_strndup because strndup is
32007         not available on all plattforms
32008
32009 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
32010
32011         * image.h image.c: Store the metadata version string in MonoImage.
32012         * icall.c: New icall to retrieve the image version.
32013         * reflection.c (create_dynamic_image): Fill in the image version field
32014         * reflection.c (build_compressed_metadata): Use the image version
32015         from the image structure.
32016
32017 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32018
32019         * appdomain.c: modified comment.
32020         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
32021         That will be its last iteration when mono_gc_cleanup is called from
32022         mono_runtime_cleanup and before the domain is unloaded.
32023
32024         Fixes bug #45962.
32025
32026 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
32027
32028         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
32029         attributes.
32030
32031 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32032
32033         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
32034         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
32035         Bernie Solomon <bernard@ugsolutions.com>.
32036
32037 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
32038
32039         * object.c, object.h: provide mono_object_new_fast() for faster
32040         allocation in some special cases.
32041
32042 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
32043
32044         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
32045         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
32046
32047 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
32048
32049         * threadpool.c: fix leaks.
32050
32051 2003-07-01  Dick Porter  <dick@ximian.com>
32052
32053         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
32054         using MonoGHashTables.  Fixes threadpool bug posted to list.
32055
32056 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
32057
32058         * image.h, image.c: added support to load an assembly from a byte array.
32059         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
32060         assembly bundle support.
32061
32062 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
32063
32064         * threadpool.c (mono_thread_pool_add): keep a reference to the
32065         AsyncResult to prevent GC
32066
32067 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
32068
32069         * class.c: leak fix.
32070
32071 2003-06-25  Dick Porter  <dick@ximian.com>
32072
32073         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
32074         for the async object, the WaitHandle object will close the handle.
32075         Fixes bug 45321.
32076
32077 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
32078
32079         * class.c: in mono_array_class_get (), lookup from the hash with the
32080         same type we insert: this works around a bug in
32081         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
32082         lluis. The real fix will have to wait for after the release.
32083
32084 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
32085
32086         * icall.c: fix memory leak when getting type members.
32087
32088 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
32089
32090         * reflection.c: added more pubtoken special cases.
32091
32092 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
32093
32094         * class.c: handle field offset correctly when class size
32095         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
32096
32097 2003-06-20  Martin Baulig  <martin@ximian.com>
32098
32099         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
32100         *image' field.
32101
32102 2003-06-20  Martin Baulig  <martin@ximian.com>
32103
32104         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
32105
32106 2003-06-20  Martin Baulig  <martin@ximian.com>
32107
32108         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
32109         just distinguish between variables in registers and variables at
32110         an offset relative to a register.
32111
32112 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32113
32114         * icall.c: #ifdef out latest changes until mcs is fixed.
32115
32116 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
32117
32118         * icall.c: return members in metadata order.
32119
32120 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
32121
32122         * icall.c: avoid infinite loop in GetTimeZoneData.
32123
32124 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
32125
32126         * icall.c: added Marshal.Prelink/All icalls.
32127
32128 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
32129
32130         * object.c, object.h: fix warnings and do some overflow checking
32131         when creating arrays.
32132
32133 2003-06-17  Dick Porter  <dick@ximian.com>
32134
32135         * file-io.h:
32136         * file-io.c: File attributes need to be tweaked slightly when
32137         passed from the managed to the w32 world.
32138
32139 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
32140         * profiler.h profiler-private.h profiler.c: Rework last patch
32141         based on suggestion by Paolo.
32142         
32143 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
32144
32145         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
32146         instruction level coverage data collection.
32147         * profiler.h profiler.c (: Added new callback function which can be
32148         used by the profiler to limit which functions should have coverage
32149         instrumentation.
32150         * profiler.c (mono_profiler_load): Call g_module_build_path to
32151         generate the file name of the profiler library.
32152
32153 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
32154
32155         * profiler.c, profiler.h, profiler-private.h: added basic block 
32156         coverage profiling API.
32157
32158 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
32159
32160         * reflection.c (mono_reflection_create_runtime_class): Add support
32161         for events in dynamically generated code.
32162
32163         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
32164         not allocated.
32165
32166 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
32167
32168         * icall.c: when getting timezone info, return reasonable values if we
32169         can't get the actual data.
32170
32171 2003-06-14  Dick Porter  <dick@ximian.com>
32172
32173         * threads.c (start_wrapper): Remove the reference to the thread
32174         object in the TLS data, so the thread object can be finalized.
32175         This won't be reached if the thread threw an uncaught exception,
32176         so those thread handles will stay referenced :-( (This is due to
32177         missing support for scanning thread-specific data in the Boehm GC
32178         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
32179
32180 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
32181
32182         * reflection.c: ensure streams and tables are first allocated with
32183         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
32184
32185 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32186
32187         * icall.c: fixed GetElementType for byrefs (bug# 44792).
32188
32189 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
32190
32191         * reflection.c (mono_reflection_create_runtime_class): Add support for
32192         properties to dynamically created classes.
32193         * reflection.c: Fix a few places where non-MonoObjects were inserted
32194         into the tokens hashtable.
32195
32196 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32197
32198         * object.c: some support to handle out of memory exceptions.
32199
32200 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
32201
32202         * marshal.c (mono_marshal_get_native_wrapper): support reference
32203         return types
32204
32205 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
32206
32207         * object.h, object.c: more portability stuff from Bernie Solomon.
32208         Unexport mono_object_allocate(). Added mono_object_unbox ().
32209         Set exitcode when an unhandled exception is thrown.
32210
32211 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
32212
32213         * marshal.c (mono_marshal_get_native_wrapper): use custom
32214         marshaler for return types.
32215
32216 2003-06-10  Dick Porter  <dick@ximian.com>
32217
32218         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
32219         ip_mreq is available
32220
32221 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
32222
32223         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
32224         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
32225         by Bernie Solomon <bernard@ugsolutions.com>.
32226
32227 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
32228
32229         * gc.c (mono_gc_init): Avoid error message on shutdown when
32230         GC_DONT_GC=1 is used.
32231
32232         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
32233         New icall to return the GUID of a module.
32234
32235 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
32236
32237         * class.c: ensure instance size always includes the parent's size
32238         even whem class size is set explicitly (fixes bug#44294).
32239
32240 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
32241
32242         * profiler.h, profiler.c: made the simple profiler thread-safe,
32243         get more accurate timing info. Allow the loading of an
32244         externally-developed profiler module.
32245
32246 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
32247
32248         * marshal.c (mono_marshal_get_native_wrapper): improved
32249         class/byref arguments.
32250         (mono_marshal_get_native_wrapper): better string marshaling support.
32251
32252 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
32253
32254         * class.c: ensure .pack and .size are handled correctly and
32255         simplified layout of static fields.
32256
32257 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
32258
32259         * appdomain.c
32260         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
32261
32262         * loader.c (mono_lookup_pinvoke_call): look for modules in the
32263         current directory (fix bug 44008)
32264
32265 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
32266
32267         * marshal.c (mono_marshal_get_native_wrapper): started support for
32268         custom marshalers.
32269         (mono_delegate_to_ftnptr): consider marshalling specifications
32270
32271 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
32272
32273         * reflection.c, reflection.h: emit custom marshal info.
32274
32275 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32276
32277         * object.c: free the GError.
32278         * icall.c: added CloseEvent_internal.
32279         * threads.[ch]:
32280         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
32281         call.
32282
32283 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
32284
32285         * loader.c (mono_method_get_signature): Add support for dynamic
32286         assemblies.
32287
32288 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
32289
32290         * reflection.c: fixed bug #43905.
32291
32292 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
32293
32294         * class.c, domain.c, icall.c, metadata.h, object.h: support for
32295         handling TypedReference and ArgIterator.
32296         * loader.c, loader.h: added function to get signature at call site.
32297
32298 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32299
32300         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
32301         data readonly. Buglets and warning fixes. Some MethodSpec support.
32302
32303 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
32304
32305         * class.h, class.c, object.c: remove relative numbering support.
32306
32307 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
32308
32309         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
32310         free the string, until we get a chance to fix Gtk#
32311
32312 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32313
32314         * marshal.c: revert last patch.
32315
32316 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
32317
32318         * icall.c: updates for new mono_class_vtable() not calling
32319         the type constructor anymore.
32320
32321 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
32322
32323         * object.h, object.c: separate vtable creation from type
32324         initialization. Make running the .cctor thread safe.
32325
32326 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
32327
32328         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
32329
32330 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
32331
32332         * loader.c (mono_get_method): consider calling convention
32333
32334 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
32335
32336         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
32337         to return the invisible global type for a module.
32338
32339         * reflection.c (mono_image_build_metadata): Emit global fields too.
32340
32341 2003-05-20  Peter Williams  <peterw@ximian.com>
32342
32343         * loader.c (mono_lookup_internal_call): Add a few newlines.
32344
32345 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
32346
32347         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
32348         literal strings.
32349
32350         * appdomain.c (set_domain_search_path): Recalculate search path when
32351         AppDomainSetup.PrivateBinPath changes.
32352
32353         * object.c (mono_class_compute_gc_descriptor): It turns out some
32354         parts of the class libs (like System.Thread) holds pointers to
32355         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
32356         to treat native int a pointer type here.
32357         
32358 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
32359
32360         * appdomain.h, domain.c: add hashtable for jump target resolution.
32361
32362 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
32363
32364         * reflection.h reflection.c icall.c: Added new icalls 
32365         GetManifestResourceInfoInternal, GetModulesInternal and support
32366         infrastructure.
32367
32368 2003-05-16  Dick Porter  <dick@ximian.com>
32369
32370         * icall.c:
32371         * file-io.h:
32372         * file-io.c: Implement System.IO.MonoIO::GetTempPath
32373
32374 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
32375
32376         * object.c: mono_store_remote_field: little fix to previous patch.
32377
32378 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
32379
32380         * class.c: add constructors to array classes.
32381         * icall.c: special case array construction for InternalInvoke (),
32382
32383 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
32384
32385         * class.h class.c reflection.c object.c: Added support for field
32386         defaults in dynamically generated classes.
32387
32388 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
32389
32390         * reflection.c: properly encode charset for ddlimport.
32391
32392 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
32393
32394         * threads.c: allow compiling without GC.
32395
32396 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
32397
32398         * appdomain.h, object.c, object.h, threads.c, threads.h: added
32399         handling of thread static data.
32400
32401 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
32402
32403         * reflection.h, reflection.c: added mono_custom_attrs_free ().
32404
32405 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
32406
32407         * class.c (mono_array_class_get): always set the serializable flags
32408         (mono_array_class_get): always set the SEALED attribute for array types
32409
32410 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
32411
32412         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
32413         attributes (fix for bug 42021).
32414
32415 2003-05-12  Dick Porter  <dick@ximian.com>
32416
32417         * gc.c: Don't run finalizers when the finalizer thread is
32418         finishing up, because the default domain has already been
32419         destroyed.
32420
32421 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
32422
32423         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
32424         value is null, we should throw an exception.   This is slightly
32425         different than the other conventions used for the constructor.
32426
32427 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32428
32429         * socket-io.c: fixed windows build.
32430
32431 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32432
32433         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
32434
32435 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
32436
32437         * object.c (mono_string_new_wrapper): Compatibility fix for MS
32438         compilers.
32439
32440 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
32441
32442         * class.c (mono_class_layout_fields): Add experimental GC aware
32443         auto layout facility. Requires class library changes to work correctly.
32444
32445         (mono_class_setup_vtable): Avoid overriding explicit interface
32446         method implementations. Fixes iface3.exe test.
32447
32448         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
32449         object reference.
32450         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
32451         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
32452
32453         * metadata.h: Add new type classification macro which determines
32454         whenever the type holds an object reference.
32455
32456 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
32457
32458         * marshal.c (mono_marshal_get_native_wrapper): cleanups
32459
32460 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
32461
32462         * gc.c (finalizer_thread): Work around a GC bug.
32463
32464 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
32465
32466         * marshal.c (emit_struct_conv): allow unions
32467
32468         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
32469
32470 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
32471
32472         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
32473
32474 2003-05-06  Martin Baulig  <martin@ximian.com>
32475
32476         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
32477
32478 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32479
32480         * socket-io.c:
32481         (Select_internal): allow NULLs, don't create arrays if not needed.
32482         Coupled with Socket.cs changes.
32483
32484         * threadpool.c:
32485         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
32486         register a finalizer for it that will close the semaphore handle. This
32487         fixes the leak and make Lupus' test run with > 4080 loops.
32488
32489 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
32490
32491         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
32492         Jerome Laban (bug #42287)
32493
32494 2003-05-02  Martin Baulig  <martin@ximian.com>
32495
32496         * debug-mono-symfile.h
32497         (MonoSymbolFile): Moved declaration into mono-debug.h.
32498         (MonoDebugMethodJitInfo): Likewise.
32499         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
32500         argument.
32501         (_mono_debug_address_from_il_offset): Take a
32502         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
32503
32504         * mono-debug.h
32505         (MonoDebugDomainData): New struct.
32506         (mono_debug_get_domain_data): New function.
32507         (mono_debug_add_method): Take an additional `MonoDomain *'
32508         argument.
32509         (mono_debug_source_location_from_address): Likewise.
32510         (mono_debug_il_offset_from_address): Likewise.
32511         (mono_debug_address_from_il_offset): Likewise.
32512
32513 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
32514
32515         * reflection.c: one more check for null type in custom attrs.
32516
32517 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32518
32519         * reflection.c: avoid warning (comparison is always false due to limited
32520         range of data type).
32521
32522 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32523
32524         * icall.c: throw an exception in Type.GetField if the argument 'name'
32525         is NULL.
32526
32527 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
32528
32529         * reflection.c: fixed handling of enums in named arguments to custom
32530         attributes (bug #42123).
32531
32532 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
32533
32534         * reflection.c: use the right array element type and handle
32535         a null for a Type argument, too.
32536
32537 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
32538
32539         * reflection.c: handle arrays as arguments to custom attributes.
32540
32541 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
32542
32543         * reflection.c: handle a string value in a custom attr
32544         ctor that takes an object.
32545
32546 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
32547
32548         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
32549         (fix bug #42063)
32550
32551 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
32552
32553         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
32554
32555 2003-04-27  Martin Baulig  <martin@ximian.com>
32556
32557         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
32558         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
32559         MONO_DEBUGGER_EVENT_BREAKPOINT.
32560         (mono_breakpoint_trampoline_code): Removed.
32561         (mono_debugger_event_handler): The last argument is now a
32562         `guint32'.
32563         (mono_debugger_insert_breakpoint_full): Removed the
32564         `use_trampoline' argument.
32565         (mono_debugger_method_has_breakpoint): Likewise.
32566         (mono_debugger_trampoline_breakpoint_callback): Renamed to
32567         mono_debugger_breakpoint_callback(); take the method and
32568         breakpoint number as arguments.
32569
32570 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
32571
32572         * metadata.c: fix off by one when loading parameters attributes.
32573
32574 2003-04-24  Martin Baulig  <martin@ximian.com>
32575
32576         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
32577
32578 2003-04-24  Martin Baulig  <martin@ximian.com>
32579
32580         * mono-debug-debugger.c: Moved all code which interacts with the
32581         Mono Debugger here.
32582
32583         * debug-mono-symfile.c: This code now just deals with the symbol
32584         file itself, the debugger code is now in mono-debug-debugger.c.
32585
32586 2003-04-23  Martin Baulig  <martin@ximian.com>
32587
32588         * mono-debug.c (mono_debug_source_location_from_il_offset):
32589         New method; like mono_debug_source_location_from_address(), but
32590         takes an IL offset instead of a machine address.
32591
32592 2003-04-23  Martin Baulig  <martin@ximian.com>
32593
32594         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
32595         `line' field; this is now computed by the debugger.
32596
32597 2003-04-23  Martin Baulig  <martin@ximian.com>
32598
32599         * mono-debug.[ch]: New files.  This is the new debugging interface.
32600
32601         * mono-debug-debugger.[ch]: New files.  Moved all code which
32602         interacts with the Mono Debugger here.
32603
32604 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
32605
32606         * domain.c (mono_init): initialize mono_defaults.monitor_class
32607
32608 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
32609
32610         * reflection.c (method_encode_code): Add a spicy exception to help
32611         future compiler authors.
32612
32613 2003-04-21  Martin Baulig  <martin@ximian.com>
32614
32615         * icall.c
32616         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
32617         Make this work with relative pathnames; g_filename_to_uri() needs
32618         an absolute filename.
32619
32620 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
32621
32622         * icall.c: Track name changes in Object and ValueType.
32623
32624 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
32625
32626         * metadata.c (mono_type_stack_size): size should be a multiple of
32627         sizeof (gpointer)
32628
32629 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32630
32631         * gc.c:
32632         (internal_domain_finalize): moved into mono_domain_finalize. No need
32633         to create another thread because the finalizers will be run in the
32634         finalizer thread.
32635         
32636         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
32637         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
32638         to be run (MS does this too).
32639
32640 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
32641
32642         * object.c (mono_class_compute_gc_descriptor): Update comment.
32643
32644         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
32645
32646         * image.h: Add synchronized wrapper cache.
32647
32648         * image.c (do_mono_image_open): Initialize cache.
32649
32650         * reflection.c (create_dynamic_mono_image): Initialize cache.
32651
32652 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32653
32654         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
32655         ves_icall_System_Buffer_ByteLengthInternal.
32656
32657 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32658
32659         * reflection.c: setup klass->nested_in earlier. Allow
32660         a dash in the assembly name.
32661
32662 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
32663
32664         * metadata.c (mono_type_to_unmanaged): dont access
32665         type->data.klass for MONO_TYPE_OBJECT
32666         (mono_type_to_unmanaged): consider System.Delegate class
32667
32668 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
32669
32670         * class.c: just setup supertypes in the proper place instead of
32671         initializing the full element class for arrays.
32672
32673 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
32674
32675         * class.c: ensure the element class of arrays is initialized.
32676         Setup the supertype info for array classes, too.
32677
32678 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
32679
32680         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
32681
32682 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32683
32684         * Makefile.am: re-added -m option when running cygpath. This way,
32685         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
32686         separator.
32687         * mono-config.c: same codepath for locating mono config file for WIN32
32688         and the rest.
32689         * assembly.c: if mono_assembly_setrootdir is called, don't override
32690         the value set.
32691
32692 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32693
32694         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
32695         MONO_ASSEMBLIES variable.
32696
32697 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
32698
32699         * icall.c: added Assembly::GetNamespaces() icall.
32700
32701 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32702
32703         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
32704
32705 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
32706
32707         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
32708         * object.c: fixed bug in the construction of vtable for proxies
32709
32710 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
32711
32712         * object.c (mono_array_new): Mark mono_array_new as an icall.
32713
32714 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32715
32716         * class.c: fixed test for public method when overriding interfaces.
32717         Closes bug #40970.
32718
32719 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
32720
32721         * appdomain.h, domain.c: added mono_domain_foreach() to
32722         be able to access the currently loaded appdomains.
32723         * object.c: make string interning work across sppdomains.
32724         Mark some functions for use as icalls.
32725
32726 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
32727
32728         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
32729
32730         * reflection.h reflection.c: Allocate long living data using 
32731         GC_MALLOC_ATOMIC so the collector does not need to scan it.
32732
32733         * reflection.c: Double the allocation size in streams instead of
32734         increasing it, to prevent unneccesary copying on large assemblies.
32735         
32736         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
32737         creation if the assembly does not have the Run flag set.
32738
32739 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
32740
32741         * class.h: avoid the C++ keywords in header files (Jerome Laban
32742         spotted and fixed this).
32743
32744 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32745
32746         * object.c:
32747         (mono_unhandled_exception): fill in the arguments for the
32748         UnhandledException event. Only trigger that event for the default
32749         domain (as MS does).
32750
32751 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
32752
32753         * object.c: Improve typed allocation stuff based on suggestions from
32754         Paolo. Also turn it on if the GC library supports it.
32755
32756 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
32757
32758         * object.c object.h class.h: Added experimental typed allocation
32759         facility using the interfaces in gc_gcj.h.
32760
32761         * os/gc_wrapper.h: Added new include files.
32762         
32763 2003-04-03  Martin Baulig  <martin@ximian.com>
32764
32765         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
32766         which is not yet enabled by default.
32767
32768         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
32769         functions.
32770         (mono_gc_lock, mono_gc_unlock): New static functions.
32771
32772         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
32773         functions; stop/start the world for the garbage collector.  This
32774         is using the windows API; we need to complete the SuspendThread()/
32775         ResumeThread() implementation in the io-layer to make this work on Unix.
32776         (mono_gc_push_all_stacks): New public function; tells the garbage
32777         collector about the stack pointers from all managed threads.
32778
32779 2003-04-03  Martin Baulig  <martin@ximian.com>
32780
32781         * object.h (MonoThread): Added `gpointer stack_ptr'.
32782
32783         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
32784
32785 2003-04-03  Martin Baulig  <martin@ximian.com>
32786
32787         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
32788
32789 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
32790
32791         * reflection.c (typebuilder_setup_fields): Initialize field.first and
32792         field.last.
32793
32794 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
32795
32796         * loader.c (mono_lookup_internal_call): Report the corlib that is
32797         out of sync.
32798
32799 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
32800
32801         * icall.c (ves_icall_type_GetTypeCode): fixed check for
32802         System.DBNull (it's class not valuetype).
32803
32804 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
32805
32806         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
32807         if the array method was already assigned a token (fixes bug#40646).
32808
32809 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
32810
32811         * reflection.c (mono_reflection_get_type): Attempt type resolve even
32812         if no assembly is given.
32813
32814 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
32815
32816         * metadata.h: Added the new tables.
32817
32818         * row-indexes.h: Added definitions for new tables.
32819
32820         * metadata.c: Add schemas for new tables, and add support for
32821         computing the sizes of them.
32822
32823         * class.c: Update for handling the new type cases.
32824
32825 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
32826
32827         * metadata.h (MONO_TYPE_IS_VOID): new macro
32828
32829 2003-03-31  Martin Baulig  <martin@ximian.com>
32830
32831         * threads.h (MonoThreadCallbacks): Added `thread_created'.
32832
32833         * threads.c (mono_thread_new_init): Call `thread_created' in the
32834         mono_thread_callbacks.
32835
32836 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
32837
32838         * loader.h: added marshalbyrefobject_class to mono_defaults
32839         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
32840         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
32841           generation of output parameters.
32842           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
32843         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
32844           contextbound and the target object belongs to the context of the caller.
32845         * object.h: added context and unwrapped_server variables in MonoRealProxy.
32846         * object.c: Implemented support for interfaces and abstract classes
32847           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
32848           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
32849
32850 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
32851
32852         * class.h class.c (mono_class_is_subclass_of): New function.
32853         
32854         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
32855         routines for most common case (calls from ArrayList::ToArray).
32856
32857         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
32858         routine so programs which call Environment::Exit() can be profiled.
32859
32860         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
32861         Added MONO_ARCH_SAVE_REGS.
32862
32863         * icall.c (ves_icall_type_is_subtype_of): Use new function.
32864
32865 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
32866
32867         * blob.h: Add a couple of new MonoType types definitions.
32868
32869         * tabledefs.h: Add a couple of new call convs.
32870
32871 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
32872
32873         * reflection.h (MonoReflectionDynamicAssembly): track changes in
32874         the layout of the class.
32875
32876         * reflection.c (alloc_table): double the size on overflow to avoid
32877         unnecessary copying.
32878
32879         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
32880         avoid filling out metadata tables and blobs. Also set mb->ilgen to
32881         null so it can be garbage collected.
32882         
32883 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
32884
32885         * reflection.c (mono_reflection_get_type): Return the resolved type
32886         only if it is in the assembly we searched.
32887
32888         * reflection.c (ensure_runtime_vtable): Initialize method slots.
32889
32890         * class.c (mono_class_setup_vtable): Set the slot of the overriding
32891         method.
32892
32893 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32894
32895         * appdomain.c:
32896         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
32897         the right one is 'file:///blah', but MS allows it.
32898         * assembly.c:
32899         (mono_assembly_open): allow 'file://blah'
32900
32901         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
32902
32903 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
32904
32905         * socket-io.c: fixes bug #40310.
32906
32907 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
32908
32909         * reflection.c (mono_reflection_parse_type): handle deeply nested
32910         types correctly.
32911
32912         * reflection.c (mono_image_create_token): Use unique token values
32913         since they will be put into a hash table.
32914
32915         * class.c (mono_class_setup_vtable): If a method occurs in more than
32916         one place in the vtable, and it gets overriden, then change the
32917         other occurances too.
32918
32919         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
32920         object as return type.
32921
32922 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
32923
32924         * icall.c: Deleted "ToString" implementation for double and float
32925         because they are full implemented in managed code.
32926
32927 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
32928
32929         * reflection.c, reflection.h: implemented and exported functions
32930         to retrieve info about custom attributes.
32931
32932 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32933
32934         * appdomain.c: moved Uri handling to assembly.c
32935         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
32936         work when using a file Uri in *nix and windows.
32937
32938         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
32939         GetReferencedAssemblies.
32940
32941 2003-03-18  Dick Porter  <dick@ximian.com>
32942
32943         * icall.c: Rename a couple of internal calls
32944
32945         * threads.c: Set the thread state to Stopped when a thread exits.
32946         Fixes bug 39377.
32947
32948 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
32949
32950         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
32951         New icall.
32952
32953         * object.c (mono_class_vtable): fix warning.
32954
32955 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
32956
32957         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
32958
32959         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
32960         memory.
32961         (method_encode_clauses): Create exception info structures in the right
32962         order.
32963         (mono_reflection_setup_internal_class): Initialize supertypes field.
32964
32965         * class.c object.c: Handle interfaces which implement other interfaces 
32966         correctly.
32967
32968         * class.h class.c: Move the supertypes array initialization code into 
32969         a separate function so it can be used for dynamic types too. Also call
32970         it earlier, in mono_class_init(), since it can be used before the
32971         type is initialized.
32972
32973 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32974
32975         * Makefile.am:
32976         * assembly.c:
32977         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
32978
32979         * appdomain.c:
32980         * appdomain.h:
32981         * marshal.c:
32982         * object.c: remove warnings.
32983
32984 2003-03-13  Martin Baulig  <martin@ximian.com>
32985
32986         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
32987         (MonoDebugLexicalBlockEntry): New types.
32988
32989         * debug-mono-symfile.c
32990         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
32991
32992 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32993
32994         * process.c: ret can be any non-zero value accroding to MS doc.
32995
32996 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
32997
32998         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
32999         fixing a warning for a miss-used prototype, would have cause
33000         random memory corruption.
33001
33002 2003-03-07  Martin Baulig  <martin@ximian.com>
33003
33004         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
33005         getting really annoying ....
33006
33007 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
33008
33009         * reflection.c (fixup_method): added support for array methods.
33010
33011 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
33012
33013         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
33014         (pointed out by Michael Adams).
33015
33016 2003-03-04  Dick Porter  <dick@ximian.com>
33017
33018         * icall.c: Temporarily reverted the Double and Single ToString()
33019         change, because it broke nunit.
33020
33021 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
33022
33023         * object.h, threads.h: make include files compatible with C++
33024         (patch by Jerome Laban <jlaban@wanadoo.fr>).
33025
33026 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33027
33028         * icall.c: Erased ToString helper functions for Double and Single.
33029         Now, that implementations ar all in managed code (Double and Single
33030         Formatters).
33031
33032 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
33033
33034         * appdomain.c: Added method for initializing the default context of
33035         a domain. Added internal call for getting the default context.
33036         * appdomain.h: Added context variable in MonoDomain struct.
33037         * domain.c: mono_domain_set also sets the default context of the domain
33038         * icall.c: Mapped internal method InternalGetDefaultContext.
33039         * object.c: mono_object_get_virtual_method returns always a remoting
33040         wrapper if the object is a transparent proxy.
33041         mono_runtime_invoke_array: when creating an object by calling the
33042         constructor, if the created object is a proxy, then the constructor should
33043         be called using the a remoting wrapper.
33044
33045 2003-03-03  Dick Porter  <dick@ximian.com>
33046
33047         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
33048         variable so it compiles on solaris.  Problem spotted by
33049         Christopher Taylor <ct@cs.clemson.edu>
33050
33051 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33052
33053         * appdomain.c:
33054         (get_info_from_assembly_name): don't leak value.
33055
33056         * icall.c:
33057         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
33058         result.
33059
33060 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
33061
33062         * assembly.c: export mono_image_load_references ().
33063         * class.c: handle function pointers. mono_class_from_name() now
33064         supports nested type names directly.
33065
33066 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
33067
33068         * reflection.h reflection.c: Encode already created dynamic methods 
33069         and fields correctly as a DEF instead of a REF.
33070
33071         * reflection.c: Get rid of the force_ref argument to 
33072         mono_image_typedef_or_ref since it was wrong in the first place.
33073
33074         * string-icalls.c: add error checking to string constructors according
33075         to the MSDN docs.
33076
33077         * reflection.c: Emit types in the order their TypeBuilders were 
33078         created. Previously, a new table index was assigned to each type before
33079         the tables were emitted. This was wrong because the signature blob
33080         might already refer to a type by its original table index.
33081
33082 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
33083
33084         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
33085         change.
33086         
33087 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33088
33089         * Makefile.am: make assemblies dir have \ instead of / on windows.
33090
33091 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
33092
33093         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
33094         iterate over the NESTEDCLASS table using a linear search since the
33095         table is not guaranteed to be sorted by the secondary key.
33096
33097         * class.c (mono_class_create_from_typedef): fixed up call to
33098         mono_metadata_nesting_typedef.
33099         
33100 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
33101
33102         * marshal.c (mono_string_to_byvalstr): clear the memory as
33103         suggested by Jerome Laban <jlaban@wanadoo.fr>
33104
33105 2003-02-26  Dick Porter  <dick@ximian.com>
33106
33107         * process.c: Cope with padding in .rsrc blocks
33108
33109 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
33110
33111         * metadata.h: reverted the filter_len change, it breaks reflection
33112         
33113 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
33114
33115         * metadata.h: added a new field to store the filter_len
33116         
33117
33118 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
33119
33120         * reflection.c: handle custom attributes for types and members
33121         created with Reflection.Emit (bug#38422).
33122
33123 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
33124
33125         * reflection.c: define RTSpecialName automatically for constructors for
33126         compatibility with MS.NET.
33127
33128         * reflection.c (mono_reflection_create_runtime_class): initialize
33129         nested_in field of dynamically created classes.
33130
33131 2003-02-22  Martin Baulig  <martin@ximian.com>
33132
33133         * debug-mono-symfile.h: Incremented version number.
33134
33135 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
33136
33137         * object.h icall.c process.c: fix warnings.
33138
33139 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
33140
33141         * appdomain.h appdomain.c:
33142         (mono_domain_try_type_resolve): split the 
33143         name_or_tb argument into a name and a tb argument.
33144         (mono_domain_has_type_resolve): new function to check whenever the
33145         application has registered a TypeResolve event handler.
33146         
33147         * icall.c reflection.h reflection.c: move the type resolve logic into
33148         mono_reflection_get_type () so it will be invoked when 
33149         Assembly::GetType () is called.
33150
33151         * reflection.c:
33152         (mono_reflection_get_type): renamed to get_type_internal.
33153         (mono_reflection_get_type): fixed type name generation so it works 
33154         for nested types too.
33155         (mono_reflection_get_type): call has_type_resolve () to avoid the 
33156         costly type name generation if there is no resolve event handler.
33157
33158 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33159
33160         * class.c, image.c: load exported types from file references.
33161
33162 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
33163
33164         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
33165           used to cache the managed methods used to create proxies and make 
33166           remote invocation of methods.
33167         * class.h: Added in MonoVTable a flag to indicate that a class needs 
33168           to be remotely created.
33169         * object.c: Modified the method mono_class_vtable(). It now initializes 
33170           the remote flag of the vtable. Modified mono_object_new_specific(), 
33171           so now it checks the remote flag.
33172         * icall.c: Added a couple of internal methods, one for enabling instance 
33173           creation interception for a type, and one for creating objects bypassing
33174           the remote check.
33175
33176 2003-02-18  Martin Baulig  <martin@ximian.com>
33177
33178         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
33179         New interncall to get a method's metadata token.
33180
33181         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
33182         New interncall for the debugger.
33183
33184 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
33185
33186         * class.c (mono_class_setup_vtable): allocate supertype array
33187
33188 2003-02-18  Martin Baulig  <martin@ximian.com>
33189
33190         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
33191
33192 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33193
33194         * reflection.c:
33195         (assembly_name_to_aname): jump over unknown properties (i've found
33196         something like: 'type, assembly, version=xxx, custom=null, public...',
33197         so now will ignore custom=null and still get the rest of the values).
33198
33199 2003-02-17  Dick Porter  <dick@ximian.com>
33200
33201         * threads.c: Have Thread.Start() wait for a semaphore to signal
33202         that the thread has set up all its local data.  This fixes bug
33203         34323, where Abort() raced the new thread's TLS data.
33204
33205         Also removes the handle_store() call from start_wrapper, because
33206         threads are now always created suspended and there is no longer a
33207         race between the parent and child threads to store the info.
33208
33209 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
33210
33211         * image.c: explain the #- heap issue in a message, hopefully
33212         avoiding FAQs on mono-list.
33213
33214 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33215
33216         * icall.c:
33217         (GetEntryAssembly): if the domain has not invoked
33218         AppDomain.ExecuteAssembly yet, return the assembly of the default
33219         AppDomain.
33220
33221 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
33222
33223         * class.c (mono_ldtoken): make it work in dynamic assemblies.
33224
33225 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
33226
33227         * metadata.c, reflection.c: simple speedup to type hash
33228         and equals code.
33229
33230 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
33231
33232         * image.c, image.h, class.c, assembly.c: move module loading
33233         to MonoImage. When loading metadata, consider alignemnet from
33234         the start of metadata, not from the metadata address in memory.
33235
33236 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
33237
33238         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
33239         AssemblyBuilder objects. Factored out custom attribute creation into
33240         a separate function.
33241         (create_custom_attr): new function to create custom attributes.
33242
33243 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
33244
33245         * Makefile.am: Got tired of typing the full pathname to pedump.
33246         Until there is another option, am installing this.
33247
33248 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
33249
33250         * class.c (class_compute_field_layout): always set field->parent 
33251         (mono_ldtoken): use mono_defaults.fieldhandle_class;
33252
33253 2003-02-11  Dick Porter  <dick@ximian.com>
33254
33255         * threads-types.h:
33256         * monitor.c: Rewrote Monitor, making lock much faster and
33257         Pulse/Wait work as specified.  Also uses much fewer handles, and only
33258         creates them as needed.
33259
33260         * exception.c: Added SynchronizationLockException
33261
33262         * threads.c: Deleted old Monitor implementation.  The new one is
33263         in a new file.
33264
33265 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
33266
33267         * class.c: handled TypedReference type code. Set the correct size for
33268         class data. Setup interface_offsets for interface classes, too.
33269
33270 2003-02-09  Martin Baulig  <martin@ximian.com>
33271
33272         * debug-mono-symfile.h: Reflect latest symbol writer changes.
33273
33274 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
33275
33276         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
33277         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
33278         * object.c: fixed mono_object_get_virtual_method () for interfaces.
33279         * verify.c: check for code that runs after the end of the method.
33280
33281 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33282
33283         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
33284         "System.Math::Round2".
33285         * sysmath.h: Added Floor, Round and Round2 definitions.
33286         * sysmath.c: Modified certain functions that were not 100% compliant
33287         with MS.NET (math precision) and added the implementation of Floor,
33288         Round and Round2.
33289
33290 2003-02-07  Martin Baulig  <martin@ximian.com>
33291
33292         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
33293
33294 2003-02-07  Martin Baulig  <martin@ximian.com>
33295
33296         * debug-mono-symfile.c: Reflected latest symwriter changes.
33297         (mono_debug_create_mono_symbol_file): Removed.
33298         (mono_debug_open_mono_symbol_file): Take an argument which
33299         specifies whether to create a dynamic symbol file.
33300
33301 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
33302
33303         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
33304
33305 2003-02-05  Martin Baulig  <martin@ximian.com>
33306
33307         * reflection.c (mono_image_build_metadata): Make this public,
33308         protect it against being called multiple times, don't create
33309         resources and don't build the compressed metadata here.
33310         (mono_image_create_pefile): Do this here.
33311
33312         * icall.c
33313         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
33314
33315 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33316
33317         * socket-io.c: fixed bug #36322.
33318
33319 2003-02-06  Piers Haken <piersh@friskit.com>
33320
33321         * appdomain.[ch]:
33322         * class.h:
33323         * debug-mono-symfile.c:
33324         * icall.c:
33325         * loader.c:
33326         * mono-config.c:
33327         * monosn.c:
33328         * reflection.c:
33329         * socket-io.c: warning cleanups
33330
33331 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
33332
33333         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
33334         function. works like remoting invoke, but does a check for the Proxy first.
33335
33336 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
33337
33338         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
33339
33340 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
33341
33342         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
33343         array of pointers.
33344         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
33345         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
33346
33347         * object.c (mono_store_remote_field_new): used by the new jit
33348         instead of mono_store_remote_field
33349         (mono_load_remote_field_new): used by the new jit
33350         instead of mono_load_remote_field
33351
33352 2003-02-05  Patrik Torstensson
33353
33354         * appdomain.c: changed unload to take the domain id instead
33355         of domain
33356         
33357         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
33358
33359
33360 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33361
33362         * appdomain.c: don't look for assemblies in ApplicationBase if
33363         PrivateBinPathProbe is set.
33364
33365 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33366
33367         * object.c: make the first argument in main_args contain the absolute
33368         path to the assembly. Fixes bug #37511.
33369
33370 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33371
33372         * icall.c: get correct UTC offset for countries not using daylight
33373         time saving. Fixes bug #30030.
33374
33375 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33376
33377         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
33378         and 1 are the family).
33379
33380 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
33381
33382         * icall.c (ves_icall_InternalExecute): removed wrong assertion
33383
33384         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
33385
33386 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
33387
33388         * reflection.c: added support for SignatureHelper tokens, which is
33389         needed by the Calli opcode.
33390
33391         * reflection.h: track changes to SignatureHelper class.
33392
33393         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
33394
33395 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33396
33397         * appdomain.c: fixed loading assemblies from PrivateBinPath.
33398
33399 2003-02-03  Patrik Torstensson
33400         * appdomain.[c|h], domain.c : 
33401          - Added support for getting a domain via domain id
33402          - Support for setting and getting domain from System.AppDomain 
33403            (used in cross appdomain channel)
33404          - Added support for get/set for a MonoAppContext on a thread 
33405            (Context class in System.Runtime.Remoting.Contexts),
33406          - Removed hack in Get/SetData and ExecuteAssembly.
33407         
33408         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
33409         the managed world to get control when a proxy is created.
33410
33411         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
33412         
33413 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
33414
33415         * icall.c
33416         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
33417         Populate the codebase field as well.
33418
33419 2003-02-02  Martin Baulig  <martin@ximian.com>
33420
33421         * debug-mono-symfile.c
33422         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
33423         (mono_debug_symfile_add_method): Allow interncalls.
33424
33425 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33426
33427         * icall.c: throw parse exception if strtod fails or the string is empty.
33428
33429 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
33430
33431         * marshal.c: handle object type separately from defined
33432         class types.
33433
33434 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
33435
33436         * marshal.c: handle NATIVE_LPSTR for strings when it's
33437         explicitly specified.
33438
33439 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
33440
33441         * reflection.c, reflection.h, icall.c: setup the reflection
33442         handle cache for ModuleBuilders and AssemblyBuilders.
33443
33444 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
33445
33446         * reflection.c (reflection_methodbuilder_to_mono_method): set
33447         pinvoke flag
33448
33449 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33450
33451         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
33452
33453 2003-01-29  Dick Porter  <dick@ximian.com>
33454
33455         * threads.c: No need for the fake_thread kludge now that Thread
33456         doesn't run a class constructor
33457         
33458 2003-01-29  Dick Porter  <dick@ximian.com>
33459
33460         * threads.c: Use g_direct_hash instead of the rather bogus
33461         g_int_hash
33462
33463 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
33464
33465         * marshal.c (mono_marshal_get_native_wrapper): add check for null
33466         (fix pinvoke12.exe)
33467         (mono_marshal_get_struct_to_ptr): generate valid IL code
33468         (mono_marshal_get_ptr_to_struct): generate valid IL code
33469         (*): correctly set sig->pinvoke, we need to memdup the signature
33470         to do that
33471
33472 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33473
33474         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
33475         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
33476
33477 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
33478
33479         * profiler.c: provide more callers information.
33480
33481 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
33482
33483         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
33484
33485         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
33486
33487         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
33488
33489 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33490
33491         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
33492         exception instead of going into an infinite loop on dates which it 
33493         can't yet handle.
33494
33495         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
33496         out-of-range exception if needed.
33497
33498         * class.c (mono_class_setup_vtable): allow a virtual method to provide
33499         an implementation for an interface method and to override an inherited
33500         method at the same time. 
33501         Imagine a scenario when a virtual method is used to override a
33502         virtual abstract method in a parent class, and this same method 
33503         provides an implementation for an method inherited from an interface. 
33504         In this case, the interface resolution code will set im->slot, which 
33505         means that the virtual method override pass will skip this method 
33506         which means a pointer to the abstract method inherited from the parent
33507         will remain in the vtable of this non-abstract class.
33508
33509         * class.c: (mono_class_setup_vtable): continue search for a real 
33510         method if only an abstract method is found.     
33511
33512 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
33513
33514         * reflection.c: add size to encoding for ByValStr and ByValArray
33515         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
33516
33517 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33518
33519         * class.c (mono_class_setup_vtable): pass the override info as an
33520         argument.
33521
33522         * class.c (mono_class_setup_vtable): set the slot of overriding methods
33523         correctly.
33524         
33525         * reflection.c (ensure_runtime_vtable); add support for method 
33526         overrides.
33527         
33528 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33529
33530         * reflection.c (resolution_scope_from_image): Hack to work to work with
33531         dynamic assemblies.
33532
33533         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
33534         added a 'force_ref' argument to force this function to allways return 
33535         a TypeRef. This is needed by mono_image_get_memberref_token ().
33536         
33537 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33538
33539         * reflection.c (mono_image_get_type_info): interfaces really don't have
33540         a parent.
33541
33542         * reflection.c (mono_image_basic_init): fill out missing fields of
33543         image structure.
33544
33545         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
33546         dynamic assemblies. This is required so dynamic assemblies show up in
33547         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
33548         Type::GetType() etc. This is consistent with MS behaviour.
33549
33550         * image.c image.h reflection.c: add newly created classes to the name 
33551         cache so mono_class_get () will find them.      
33552
33553 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33554
33555         First part of changes to get IKVM.NET running under mono.
33556         
33557         * appdomain.h, appdomain.c: added new function 
33558         mono_domain_try_type_resolve() which will emit TypeResolve events. 
33559         This function will call AppDomain::DoTypeResolve to do the actual work.
33560
33561         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
33562         moved existing code dealing with dynamic tokens to a new function 
33563         called mono_reflection_lookup_dynamic_token (). This function will 
33564         raise TypeResolve events when appropriate. Since reflection.c is not 
33565         part of libmetadata, a new hook function called 
33566         mono_lookup_dynamic_token() is added to class.c which will call this.
33567
33568         * assembly.h assembly.c: make the invoke_load_hook function public,
33569         so it can be called for dynamic assemblies.
33570
33571         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
33572
33573         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
33574         type isn't found.
33575
33576         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
33577         MonoGHashTable, since it contains pointers to objects which the GC 
33578         needs to track.
33579
33580         * assembly.c (search_loaded): remove unused variable.
33581         
33582 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
33583
33584         * object.c: fixed issue exposed by gcc-generated IL programs
33585         that use RVA data for pointers.
33586
33587 2003-01-25  Martin Baulig  <martin@ximian.com>
33588
33589         * threads.c (start_wrapper): Moved the initialization of
33590         `start_func' above the mono_new_thread_init() call to which we
33591         pass it as argument.
33592
33593 2003-01-24  Martin Baulig  <martin@ximian.com>
33594
33595         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
33596         the MonoThread pointer.
33597
33598 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
33599
33600         * icall.c: Rename `PowImpl' to Pow.
33601
33602 2003-01-23  Dick Porter  <dick@ximian.com>
33603
33604         * threads.c (start_wrapper): Create a Thread object if needed, so
33605         the Main() thread can do the class initialisation in a subthread
33606         that has been set up to allow managed code execution.
33607
33608         Pass the thread ID instead of the MonoThread pointer to the thread
33609         start and attach callbacks.  This change is required, because the
33610         jit thread start callback must be called _before_ the Thread
33611         object can be created.
33612         
33613         (mono_thread_init): Removed much object creation code that is no
33614         longer needed.  No managed code is called from here now.
33615
33616         * object.c (mono_runtime_exec_managed_code): Create a subthread
33617         for Main, and call back to the runtime to use it.
33618         Set the exit code when Main exits.
33619
33620         * gc.c: Make sure domain finalisation happens in a subthread.
33621         Re-enable threaded GC, fixing bug 31333 (again).
33622
33623         * environment.c: System.Environment internall calls (so far just
33624         ExitCode is here, the others are still in icall.c)
33625
33626         * appdomain.c (mono_runtime_cleanup): All threads running managed
33627         code should have finished before mono_runtime_cleanup() is
33628         reached, so no need to clean up threads.
33629
33630 2003-01-22  Martin Baulig  <martin@ximian.com>
33631
33632         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
33633         `gpointer func' arguments.      
33634         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
33635         but added `MonoThread *thread' argument.
33636         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
33637
33638         * threads.c (mono_new_thread_init): Added `gpointer func' argument
33639         and pass it to the mono_thread_start_cb callback.
33640         (mono_install_thread_callbacks): New public function to install a
33641         set of callbacks which are set by the debugger.
33642         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
33643
33644 2003-01-22  Martin Baulig  <martin@ximian.com>
33645
33646         * Makefile.am: Install debug-mono-symfile.h.
33647
33648 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
33649
33650         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
33651
33652 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
33653
33654         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
33655         * class.c (mono_ptr_class_get): correctly set access levels of pointers
33656         (mono_array_class_get): correctly set access levels of arrays
33657
33658 2003-01-20      Patrik Torstensson
33659         * image.h (MonoAssemblyName): changed major, minor, build, revision
33660         from signed to unsigned.
33661
33662 2003-01-20  sean kasun <skasun@azstarnet.com>
33663
33664         * reflection.c (load_cattr_value): Now this handles
33665         MONO_TYPE_SZARRAY.  Fixes bug #35629
33666
33667 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
33668
33669         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
33670         integer value
33671
33672 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33673
33674         * decimal.c: fixed bug #26056.
33675
33676 2003-01-17  Martin Baulig  <martin@ximian.com>
33677
33678         * gc.c: Raise an ExecutionEngineException instead of using g_error().
33679
33680 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33681
33682         * exception.[ch]:
33683         (mono_get_exception_type_initialization): new function.
33684
33685         * object.c: throw a TypeInitializationException when an exception is
33686         thrown invoking the class constructor.
33687
33688 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33689
33690         * reflection.c: fixed attribute reading.
33691
33692 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33693
33694         * icall.c:
33695         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
33696         provided, look for the type in the calling assembly and then in
33697         mscorlib; if the assembly name is provided, only try that one.
33698
33699 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
33700
33701         * object.c: register the vtable before there is a chance it's
33702         queried again recursively.
33703
33704 2003-01-13  Duncan Mak  <duncan@ximian.com>
33705
33706         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
33707         gc-internal.h. 
33708         
33709 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
33710
33711         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
33712
33713 2003-01-11  Martin Baulig  <martin@ximian.com>
33714
33715         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
33716         this to 20 for the release.
33717
33718 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
33719
33720         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
33721
33722         * loader.c (mono_method_get_marshal_info): bug fix
33723
33724         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
33725         structures with explicit layout
33726
33727 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
33728
33729         * profiler.c: made the output more readable (and sorted). 
33730         Added caller information for the allocation profiler.
33731
33732 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
33733
33734         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
33735
33736 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33737
33738         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
33739         to get value types.
33740         
33741 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
33742
33743         * object.c, profiler.h, profiler.c, profiler-private.h:
33744         Added object allocation profiler.
33745
33746 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
33747
33748         * reflection.h, reflection.c: handle global methods.
33749         Compress blob entries.
33750
33751 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
33752
33753         * marshal.c: fix compilation.
33754
33755 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
33756
33757         * loader.c (mono_method_get_marshal_info): impl.
33758
33759         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
33760
33761 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33762
33763         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
33764         for reference types.
33765
33766 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
33767
33768         * loader.c: fixed off by one error in loaded parameter names.
33769
33770 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
33771
33772         * marshal.c (mono_marshal_get_icall_wrapper): like
33773         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
33774         instead of a MonoMethod.
33775
33776 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33777
33778         * decimal.c: fixed bug #36537.
33779
33780 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
33781
33782         * marshal.c: throw a missing method exception if a
33783         P/Invoke method is not found.
33784
33785 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
33786
33787         * icall.c: allow a null this for constructors.
33788
33789 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
33790
33791         * icall.c: raise the proper exceptions if the arguments to the
33792         internal Invoke are incorrect.
33793
33794 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
33795
33796         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
33797
33798 2003-01-03  Martin Baulig  <martin@ximian.com>
33799
33800         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
33801
33802 2002-12-31  Martin Baulig  <martin@ximian.com>
33803
33804         * debug-mono-symfile.c: Completely rewrote the type section.
33805         Instead of using individual malloc()ed fields, we use one big
33806         continuous memory area and offsets into this area.
33807         See the comments in the source code for details.
33808
33809 2002-12-30  Martin Baulig  <martin@ximian.com>
33810
33811         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
33812
33813 2002-12-30  Martin Baulig  <martin@ximian.com>
33814
33815         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
33816         line number table in this data blob instead of using an external
33817         pointer.
33818
33819 2002-12-28  Martin Baulig  <martin@ximian.com>
33820
33821         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
33822
33823 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
33824
33825         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
33826         as a boxed return type.
33827
33828 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
33829
33830         * appdomain.c
33831         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
33832         g_build_filename to properly get separators on the filename created.
33833
33834         * object.h: Small change, introduce MonoMarshalByRefObject to
33835         track the layout of that structure in the C# universe as we make
33836         changes there.
33837
33838 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
33839
33840         * object.c: removed assert to allow static fields on interfaces.
33841         * loader.c: a TypeSpec may be used for any type, not just arrays.
33842
33843 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
33844
33845         * class.c, class.h: added mono_class_array_element_size ().
33846         Ignore static methods in interfaces.
33847
33848 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33849
33850         * threads.c: fixed the build under cygwin.
33851
33852 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
33853
33854         * reflection.c: handle nullref constants. Allocate keys for
33855         reflection handles with the GC.
33856
33857 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
33858
33859         * threads.c, threads.h: added mono_thread_get_abort_signal()
33860         to get a suitable signal for thread abort.
33861
33862 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
33863
33864         * metadata.c: fix handling of ExportedType table.
33865
33866 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33867
33868         * icall.c: added WriteWindowsDebugString internal call.
33869
33870 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33871
33872         * reflection.h: added fields to match C# implementation.
33873
33874 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33875
33876         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
33877
33878 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
33879
33880         * gc.h, gc-internal.h: Rename header for GC internal calls to
33881         gc-internal.h from gc.h as to not clash with Boehm GC having its
33882         header installed as <gc.h> in outside include paths.
33883         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
33884         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
33885
33886 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33887
33888         * icall.c: assign minor, build and revision in FillName.
33889
33890 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
33891
33892         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
33893         Added support for running code generated by Reflection.Emit.
33894
33895 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33896
33897         * appdomain.c: check for NULL argument in LoadFrom.
33898
33899 2002-12-10  Dick Porter  <dick@ximian.com>
33900
33901         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
33902
33903 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33904
33905         * appdomain.c: fix buglet when building exe file name.  Handle full
33906         assembly name (needed after latest changes to AssemblyName).
33907         * image.c:
33908         (mono_image_close): free some hashtables.
33909
33910 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
33911
33912         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
33913         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
33914         on some systems (redhat 7.3) 
33915
33916 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
33917
33918         * threads.c: delete the critical section of a sync block,
33919         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
33920
33921 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
33922
33923         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
33924
33925 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33926
33927         * appdomain.[ch]: handle the assembly preload event to try loading the
33928         assemblies using the paths we have in the current domain.
33929
33930         * assembly.[ch]: created an assembly preload hook that is called to try
33931         loading the assembly by other means that the ones provided here.
33932
33933         * domain.c: initialize the domain search path.
33934
33935         From now on, assemblies (TODO: except corlib and System) are loaded
33936         according to these rules when using mono_assembly_load ():
33937
33938                 1. It tries to load the assembly from the ApplicationBase
33939                 of the current domain appending .dll and .exe (TODO: have to
33940                 try loading from name/name.dll and name/name.exe).
33941
33942                 2. It tries the search path specified in PrivateBinPath for the
33943                 current domain (if any).
33944
33945                 3. Previous behavior.
33946
33947 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
33948
33949         * icall.c: implemented GetInterfaceMap() related icall.
33950         * domain.c, loader.h: load MethodInfo in mono_defaults.
33951
33952 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
33953
33954         * gc.c: disable the finalizer thread for now, untill all the issues
33955         with it are resolved.
33956
33957 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
33958
33959         * string-icalls.c: handle embedded nulls in string ctor when the
33960         length is specified.
33961
33962 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
33963
33964         * class.c: look for explicit interface implementation in parent
33965         classes, too.
33966
33967 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
33968
33969         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
33970
33971 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
33972
33973         * gc.c: protect handles with a critical section.
33974
33975 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33976
33977         * icall.c:
33978         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
33979         parameters. If no assembly specified, try getting the type from all
33980         the assemblies in the current domain, else, load the assembly and get
33981         the type from it.
33982
33983 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33984
33985         * marshal.c: applied patch from Aleksey Demakov that fixes
33986         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
33987
33988 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33989
33990         * icall.c: fixed get_location.
33991
33992 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
33993
33994         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
33995         declarations to make it work with older gcc. 
33996
33997         * loader.c (mono_get_method): set signature->pinvoke for native calls
33998
33999 2002-11-20  Dick Porter  <dick@ximian.com>
34000
34001         * threads.c (mono_thread_init): Set the main thread's handle
34002
34003 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
34004
34005         * gc.c: allow compilation without GC support. Changed to match the
34006         mono coding style.
34007
34008 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
34009
34010         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
34011
34012 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
34013
34014         * reflection.c: set a public key token on the core assemblies.
34015
34016 2002-11-18  Dick Porter  <dick@ximian.com>
34017
34018         * threads.c: Split out some thread initialisation so that other
34019         files can set the start callback function.
34020
34021         * gc.c: Run finalisers in a separate thread, to avoid stack
34022         overflow.  Fixes bug 31333.
34023
34024         * appdomain.c: Set up GC finalisation thread.
34025
34026         * reflection.c: 
34027         * object.c: 
34028         * domain.c: Use gc.h macros for GC_malloc
34029         
34030 2002-11-15  Dick Porter  <dick@ximian.com>
34031
34032         * threadpool.c: 
34033         * threads.c:
34034         * appdomain.c: Removed mono_runtime_init_with_attach(),
34035         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
34036         merging the extra parameter with the existing function.  Removed
34037         unneeded code in mono_thread_attach().
34038
34039 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
34040
34041         * image.c (mono_image_loaded_by_guid): a method to get loaded
34042         images by guid. 
34043         (load_metadata_ptrs): we store the guid as string.
34044
34045 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
34046
34047         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
34048
34049         * metadata.c (mono_guid_to_string): imported method form Zoltan
34050         Varga (slightly modified)
34051
34052         * assembly.c (mono_assembly_open): load precompiled code
34053
34054         * loader.h (MonoMethod): we store the method token for use in the
34055         aot compiler. 
34056
34057 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34058
34059         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
34060         the hook function called when an assembly is loaded.
34061         
34062         * domain.c: Modified file.
34063         (mono_domain_assembly_load): removed hash table insertion of assemblies.
34064
34065         Fixes bug #33196.
34066
34067 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
34068
34069         * reflection.c: Map PEFileKind to the value expected by the WinNT
34070         image loader. 
34071
34072 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34073
34074         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
34075         Read until the buffer is filled completely.
34076
34077 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34078
34079         * icall.c: implemented MonoType.InternalGetEvent ().
34080
34081 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34082
34083         * appdomain.c: implemented InitAppDomainSetup. Delayed
34084         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
34085         the entry_assembly.
34086
34087         * assembly.c: base_dir is now an absolute path ending with
34088         G_DIR_SEPARATOR.
34089
34090         * icall.c: modified get_location according to the above changes.
34091
34092         * object.c: init AppDomain.SetupInformation for the default domain after
34093         we have the entry assembly.
34094
34095         * domain.c: when unloading a domain, setup = NULL.
34096
34097 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
34098
34099         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
34100
34101 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
34102
34103         * object.h, object.c: introduced mono_object_get_virtual_method ()
34104         to lookup the method invoked on an object when a callvirt is done on
34105         a method.
34106         * icall.c: make MethodInfo::Invoke() always do a virtual call.
34107
34108 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34109
34110         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
34111         current domain when loaded an assembly and failed to load it.
34112
34113         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
34114
34115 2002-10-31  Dick Porter  <dick@ximian.com>
34116
34117         * icall.c: 
34118         * file-io.h: 
34119         * file-io.c: Return the error status in a parameter, as the
34120         GetLastError() value has long since been blown away if we try and
34121         look it up in a subsequent internal call invocation.  Delete the
34122         GetLastError() internal call, because it's useless.
34123
34124 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
34125
34126         * class.[ch]: added cast_class to fix bug 29517
34127
34128 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
34129
34130         * marshal.c: create valid IL code in the filter clause:
34131         the new JIT is less forgiving:-)
34132
34133 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34134
34135         * icall.c: removed get_property internal call.
34136
34137 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
34138
34139         * appdomain.h domain.c: Added an ID to appdomains.
34140         
34141         * threads.c threads.h icall.c: Implement icall
34142         Thread:GetDomainID(), and remove unused icall 
34143         CurrentThreadDomain_internal.
34144
34145 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34146
34147         * icall.c: Don't recurse through the base types in GetConstructor.
34148         Fixes bug #32063. 
34149
34150 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
34151
34152         * mempool.h, mempool.c: added mono_mempool_empty() and
34153         mono_mempool_stats().
34154
34155 2002-10-23  Dick Porter  <dick@ximian.com>
34156
34157         * file-io.c: 
34158         * file-io.h: 
34159         * icall.c: Added MonoIO.GetFileType internal call
34160
34161 2002-10-17  Dick Porter  <dick@ximian.com>
34162
34163         * appdomain.c (mono_runtime_cleanup): Don't signal the async
34164         delegate semaphore before waiting for all threads to finish,
34165         because new threads can also call async delegates.  Fixes bug
34166         32004.
34167
34168         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
34169         of 3 seconds, in case another async job is queued.  (This part is
34170         needed because the bug fix reintroduced the 3s exit lag.)  This
34171         makes the mono_runtime_shutdown flag superfluous.
34172
34173 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
34174
34175         * reflection.c: include ehader size in method section headers.
34176         Really check for suplicated modules entries.
34177
34178 2002-10-17  Martin Baulig  <martin@gnome.org>
34179
34180         * debug-mono-symfile.c: Added back support for locals.
34181
34182 2002-10-14  Martin Baulig  <martin@gnome.org>
34183
34184         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
34185         MONO_TYPE_VOID.
34186
34187 2002-10-14  Martin Baulig  <martin@gnome.org>
34188
34189         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
34190         mono_class_get() instead of looking in the class cache. 
34191
34192 2002-10-13  Martin Baulig  <martin@gnome.org>
34193
34194         * debug-mono-symfile.c: Set version number to 28, include the
34195         signature in method names.
34196
34197 2002-10-13  Martin Baulig  <martin@gnome.org>
34198
34199         * debug-mono-symfile.h: Set version number to 27.
34200
34201 2002-10-11  Martin Baulig  <martin@gnome.org>
34202
34203         * gc.c: Don't register/unregister NULL pointers as disappearing links.
34204
34205 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
34206
34207         * metadata.c, metadata.h: added helper function to allocate signatures.
34208
34209 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34210
34211         * icall.c: added internal call to get the location of machine.config.
34212
34213 2002-10-08  Martin Baulig  <martin@gnome.org>
34214
34215         * debug-mono-symfile.c: Ignore classes with a pending init for the
34216         moment.
34217
34218 2002-10-03  Dick Porter  <dick@ximian.com>
34219
34220         * threads.c: Freebsd pthread_t is a pointer
34221
34222 2002-10-03  Dick Porter  <dick@ximian.com>
34223
34224         * socket-io.c: Implemented GetHostName_internal
34225
34226 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34227
34228         * mono-config.c:
34229         (mono_config_parse_file): don't leak the text.
34230
34231 2002-10-02  Martin Baulig  <martin@gnome.org>
34232
34233         * debug-mono-symfile.c: Added support for methods.
34234
34235 2002-10-01  Martin Baulig  <martin@gnome.org>
34236
34237         * debug-mono-symfile.c: Don't emit methods and line numbers for
34238         the dynamic symbol file, just write the type table.  We can easily
34239         have an external helper program which creates a symbol file for an
34240         IL file.        
34241
34242 2002-10-01  Dick Porter  <dick@ximian.com>
34243
34244         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
34245         Only add the handle to the cleanup array when we're about to
34246         launch the thread.  Bug 31425 deadlocked when the test was run on
34247         mono under w32.
34248
34249 2002-10-01  Martin Baulig  <martin@gnome.org>
34250
34251         * debug-mono-symfile.c: Added support for properties.
34252
34253 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
34254
34255         * reflection.c: unaligned store fix from Mark Crichton
34256         <crichton@gimp.org>.
34257
34258 2002-09-27  Martin Baulig  <martin@gnome.org>
34259
34260         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
34261         New interncall.
34262
34263 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
34264
34265         * assembly.h, assembly.c: use a sane API to hook into the assembly
34266         loading process instead of a useless special-purpouse hack
34267         (ngen needs a hook, too, for example).
34268
34269 2002-09-27  Dick Porter  <dick@ximian.com>
34270
34271         * threads.c (mono_thread_init): Call GetCurrentProcess() so
34272         io-layer can set up some process handle info.  Not needed on w32,
34273         but doesn't hurt either.
34274
34275         * process.c: Pass the program name in the second parameter to
34276         CreateProcess, so the path is searched.  Include the working
34277         directory. Implemented process name, process enumeration, and some
34278         process detail internal calls.
34279         
34280         * icall.c: Added internal calls for process lookup, and some
34281         process details
34282
34283 2002-09-26  Martin Baulig  <martin@gnome.org>
34284
34285         * assembly.c (mono_install_open_assembly_hook): New global
34286         function to install a function to be invoked each time a new
34287         assembly is loaded.
34288         (mono_assembly_open): Run this callback function if set.
34289
34290         * debug-mono-symfile.c: Put back line numbers for the dynamic
34291         symbol file and also record the .il file as source file.  This
34292         allows us to install the temporary symbol file as `file.dbg' just
34293         like a compiler-generated one.
34294
34295 2002-09-26  Nick Zigarovich <nick@chemlab.org>
34296
34297         * Corrected typo in gc.c (BOHEM vs BOEHM).
34298
34299 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34300
34301         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
34302         GetProperties. Also avoid calling g_slist_length in GetProperties and
34303         GetMethods.
34304
34305 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
34306
34307         * reflection.c: avoid unaligned stores (bug spotted by
34308         Mark Crichton  <crichton@gimp.org>).
34309
34310 2002-09-25  Martin Baulig  <martin@gnome.org>
34311
34312         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
34313         instead of guint64 for addresses and added prologue/epilogue info.
34314
34315 2002-09-25  Martin Baulig  <martin@gnome.org>
34316
34317         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
34318         store line number info.  For the dynamic symbol file, we only need
34319         to provide the JIT generated dynamic line number info for the dynamic
34320         symbol file.
34321
34322 2002-09-25  Martin Baulig  <martin@gnome.org>
34323
34324         * debug-mono-symfile.h: Incremented version number.
34325
34326 2002-09-24  Martin Baulig  <martin@gnome.org>
34327
34328         * class.c (mono_debugger_class_init_func): New global function
34329         pointer variable.
34330         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
34331         call it.
34332
34333         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
34334         function.  This is called via the mono_debugger_class_init_func
34335         hook to add all types to the dynamic type table.
34336         (ves_icall_MonoDebugger_GetType): New interncall to get a class
34337         from its metadata token.
34338
34339         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
34340         New interncall for the debugger.
34341
34342 2002-09-24  Nick Drochak <ndrochak@gol.com>
34343
34344         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
34345         before using it in case it is null.
34346         
34347 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
34348
34349         * metadata.c: allow custom modifiers in local var signatures
34350         (bug spotted by Zoltan Varga).
34351
34352 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
34353
34354         * class.c: deal with the <Module> class that may have a NULL vtable.
34355         Eliminate warnings.
34356
34357 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34358
34359         * image.c, image.h: more strong name helpers.
34360         * monosn.c: more work: convert pem keys to cryptoapi format.
34361
34362 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
34363
34364         * string-icalls.c: speedup IndexOf.
34365
34366 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34367
34368         * icall.c: updates from Zoltan.2.Varga@nokia.com.
34369
34370 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
34371
34372         * icall.c: cleanup: use mono_object_domain ().
34373
34374 2002-09-23  Martin Baulig  <martin@gnome.org>
34375
34376         * debug-mono-symfile.c: Improved type support.
34377
34378 2002-09-22  Martin Baulig  <martin@gnome.org>
34379
34380         * debug-mono-symfile.c: Added support for reference types and strings.
34381
34382 2002-09-22  Martin Baulig  <martin@gnome.org>
34383
34384         * debug-mono-symfile.c: Started to work on the type table.
34385
34386 2002-09-21  Martin Baulig  <martin@gnome.org>
34387
34388         * debug-mono-symfile.c: Largely reworked the symbol table format.
34389         The symbol table is now incrementally updated each time a new
34390         method is added.  We're now also using our own magic and version
34391         so that you don't need to recompile all your classes if the
34392         dynamic table changes.
34393         (mono_debug_update_mono_symbol_file): Removed.
34394         (mono_debug_symfile_add_method): New function to add a method.
34395
34396 2002-09-21  Martin Baulig  <martin@gnome.org>
34397
34398         * icall.c
34399         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
34400         New interncall.
34401
34402         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
34403         New interncall to get a method from its metadata token.
34404
34405 2002-09-21  Martin Baulig  <martin@gnome.org>
34406
34407         * debug-mono-symfile.c: Create type table.
34408
34409 2002-09-20  Martin Baulig  <martin@gnome.org>
34410
34411         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
34412
34413 2002-09-20  Martin Baulig  <martin@gnome.org>
34414
34415         * debug-mono-symfile.c: Provide information about params and locals.
34416
34417 2002-09-20  Martin Baulig  <martin@gnome.org>
34418
34419         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
34420         New interncall.
34421
34422         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
34423         interncall to get a method from its metadata token.
34424
34425 2002-09-20  Martin Baulig  <martin@gnome.org>
34426
34427         * debug-mono-symfile.c: Added a few checks for method->header
34428         being non-NULL.  This should never happen, but for the moment
34429         let's use a g_warning() rather than a g_assert().
34430
34431 2002-09-19  Mark Crichton  <crichton@gimp.org>
34432
34433         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
34434         even if support for it isn't present.  Added an #ifdef to fix this.
34435
34436         * socket-io.c: Added checks back for Solaris support.
34437
34438 2002-09-19  Martin Baulig  <martin@gnome.org>
34439
34440         * debug-mono-symfile.c (read_string, write_string): Reflect latest
34441         changes in the symbol file format.
34442
34443 2002-09-18  Martin Baulig  <martin@gnome.org>
34444
34445         * debug-mono-symfile.c: Set version number to 21.
34446
34447 2002-09-18  Dick Porter  <dick@ximian.com>
34448
34449         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
34450         on netbsd.  Fixes bug 30051.
34451
34452 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34453
34454         * reflection.c:
34455         (set_version_from_string): little fix.
34456
34457 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34458
34459         * monosn.c, Makefile.am: added strong name utility.
34460         * reflection.h, reflection.c: implemented delayed signing,
34461         locale, version and hash id assembly attributes.
34462
34463 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
34464
34465         * loader.c, metadata.c: load param attributes in signatures.
34466
34467 2002-09-16  Martin Baulig  <martin@gnome.org>
34468
34469         * debug-mono-symfile.c: Added string table with all method names.
34470
34471 2002-09-14  Martin Baulig  <martin@gnome.org>
34472
34473         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
34474         fast method lookup.
34475
34476 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
34477
34478         * reflection.c: record the public key token of referenced assemblies.
34479
34480 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
34481
34482         * image.c, image.h: added functions to get the strong name and the
34483         public key of an assembly.
34484         * pedump.c: use them.
34485
34486 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
34487
34488         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
34489
34490 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
34491
34492         * marshal.c (mono_marshal_get_managed_wrapper): Added
34493         MONO_TYPE_BOOLEAN 
34494
34495 2002-09-11  Martin Baulig  <martin@gnome.org>
34496
34497         * gc.c: Call GC_unregister_disappearing_link() on all links when
34498         finalizing them, this is necessary to aviod a crash in boehm's
34499         finalize handler.
34500
34501 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34502
34503         * gc.c: handle GetTarget for finalized objects spotted and fixed by
34504         nick@chemlab.org.
34505
34506 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
34507
34508         * icall.c: implemented MonoType::Module.
34509         * reflection.c, reflection.h: mono_module_get_object () from
34510         Tomi Pakarinen <tomi.pakarinen@welho.com>.
34511
34512 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
34513
34514         * icall.c: ignore overridden methods in GetMethods ().
34515         Fix for FieldInfo::SetValue().
34516         * object.c: handle float/double in runtime invoke.
34517
34518 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
34519
34520         * object.c: allow a constructor to be called again on an object.
34521
34522 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34523
34524         * class.h, class.c: move field layout code to it's own function and
34525         export it. Get an interface id earlier. Move fields in MonoClass
34526         so they are more cache friendly and align the bitfields.
34527         * loader.c: temporary handle get_param_names() for a runtime method.
34528         * reflection.c, reflection.h: more code to handle runtime creation of
34529         types.
34530
34531 2002-09-09  Martin Baulig  <martin@gnome.org>
34532
34533         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
34534         signature with the pinvoke field being set for the actual call.
34535
34536 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
34537
34538         * icall.c: removed some unused icalls. Start of map of glib charsets
34539         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
34540
34541 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
34542
34543         * debug-helpers.c: break infinite loop (found and fixed by
34544         Holger Arnold <harnold@gmx.de>).
34545
34546 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
34547
34548         * icall.c: target may be null in create_delegate.
34549
34550 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34551
34552         * marshal.c: handle a boolean return type.
34553
34554 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34555
34556         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
34557
34558 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
34559
34560         * gc.c: fix weakreferences.
34561
34562 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
34563
34564         * icall.c: added icall to get default codepage.
34565
34566 2002-09-03  Dick Porter  <dick@ximian.com>
34567
34568         * threads.h: 
34569         * threads.c: Use MonoThread instead of MonoObject where
34570         apropriate.
34571
34572         Store running thread objects in a hash table, so that we have all
34573         the info to hand when waiting for them to finish
34574         (means we don't need OpenThread() any more, so mingw builds should
34575         be fully functional again.)
34576
34577         * verify.c:
34578         * object.h: Added thread ID to MonoThread
34579
34580 2002-09-03  Martin Baulig  <martin@gnome.org>
34581
34582         * icall.c (System.Reflection.Assembly::get_location): New interncall.
34583
34584 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34585
34586         * icall.c: fixed leak in get_temp_path. Thanks lupus.
34587
34588 2002-09-03  Martin Baulig  <martin@gnome.org>
34589
34590         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
34591         argument to store the end address of the disassembled instruction.
34592
34593         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
34594         here from debug-symfile.h.
34595         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
34596         JIT into this struct.
34597         (MonoSymbolFile): Added `char *image_file' field.
34598         (MonoDebugGetMethodFunc): Removed.
34599         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
34600         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
34601         (mono_debug_find_method): New method.
34602
34603         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
34604         create a full symbol file.
34605         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
34606         and static symbol files.
34607         (mono_debug_find_method): The symbol file keeps an internal method hash,
34608         call this to get a MonoDebugMethodInfo from a MonoMethod.
34609
34610         * debug-symfile.[ch]: Removed.
34611
34612 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
34613
34614         * image.c (do_mono_image_open): Remove linker version check.
34615
34616 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
34617
34618         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
34619         wrappers for instance methods.
34620         
34621 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34622
34623         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
34624
34625 2002-08-28  Dick Porter  <dick@ximian.com>
34626
34627         * Makefile.am: Export HOST_CC for w32 builds
34628
34629 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
34630
34631         * file-io.c process.c: MonoString are null terminated, no
34632         need for mono_string_to_utf16() anymore.
34633
34634 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
34635
34636         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
34637
34638 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
34639
34640         * icall.c, reflection.h: speedup System.MonoType.
34641
34642 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
34643
34644         * reflection.c: allow null as the value of a string argument in
34645         custom attributes constructors.
34646
34647 2002-08-27  Martin Baulig  <martin@gnome.org>
34648
34649         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
34650         `trampoline_address' field.
34651
34652 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
34653
34654         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
34655         check (fixes bug #29486) 
34656
34657 2002-08-27  Martin Baulig  <martin@gnome.org>
34658
34659         * debug-mono-symfile.c: Changed the file format in a way that allows us
34660         open it read-only and to use a specially malloced area for all the
34661         dynamic data.  We can now also generate a symbol file on-the-fly if we're
34662         debugging IL code and there is no MCS generated symbol file for it.
34663
34664 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
34665
34666         * object.c: added a define for a good string and array
34667         creation speedup (not enabled by default because we need to deal with
34668         the synch stuff).
34669
34670 2002-08-26  Martin Baulig  <martin@gnome.org>
34671
34672         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
34673         function to create a dynamic symbol file.  This is used by the
34674         debugger to create a symbol file for IL code on-the-fly.
34675
34676 2002-08-26  Martin Baulig  <martin@gnome.org>
34677
34678         * loader.c (mono_lookup_pinvoke_call): Include the error message
34679         from g_module_error() in the error message.
34680
34681 2002-08-24  Martin Baulig  <martin@gnome.org>
34682
34683         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
34684         function to update the symbol file.  The symbol file is mmap()ed
34685         writable, but private.  This allows us to install the symbol file
34686         together with the assembly.
34687
34688 2002-08-24  Martin Baulig  <martin@gnome.org>
34689
34690         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
34691         but they can read the new symbol file format which mcs is now creating.
34692
34693         * debug-symfile.c (mono_debug_find_source_location): Moved to
34694         debug-mono-symfile.c; this is now operating on the new symbol file.
34695
34696 2002-08-23  Martin Baulig  <martin@gnome.org>
34697
34698         * debug-helpers.c (mono_method_desc_from_method): New function to get
34699         a MonoMethodDesc from a MonoMethod.
34700
34701 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
34702
34703         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
34704         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
34705
34706 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
34707
34708         * string-icalls.[ch]: make helper methods static.
34709
34710 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34711
34712         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
34713         types to it and to SetValueInternal.
34714
34715         * object.c: Moved handle_enum label to its proper place. This was the
34716         f... bug! ;-)
34717
34718         This time i compiled mcs and gtk-sharp and they both work.
34719
34720 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34721
34722         * icall.c: reverted partially my previous patch until 
34723         object.c:set_value handles enums correcly.
34724
34725 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34726
34727         * icall.c:
34728         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
34729         (ves_icall_System_Environment_get_MachineName): removed warning when
34730         compiling under cygwin.
34731
34732 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
34733
34734         * object.c: fixed field_get_value() for reference types.
34735
34736 2002-08-22  Dick Porter  <dick@ximian.com>
34737
34738         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
34739         Don't free a buffer while it's still needed.  Patch from Jonathan
34740         Liger <Jonathan.liger@wanadoo.fr>
34741
34742 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
34743
34744         * icall.c (ves_icall_System_Environment_get_Platform): Add new
34745         internal call.
34746
34747 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
34748
34749         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
34750         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
34751
34752         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
34753         we call unmanaged code which throws exceptions.
34754
34755 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34756
34757         * appdomain.h: added per-domain entry_assembly.
34758         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
34759         arguments.
34760         * icall.c: Assembly::GetEntryAssembly icall.
34761         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
34762         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
34763
34764 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
34765
34766         * appdomain.h, gc.c: added mono_domain_finalize ().
34767
34768 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34769
34770         * object.c:
34771         (mono_print_unhandled_exception): changed g_warning by g_printerr
34772         because g_log has a 1024 characters limit (yeah, i got a big stack
34773         trace). Don't print exception name, that should be in ToString 
34774         returned string.
34775
34776 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34777
34778         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
34779         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
34780
34781 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34782
34783         * object.c:
34784         (mono_print_unhandled_exception): after previous commit, i realized
34785         that MS calls ToString on the exception. I changed this function to
34786         do that. This way we get stack_trace for free.
34787
34788 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34789
34790         * object.c:
34791         (mono_print_unhandled_exception): invoke Message property instead of
34792         getting 'message' field from Exception. Don't allocate memory for
34793         'trace' and 'message' if not needed.
34794
34795 2002-08-18  Dick Porter  <dick@ximian.com>
34796
34797         * unicode.c: Fix asserts to match Encoder.cs checks
34798
34799 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
34800
34801         * marshal.c: fix unaligned store issue and a few wrong
34802         opcode argument types.
34803
34804 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34805
34806         * icall.c: added GetUninitializedObjectInternal internal call.
34807
34808 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
34809
34810         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
34811         to the right domain.
34812
34813 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
34814
34815         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
34816
34817         * class.c (class_compute_field_layout): set blittable to false for Strings
34818
34819         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
34820
34821 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
34822
34823         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
34824         first chunk of code to create types at runtime. Code to
34825         handle ReflectedType/DeclaringType. Make reflection handles
34826         domain specific.
34827
34828 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
34829
34830         * class.c: set correct name in arrays.
34831
34832 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
34833
34834         * appdomain.c (mono_domain_transfer_object): make it work with
34835         valuetypes. bug fixes.
34836
34837 2002-08-12  Dick Porter  <dick@ximian.com>
34838
34839         * object.h: Rename some parameters to avoid c++ keywords (Patch
34840         from Joseph Wenninger <kde@jowenn.at>)
34841
34842 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
34843
34844         * icall.c: added icall to implement Assembly.GetFile*.
34845
34846 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
34847
34848         * reflection.h, reflection.c: code to embed managed resources.
34849
34850 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
34851
34852         * class.c: move all the type size stuff into
34853         class_compute_field_layout().
34854
34855 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34856
34857         * class.c: ensure enums have always the correct instance size.
34858         * unicode.c: remove wrong assert.
34859
34860 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
34861
34862         * assembly.c: fix mem corruption issue.
34863         * image.h, image.c: added mono_image_get_resource () to access
34864         managed resources.
34865         * icall.c: implemented Assembly.EntryPoint property and some
34866         Managed Resources related internalcalls.
34867
34868
34869 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
34870
34871         * image.c, image.h: impemented mono_image_get_entry_point ().
34872         * appdomain.c: use mono_image_get_entry_point.
34873
34874 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
34875
34876         * reflection.c: support the object type argument when loading
34877         custom attributes.
34878
34879 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
34880
34881         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
34882         String as return type.
34883
34884 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
34885
34886         * reflection.c: fix encoding of named args for custom attrs to match
34887         the ms implementation. Read them back when instantiating custom
34888         attributes.
34889
34890 2002-08-02  Radek Doulik  <rodo@ximian.com>
34891
34892         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
34893         by Dietmar as quick fix
34894         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
34895         16 as stack size, used on more places as quick fix before Dietmar
34896         will fix it properly
34897
34898 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
34899
34900         * object.h, object.c: added accessors for fields and properties.
34901
34902 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
34903
34904         * class.c, class.h: made mono_class_get_field_from_name ()
34905         loop on parent types.
34906         Added mono_class_get_property_from_name ().
34907
34908 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
34909
34910         * class.c, class.h: move the code to setup the type vtable in its own
34911         function so that it can be reused also for types created at runtime.
34912         Eliminate the "class" identifier from the header file.
34913         * reflection.c: setup the vtable for enums so that we can create
34914         objects for use in SetConstant ().
34915
34916 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
34917
34918         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
34919         instead of the delegate itself as this pointer (bug #28383)
34920
34921 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
34922
34923         * marshal.c (mono_marshal_get_managed_wrapper): added return type
34924         conversions.
34925
34926 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
34927
34928         * loader.c: don't set the pinvoke bit on icalls.
34929
34930 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
34931
34932         * debug-helpers.c (mono_method_full_name): only print a number to
34933         indicate wrapper type (so that the output is more readable in traces).
34934
34935 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
34936
34937         * class.c (mono_class_init): include method override patch from Paolo
34938
34939 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
34940
34941         * icall.c: fixed GetTypeCode().
34942
34943 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
34944
34945         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
34946         use real delegate invoke function to make it work with multicast
34947         delegates (fix bug# 28291).
34948
34949 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
34950
34951         * object.c: load constant strings.
34952
34953 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
34954
34955         * reflection.c: no magic numbers.
34956         * tabledefs.h: security action enum.
34957
34958 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
34959
34960         * assembly.c: fix possible memory corruption.
34961
34962 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
34963
34964         * reflection.h, reflection.c: added support for linking resources.
34965         * verify.c: check we have an updated corlib.
34966
34967 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
34968
34969         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
34970         string arrays.
34971         (mono_marshal_string_array): null terminate unmanaged string arrays.
34972         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
34973
34974 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
34975
34976         * icall.c: Type.GetType () can now return also types from the
34977         calling assembly.
34978
34979 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
34980
34981         * loader.h, loader.c: stack walking support.
34982         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
34983         GetCallingAssembly.
34984
34985 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
34986
34987         * marshal.c: added optimisations for blittable types 
34988
34989         * class.c (mono_array_class_get): do not set blittable attribute on arrays
34990         (mono_class_setup_mono_type): set blittable attribute for single
34991         and double.
34992
34993         * marshal.c (mono_string_utf8_to_builder): impl.
34994         (mono_string_builder_to_utf8): impl.
34995         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
34996
34997 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
34998
34999         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
35000         (mono_marshal_get_managed_wrapper): impl. byref types
35001
35002 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35003
35004         * icall.c:
35005         (search_method): don't display debug message. 
35006
35007 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
35008
35009         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
35010
35011 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
35012
35013         * appdomain.c: set the missing filename when throwing exception.
35014
35015 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
35016
35017         * metadata.c (mono_type_size): code cleanup
35018         (mono_type_stack_size): removed some test code
35019
35020 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
35021
35022         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
35023         mono_get_exception_file_not_found now.
35024
35025         * exception.c (mono_exception_from_name_two_strings): New version
35026         that will call a constructor with two string arguments. 
35027         (mono_get_exception_file_not_found): New helper routine, used to
35028         report file-not-found errors.
35029
35030 2002-07-20  Dick Porter  <dick@ximian.com>
35031
35032         * process.h:
35033         * process.c: Pass file handles to CreateProcess
35034         
35035         * icall.c:
35036         * file-io.h:
35037         * file-io.c: Implemented CreatePipe
35038
35039 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
35040
35041         * metadata.c (mono_get_param_info): set alignment for value types
35042
35043 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35044
35045         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
35046         Constify mono_domain_assembly_open().
35047         * loader.c: handle null namespace in icalls.
35048
35049 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
35050
35051         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
35052         (emit_str_to_ptr_conv): marshal object as structs
35053
35054         * metadata.c (mono_type_to_unmanaged): marshal object as structs
35055
35056         * marshal.c (mono_marshal_get_runtime_invoke): support value types
35057
35058 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
35059
35060         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
35061         (mono_marshal_get_native_wrapper): we an now return value types
35062
35063 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35064
35065         * verify.c: more checks implemented.
35066
35067 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
35068
35069         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
35070         (fix bug #27695)
35071         (mono_marshal_get_native_wrapper): allow byref arguments
35072         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
35073         impl. PtrToStringXXX methods
35074         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
35075         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
35076         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
35077         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
35078         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
35079
35080 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35081
35082         * reflection.c: fix buglet in parsing an assembly name.
35083
35084 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
35085
35086         * marshal.c (emit_ptr_to_str_conv): first impl.
35087
35088 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
35089
35090         * object.c, class.h: cache the vtable in the class as suggested by
35091         vargaz@freemail.hu (Zoltan Varga).
35092
35093 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35094
35095         * class.h, loader.c: added mono_field_from_token().
35096         * verify.c: first cut of type checking code.
35097
35098 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
35099
35100         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
35101
35102 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
35103
35104         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
35105         (fix bug #27782)
35106         (mono_marshal_get_remoting_invoke): impl.
35107         (mono_delegate_begin_invoke): impl.
35108         (mono_mb_emit_save_args): impl.
35109         (mono_delegate_end_invoke): impl.
35110         (mono_marshal_get_delegate_begin_invoke):
35111         (mono_marshal_get_delegate_end_invoke):
35112         (mono_marshal_get_delegate_invoke): generate a special name for
35113         those methods (including the signature) and associate them whith
35114         the delegate class. 
35115
35116 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
35117
35118         * reflection.[ch]: 
35119         (mono_reflection_type_from_name): now it has a MonoImage parameter
35120         which is used as the default image to search the type in. If the image
35121         is NULL or getting the type from it fails, it defaults to corlib.
35122
35123         * icall.c: changed 1 call to mono_reflection_type_from_name to match
35124         new parameter.
35125
35126 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35127
35128         * reflection.c: update the parameter table index.
35129
35130 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35131
35132         * domain.c: don't include the mark byte in the string hash.
35133
35134 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35135
35136         * icall.cs: icall for Type.GetTypeCode ().
35137         * verify: a couple of fixes and disabled local initialization checks.
35138
35139 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
35140
35141         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
35142
35143         * debug-helpers.c (mono_method_full_name): print the type of the
35144         runtime wrapper
35145
35146         * metadata.c (mono_signature_hash): a hash function for signatures
35147         (mono_signature_hash): better hash algorithm
35148
35149         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
35150
35151         * debug-helpers.c (mono_method_full_name): this can now generate
35152         method names with signatures
35153
35154         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
35155         method dont have this pointers.
35156
35157 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
35158
35159         * reflection.c: fixup typebuilder tokens.
35160         * image.c: fix buglet.
35161         * marshal.h: remove whitespace.
35162         * metadata.h, metadata.c: reinstate code that was removed.
35163         * verify.c: handle catch directives and fix another couple of bugs.
35164
35165 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
35166
35167         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
35168         (mono_marshal_get_native_wrapper): make it comp. with the old code
35169         (mono_marshal_get_native_wrapper): support boolean
35170         (mono_marshal_get_managed_wrapper): support more types
35171
35172 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
35173
35174         * class.c (class_compute_field_layout): compute class->blittable attribute.
35175
35176 2002-07-09  Dick Porter  <dick@ximian.com>
35177
35178         * threads.c: Make the thread cleaning up cope with threads that
35179         call ExitThread()
35180
35181 2002-07-08  Radek Doulik  <rodo@ximian.com>
35182
35183         * reflection.c (method_encode_code): use non-translated values to
35184         compute finally_start, this fixes exception handling on ppc, yay!
35185
35186         * decimal.h (struct signscale): fix endianess
35187
35188 2002-07-07  Radek Doulik  <rodo@ximian.com>
35189
35190         * reflection.c: swap box_val and not val
35191
35192 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
35193
35194         * reflection.c, reflection.h: handle full assembly info in type name.
35195         Handle Type arguments when loading custom attributes.
35196         * icall.c: updated to use new mono_reflection_type_from_name () method.
35197
35198 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35199
35200         * loader.c:
35201         (method_from_memberref): also print assembly name when method not found.
35202
35203 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35204
35205         * icall.c:
35206         (ves_icall_TypeGetProperties): fixed bug #27473. 
35207
35208 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35209
35210         * reflection.c: display image name and token when cannot find the
35211         .ctor for an attribute.
35212
35213 2002-07-05  Martin Baulig  <martin@gnome.org>
35214
35215         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
35216
35217 2002-07-04  Dick Porter  <dick@ximian.com>
35218
35219         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
35220         compile on mingw.  This will cause mingw builds to not wait for
35221         subthreads to terminate after the main thread does.  I've lodged a
35222         bug with the mingw developers for them to wrap OpenThread().
35223
35224 2002-07-03  Dick Porter  <dick@ximian.com>
35225
35226         * threads.c: Store thread IDs instead of handles, because
35227         GetCurrentThread() returns a pseudohandle and therefore stores
35228         useless values.  mono_thread_cleanup() continues checking the
35229         array of threads until it is empty, to cope with subthreads
35230         spawning new threads after the main thread has finished.
35231
35232         * profiler.h:
35233         * profiler.c:
35234         * profiler-private.h: Pass the thread ID to thread profiler
35235         functions, instead of a handle
35236
35237 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35238
35239         * verify.c: fixes to make it more usable.
35240         * pedump.c: added --verify code to verify IL code in an assembly.
35241
35242 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35243
35244         * reflection.c: turn errors into warnings to allow compiling corlib.
35245
35246 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
35247
35248         * reflection.c: add special cases to compile corlib.
35249
35250 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35251
35252         * reflection.c: handle properties with only a set method.
35253
35254 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35255
35256         * opcodes.h: add enum with opcodes in opval order.
35257
35258 2002-07-01  Dick Porter  <dick@ximian.com>
35259         
35260         * object.h:
35261         * object.c (mono_runtime_run_main): Removed unneeded argument
35262
35263 2002-06-28  Martin Baulig  <martin@gnome.org>
35264
35265         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
35266
35267 2002-06-27  Dick Porter  <dick@ximian.com>
35268
35269         * threads.c: Store the handle in both the parent thread and in the
35270         subthread, to minimise the time between starting a new thread and
35271         storing its ID.
35272
35273 2002-06-26  Dick Porter  <dick@ximian.com>
35274
35275         * appdomain.c (mono_runtime_cleanup): Close the socket library
35276         after all the threads have finished, not before
35277
35278 2002-06-26  Martin Baulig  <martin@gnome.org>
35279
35280         * debug-symfile.c (mono_debug_find_source_location): Added
35281         `guint32 *line_number' argument.  If it's not NULL, store the line number
35282         there and return the file name without the line number.
35283
35284 2002-06-25  Dick Porter  <dick@ximian.com>
35285
35286         * icall.c:
35287         * process.h:
35288         * process.c: Process forking and other support functions
35289
35290 2002-06-25  Dick Porter  <dick@ximian.com>
35291
35292         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
35293         things dont happen when the image is closed.
35294         (mono_image_lookup_resource): Walk the resource section looking
35295         for a particular entry
35296
35297         * cil-coff.h: PE resource section decoding
35298
35299 2002-06-25  Dick Porter  <dick@ximian.com>
35300         
35301         * assembly.h:
35302         * assembly.c: 
35303         (mono_assembly_foreach): Accessor functions to walk the list of
35304         loaded assemblies
35305         (mono_assembly_set_main):
35306         (mono_assembly_get_main): Process methods need to know which
35307         assembly is the "main" one
35308
35309         * object.c (mono_runtime_run_main): Record the main assembly
35310
35311         * debug-helpers.c: Fix typo
35312
35313 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
35314
35315         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
35316         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
35317
35318 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35319
35320         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
35321
35322 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
35323
35324         * image.c (do_mono_image_open): Initialize reference count,
35325         otherwise we leak the MonoImage.
35326
35327 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
35328
35329         * reflection.c: small tweak to handle self-hosting.
35330
35331 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
35332
35333         * reflection.c: fix type name parse code.
35334
35335 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35336
35337         * reflection.c: break out of the loop.
35338         * image.c: special case corlib.
35339
35340 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35341
35342         * reflection.c: add all the custom attrs at the end to ensure the
35343         ctors have been properly initialized when the attributes are defined
35344         in the current assembly.
35345
35346 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35347
35348         * reflection.c: handle correctly multiple-nested types.
35349
35350 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
35351
35352         * row-indexes.h: fix typos.
35353         * reflection.c: adjust for typos and fix method_def_or_ref
35354         encoding in MethodImpl table.
35355
35356 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35357
35358         * reflection.c: fix entry point patching (thanks Serge!).
35359
35360 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
35361
35362         * verify.c: add check for System.Exception
35363
35364 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35365
35366         * image.c, class.c: minifix for code just c&p'ed.
35367         * reflection.c: warning fix.
35368         * object.h, loader.h, domain.c: load also StringBuilder.
35369
35370 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35371
35372         * marshal.h, marshal.c: some support code to handle complex marshaling.
35373
35374 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35375
35376         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
35377         Better signatures with vtable error dump.
35378
35379 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
35380
35381         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
35382
35383 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
35384
35385         * icall.c (ves_icall_Type_GetField): impl.
35386
35387 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35388
35389         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
35390         to retrieve a marshal description blob for a field or param.
35391
35392 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
35393
35394         * reflection.h, reflection.c: change order of nested type emission
35395         to avoid table corruption. The NestedTypes table is sorted.
35396         * icall.c: change order of GetConstructor results to workaround mcs bug.
35397
35398 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35399
35400         * reflection.h, reflection.c: handle field and param marshal
35401         information.
35402
35403 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35404
35405         * icall.c, marshal.c marshal.h: more Marshal class implementation.
35406
35407 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35408
35409         * reflection.c: fix call convention.
35410
35411 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35412
35413         * reflection.h, reflection.c: mono_image_get_memberref_token()
35414         takes a type instead of a class, now. Added
35415         mono_image_get_array_token() to create tokens for the special
35416         multi-dim array methods.
35417
35418 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
35419
35420         * assembly.c: handle modules (no assembly table). Split
35421         loading references in its own function.
35422         * class.c: handle moduleref resolution scope.
35423         * image.c, image.h: cache module name in image.
35424
35425 2002-06-07  Martin Baulig  <martin@gnome.org>
35426
35427         * reflection.c (mono_image_get_type_info): Only add a class layout entry
35428         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
35429
35430 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35431
35432         * icall.c: more signature fixes that used uint instead of int.
35433
35434 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35435
35436         * reflection.c: fixed signature of field refs.
35437
35438 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35439
35440         * class.c, reflection.c: handle typerefs of nested types
35441         (both on read and when writing files).
35442
35443 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
35444
35445         * icall.c: fix method signatures that tried to workaround the previous
35446         typo, d'oh!
35447
35448 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
35449
35450         * debug-helpers.c: fix typo.
35451
35452 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
35453
35454         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
35455         rewrote the PE/COFF writing code (our programs are understood by the
35456         ms runtime, now).
35457
35458 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
35459
35460         * gc.c, gc.h, icall.c: weakreference support.
35461
35462 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35463
35464         * Makefile.am, mono-config.c: use $(sysconfdir).
35465
35466 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35467
35468         * icall.c: changed default precision of Double.ToString() to 15.
35469         Fixed memory leak. Unified with Single.ToString.
35470
35471 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
35472
35473         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
35474
35475 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
35476
35477         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
35478         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
35479         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
35480         and myself.
35481
35482 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35483
35484         * debug-symfile.c, sysmath.c: yet more compilation fixes.
35485
35486 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35487
35488         * reflection.c, socket-io.c: more compilation fixes.
35489
35490 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35491
35492         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
35493         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
35494         unicode.c: warning and compiler compatibility fixes.
35495
35496 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
35497
35498         * class.h, metadata.c: fixed warnings/compilation errors.
35499
35500 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35501
35502         * Makefile.am, mono-config.c, mono-config.h: configuration file
35503         support routines.
35504         * loader.c, loader.h: make Dll mapping configurable at runtime in the
35505         config file. Export methods to insert and lookup mappings.
35506
35507 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
35508
35509         * reflection.c: handle types and boxed objects in custom attr
35510         constructors.
35511
35512 2002-05-30  Martin Baulig  <martin@gnome.org>
35513
35514         * debug-symfile.c
35515         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
35516
35517 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
35518
35519         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
35520         to lookup the implmap row for a P/Invoke method.
35521         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
35522         P/Invoke method from the runtime on an as needed basis.
35523
35524 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
35525
35526         * metadata.c (mono_metadata_parse_signature): impl.
35527
35528 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35529
35530         * class.c: handle .pack directive.
35531
35532 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
35533
35534         * object.c: initialize static fields with RVA data.
35535
35536 2002-05-25  Martin Baulig  <martin@gnome.org>
35537
35538         * debug-symfile.c
35539         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
35540
35541 2002-05-24  Martin Baulig  <martin@gnome.org>
35542
35543         * debug-symfile.c
35544         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
35545         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
35546         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
35547
35548 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
35549
35550         * object.c: special case string ctros in invoke.
35551         * gc.c: silly whitespace changes.
35552
35553 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
35554
35555         * threadpool.[ch]: impl. a threadpool that can
35556         be used by mint and mono.
35557
35558 2002-05-22  Martin Baulig  <martin@gnome.org>
35559
35560         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
35561         The first argument is now a `MonoReflectionModuleBuilder *', the return
35562         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
35563         `methods' field to get the method builder.  The `token' argument is the
35564         unfixed token.
35565
35566         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
35567         invalid characters instead of g_assert_not_reached()ing.  This seems
35568         to be the behaviour of mscorlib.
35569
35570 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
35571
35572         * object.c (mono_runtime_invoke_array): applied patch from Rachel
35573         Hestilow to fix bug #25104
35574
35575 2002-05-21  Martin Baulig  <martin@gnome.org>
35576
35577         * debug-symfile.c (mono_debug_find_source_location): New function.
35578         Looks up an IL offset in the line number table and returns the source
35579         location as a string.
35580
35581 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35582
35583         * icall.c:
35584         (mono_double_ToStringImpl): changed %f by %g until we have something
35585         better.
35586
35587 2002-05-21  Nick Drochak  <ndrochak@gol.com>
35588
35589         * icall.c : Use different name for Math.Pow's icall.  Needed to check
35590         parameters first in C#.
35591
35592 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35593
35594         * icall.c, reflection.h: added icall to get info about an event.
35595
35596 2002-05-20  Radek Doulik  <rodo@ximian.com>
35597
35598         * object.c (mono_value_box): don't use memcpy for boxing on BIG
35599         endian
35600         (mono_value_box): don't use memcpy for small sizes on
35601         architectures with unaligned access
35602
35603 2002-05-20  Martin Baulig  <martin@gnome.org>
35604
35605         * reflection.c (mono_reflection_setup_internal_class): Don't crash
35606         if `tb->parent == NULL'.
35607         (mono_reflection_create_internal_class): New function.  This is
35608         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
35609         for enum types.
35610
35611         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
35612         New interncall.
35613
35614 2002-05-19  Martin Baulig  <martin@gnome.org>
35615
35616         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
35617         argument to get the length, don't default to the array length.
35618
35619 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
35620
35621         * assembly.c (mono_assembly_setrootdir): New function used to
35622         override the MONO_ASSEMBLIES directory.
35623
35624 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
35625
35626         * icall.c: ValueType_GetHashCode() initialize local var.
35627
35628 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35629
35630         * reflection.c: sort custom attributes table.
35631
35632 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
35633
35634         * reflection.c: support named args in custom attributes (write support).
35635
35636 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
35637
35638         * reflection.c: fix finally position calculation.
35639
35640 2002-05-15  Radek Doulik  <rodo@ximian.com>
35641
35642         * reflection.c: fixed endianess at many places
35643
35644         * icall.c (ves_icall_InitializeArray): comment out debug msg
35645
35646 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
35647
35648         * object.c (mono_unhandled_exception): new function to handle
35649         unhandled exceptions.
35650         (mono_unhandled_exception): call the UnhandledException event.
35651         (mono_runtime_delegate_invoke): impl.
35652
35653 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
35654
35655         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
35656         returns the RVA, not the direct pointer to the data. Handle the case
35657         when the class size is fixed.
35658
35659 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
35660
35661         * reflection.c: fix some endianess issues.
35662
35663 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
35664
35665         * object.c (mono_runtime_invoke): is now able to catch exceptions.
35666
35667         * threads.c (mono_thread_init): added a callback which is invoked
35668         at thread start.
35669
35670 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
35671         
35672         * icall.c: make GetHashCode return non-negative values.
35673
35674 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
35675
35676         * object.c, icall.c, gc.c: revert to address-based hashcode.
35677
35678 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
35679
35680         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
35681
35682 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35683
35684         * icall.c, class.c: special case <Module>.
35685
35686 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
35687
35688         * icall.c: fix bug in GetNow().
35689
35690 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
35691
35692         * object.c (mono_runtime_class_init): make sure that we call all
35693         static class constructors.
35694
35695 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
35696
35697         * reflection.c: sort methodsemantics table.
35698
35699 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
35700
35701         * reflection.h, reflection.c: honour init locals setting.
35702
35703 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
35704
35705         * icall.c: copied Double ToStringImpl for Single ToStringImpl
35706
35707 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
35708
35709         * reflection.c: support ContructorBuilders in attribute blob creation.
35710
35711 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35712
35713         * reflection.c: some changes to build a binary that can be run
35714         directly in windows.
35715
35716 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
35717
35718         * loader.c: print a big message when an icall can't be found.
35719
35720 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35721
35722         * string-icalls.c: fix bug 24248.
35723
35724 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
35725
35726         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
35727         icall.c, reflection.h: separate assembly loading by pathname and by
35728         assembly name. Use the MONO_PATH env var to search for assemblies.
35729
35730 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35731
35732         * assembly.c, image.h: add some support for assemblies
35733         with multiple modules.
35734         * class.c, class.h: export mono_class_from_typeref().
35735         * loader.c: remove duplicated code and use mono_class_from_typeref(),
35736         instead.
35737
35738 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35739
35740         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
35741         documentation says (the ECMA one is correct).
35742
35743 2002-05-02  Dick Porter  <dick@ximian.com>
35744
35745         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
35746         Don't name the synchronisation mutex.
35747
35748 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
35749
35750         * rand.c
35751         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
35752         Make the prototypes match.
35753         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
35754         Same.
35755
35756         * icall.c
35757         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
35758         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
35759         all systems have tm.tm_zone, so use strftime() with %Z to print
35760         the timezone abreviation into a temp string.
35761
35762         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
35763         rather than mono_array_addr() on a MonoString on Big Endian
35764         machines.
35765
35766 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
35767
35768         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
35769         fix bug 24041
35770
35771 2002-04-30  Dick Porter  <dick@ximian.com>
35772
35773         * socket-io.c: Cope with SOCKET being an integer rather than a
35774         pointer now.
35775
35776         * threads.c: Added Thread_free_internal, to deal with thread
35777         handle cleanup.  Moved calls to handle_store() and handle_remove()
35778         to start_wrapper(), so each can only be called once.  Allocate
35779         synchronisation blocks with GC_malloc(), and use GC finalisation
35780         to close the handles.
35781
35782         * icall.c: added System.Threading.Thread::Thread_free_internal
35783
35784 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35785
35786         * icall.c: support Environment.Exit, CommandLineArgs().
35787
35788 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35789
35790         * object.c, object.h: added mono_runtime_run_main () and
35791         mono_runtime_get_main_args () for use in System.Environment.
35792
35793 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35794
35795         * gc.c: fix thinko, enable actual finalization since the jit is now
35796         fixed.
35797
35798 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35799
35800         * gc.c, object.c: take into account that an object may be offset wrt the address
35801         returned by GC_malloc().
35802
35803 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
35804
35805         * image.c: handle files without entries in the assembly table (modules).
35806
35807 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
35808
35809         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
35810         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
35811         allowed to be null when it's System.Object class setup.
35812
35813 2002-04-27  Martin Baulig  <martin@gnome.org>
35814
35815         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
35816         if `tb->parent == NULL' rather than crashing.
35817
35818 2002-04-28  Nick Drochak  <ndrochak@gol.com>
35819
35820         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
35821         calling acos() where asin() should have been called.
35822
35823 2002-04-26  Martin Baulig  <martin@gnome.org>
35824
35825         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
35826         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
35827         there's a subdirectory called `System', but we don't want to read that
35828         subdirectory as an assembly.
35829
35830 2002-04-25  Martin Baulig  <martin@gnome.org>
35831
35832         * debug-symfile.c: Reflect latest MonoString changes.
35833
35834 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
35835
35836         * rand.c, rand.h: instance method icalls need to have an explicit
35837         this pointer as first argument in the C implementation.
35838
35839 2002-04-25  Nick Drochak <ndrochak@gol.com>
35840
35841         * icall.c: Fix typo in map for GetNonZeroBytes
35842
35843 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
35844
35845         * string-icalls.c : String does now passes unit tests without any 
35846         errors, the following changes has been made:
35847         
35848         Implemented replace methods.
35849         Renaming of methods to (try) follow the standard.
35850         Fixed compare ordinal
35851         Made all memory allocated directly to function instead of via icall function.
35852         Small performance fix in is_in_array function
35853                         
35854  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
35855
35856         c (mono_string_Internal_ctor_charp_int_int):
35857         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
35858         sindex < 0, throw ArgumentOutOfRangeException instead of
35859         ArgumentNullException.
35860
35861         Added new check for length == 0, however
35862         I need to make it return String.Empty from the C code.
35863         
35864         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
35865         that calculate the length for us here.
35866         
35867         (mono_string_Internal_ctor_sbytep_int_int): Replaced
35868         mono_string_new_utf16 with mono_string_new, since value is utf8.
35869
35870 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35871
35872         * object.c: register the object for finalization if needed.
35873         Allocate one more char in the string for the terminating 0 char.
35874
35875 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35876
35877         * class.c, class.h, image.c: check if a type implemenst a destructor.
35878         Use the proper key for array class lookups.
35879         * icall.c: register the icalls in the System.GC class.
35880         * gc.c, gc.h: GC-related functions and icalls.
35881
35882 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35883
35884         * icall.c:
35885         * socket-io.c:
35886         * unicode.c: free some strings gotten from mono_string_to_utf8 and
35887         changed a couple of free () by g_free ().
35888
35889         * decimal.c: one-liner in the comments for decimal2string ().
35890
35891 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
35892
35893         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
35894
35895 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
35896
35897         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
35898         * object.c (mono_runtime_invoke_array) : handle null in params
35899
35900 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
35901
35902         * string-icalls.c: fixed bug in split (one off bug)
35903
35904 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
35905
35906         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
35907         * icalls.c: added String::Equals as internal method
35908
35909 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
35910
35911         * threads.c: fixed bug in the double interlocked functions
35912
35913 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
35914
35915         * threads.c: implemented all of the new interlocked icalls.
35916         * string-icalls.c: fix a bug in insert.
35917         * icalls.c: added the icalls for interlocked, removed old string functions.
35918         
35919 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
35920
35921         * loader.c: fix off-by-one error when reading argument names.
35922
35923 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35924
35925         * profiler.c: win32 counter implementation (untested).
35926         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
35927         (the latter needs testing and more complete impl. from win32 folks).
35928
35929 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
35930
35931         * object.c: mono_array_new_full workaround mono_array_class_get
35932         problem.
35933
35934 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
35935
35936         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
35937         * object.h (mono_string_chars): Changed casting type.
35938
35939 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
35940
35941         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
35942                            method signatures to use gunichar2 instead of gint16.
35943
35944 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
35945
35946         * object.h, object.c: domain-specific versions of mono_object_new and
35947         mono_array_new.
35948
35949 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
35950
35951         * object.c: changed String layout
35952
35953         * string-icalls.c (mono_string_Internal_ctor_chara): added
35954         internal string constructors.
35955
35956 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
35957
35958         * threads.c: pass 'this' to the thread start routine.
35959
35960 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35961
35962         * string-icalls.c: fix IndexOf and LastIndexOf. Now
35963         InternalCompareStr don't call twice mono_string_cmp_char for the last
35964         character. Improved performance in mono_string_cmp_char.
35965
35966 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
35967
35968         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
35969         code into its own library: libmonoruntime.
35970
35971 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
35972
35973         * object.h, object.c: changed array format so that szarrays do not
35974         require a bounds structure.
35975         * icall.c, appdomain.c: support for new szarray format.
35976
35977 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
35978
35979         * metadata.c: compare also the retuns type when comparing signatures:
35980         we didn't do this as an optimization since really overloaded methods
35981         must differ also in the arguments, but this doesn't work with
35982         low-level IL code (or when using explicit conversion operators: see
35983         bug#23498 for an example).
35984
35985 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35986
35987         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
35988
35989 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
35990
35991         * icall.c: make MonoType::GetElementType its own icall.
35992
35993 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35994
35995         * icall.c: remove MonoMethod_get_Name().
35996         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
35997         object.
35998
35999 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36000
36001         * string-icalls.c: optimized a few methods.
36002
36003 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36004
36005         * icall.c: added all new string internal calls
36006         * string-icalls.c: added, new string internal call implementation.
36007         * object.c: added mono_string_new_size for allocating a string a size
36008
36009 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
36010
36011         * object.c (mono_object_isinst): use the same code as in the
36012         optimized x86 version.
36013
36014 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
36015
36016         * profiler.c: TSC-based timer code (faster and more accurate).
36017         Not hooked up in configure, yet (set USE_X86TSC to 1).
36018
36019 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
36020
36021         * profiler.c, profiler.h: track time spent compiling methods.
36022         * threads.c: track thread creation/destruction.
36023
36024 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
36025
36026         * profiler.c, profiler.h, profiler-private.h: profiling interface
36027         and sample implementation. Moved here so that it can be used also by
36028         the jit.
36029
36030 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
36031
36032         * reflection.c, reflection.h: keep types and other handles separate in
36033         the hash tables for referred tokens. Add guid for modules.
36034
36035 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
36036
36037         * assembly.c: fix bugs found with valgrind.
36038         * metadata.h, metadata.c: added mono_metadata_guid_heap().
36039
36040 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
36041
36042         * threads: added icall support for getting current domain for
36043                    the thread.
36044  
36045 2002-04-13  Martin Baulig  <martin@gnome.org>
36046
36047         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
36048         (MonoDebugVarInfo): Added `index' field for register based addresses.
36049         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
36050         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
36051         `MonoDebugVarInfo *params' and `guint32 this_offset' with
36052         `MonoDebugVarInfo *this_var'.
36053
36054         * debug-symfile.c (relocate_variable): New static function to write
36055         a location description for a local variable or method parameter.
36056
36057 2002-04-12  Martin Baulig  <martin@gnome.org>
36058
36059         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
36060         stack offset and begin/end scope address of a local variable.
36061         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
36062         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
36063         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
36064
36065         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
36066         Added new relocation types for start/end scope of a local variable.
36067
36068 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
36069
36070         * object.h: add mono_object_domain() macro.
36071         * reflection.c: handle typespecs.
36072         * icall.c: MonoMethod::get_Name() implementation.
36073
36074 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36075
36076         * icall.c: String::GetHashCode() icall implementation.
36077
36078 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
36079
36080         * icall.c: String::IndexOfAny icall.
36081         * object.c, object.h: make array->max_length more useful.
36082         Intrduced mono_object_class() and mono_string_length() macros.
36083
36084 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36085
36086         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
36087         instead of g_unichar_isdigit.
36088
36089 2002-04-11  Nick Drochak  <ndrochak@gol.com>
36090
36091         * icall.c: Implement a simple Double.ToString().
36092
36093 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
36094
36095         * appdomain.h: only io-layer.h is supposed to be included.
36096         * icall.c: explicitly import environ. Fix warning.
36097
36098 2002-04-10  Nick Drochak  <ndrochak@gol.com>
36099
36100         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
36101                 return true even if it's not Daylight Savings time.
36102                 Only return false for the case where the function isn't
36103                 implemented for a plaform (read Windows).
36104
36105 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
36106
36107         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
36108         data with a mutex.
36109
36110 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
36111
36112         * mempool.c (mono_mempool_alloc): only use g_malloc when
36113         absolutely necessary.
36114
36115 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
36116
36117         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
36118
36119         * class.c (mono_class_vtable): use domain mempool to allocate vtable
36120         (mono_class_proxy_vtable): use domain mempool
36121
36122 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
36123
36124         * appdomain.h, appdomain.c: split initialization that requires the
36125         execution engine support into mono_runtime_init().
36126
36127 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
36128
36129         * class.c (mono_class_init): don't include vtable inside MonoClass
36130         to save some memory, gather some statistics.
36131         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
36132
36133 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
36134
36135         * icall.c: internalcall implementation for ValueType.Equals().
36136
36137 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
36138
36139         * object.c (mono_message_init): moved 
36140         (mono_runtime_exec_main): new arch. independent impl.
36141         (mono_runtime_invoke_array): new method - like
36142         mono_runtime_invoke, but you can pass an array of objects.
36143         (mono_remoting_invoke): new arch. independent impl.
36144         (mono_message_invoke): new arch. independent impl.
36145         (mono_runtime_class_init): new arch. independent impl.
36146         (mono_runtime_object_init): new arch. independent impl.
36147
36148 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36149
36150         * metadata.c, object.c, reflection.c: documented the exported
36151         functions.
36152
36153 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
36154
36155         * icall.c: simpler code to pass the assembly builder data to corlib.
36156         Implement GetNestedTypes() internalcall.
36157
36158 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
36159
36160         * class.c: warn if a type can't be loaded.
36161
36162 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
36163
36164         * image.h: typedef MonoImageOpenStatus
36165         * types.h: removed unused file
36166         
36167 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
36168
36169         * icall.c: Enum_ToObject accepts enum value arguments.
36170
36171 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
36172
36173         * class.c: move initialization of properties, events and nested
36174         classes, so that they happen for interfaces, too.
36175
36176 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
36177
36178         * icall.c: cleanup some ugly casts in Array_SetValue*.
36179
36180 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
36181
36182         * icall.c: the values array fro enums is of the correct type, now.
36183         Implement (correctly) getFullName instead of assQualifiedName for
36184         MonoType.
36185         * reflection.h, reflection.c: added mono_type_get_name ().
36186
36187 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
36188
36189         * assembly.c, image.h: for each MonoImage, record from wich assembly
36190         it was loaded.
36191         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
36192         Make Type.Assembly work.
36193
36194 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
36195
36196         * debug-symfile.h: use char* instead of gpointer to avoid
36197         unnecessary casts.
36198
36199         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
36200
36201         * icall.c (ves_icall_InternalExecute): impl. FielSetter
36202         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
36203
36204 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
36205
36206         * icall.c (mono_message_init): impl. (code cleanup)
36207         (ves_icall_InternalExecute): impl. FieldGetter
36208
36209         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
36210         defined we call all (non-static)methods through the vtable. 
36211
36212 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
36213
36214         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
36215         finalizer even though the memory is still referenced (and the chunk of
36216         memory is not freed).
36217
36218 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
36219
36220         * assembly.c: fix brokeness.
36221
36222 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
36223
36224         * class.c: kill some warnings. Check explicit interface method
36225         implementation also without considering the namespace.
36226         Load also literal strings in static class data.
36227
36228 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
36229
36230         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
36231         (default_assembly_name_resolver): Make the resolver take the
36232         "base" directory where the assembly was originally defined, so we
36233         can load DLLs that are in the same directory as the assembly that
36234         is being referenced.
36235
36236 2002-03-28  Dick Porter  <dick@ximian.com>
36237
36238         * file-io.h: 
36239         * file-io.c:
36240         * socket-io.c: 
36241         * unicode.h: 
36242         * unicode.c: Warning cleanups
36243
36244 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
36245
36246         * object.h, reflection.h: use the correct type instead of MonoObject.
36247
36248 2002-03-28  Martin Baulig  <martin@gnome.org>
36249
36250         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
36251         (mono_debug_update_symbol_file): Initialize classes if necessary.
36252
36253 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
36254
36255         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
36256         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
36257
36258 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
36259
36260         * assembly.h: fix function prototype.
36261         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
36262         * mono-endian.h: use const cast.
36263
36264 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
36265
36266         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
36267
36268 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
36269
36270         * loader.c: don't assert when a typeref can't be loaded, give
36271         a chance to the runtime to trow an exception instead.
36272         * loader.h: fix warning.
36273
36274 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
36275
36276         * class.c (mono_class_proxy_vtable): added proxy support
36277
36278 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
36279
36280         * icall.c: removed last of PAL calls, added System.Environment
36281         * file-io.h, file-io.c: MonoIO implementation
36282         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
36283
36284 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
36285
36286         * appdomain.c: do not use the byte marker in ldstr table lookup.
36287         * debug-helpers.c: allow two ':' to separate class and method name.
36288         * object.c: allocate arrays bounds with the GC, too.
36289         * verify: add a few more checks.
36290
36291 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
36292
36293         * reflection.c: output also literal strings. Allocate parameter data
36294         with GC_malloc() (thanks, Martin, for catching this!).
36295
36296 2002-03-26  Martin Baulig  <martin@gnome.org>
36297
36298         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
36299         include the `this' offset in the `param_offsets'.
36300
36301 2002-03-25  Martin Baulig  <martin@gnome.org>
36302
36303         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
36304         mono_debug_get_class() function to get the classes. Added new
36305         relocation types for arrays and strings.
36306         (mono_debug_get_class): New static function to search in all
36307         referenced assemblies for a metadata token.
36308
36309         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
36310
36311 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
36312
36313         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
36314         hold gc-allocated objects. Make the string heap a stream like the
36315         others. Removed duplicated code when writing stream info.
36316         Added asserts to catch possible buffer overflows. Set the sorted map
36317         for tables that need sorting. Added some documentation.
36318
36319 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
36320
36321         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
36322         for interned strings and vtables.
36323
36324 2002-03-24  Martin Baulig  <martin@gnome.org>
36325
36326         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
36327         it in the array since it was created with g_slist_prepend().
36328
36329 2002-03-24  Martin Baulig  <martin@gnome.org>
36330
36331         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
36332         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
36333         (mono_debug_method_from_token): Renamed to
36334         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
36335         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
36336
36337         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
36338         relocation types.
36339
36340         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
36341
36342 2002-03-24  Martin Baulig  <martin@gnome.org>
36343
36344         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
36345         (mono_debug_method_from_token): New func.
36346
36347         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
36348         New interncall, calls mono_debug_local_type_from_signature().
36349         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
36350         calls mono_debug_method_from_token().
36351
36352 2002-03-23  Martin Baulig  <martin@gnome.org>
36353
36354         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
36355         specifies the number of bytes to be converted, not the array size.
36356         Return the number of chars, not the number of bytes.
36357         (ves_icall_iconv_get_chars): The `byteCount' argument
36358         specifies the number of bytes to be converted, not the array size.
36359
36360 2002-03-23  Martin Baulig  <martin@gnome.org>
36361
36362         * reflection.h (MonoReflectionSigHelper): New type.
36363
36364         * reflection.c (mono_reflection_sighelper_get_signature_local),
36365         (mono_reflection_sighelper_get_signature_local): New functions.
36366
36367         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
36368         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
36369         interncalls.
36370
36371 2002-03-23  Martin Baulig  <martin@gnome.org>
36372
36373         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
36374         is_writeable is set.
36375         (mono_raw_buffer_update): New function to write the modified map
36376         back to disk.
36377
36378         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
36379
36380         * debug-symfile.c (mono_debug_update_symbol_file): Call
36381         mono_raw_buffer_update() when done writing.
36382
36383 2002-03-23  Martin Baulig  <martin@gnome.org>
36384
36385         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
36386
36387         * debug-symfile.c: Added support for arguments and local variables.
36388
36389 2002-03-23  Dick Porter  <dick@ximian.com>
36390
36391         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
36392         protected by ifdefs, hence breaking the w32 build.
36393
36394 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36395
36396         * object.c: implement is_interned() the right way.
36397
36398 2002-03-21  Martin Baulig  <martin@gnome.org>
36399
36400         * debug-symfile.[ch]: New files to handle debugging information
36401         files. There's also support to dynamically update these symbol
36402         files to include machine dependent information.
36403
36404 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
36405
36406         * threads.c (mono_thread_create): new function to create thread
36407         from C
36408
36409 2002-03-20  Martin Baulig  <martin@gnome.org>
36410
36411         * icall.c (ves_icall_InternalInvoke): Create a new object if the
36412         method is a constructor.
36413         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
36414         points to ves_icall_InternalInvoke().
36415
36416 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
36417
36418         * file-io.c: Flush shouldn't throw exceptions.
36419
36420 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
36421
36422         * file-io.c: FileStream flush support; FileSetLength now
36423         restores file pointer.
36424
36425 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
36426
36427         * class.c: set image for pointer classes.
36428
36429 2002/03/19  Nick Drochak <ndrochak@gol.com>
36430
36431         * sysmath.c: Forgot one.
36432
36433 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
36434
36435         * sysmath.c: Avoid redefining existing names.
36436
36437 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
36438
36439         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
36440         handled by runtime as icall rather than dllimport from libm.so
36441         * file-io.c, file-io.h: fixed handle argument type.
36442
36443 2002-03-18  Dick Porter  <dick@ximian.com>
36444
36445         * reflection.c (mono_image_get_type_info): rename interface to
36446         iface, because of "#define interface struct" on windows.
36447
36448 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
36449
36450         * class.c, class.h: rename and export mono_ptr_class_get().
36451         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
36452         * reflection.c, reflection.h, icall.c: better/saner type name
36453         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
36454         method signatures.
36455
36456 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
36457
36458         * class.c (mono_class_init): removed hardcoded GHC_SLOT
36459
36460         * icall.c (ves_icall_InternalInvoke): impl.
36461
36462 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
36463
36464         * reflection.c: output the interface map table, too.
36465
36466 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
36467
36468         * class.c (class_compute_field_layout): separate computation of 
36469         static field layout
36470
36471 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
36472
36473         * icall.c: added System.Buffer support.
36474         * file-io.c: moved file icalls from PAL to FileStream.
36475
36476 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
36477
36478         * icall.c (ves_icall_System_Object_GetHashCode): impl.
36479
36480 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
36481
36482         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
36483
36484 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
36485
36486         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
36487
36488 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
36489
36490         * debug-helpers.{c,h}: moved here from monograph some useful functions
36491         to locate a method by name/signature in a class or image. Included
36492         also a small and flexible IL disassembler.
36493
36494 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36495
36496         * reflection.c: fixup tokens in methods with small header size, too.
36497
36498 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
36499
36500         * object.c (mono_string_to_utf8): remove assert(!error), instead
36501         print a warning. 
36502
36503 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
36504
36505         * icall.c: update to the new mono_Array_class_get interface.
36506
36507 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
36508
36509         * appdomain.c, object.c: Boehm-GC enable.
36510         * icall.c: make get_data_chunk() support split data requests.
36511         Ensure a class is initialized in more cases. Return only the first
36512         property found in GetProperties() or the compiler gets confused. 
36513         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
36514         * reflection.h, reflection.c: add fixup mechanism for field and method
36515         tokens. Initialize assembly->typeref in a single place. Output
36516         properties after events. Support custom attributes for events, too.
36517         Typo fix for paramter custom attrs.
36518
36519 2002-03-07  Martin Baulig  <martin@gnome.org>
36520
36521         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
36522
36523 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
36524
36525         * class.c (mono_array_class_get): fix. for multi. dim. arrays
36526
36527 2002-03-06  Martin Baulig  <martin@gnome.org>
36528
36529         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
36530         non-zero lower bounds. See testcases #F10-#F13.
36531
36532 2002-03-05  Martin Baulig  <martin@gnome.org>
36533
36534         * exception.c (mono_get_exception_argument_out_of_range): New exception.
36535
36536         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
36537         ves_icall_System_Array_GetValue(), only calculate the absolute array position
36538         here.
36539         (ves_icall_System_Array_SetValue): Likewise.
36540         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
36541         as argument and does the actual work. This function is used when copying a
36542         multi-dimensional array.
36543         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
36544         now do all the widening conversions of value types.
36545         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
36546
36547 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36548
36549         * class.c: remove some magic numbers and use the smbolic names,
36550         instead. Added init_events() to load event info at class init time.
36551         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
36552         and mono_metadata_methods_from_event().
36553         * reflection.h, reflection.c: added support for writing out the evnets
36554         related information.
36555
36556 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
36557
36558         * reflection.h, icall.c: use a different method (GetInterfaces)
36559         to gather interface info and add isbyref, isprimitive and
36560         ispointer to the ves_icall_get_type_info() return value.
36561
36562 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
36563
36564         * class.h: stared adding support for events.
36565         * icall.c: split find_members implementation. Added debug icall to get
36566         the address of an object.
36567         * reflection.c: handle TypeBuilders in mono_type_get_object().
36568
36569 2002-03-01  Martin Baulig  <martin@gnome.org>
36570
36571         * icall.c (ves_icall_System_Array_GetLength): This must throw an
36572         ArgumentOutOfRangeException(), not an ArgumentException().
36573         (ves_icall_System_Array_GetLowerBound): Likewise.
36574         (ves_icall_System_Array_GetValue): Improved argument checking.
36575         (ves_icall_System_Array_SetValue): Improved argument checking.
36576
36577 2002-03-01  Martin Baulig  <martin@gnome.org>
36578
36579         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
36580         called with invalid arguments rather than just dying with g_assert().
36581         (ves_icall_System_Array_SetValue): Likewise.
36582         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
36583         raise a NotImplementedException instead.
36584         (ves_icall_System_Array_GetLength): Added argument checking.
36585         (ves_icall_System_Array_GetLowerBound): Added argument checking.
36586
36587 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
36588
36589         * object.h (mono_assert): new macros mono_assert and
36590         mono_assert_not_reached
36591
36592 2002-02-28  Martin Baulig  <martin@gnome.org>
36593
36594         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
36595         and "System::String::IsInterned" to "System::String::_IsInterned".
36596
36597 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
36598
36599         * icall.c: remove hacks for typebuilder. Added icall to create a
36600         modified type from a tybebuilder.
36601         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
36602         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
36603         to create a backing MonoClass for a TypeBuilder.
36604
36605 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36606
36607         * class.c, class.h: more refactoring of class init.
36608         Export mono_class_setup_mono_type() and mono_class_setup_parent().
36609
36610 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
36611
36612         * marshal.c, marshal.h: start of marshaling interface.
36613
36614 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
36615
36616         * icall.c: fix order in assembly qualified name icall.
36617
36618 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
36619
36620         * class.c: do not free str, since we store it in the hash table.
36621         * reflection.h: add label field to MonoILExceptionInfo.
36622         * reflection.c: handle references to more than one assembly. Handle
36623         case when there isn't a module created in the assembly.
36624
36625 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
36626
36627         * class.c: Fix typo. Start refactoring of class init code.
36628
36629 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
36630
36631         * appdomain.c: exit with 1 on error.
36632         * class.c: we already have the name in MonoClassField.
36633         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
36634         MonoStreamHeader instead of an offset of image->raw_metadata.
36635
36636 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
36637
36638         * appdomain.c (mono_init): Be even more descriptive about the error.
36639
36640 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
36641
36642         * appdomain.c: give the user an informative message when corlib can't
36643         be loaded.
36644
36645 2002-02-26  Martin Baulig  <martin@gnome.org>
36646
36647         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
36648         New icall to get the time zone data.
36649
36650 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36651
36652         * reflection.c: set virtual and raw size of section correctly.
36653         * threads.c: transfer domain information to newly created threads.
36654
36655 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
36656
36657         * class.c: when instancing a class in a domain, load the default
36658         vaules for static fields from the constant table. Fix System.Enum to
36659         not be an enum.
36660         * icall.c: implement Object::GetType() internalcall. Implemented
36661         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
36662         Fixed checking of binding flags in find_members().
36663         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
36664         * reflection.c: handle enumerations when writing to the constant
36665         table. Use a different object cache for types.
36666
36667
36668 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
36669
36670         * object.c (mono_object_isinst): fix for arrays
36671
36672         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
36673
36674 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
36675
36676         * object.c: don't use mprotect ()  and fix intern pool hash table
36677         lookup for big endian systems.
36678
36679 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36680
36681         * icall.c: change type_is_subtype_of () signature.
36682
36683 2002-02-21  Mark Crichton  <crichton@gimp.org>
36684
36685         * rand.c, rand.h: Added random number generator for
36686         System.Security.Cryptography classes.
36687
36688         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
36689
36690         * icall.c: Added System.Security.Cryptography calls.
36691
36692 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
36693
36694         * class.c, icall.c, metadata.c: better support for pointer types.
36695         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
36696         * reflection.c: Add support for getting custom attrs for properties
36697         and simplify some code.
36698
36699 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36700
36701         * icall.c: change getToken () and add custom attribute GetBlob()helper
36702         method.
36703         * reflection.h: add custom attrs array to the reflection builder structures.
36704         * reflection.c: encode and emit custom attributes for all the relevant
36705         reflection objects. Cache fieldref and methodref tokens. Change
36706         mono_image_create_token() interface to take a MonoDynamicAssembly.
36707         More complete custom attributes decoder. Load custom attributes for
36708         Assembly, Field, Method and Constructor objects, too. Make the
36709         returned array an Attribute[] one, not object[]. Added
36710         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
36711         custom attribute constructor.
36712
36713 2002-02-20  Dick Porter  <dick@ximian.com>
36714
36715         * icall.c:
36716         * rawbuffer.c:
36717         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
36718         problem code out for now).
36719
36720 2002-02-19  Radek Doulik  <rodo@ximian.com>
36721
36722         * object.c (mono_ldstr): use hash table to avoid multiple swapping
36723
36724 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
36725
36726         * icall.c: register the GetCustomAttributes method.
36727         * object.c, object.h: add mono_string_new_len ().
36728         * reflection.h, reflection.c: added mono_runtime_invoke(),
36729         mono_install_runtime_invoke(). Added
36730         mono_reflection_get_custom_attrs () to load custom attributes and
36731         create the attribute objects.
36732
36733 2002-02-19  Dick Porter  <dick@ximian.com>
36734         * threads-dummy-types.c:
36735         * threads-dummy-types.h:
36736         * threads-dummy.c:
36737         * threads-dummy.h:
36738         * threads-pthread-types.c:
36739         * threads-pthread-types.h:
36740         * threads-pthread.c:
36741         * threads-pthread.h:  Deleted obsolete files
36742
36743 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
36744
36745         * class.c (mono_class_vtable): runtime init the class when we
36746         allocate static class data.
36747
36748         * icall.c (ves_icall_System_Array_SetValue): check for null values.
36749
36750         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
36751         and String - but we will need generic marshalling support in the
36752         future. 
36753         (mono_init): set the domain name in a ms compatible way
36754
36755         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
36756         String[].
36757
36758 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
36759
36760         * object.c (mono_array_clone): use alloca() instead of g_malloc  
36761         for sizes
36762
36763         * appdomain.c (mono_domain_unload): impl.
36764
36765 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
36766
36767         * appdomain.c, object.c: fix intern pool implementation.
36768         * class.c: fix alignment code.
36769
36770 2002-02-16  Radek Doulik  <rodo@ximian.com>
36771
36772         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
36773         and s2 > s1, just copy lower bytes to be compatible with little
36774         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
36775         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
36776
36777         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
36778         force big_endian to be 1 for big endian machines 
36779         (ves_icall_iconv_new_decoder): ditto
36780
36781 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
36782
36783         * socket-io.c (convert_sockopt_level_and_name): If the system
36784         doesn't define SOL_IP or SOL_TCP, get them by hand using
36785         getprotobyname() and caching the values (because this could be a
36786         slow operation).
36787         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
36788         Use the appropriate struct when the system does support it. Ie,
36789         not all systems have struct ip_mreqn so use struct ip_mreq when
36790         appropriate.
36791
36792 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
36793
36794         * reflection.c: handle finally clauses.
36795
36796 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
36797
36798         * socket-io.c: use g_snprintf() instead of snprintf.
36799
36800 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
36801
36802         * reflection.c (mono_param_get_objects): Cast second argument to
36803         mono_method_get_param_names to a const char** to silence the
36804         compiler warning.
36805
36806         * appdomain.c (mono_domain_assembly_open): Put parens around the
36807         truth statement in the for-loop.
36808
36809         * unicode.c (iconv_convert): Got rid of a compiler warning about
36810         int i being unused when the system has a new iconv.
36811         (iconv_get_length): Same.
36812
36813         * image.c (load_class_names): Cast the second argument to
36814         g_hash_table_insert() to char* to hush compiler warnings about the
36815         arg being a const.
36816         (mono_image_open): Same here.
36817
36818         * socket-io.c: Don't conditionally include sys/filio.h or
36819         sys/sockio.h here anymore since we now get them from
36820         io-layer/io-layer.h
36821         (inet_pton): If the system doesn't support inet_aton, implement
36822         using inet_addr and also #define INADDR_NONE if it isn't defined
36823         by the system.
36824
36825 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
36826
36827         * metadata.c, metadata.h: added function to get packing and size info
36828         of a typedef.
36829         * reflection.h, reflection.c: handle field RVA data. Save info about
36830         the table layout if needed. Assign typedef indexes to all the types
36831         before dumping the info about them to avoid forward reference problems.
36832
36833 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
36834
36835         * socket-io.c (convert_sockopt_level_and_name): ifdef
36836         SO_ACCEPTCONN because it is not defined on my system (old debian)
36837
36838 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
36839
36840         * opcode.c: use stddef.h to get NULL.
36841
36842 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
36843
36844         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
36845         for FIONBIO, FIONREAD and SIOCATMARK.
36846         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
36847         define INADDR_NONE and besides, inet_addr() is deprecated and
36848         should not be used. Use inet_pton() instead - it also has the
36849         added bonus that it can easily handle IPv6 addresses as well.
36850         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
36851
36852 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
36853
36854         * decimal.c: remove _MSC_VER conditional.
36855
36856 2002-02-13  Dick Porter  <dick@ximian.com>
36857
36858         * socket-io.c: 
36859         * icall.c: Internal calls for Blocking, Select, Shutdown,
36860         GetSocketOption and SetSocketOption
36861
36862 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36863
36864         * assembly.cs: better resolver: use it instead of some kludgy
36865         code.
36866
36867 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
36868
36869         * reflection.c: the best way to speed-up the compiler is to avoid
36870         infinite loops.
36871
36872 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
36873
36874         * class.c (mono_class_vtable): changed the object layout
36875         (obj->vtable->class). 
36876         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
36877
36878 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36879
36880         * assembly.c: look for assemblies in the assembly dir, too.
36881
36882 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
36883
36884         * class.c: fix thinko in mono_class_from_type().
36885
36886 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36887
36888         * exception.h, exception.c: added TypeLoadException.
36889         * object.h, object.c: added mono_array_clone ().
36890         * icall.c: handle throwOnError in AssemblyGetType().
36891         Added Array.Clone().
36892         * opcode.h, opcode.c: use a single value for the opcode val.
36893         Compile fix for non-gcc compilers.
36894
36895 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
36896
36897         * opcodes.c, opcodes.h: export interesting info about opcodes.
36898
36899 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
36900
36901         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
36902         icalls. 
36903
36904         * class.c (class_compute_field_layout): set element_class for enums
36905         (mono_class_create_from_typedef): set element_class for normal classes
36906
36907         * icall.c (ves_icall_System_Enum_get_value): impl.
36908
36909         * class.c (mono_class_create_from_typedef): do not set valuetype
36910         flag for System.ValueType and System.Enum
36911
36912 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
36913
36914         * unicode.c (iconv_convert): fix big endian problem.
36915
36916 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
36917
36918         * class.c: add asserts if we are ever going to scribble over memory.
36919         * socket-io.c: not all systems have AF_IRDA defined.
36920
36921 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
36922
36923         * class.c (class_compute_field_layout): do not consider static
36924         fields to compute alignment
36925
36926 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
36927
36928         * appdomain.c (mono_appdomain_get): impl.
36929         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
36930
36931 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
36932
36933         * icall.c: ignore "file://" prefix when loading an assembly.
36934
36935 2002-01-23  Dick Porter  <dick@ximian.com>
36936
36937         * socket-io.c:
36938         * icall.c:
36939         * Makefile.am: Added socket support
36940
36941 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
36942
36943         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
36944         code back.  This should return the assemblies that are loaded by
36945         the runtime on behalf of an application domain. 
36946
36947         The current implementation is still broken, it just returns every
36948         assembly loaded, but until we get real applications domain this
36949         will do.
36950
36951 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
36952
36953         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
36954         AppDomain object.
36955
36956 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
36957
36958         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
36959         the mono_class_from_name lookup.
36960         (ves_icall_get_parameter_info): ditto.
36961         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
36962         method.
36963         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
36964
36965 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
36966
36967         * class.c: load also nested classes on class init.
36968         System.ValueType instance methods gets passed boxed
36969         values, unless methods in derived classed that get a pointer to the
36970         data.
36971         * icall.c: use better name parsing code in GetType().
36972         * image.c, image.h: add mono_image_loaded ().
36973         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
36974         * reflection.c, reflection.h: added mono_reflection_parse_type().
36975
36976 2002-01-22  Veronica De Santis <veron78@interfree.it>
36977
36978         * icall.c : Added mapping of internal calls for Manual and Auto reset events
36979         * threads.c : Added the implementation of internal calls for events
36980         * threads.h : Added prototypes of internal calls for events
36981         
36982 2002-01-21  Radek Doulik  <rodo@ximian.com>
36983
36984         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
36985
36986 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
36987
36988         * class.c (mono_class_init): set min_align to 1 (instead of 0)
36989         (mono_class_value_size): use min_align
36990
36991 2002-01-20  Dick Porter  <dick@ximian.com>
36992
36993         * threads.h:
36994         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
36995         so it compiles on w32.
36996
36997 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
36998
36999         * metadata.c (mono_type_stack_size): impl.
37000
37001         * class.c (mono_class_get_field): impl. memberref token
37002
37003 2002-01-16 Veronica De Santis <veron78@@interfree.it>
37004
37005         * icall.h : Added the internal calls mapping for CreateMutex_internal
37006                     and ReleaseMutex_internal.
37007         * threads.h : Added the prototype of mutexes internal calls.
37008         * threads.c : Added the implementations of mutexes internal calls.
37009
37010 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
37011
37012         * metaparse.h: removed unused file.
37013         * reflection.c, reflection.h: added stream_data_align () function 
37014         to align data in streams and keep stream aligned. Add support for
37015         exception support in method headers.
37016
37017 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
37018
37019         * unicode.c: make iconv_convert () return the number of bytess written
37020         in the output buffer.
37021
37022 2002-01-15  Dick Porter  <dick@ximian.com>
37023         * threads.c: Make the runtime's idea of infinite timeouts coincide
37024         with the class library's
37025
37026         Fix a particularly egregious bug in mono_thread_cleanup(). That
37027         code was so utterly bogus it must have been written on a Monday.
37028
37029 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
37030
37031         * reflection.h: add subtypes field to TypeBuilder.
37032         * reflection.c: encode constants for literal fields.
37033         Handle subtypes. Fix user string token (and add a zero byte)
37034         at the end.
37035         
37036 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
37037
37038         * class.c (mono_class_init): bug fix: assign slot numbers for
37039         abstract methods.
37040
37041 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
37042
37043         * reflection.c: don't try to output a code RVA for abstract methods.
37044         Small fixes for method header format. Output parameter info to the
37045         ParamDef table. Save method overriding info to MethodImpl table.
37046         Fix property support. Allow typedef.extends to be a type in the
37047         building assembly.
37048         * verify.c: fix off-by-one error.
37049
37050 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
37051
37052         * class.c: fix mono_class_from_mono_type () for szarray types.
37053         Remove unused cache check in mono_class_from_type_spec().
37054         * icall.c: *type_from_name () functions handle simple arrays and byref.
37055         * reflection.c: handle byref and szarray types. Handle methods without
37056         body (gets P/Invoke compilation working). Handle types and fields in
37057         get_token ().
37058         * reflection.h: add rank to MonoTypeInfo.
37059
37060 2002-01-10  Dick Porter  <dick@ximian.com>
37061
37062         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
37063         internal calls
37064
37065 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
37066
37067         * icall.c: initialize class in type_from_handle ().
37068         Loop also in parent classes for get_method ().
37069         * reflection.c: properly encode class and valuetype types.
37070         Start on encoding TypeBuilder types. Handle fieldrefs.
37071         Use correct length when registering a user string.
37072         Handle ConstructorBuilder and MonoMethod in get_token ().
37073         Make mono_type_get_object () aware of cached types.
37074         * object.c: back out change to mono_string_new ().
37075
37076 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
37077         * object.c: mono_string_new should return a NULL when the string 
37078         passed in is NULL -- not try to deference it.
37079         
37080 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
37081
37082         * icall.c: hack to make IsSubType work for TypeBuilders.
37083         * reflection.c: emit constructors before methods.
37084         Retrieve param names in mono_param_get_objects().
37085
37086 2002/01/05  Nick Drochak  <ndrochak@gol.com>
37087
37088         * Makefile.am: fix list of headers and sources so automake 1.5
37089         doesn't complain. Removed \# at end of list.
37090
37091 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
37092
37093         * reflection.c: get token for a method ref. Set return type of
37094         constructor to void.
37095         * loader.c: debug message.
37096         * class.c: typo fix.
37097
37098 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
37099
37100         * icall.c: fix array init with rank > 1. FindMembers
37101         loops in parent class as well.
37102         * image.c: do not insert nested types in name cache.
37103         * reflection.c: warning fix.
37104         * reflection.h: add override method (for interface impl).
37105
37106 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
37107
37108         * metadata.c: fix customattr decoding.
37109
37110 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
37111
37112         * rawbuffer.cs: Added native Win32 implementation, avoids using
37113         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
37114
37115 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
37116
37117         * class.c: make the low-level routines handle the cache.
37118
37119 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
37120
37121         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
37122
37123 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
37124
37125         * class.c: fix mono_array_element_size() for objects.
37126         * class.h, class.c: add properties to MonoClass and load them
37127         at init time.
37128         * icall.c: check with isinst() when assigning a value to an array
37129         instead of requiring the classes to match exactly.
37130         Implemented icall for System.Type::GetType().
37131         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
37132         enums. Handle bindingflags when looking for methods and fields.
37133         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
37134         and mono_metadata_methods_from_property().
37135         * reflection.h, reflection.c: added structures for propreties,
37136         parameters and enums. Implemented mono_property_get_object() and
37137         mono_param_get_objects().
37138
37139 2001-12-18  Dick Porter  <dick@ximian.com>
37140
37141         * file-io.c: Use mono_string_to_utf16() instead of
37142         mono_string_chars()
37143
37144         * object.c: Added mono_string_to_utf16(), which copies the non
37145         NULL-terminated MonoString into a new double-null-terminated
37146         buffer.
37147
37148 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
37149
37150         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
37151
37152 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
37153
37154         * file-io.c: raise exceptions if handle is invalid.
37155
37156 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
37157
37158         * assembly.c: yet another check for mscorlib.
37159         * class.c, class.h: load nesting info for classes.
37160         * icall.c: many new functions to support the Reflection classes.
37161         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
37162         * reflection.h, reflection.c: mono_image_create_token(),
37163         mono_assembly_get_object(), mono_type_get_object(),
37164         mono_method_get_object(), mono_field_get_object(): methods to return
37165         objects that parallel the C representation of assemblies, types,
37166         methods, fields.
37167
37168 2001-12-11  Dick Porter  <dick@ximian.com>
37169
37170         * icall.c:
37171         * file-io.c: Internal calls for file IO.
37172
37173 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
37174
37175         * tabledefs.h: missing FileAttributes.
37176         * verify.h, verify.c: use is_valid_string () to simplify and check for
37177         valid strings more correctly. Fix warnings and speeling.
37178         Check more tables: Filed, File, ModuleRef, StandAloneSig.
37179         Check code: branches, maxstack, method calls.
37180
37181 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
37182
37183         * object.c (mono_object_allocate): removed static, so that the jit
37184         can allocate value types.
37185
37186         * icall.c (ves_icall_System_DateTime_GetNow): impl.
37187
37188 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37189
37190         * class.c: init enum types right away and register the
37191         token->MonoClass map in mono_class_create_from_typedef ().
37192         * verify.h, verify.c: first cut of the verifier.
37193         * pedump.c: add --verify switch to verify metadata tables.
37194         * tabledefs.h: add some missing enums.
37195
37196 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
37197
37198         * class.c (mono_install_runtime_class_init): impl.
37199         (mono_class_init): renamed mono_class_metadata_init to
37200         mono_class_init, also removed the metadata_inited flag
37201
37202         * object.c (mono_object_isinst): use faster algorithm
37203
37204 2001-11-30  Radek Doulik  <rodo@ximian.com>
37205
37206         * mono-endian.h: reverted last change
37207         added function prototypes
37208
37209         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
37210         add mono-endian.c back
37211
37212         * mono-endian.c: returned back, as Paolo pointed out, it's needed
37213         for unaligned access, I've mistaked it with endianess. I am
37214         sorry.
37215         (mono_read16): fix reverted endianess
37216         (mono_read64): ditto
37217         (mono_read32): ditto
37218
37219 2001-11-30  Dick Porter  <dick@ximian.com>
37220
37221         * exception.c: Implement mono_exception_from_name()
37222
37223 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
37224
37225         * metadata.h, metadata.c: remove params_size and locals_size and their
37226         calculation from the metadata code: they are only usefult to the
37227         interp.
37228
37229 2001-11-29  Radek Doulik  <rodo@ximian.com>
37230
37231         * object.c (mono_ldstr): swap bytes here, it's probably not the
37232         best place, but works for me now, I'll redo it once I know mono
37233         better, also note that I add PROT_WRITE and don't reset back, also
37234         note that it's only affects big endians, so x86 should be OK
37235
37236         * mono-endian.h (read16): use just glib macros for both endians
37237
37238         * mono-endian.c: removed as glib macros are used in in
37239         mono-endian.h so we don't need to care about endianess for read
37240         macros as glib does that for us already
37241
37242 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
37243
37244         * class.h, class.h: take minimum alignment into consideration so
37245         that the fields of a class remain aligned also when in an array.
37246
37247 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37248
37249         * loader.h, loader.c: add mono_method_get_param_names().
37250         * class.c: 0-init class fields.
37251
37252 2001-11-26  Dick Porter  <dick@ximian.com>
37253
37254         * icall.c:
37255         * threads-types.h:
37256         * threads.c: New file that handles System.Threading on all platforms
37257
37258         * object.c: 
37259         * object.h: Remove the synchronisation struct from MonoObject,
37260         replace it with a pointer that gets initialised on demand
37261
37262         * Makefile.am: Replace all the system-specific threading code with
37263         a single file that uses the new wrapper library
37264
37265 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
37266
37267         * class.c, class.h: add mono_install_trampoline() so that the runtime
37268         can register a function to create a trampoline: removes the ugly
37269         requirement that a runtime needed to export arch_create_jit_trampoline.
37270         * object.h, object.c: added mono_install_handler() so that the runtime
37271         can install an handler for exceptions generated in C code (with
37272         mono_raise_exception()). Added C struct for System.Delegate.
37273         * pedump.c: removed arch_create_jit_trampoline.
37274         * reflection.c: some cleanups to allow registering user strings and
37275         later getting a token for methodrefs and fieldrefs before the assembly
37276         is built.
37277         * row-indexes.h: updates and fixes from the new ECMA specs.
37278
37279 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
37280
37281         * class.h, class.c: add enum_basetype field to MonoClass.
37282         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
37283         to get index in the constant table reated to a field, param or
37284         property.
37285         * reflection.h, reflection.c: handle constructors. Set public-key and
37286         version number of the built assembly to 0.
37287         * row-indexes.h: update from new ECMA spec.
37288
37289 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
37290
37291         * class.h, class.c: add a max_interface_id to MonoClass.
37292         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
37293         since it's used to do that. Added mono_type_type_from_obj().
37294         Make GetType() return NULL instead of segfaulting if the type was not
37295         found. Handle simple arrays in assQualifiedName.
37296         * object.h: add a struct to represent an Exception.
37297         * reflection.c: output call convention in method signature.
37298         Add code to support P/Invoke methods and fixed offsets for fields.
37299
37300 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
37301
37302         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
37303         the value.
37304         * icall.c: use mono_array_addr instead of array->vector: fixes the
37305         reflection image writing.
37306         * reflection.c: init call convention byte to 0 in method signature.
37307         Encode the property signature. Don't output property-related methods
37308         twice. Really process the properties for a type (don't cast a field to
37309         a property, my mom always told me that).
37310         Fix 64 bit issues in pointer alignment in a different and more
37311         readable way.
37312
37313 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
37314
37315         * loader.h: Removed type class from MonoDefaults, added monotype
37316
37317         * loader.c: Loaded MonoType, removed loading of Type
37318
37319         * icall.c (my_mono_new_object): Now returns a System.MonoType,
37320         and fills in System.Type._impl with a RuntimeTypeHandle rather
37321         than the actual MonoClass *
37322
37323         (ves_icall_type_from_handle): change from type_class to
37324         monotype_class
37325
37326         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
37327         implemented
37328
37329         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
37330         implemented
37331
37332         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
37333
37334         (ves_icall_System_Reflection_Assembly_GetType): implemented
37335
37336         (ves_icall_System_MonoType_assQualifiedName): implemented
37337
37338         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
37339
37340 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
37341
37342         * assembly.c (mono_assembly_open): Implement a cache for the
37343         assemblies. 
37344
37345         (mono_assembly_close): only destroy the assembly when the last
37346         reference is gone.
37347         
37348 2001-11-09  Dick Porter  <dick@ximian.com>
37349
37350         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
37351
37352 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
37353
37354         * class.c (mono_class_metadata_init): bug fix: compute the right slot
37355
37356 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
37357
37358         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
37359         from Martin Weindel.
37360         * object.h: add mono_string_chars ().
37361
37362 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
37363
37364         * reflection.c (build_compressed_metadata): Eliminates warnings
37365         and uses 64-bit clean code.
37366
37367         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
37368         (mono_type_equal): Change signature to eliminate warnings.
37369
37370 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37371
37372         * icall.c, loader.c: remove the internalcall array constructors.
37373         Changes to match the new MonoArray structure.
37374         * object.h, object.c: an array object doesn't allocate an extra
37375         vector. Add mono_array_new_full () to create jagged arrays easily.
37376
37377 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
37378
37379         * metadata.h, metadata.c: add mono_metadata_field_info () to
37380         retreive all the info about a field from vairous tables.
37381         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
37382         * class.h, class.c: augment MonoClassField with more info.
37383         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
37384         policy and load a field's RVA if needed.
37385
37386 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
37387
37388         * class.c (mono_class_metadata_init): create a trampoline for all
37389         virtual functions instead of actually compiling them.
37390
37391 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
37392
37393         * class.h, class.c: include name in MonoClassField.
37394         * class.c: fix fundamental type of System.Object and System.String.
37395         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
37396         tokens in ldtoken.
37397         * icall.c: remove internalcalls for the Reflection stuff that is now
37398         done in C# code.
37399         * loader.c: mono_field_from_memberref () implementation.
37400         * mono-endian.c: thinko (s/struct/union/g).
37401         * object.c, object.h: make the mono_string_* prototypes actually use
37402         MonoString instead of MonoObject.
37403         * reflection.c, reflection.h: updates for changes in the reflection
37404         code in corlib: we use C structures that map to the actual C# classes.
37405         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
37406         fat method header if needed and use the info from the ILGenerator for
37407         methods. Handle fields in types. Misc fixes.
37408
37409 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
37410
37411         * class.c (mono_class_metadata_init): bug fix: always allocate
37412         space for static class data
37413
37414 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
37415
37416         * class.c (mono_compute_relative_numbering): use relative
37417         numbering to support fast runtime type checks.
37418
37419 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
37420
37421         * class.c (mono_class_create_from_typeref): added debugging output
37422         to print class name when MonoDummy is returned instead of real class
37423
37424 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
37425
37426         * class.c (mono_class_metadata_init): interface offset table now
37427         contains pointers into the vtable - this is more efficient for the jit
37428
37429 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
37430
37431         * class.c (mono_class_metadata_init): use a temporary vtable (the
37432         old algorithm only worked for the interpreter, but not for the jit)
37433
37434 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
37435
37436         * loader.c (method_from_memberref): use mono_class_get to get the
37437         class of an array instead of using System.Array directly.
37438         (mono_get_method): also add MEMBERREF methods to the method cache
37439         which usefull for arrays.
37440
37441 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
37442
37443         * pedump.c (arch_compile_method): added to compute vtable entry
37444
37445         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
37446         number of interfaces.
37447         
37448         * class.h: merged MonoArrayClass into MonoClass
37449
37450         * class.c (mono_class_create_from_typedef): compute the vtable size and
37451         allocate space to include the vtable inside MonoClass
37452         (mono_class_metadata_init): initialize the vtable
37453
37454 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
37455
37456         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
37457         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
37458         * image.c: endian fixes by Laurent Rioux.
37459         * object.h, object.c: rename MonoStringObject to MonoString and
37460         MonoArrayObject to MonoArray. Change some function names to conform to
37461         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
37462         guint16* as first argument, so don't use char*.
37463         Provide macros to do the interesting things on arrays in a portable way.
37464         * threads-pthread.c: updates for the API changes and #include <sched.h>
37465         (required for sched_yield()).
37466         * icall.c: updates for the API changes above.
37467         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
37468         platforms that need them.
37469
37470 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
37471
37472         * class.c: set the correct type for all the fundamental
37473         type when loading the class.
37474
37475 2001-10-05  Dick Porter  <dick@ximian.com>
37476
37477         * threads-pthread.c (pthread_mutex_timedlock): Simple
37478         compatibility version for C libraries that lack this call.
37479
37480 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37481
37482         * class.c: MonoTypes stored in MonoClass are stored as
37483         fundamental MonoTypes when the class represents a
37484         fundamental type (System.Int32, ...).
37485         The TypeHandle return by ldtoken is a MonoType*.
37486         * icall.c: ves_icall_get_data_chunk () write out all the
37487         PE/COFF stuff. Implement ves_icall_define_method (),
37488         ves_icall_set_method_body (), ves_icall_type_from_handle ().
37489         * image.c: properly skip unknown streams.
37490         * loader.h, loader.c: add type_class to mono_defaults.
37491         * metadata.c, metadata.h: export compute_size () as
37492         mono_metadata_compute_size () with a better interface.
37493         Typo and C&P fixes.
37494         * pedump.c: don't try to print the entry point RVA if there is no entry point.
37495         * reflection.c, reflection.h: many cleanups, fixes, output method
37496         signatures and headers, typedef and typeref info, compress the metadata
37497         tables, output all the heap streams, cli header etc.
37498         * row-indexes.h: typo fixes.
37499
37500 2001-10-04  Dick Porter  <dick@ximian.com>
37501
37502         * object.h: Add a synchronisation mutex struct to MonoObject
37503
37504         * object.c (mono_new_object): Initialise the object
37505         synchronisation mutexes
37506
37507         * icall.c: System.Threading.Monitor internal calls
37508         
37509         * threads-pthread.h:
37510         * threads-pthread.c: System.Threading.Monitor internal calls
37511
37512         * threads-types.h: New file, includes the system-specific thread
37513         structures
37514         
37515         * threads-pthread-types.h:
37516         * threads-pthread-types.c: New files, handle pthread-specific
37517         synchronisation types
37518
37519         * threads-dummy-types.h: 
37520         * threads-dummy-types.c: New files of dummy support for
37521         thread-specific types
37522
37523         * metadata.c:
37524         * image.c:
37525         * pedump.c: include mono-endian.h not endian.h
37526         
37527         * Makefile.am: More threads files.
37528         Name mono-endian.h not endian.h
37529
37530 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
37531
37532         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
37533         stuff and implement a few more bits.
37534         * icall.c: a field needs to be dereferenced twice. Do not use the same
37535         name for two variables in the same scope.
37536         * image.c, image.h: cleanups.
37537
37538 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
37539
37540         * class.c (mono_class_metadata_init): bug fix: compute the right size
37541
37542 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
37543
37544         * icall.c: implemented some of the Reflection internalcalls.
37545         * image.c, image.h: start writing out the PE/COFF image.
37546         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
37547         that does the reverse than decode_blob_size ().
37548         * object.c: use mono_metadata_encode_value (). Move here
37549         temporary implementation of mono_string_to_utf8 ().
37550         * rawbuffer.c: make malloc_map static.
37551
37552 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37553
37554         * metadata.c: fix type comparison for arrays.
37555         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
37556         Added a couple of new classes to monodefaults.
37557         * icall.c: added a couple of Reflection-related internalcalls.
37558         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
37559         Added a byval_arg MonoType to MonoClass.
37560
37561 2001-09-28  Dick Porter  <dick@ximian.com>
37562
37563         * icall.c:
37564         * threads-pthread.h: 
37565         * threads-pthread.c: Implemented internal calls for
37566         LocalDataStoreSlot operations.  Applied mutexes around all shared
37567         data.  Reworked the thread creation and Start() operations to
37568         avoid a race condition.
37569         
37570         * threads-dummy.h:
37571         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
37572
37573 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
37574
37575         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
37576
37577 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
37578
37579         * class.c, loader.c: warn and return NULL instead of erroring out.
37580         * icall.c: added System.AppDomain::getCurDomain().
37581         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
37582
37583 2001-09-25  Dick Porter  <dick@ximian.com>
37584
37585         * threads-pthread.h:
37586         * threads-pthread.c: Implemented timed thread joining and added
37587         System.Threading.Thread::Join_internal internal call
37588
37589         * icall.c: Added System.Threading.Thread::Join_internal internal call
37590
37591         * threads-dummy.h:
37592         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
37593
37594 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
37595
37596         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
37597         mono_string_intern () to implement the semantics of the ldstr opcode
37598         and the interning of System.Strings.
37599         * icall.c: provide hooks to make String::IsIntern and String::Intern
37600         internalcalls.
37601
37602 2001-09-23  Dick Porter  <dick@ximian.com>
37603
37604         * threads-dummy.c: 
37605         * threads-dummy.h: New files of dummy threading routines
37606
37607         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
37608         support code based on system specifics
37609
37610         Rename PTHREAD_LIBS to THREAD_LIBS
37611         
37612 2001-09-23  Dick Porter  <dick@ximian.com>
37613
37614         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
37615         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
37616         internal calls.
37617         (mono_thread_init): Set up a Thread object instance to return when
37618         the main thread calls Thread.CurrentThread
37619         (mono_thread_cleanup): Wait for all subthreads to exit
37620
37621         * icall.c: New internal calls for System.Threading.Thread::Sleep
37622         (including Schedule) and CurrentThread
37623
37624         * threads.h: New file, to insulate thread-specific stuff from the
37625         rest of the code
37626
37627 2001-09-21  Dick Porter  <dick@ximian.com>
37628
37629         * threads-pthread.h: 
37630         * threads-pthread.c: New file, for handling pthreads-style
37631         threading support.  Start() now starts a new thread and executes
37632         the ThreadStart delegate instance.
37633
37634         * icall.c: Added the internalcall for
37635         System.Threading.Thread::Start_internal
37636
37637         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
37638
37639 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
37640
37641         * loader.c: work around the different signatures for delegates
37642         constructors csc generates in compiled code vs the ones compiled in mscorlib.
37643
37644 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
37645
37646         * class.h, class.c: add mono_class_get_field_from_name ().
37647         * *: Fix C comments and other ANSI C issues.
37648
37649 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
37650
37651         * endian.h, assembly.c: fix some endianness issues.
37652
37653 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
37654
37655         * loader.h, load.c: add delegate_class to mono_defaults.
37656         Handle runtime provided methods in mono_get_method ().
37657
37658 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
37659
37660         * loader.c (mono_get_method): use pinvoke for internal call
37661
37662         * icall.c: use pinvoke for internal call
37663
37664         * loader.c (method_from_memberref): set the method name
37665
37666 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
37667
37668         * metadata.c: help the compiler generate better code for
37669         mono_class_from_mono_type ().
37670
37671 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
37672
37673         * class.c (mono_class_metadata_init): delayed computing of the
37674         class size to mono_class_metadata_init ()
37675
37676 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
37677
37678         * class.c, class.h: add an interfaces member to MonoClass.
37679         * image.c, image.h: add assembly_name field to MonoImage
37680         from the assembly table.
37681         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
37682
37683 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
37684
37685         * class.c: Handle Array in mono_class_from_mono_type ().
37686         * metadata.c, pedump.c: some endian fixes.
37687
37688 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
37689
37690         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
37691         * metadata.c: fix small problem introduced with the latest commit.
37692
37693 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
37694
37695         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
37696         We don't need a MonoMetadata pointer anymore to compare signatures in
37697         mono_metadata_signature_equal (), update callers.
37698         Reduced memory usage an number of allocations for MonoMethodHeader and
37699         MonoMethodSignature.
37700
37701 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
37702
37703         * metadata.c: added compare for szarray.
37704
37705 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
37706
37707         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
37708         and add a couple more types to it and mono_defaults. Give an hint on
37709         classes that need implementing in our corlib and are referenced
37710         in mscorlib.
37711
37712 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
37713
37714         * class.h, class.c: keep track if a class is also an Enum.
37715         * loader.c: Implement a couple more types for use in libffi
37716         marshalling. Gives better diagnostics when failing to dlopen
37717         a library. Set method->klass for P/Invoke methods, too.
37718
37719 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
37720
37721         * class.c, class.h: add a MonoType this_arg to MonoClass that
37722         represents a pointer to an object of the class' type that
37723         can be used by the interpreter and later the type cache.
37724         Add best guess alignment info for valuetype objects.
37725
37726 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
37727
37728         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
37729         into MonoType: one less level of indirection and allocation and
37730         simplifies quite a bit of code. Added cache for MonoTypes that are
37731         used frequently, so that we don't need to allocate them all the time.
37732
37733 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
37734
37735         * class.c (mono_class_create_from_typedef): System.Enum is also a
37736         value type, although it does not derive from System.ValueType
37737         (maybe a bug in the ms compiler?)
37738
37739         * metadata.c (mono_type_size): return the right size for value types
37740
37741         * loader.c (mono_get_method): only initialize method header if not abstract
37742
37743         * class.c (mono_class_from_mono_type): use mono_default values. 
37744
37745 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
37746
37747         * *: use MonoClass pointers instead of <type_tokens>
37748         
37749         * class.h: new flag: metadata_inited.
37750
37751         * class.c (mono_class_metadata_init): impl.
37752         (mono_class_instance_size): impl.
37753         (mono_class_data_size): impl.
37754
37755 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37756
37757         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
37758         MonoClass now has the name and name_space fields. 
37759         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
37760         mono_get_method () takes and optional MonoClass as argument.
37761         Removed mono_typedef_from_name() and added mono_class_token_from_name()
37762         instead that takes advantage of a map from class names to typedef
37763         tokens in MonoImage.
37764
37765 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
37766
37767         * metadata.c: zero is not a valid alignment boundary.
37768         Merge MONO_TYPE_VOID in default decoding code.
37769
37770 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
37771
37772         * image.h: merged MonoMetadata into MonoImage
37773
37774         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
37775         identify the type of elements.
37776
37777 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
37778
37779         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
37780         * cil-coff.h: split MonoMSDOSHeader and add size info.
37781         * image.c: add some consistency checks.
37782         * metadata.c: fix row size computation: one programmer
37783         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
37784         add explanation for the locator routine.
37785         Fix decoding of size in method header.
37786         
37787 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
37788
37789         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
37790         (g_concat_dir_and_file): Bring g_concat_dir_and_file
37791         function from gnome-libs.  This uses the right path separator
37792         based on the OS, and also works around a bug in some systems where
37793         a double slash is not allowed. 
37794         (default_assembly_name_resolver): Use g_concat_dir_and_file
37795         (mono_assembly_open): ditto.
37796
37797 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
37798
37799         * metadata.c (mono_metadata_signature_equal): impl.
37800
37801         * *: void is now a realy MonoType (instead of using NULL)
37802         
37803         * metadata.c (do_mono_metadata_parse_type): use
37804         mono_metadata_parse_type to parse void value.
37805
37806 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
37807
37808         * metadata.c, metadata.h: in the signature and method header store
37809         only the space required for holding the loca vars and incoming arguments.
37810
37811 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
37812
37813         * metadata.c (do_mono_metadata_parse_type): treat void like any
37814         other type (instead of assigning NULL);
37815
37816 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
37817
37818         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
37819
37820 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
37821
37822         * image.c (do_mono_image_open): added a cache for arrays.
37823
37824 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
37825
37826         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
37827         decode a single column from a row in a metadata table and changes
37828         to take advantage of it in the typedef locator (gives a nice speed up).
37829         Store offset info for function params.
37830
37831 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
37832
37833         * image.h (MONO_IMAGE_IS_CORLIB): removed 
37834
37835 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
37836
37837         * assembly.c: how could mono_assembly_close () had ever worked?
37838         * metadata.c, metadata.h: provide offset info for local vars.
37839         Implement mono_type_size () to take care of alignment as well
37840         as size (it was mono_field_type_size in cli/class.c before).
37841
37842 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
37843
37844         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
37845
37846         * assembly.h (CORLIB_NAME): set to corlib.dll
37847
37848         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
37849
37850 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
37851
37852         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
37853         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
37854         tokentype.h: massive namespace cleanup.
37855
37856 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
37857
37858         * metadata.h, metadata.c: decode exception clauses when parsing method header.
37859
37860 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
37861
37862         * metadata.c (mono_metadata_free_type): added check for type !=
37863         NULL (void) before calling mono_metadata_free_type()
37864
37865 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
37866
37867         * metadata.h, row_indexes.h: added header with enumerations to use
37868         to index in the columns from tables in metadata and to decode coded
37869         tokens: we should start using this instead of embedding magic numbers
37870         all over the code.
37871
37872 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
37873
37874         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
37875         Move metadata_t info from cli_image_info_t to MonoImage, where
37876         it's easily accessible. Changed all the uses accordingly.
37877         Added the method and class caches to MonoImage.
37878         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
37879         and mono_metadata_decode_value () signature to be more consistent
37880         with the other parse functions (and simplify code). Taken advantage
37881         of zero-length array allocation with GCC. Removed reduntant (and
37882         wrong) MonoFieldType struct and use MonoParam instead. Changed
37883         mono_metadata_parse_field_type () to use common code for parsing.
37884         Added mono_metadata_typedef_from_field () and
37885         mono_metadata_typedef_from_method () to lookup a typedef index from a
37886         field or method token.
37887         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
37888
37889 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
37890
37891         * metadata.c (mono_metadata_parse_field_type): Implement. 
37892         (do_mono_metadata_parse_type): Split engine from
37893         mono_metadata_parse_type, so that we can create smaller structures
37894         for things that just have one pointer to the MonoType (look at
37895         the MonoFieldType)
37896
37897 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
37898
37899         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
37900         as Jan Gray found out, it is incorrect. 
37901
37902 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
37903
37904         * assembly.c: Implement asssembly loading.  This loads an image
37905         and loads all the referenced assemblies.  Come to think of it, we
37906         could always do lazy loading of the assemblies. 
37907
37908         * image.c (mono_image_open): Keep loaded images in a hashtable.
37909
37910         * image.h (MonoImage): Add reference count.
37911
37912 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
37913
37914         * assembly.c (mono_assembly_open): Keep track of the file name in
37915         case the assembly has no ASSEMBLY table.
37916
37917         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
37918         from get.c here.
37919
37920 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
37921
37922         * metadata.c, metadata.h: decode local vars in method header
37923         parse function. Change callers accordingly.
37924
37925 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
37926
37927         * metadata.h, cil-coff.h: protect against multiple inclusion.
37928         Added some new structures to hold information decoded from metadata:
37929         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
37930         and relevant decoding/free functions.
37931         * metadata.c: implement decoding functions. Add warning for out of bounds
37932         index in mono_metadata_locate(). Implement mono_get_method () to retreive
37933         all the info about a method signature and invocation. Remove check on
37934         uninitialized local var in parse_mh() and fix memory leak.
37935
37936 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
37937
37938         * metadata.h: More macros.
37939
37940         * tokentype.h: New file.
37941
37942 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
37943
37944         * assembly.c: added a consistency check and initialize
37945         some structures with g_new0().
37946         * metadata.c: fixed a couple more bugs in table size computation
37947         and add other checks for out-of bound access to metadata.
37948
37949 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
37950
37951         * metatada.c: fix bugs computing table sizes. Spew a
37952         warning when index in string heap is out of bounds.
37953
37954 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
37955
37956         * metadata.h: Add a couple of macros to manipulate tokens. 
37957
37958 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
37959
37960         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
37961         cli_section_tables).
37962
37963 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
37964
37965         * metadata.c (mono_metadata_user_string): New function, provides
37966         access to the UserString heap. 
37967
37968 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
37969
37970         * metadata.c: Add inline documentation.
37971
37972 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
37973
37974         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
37975         files. 
37976
37977 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
37978
37979         * typeattr.h: New file, TypeAttribute flags. 
37980
37981 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
37982
37983         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
37984         mono_assembly_ensure_section): Section loading code.
37985         (load_section_tables): Load the sections.
37986
37987         * mono/metadata/metadata.c (mono_metadata_locate_token,
37988         mono_metadata_locate): Functions to locate the information
37989         definition given a token or a table and an index.
37990         (mono_metadata_compute_table_bases): New.
37991         (compute_size): New function to compute the sizes of the various
37992         tables.
37993
37994         * mono/metadata/metadata.h: Finish listing the different index
37995         types. 
37996
37997         * mono/metadata/pedump.c: Improve to dump new information.
37998
37999 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
38000
38001         * mono/metadata/metadata.c: Entered all the tables matching
38002         Beta2. 
38003
38004         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2