2010-07-13 Mark Probst <mark.probst@gmail.com>
[mono.git] / mono / metadata / ChangeLog
1 2010-07-13  Mark Probst  <mark.probst@gmail.com>
2
3         * sgen-marksweep.c, sgen-gc.h: Keep track of num_empty_blocks
4         properly and in a thread-safe way.
5
6 2010-07-13  Mark Probst  <mark.probst@gmail.com>
7
8         * sgen-gc.c, sgen-marksweep.c: Make object marking thread-safe.
9
10 2010-07-13  Mark Probst  <mark.probst@gmail.com>
11
12         * sgen-gc.c: Versions of safe_object_get_size() and
13         copy_object_no_checks() that work without the object's vtable
14         intact, by passing the correct vtable as an argument.
15
16 2010-07-13  Mark Probst  <mark.probst@gmail.com>
17
18         * sgen-marksweep.c: Make allocation of major sections thread-safe.
19
20 2010-07-13  Mark Probst  <mark.probst@gmail.com>
21
22         * sgen-gc.c, sgen-gc.h, sgen-los.c, sgen-major-copying.c,
23         sgen-marksweep.c: Update the heap boundaries thread-safe and lock
24         free if parallel mark is enabled.
25
26 2010-07-13  Mark Probst  <mark.probst@gmail.com>
27
28         * sgen-gc.c, sgen-gc.h, sgen-major-copying.c: Lock the internal
29         allocator if parallel mark (not committed yet) is enabled.
30
31 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
32
33         * reflection.c (inflate_mono_method): Handle dynamic
34         generic instances that have method.count set but
35         methods not. Fixes another crash from boo's test suite.
36
37 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
38
39         * icall.c (ves_icall_MonoMethod_get_base_method): If
40         the method slot is bigger than the class vtable, return
41         the original method. Makes booc work again.
42
43 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
44
45         * verify.c (mono_generic_param_is_constraint_compatible):
46         The candidate type itself might satisty the required
47         constraints.
48
49         Fixes #621599.
50
51 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
52
53         * reflection.c (fix_partial_generic_class): Inflate the
54         generic instance parent in case it was changed after
55         MonoGenericClass was instantiated.
56
57         Fixes one of the issues from #389886.
58
59 2010-07-10  Mark Probst  <mark.probst@gmail.com>
60
61         * sgen-gray.c: Store only a pointer to one end of the gray queue.
62
63 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
64
65         * loader.c (mono_method_signature_checked): Release the domain
66         lock on failure.
67
68 2010-07-10  Mark Probst  <mark.probst@gmail.com>
69
70         * sgen-gc.c: Store the forwarding address in the first word of an
71         object, where the forwarding bit is stored.
72
73 2010-07-10  Mark Probst  <mark.probst@gmail.com>
74
75         * gc.c, gc-internal.h, sgen-gc.c, sgen-gc.h, sgen-os-mach.c: An
76         interface to register our Mach exception thread which will not be
77         suspended by stop-the-world.
78
79 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
80
81         * loader.c (mono_get_method_constrained): Properly unlock the
82         domain lock on failure. Use checked variant of
83         inflate_generic_signature.
84
85 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
86
87         * loader.c (mono_method_signature_checked): Use checked
88         variant of inflate_generic_signature.
89
90         Fixes #606353.
91
92 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
93
94         * metadata.c (mono_metadata_parse_type_internal): Don't use
95         cannonical types when a transient type was requested.
96
97         Fixes #608626.
98
99 2010-07-10  Mark Probst  <mark.probst@gmail.com>
100
101         * sgen-gray.c, sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c:
102         All functions that touch the gray queue directly or indirectly now
103         take it as an argument.
104
105 2010-07-10  Mark Probst  <mark.probst@gmail.com>
106
107         * sgen-gray.c, sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c:
108         Put the gray queue data into a struct and pass it around.
109
110 2010-07-09 Rodrigo Kumpera  <rkumpera@novell.com>
111
112         * class.c (mono_method_can_access_method_full): Handle type
113         accessibility with very deep nested types.
114
115         * class.c (mono_method_can_access_field_full): Ditto.
116
117         Fixes #619300.
118
119 2010-07-10  Mark Probst  <mark.probst@gmail.com>
120
121         * sgen-gc.c, sgen-los.c, sgen-major-copying.c, sgen-marksweep.c,
122         sgen-scan-object.h: Use a macro for rounding up sizes and
123         addresses to ALLOC_ALIGN.
124
125 2010-07-09 Gonzalo Paniagua Javier <gonzalo@novell.com>
126
127         * file-io.c: fix GetFileSystemEntries for patterns containing
128         directories.
129
130 2010-07-09  Mark Probst  <mark.probst@gmail.com>
131
132         * sgen-marksweep.c (major_finish_major_collection): Don't free
133         major heap blocks on 32 bit platforms because it can lead to
134         address space fragmentation.  We'll figure this out later.
135
136 2010-07-09  Mark Probst  <mark.probst@gmail.com>
137
138         * sgen-marksweep.c, sgen-gc.c, sgen-major-copying.c: Free major
139         heap blocks for mark&sweep eventually.
140
141 2010-07-09  Mark Probst  <mark.probst@gmail.com>
142
143         * sgen-protocol.c: Fix build when binary protocol is disabled.
144
145 2010-07-09  Mark Probst  <mark.probst@gmail.com>
146
147         * sgen-protocol.c, sgen-gc.c: Make binary protocol lock-freely
148         thread-safe.
149
150 2010-07-08 Neale Ferguson <neale@sinenomine.net>
151
152         * sgen-archdep.h: Add support for s390x
153         * domain.c: Use gsize so that 64-bit big endian systems produce 
154         bitmap.
155
156 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
157
158         * pedump.c (verify_image_file): Initialize the vtable as well.
159
160 2010-07-07  Geoff Norton  <gnorton@novell.com>
161
162         * sgen-gc.h:  Not every system has sys/signal.h.  Prefer the posix
163         header.
164
165 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
166
167         * assembly.c (mono_assembly_load_reference): Replace a g_warning
168         with a mono_trace calls. This makes compiling MD a lot less scary.
169
170 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
171
172         * verify.c (do_stobj): Improve error message.
173
174 2010-07-08  Mark Probst  <mark.probst@gmail.com>
175
176         * sgen-gc.c (OBJ_COMPLEX_ARR_FOREACH_PTR): Don't load the vtable
177         from the object because it might have pinned/forwarding bits set.
178
179 2010-07-06  Zoltan Varga  <vargaz@gmail.com>
180
181         * Makefile.am (sgen_sources): Add missing sgen files.
182
183 2010-06-07  Martin Baulig  <martin@ximian.com>
184
185         * mono-debug-debugger.c (mono_debugger_get_thread_abort_signal):
186         New helper function since mono_thread_get_abort_signal() is now
187         internal.
188
189 2010-06-07  Martin Baulig  <martin@ximian.com>
190
191         * mono-debug.h, debug-mono-symfile.h: Kill glib dependencies.
192
193 2010-07-02  Michael Hutchinson  <mhutchinson@novell.com>
194
195         * object-internals.h, object.h: Make mono_string_to_utf_8_checked 
196         public, as mono_string_to_utf_8 is deprecated.
197
198         * object.(c|h): Added mono_object_to_string, a public helper function 
199         that calls ToString on a MonoObject and returns a MonoString.
200
201         * object.c (mono_print_unhandled_exception): Use mono_object_to_string.
202
203 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
204
205         * filewatcher.h filewatcher.h decimal.c threads-types.h: Applied patch
206         from Elijah Taylor (elijahtaylor@google.com). Fix some definitions to
207         match their declarations and vice-versa.
208
209
210 Wed Jun 30 12:08:36 CEST 2010 Paolo Molaro <lupus@ximian.com>
211
212         * class-internals.h, domain-internals.h: mark functions that are
213         needed by the llvm module.
214
215 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
216
217         * assembly.c (framework_assemblies): Add 3.5 assemblies.
218
219         * domain-internals.h (MonoRuntimeInfo): Increase version_sets
220         by one to have room to remap 3.5 assemblies.
221
222         * domain.c (supported_runtimes): Add 3.5 remapping information.
223
224 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
225
226         * reflection.c (mono_image_create_token): Handle a
227         FieldBuilder from a different assembly.
228
229         Fixes #611836.
230
231 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
232
233         * verify.c (do_store_static_field): Improve error
234         message.
235
236 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
237
238         * assembly.c: Revert r159692 since it breaks loading 3.5
239         assemblies under 2.0.
240
241 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
242
243         * icall.c (ves_icall_Type_make_array_type): Raise a TLE if a
244         TypedByRef is passed.
245
246         * icall.c (ves_icall_Type_make_byref_type): Ditto.
247
248         * icall.c (ves_icall_Type_MakePointerType): Ditto.
249
250         Fixes #612780.
251
252 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
253
254         * assembly.c: Add a few more assemblies to the list of framework
255         assemblies.
256
257         Fixes #617714.
258
259 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
260
261         * class.c (mono_class_get_vtable_entry): Avoid a crash if mono_class_setup_vtable ()
262         fails.
263
264 2010-06-25  Mark Probst  <mark.probst@gmail.com>
265
266         * class.c (mono_class_inflate_generic_method_full_checked): Added
267         a comment regarding a hack in mini-trampolines.c.
268
269 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
270
271         * sgen-gc.c (mono_gc_wbarrier_value_copy_bitmap): Use SIZEOF_VOID_P instead of
272         sizeof(SIZEOF_VOID_P) which is 4.
273
274         * gc.c (mono_gc_init): Move the GC disabled check to *-gc.c.
275
276 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
277
278         * null-gc.c boehm-gc.c: Define the mono_gc_ pthread wrapper functions for these
279         GCs too.
280
281         * *-gc.c (mono_gc_wbarrier_value_copy_bitmap): Implement this for all GCs.
282
283         * sgen-gc.c (mono_gc_is_moving): New function returning whenever this GC can move
284         objects.
285
286         * *-gc.c (mono_gc_set_desktop_mode): New function setting up the GC to work in
287         desktop mode.
288
289 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
290
291         * *-gc.c (mono_gc_get_description): New function returning a human readable
292         description of the current GC.
293
294 2010-06-24  Miguel de Icaza  <miguel@novell.com>
295
296         * mono-hash.c: Moved here from mono/utils as this file is
297         GC-aware, and the utils directory is not.
298
299 2010-06-23  Miguel de Icaza  <miguel@novell.com>
300
301         * Makefile.am: Add support for building a sgen-aware versions of
302         the libraries: libmonoruntimesgen.la libmonoruntimesgen-static.la,
303         they share all the components of the default, but use a differen
304         set of CFLAGS to enable SGEN instead.
305
306         Put the BOEHM defines in the CFLAGS definition. 
307
308         * domain-internals.h (MonoJitInfo): this structure used to have
309         different sizes depending on the GC that was configured (Boehm vs
310         SGen).   I have removed this difference for the sake of avoiding
311         the complexity of dealing with the mono/arch directory requiring
312         GC-specific changes to their Makefiles.
313
314 2010-06-23  Mark Probst  <mark.probst@gmail.com>
315
316         * sgen-gc.c, sgen-los.c, sgen-marksweep.c: Fix warnings.
317
318 2010-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
319
320         * metadata.c (mono_metadata_type_hash): Don't hash
321         the type kind for dynamic types since it can change.
322
323 2010-06-22 Geoff Norton  <gnorton@novell.com>
324
325         * sgen-os-mach.c: We cannot call malloc from the gc, so we need to use
326         alloca instead to prevent a deadlock.
327
328 2010-06-22  Geoff Norton  <gnorton@novell.com>
329
330         * domain.c: Allow gettings the tls key, since we need it for
331         cross thread tls poking in sgen-mach
332         * sgen-gc.(c|h), gc-internal.h: Rework sgen into having some functions
333         in external files for platform specific STW support.
334         * sgen-os-mach.c: Add a new mach kernel backend implementation of STW.
335         * sgen-os-posix.c: Move the existing posix signal based STW here.
336
337 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
338
339         * marshal.c (mono_array_to_lparray): Allow MONO_TYPE_PTR. Fixes #615952.
340
341 2010-06-21 Rodrigo Kumpera  <rkumpera@novell.com>
342
343         * object-internals.h: Map new PropertyBuilder fields.
344
345         * reflection.c (property_encode_signature): Emit an instance
346         signature if property's callconv is hasthis.
347
348         * appdomain.c: Bump corlib version.
349
350 2010-06-20  Jb Evain  <jbevain@novell.com>
351
352         * metadata-verify.c: do not consider the assembly invalid if it
353         doesn't have a #Blob stream as resource assemblies don't
354         necessarily have one.
355
356 2010-06-17  Geoff Norton  <gnorton@novell.com>
357
358         * sgen-archdep.h: sgen support for arm linux and darwin.
359
360 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
361
362         * loader.c (mono_method_get_header): Avoid a crash if the declaring method
363         has a faulty header.
364
365 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
366
367         * sgen-gc.c (mono_gc_wbarrier_value_copy_bitmap): Work in a similar
368         way to mono_gc_wbarrier_value_copy but takes a bitmap that
369         indicates which slots need a write barrier.
370
371 2010-06-14  Jonathan Pryor <jpryor@novell.com>
372
373         * Makefile.am (EXTRA_DIST): Add runtime.h.
374
375 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
376
377         * object.c (build_imt_slots): Don't crash if callbacks.get_imt_trampoline is not set.
378
379 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
380
381         * object.c (mono_method_add_generic_virtual_invocation): Fix the computation of the
382         IMT slot which is passed to callbacks.get_imt_trampoline.
383
384 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
385
386         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
387         imt trampoline per imt slot when using LLVM.
388
389 2010-06-10  Jonathan Pryor <jpryor@novell.com>
390
391         * object.c (mono_runtime_run_main): Move fire_process_exit_event() into
392           runtime.c:mono_runtime_shutdown().
393         * runtime.c: Added; adds mono_runtime_shutdown(), which invokes the
394           AppDomain.ProcessExit event in all AppDomains.
395
396 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
397
398         * marshal.c (mono_marshal_get_runtime_invoke): Don't set *exc to NULL, it is now
399         done by the caller.
400
401 2010-06-05  Mark Probst  <mark.probst@gmail.com>
402
403         * sgen-los.c: Keep bitmaps on chunk usage in LOS sections to speed
404         up freeing.
405
406 2010-06-05  Mark Probst  <mark.probst@gmail.com>
407
408         * sgen-gc.c, sgen-los.c: New LOS allocator that allocates large
409         segments of memory at once, to reduce the number of mmap/munmap
410         calls.
411
412 2010-06-05  Mark Probst  <mark.probst@gmail.com>
413
414         * sgen-gc.c, sgen-protocol.c, sgen-protocol.h: Protocol degraded
415         allocations and distinguish between normal, degraded and pinned
416         allocations.
417
418 2010-06-05  Mark Probst  <mark.probst@gmail.com>
419
420         * sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c: Make degraded
421         allocations count toward major collections and trigger major
422         collections from degraded allocations if appropriate.
423
424 2010-06-05  Mark Probst  <mark.probst@gmail.com>
425
426         * sgen-marksweep.c (ms_get_empty_block): Update heap boundaries.
427
428 2010-06-05  Mark Probst  <mark.probst@gmail.com>
429
430         * sgen-gc.c: Enable mark&sweep again.
431
432 2010-06-05  Mark Probst  <mark.probst@gmail.com>
433
434         * sgen-gc.c: Increase the maximum small object size to 8000 bytes.
435
436 2010-06-05  Mark Probst  <mark.probst@gmail.com>
437
438         * sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c: Have only one
439         major heap allowance for minor collections, instead of two
440         separate ones for small and large objects.  This reduces the
441         number of major collections.
442
443 2010-06-04  Marek Habersack  <mhabersack@novell.com>
444
445         * icall.c (ves_icall_MonoType_GetEvent): be case insensitive is
446         the BFLAGS_IgnoreCase is raised
447
448 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
449
450         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Rewrite this so it returns
451         all information in a single structure. Return information about scopes as well.
452
453         * mono-debug.c (mono_debug_lookup_locals): Ditto.
454
455 2010-06-02  Geoff Norton  <gnorton@novell.com>
456
457         * appdomain.c: If we are running with IOMAP we might
458         have been provided a string that isn't case-aware for our file-
459         system, so we need to use io-portability to check if the file 
460         exists, rather than a simple glib test.
461
462         Fixes #608849
463
464 2010-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
465
466         * verify.c (verify_generic_parameters): Verify if
467         there are not loops in constraints.
468
469 2010-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
470
471         * verify.c (is_compatible_boxed_valuetype): Constaints
472         must be recursively checked if one generic argument
473         has a constraint on another.
474
475         Fixes #610625.
476
477 2010-05-31  Miguel de Icaza  <miguel@novell.com>
478
479         * console-unix.c (terminal_get_dimensions): Fix my previous
480         botched commit and return the actual value obtained from the ioctl.
481
482 2010-05-29  Mark Probst  <mark.probst@gmail.com>
483
484         * sgen-gc.c: Always use DESC_TYPE_RUN_LENGTH for objects without
485         references so that we don't have to do the cache-cold fetch of the
486         class in copy_object_no_checks().
487
488 2010-05-29  Robert Jordan  <robertj@gmx.net>
489
490         * marshal.c (mono_marshal_asany): marshal LPWSTRs using
491         mono_marshal_string_to_utf16_copy () to avoid memory allocation
492         mismatches under Windows. Fixes pinvoke2:test_0_asany.
493
494 2010-05-28  Mark Probst  <mark.probst@gmail.com>
495
496         * sgen-gc.c: Change default nursery size to 4MB, because it
497         improves performance on many applications and benchmarks.
498
499 2010-05-28  Mark Probst  <mark.probst@gmail.com>
500
501         * sgen-gc.c, sgen-scan-object.h: Value types in arrays are not
502         always aligned to ALLOC_ALIGN.  To handle this, shift the size in
503         the GC descriptor by one bit, and don't encode the size for value
504         types not containing references.  Also get rid of
505         DESC_TYPE_STRING.
506
507 2010-05-28  Mark Probst  <mark.probst@gmail.com>
508
509         * sgen-gc.c: Don't depend on the size encoded in a GC descriptor
510         other than for remset processing.
511
512 2010-05-28  Mark Probst  <mark.probst@gmail.com>
513
514         * sgen-gc.c: More and better remset consistency checks.
515
516 2010-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
517
518         * sgen-gc.c: Add a note about the int[] trick to avoid some
519         memset.
520
521 2010-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
522
523         * sgen-gc.c (sort_addresses): Use heap sort since it has better
524         performance.
525
526         This helps programs with lots of threads or thread with big stacks
527         since the bottleneck the pin queue can get quite big.
528
529 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
530
531         * sgen-gc.c (search_fragment_for_size): Move fragment setup into
532         a separate function called setup_fragment.
533
534         * sgen-gc.c (search_fragment_for_size_range): Variant of
535         search_fragment_for_size that does search for a secondary smaller
536         size.
537
538         * sgen-gc.c (mono_gc_alloc_obj_nolock): Use search_fragment_for_size_range
539         for tlab allocation so small fragments are used.
540
541         This patch uses small fragments for tlab allocation when possible in order
542         to improve nursery utilization. With a fixed size tlab this patch is not very
543         usefull but once size gets dynamically adjusted, this will be invaluable.
544
545         Performance under pystone 500k is unchanged. Nursery utilization improves by
546         3.5% and 18 more fragments are used per minor GC.
547
548         Performance under modified binary-tree is unchanged. Nursery utilization
549         improves by 0.5% and 3 more fragments are used per minor GC.
550
551         These numbers make sense since as more pinning happens, more fragments are
552         created and so are the chances of having a bunch of small ones.
553
554 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
555         * sgen-gc.c (mono_gc_alloc_obj_nolock): Avoid wasting space     from
556         the current fragment when allocating a TLAB.
557
558         Reduces number of pystone 500k minor collections by 7%.
559
560 2010-05-25  Martin Baulig  <martin@ximian.com>
561
562         Applying a patch from Lucas Meijer <lucas@lucasmeijer.com>.
563
564         * debug-mono-symfile.c: Release memory from symfiles that were
565         loaded from memory.
566
567 2010-05-24  Zoltan Varga  <vargaz@gmail.com>
568
569         * marshal.c (mono_marshal_free_dynamic_wrappers): Avoid an assert when this is called
570         during shutdown.
571
572 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
573
574         * marshal.c (mono_marshal_get_runtime_invoke): Simplify the code computing the
575         target class and remove some dead code.
576
577 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
578
579         * metadata.c: Add a 'transient' argument to the MonoType creation functions, so
580         the MonoTypes inside method headers can be freed when the header is freed.
581
582 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
583
584         * threadpool.c: Fix the DISABLE_SOCKETS build.
585
586 2010-05-19 Martin Baulig  <martin@novell.com>
587
588         Fix #604911.
589
590         * threads.c (wait_for_tids_or_state_change): Use an
591         alertable WaitForMultipleObjectsEx().
592         (wait_for_tids): Likewise.
593
594 2010-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
595
596         * marshal.c (mono_marshal_init): Register mono_gchandle_get_target
597         icall.
598
599         * marshal.c (mono_delegate_to_ftnptr): Use a gchandle instead of
600         gc tracked memory.
601
602         * marshal.c (mono_marshal_emit_managed_wrapper): Retrieve the first
603         argument from a gchandle.
604
605         * marshal.c: Get rid of the delegate_target_locations hash table.
606
607         Fixes #605295.
608
609 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
610
611         * sgen-gc.c: Use _fast variants for string and array length.
612
613 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
614
615         * sgen-gc.c: Fix counters to be 64 bits.
616
617         * sgen-gc.c (dump_heap): Fix formating strings.
618
619 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
620
621         * sgen-gc.c (global_remset_location_was_not_added): New
622         function that implements a 2 element LRU cache for just
623         added remsets. It is used to avoid adding duplicate ones.
624
625         * sgen-gc.c (add_to_global_remset): Check cache before
626         adding new entry.
627
628         * sgen-gc.c (scan_from_remsets): Don't process global remsets
629         that fail the cache test.
630
631         * sgen-gc.c (scan_from_remsets): Simplify the global remset
632         loop removing one condtion that is not possible.
633
634         A 2 element LRU cache was chosen by profiling IronPython 2.6
635         pytones with 1M passes and corlib compilation.
636
637         For the ipy test duplication was originally 940.92, measured
638         by "Store remsets" divided by "Unique store remsets".
639
640         With a 2-element LRU, duplication went to 1.007. Without the
641         check in scan_from_remsets 1.438.
642
643         With a 16-elements LRU, duplication reduction was negligibe.
644         A single element cache was basically of no use.
645
646         With corlib compilation duplication went from  1.4 to 1.02.
647
648         Performance results is a 20% time decrease for ipy and 2%
649         with corlib.
650 2010-05-16  Zoltan Varga  <vargaz@gmail.com>
651
652         * mono-debug.c (mono_debug_cleanup): Fix a crash in the previous change.
653
654 2010-05-15  Geoff Norton  <gnorton@novell.com>
655
656         * mono-debug.c: Fix a leak of the global table on shutdown.
657
658 2010-05-15  Geoff Norton  <gnorton@novell.com>
659
660         * debug-mono-symfile.(c|h): Add mono_debug_symfile_free_location
661         to clean up MonoDebugSourceLocation's.
662
663 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
664
665         * class.c (mono_class_create_from_typedef): Fail a class
666         if there is a loop with its parent.
667
668         Fixes #598239.
669
670 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
671
672         * loader.c (mono_loader_set_error_type_load): Convert
673         a g_warninig to mono_trace_warning.
674
675 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
676
677         * class.c (mono_class_get_full): Release strings on failure
678         to avoid leaking them.
679
680 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
681
682         * class.c (mono_class_create_from_typedef): Only return
683         the class if no exceptions were detected.
684
685         * class.c (mono_class_create_from_typedef): Don't remove
686         broken classes from class_cache. Just set failure and
687         bail out.
688
689         This fixes a memory a memory leak where resolving the same
690         broken class multiple times resulted in a memory leak.
691
692         The right behavior would be to actually return the class
693         a let the caller figure it out.
694
695 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
696
697         * mono-ptr-array.h: Add mono_ptr_array_sort.
698
699         * reflection.c (mono_image_build_metadata): Replace that ugly
700         qsort call with mono_ptr_array_sort.
701
702 2010-05-13  Mark Probst  <mark.probst@gmail.com>
703
704         * sgen-gc.c: Switch to the copying major collector, because
705         Mark&Sweep is still buggy.
706
707 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
708
709         * reflection.c (mono_image_build_metadata): Don't put managed
710         references on non-tracked memory.
711
712 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
713
714         * sgen-archdep.h (ARCH_COPY_SIGCTX_REGS): Fix this for amd64.
715
716 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
717
718         * icall.c: Switch to mono-ptr-array.h.
719
720 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
721
722         * Makefile.am: Add mono-ptr-array.h.
723
724         * mono-ptr-array.h: New header that implements
725         a GC tracked equivalent of g_ptr_array. 
726
727 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
728
729         * icall.c (ves_icall_Type_GetInterfaces): Rewrite this
730         method to avoid initializing the class.
731
732         Fixes #605115.
733
734 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
735
736         * icall.c (ves_icall_System_MonoType_getFullName): It
737         doesn't require to init the class.
738
739 2010-05-11  Miguel de Icaza  <miguel@novell.com>
740
741         * console-unix.c: Signal handlers now save and restore errno.   We
742         have never had a bug report about this, ioctl does change errno. 
743
744         Hide the unused method.   
745
746         Remove internal declarations from public headers.
747
748         Document what the signal handler is doing
749
750 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
751
752         * sgen-gc.c (clear_unreachable_ephemerons): Clear
753         unreachable keys with a tombstone.
754
755         * sgen-gc.c (mark_ephemerons_in_range): Ignore
756         tombstone keys.
757
758 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
759
760         * icall-def.h:
761         * gc-internals.h:
762         * gc.c: New GC:get_ephemeron_tombstone.
763
764 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
765
766         * appdomain.c (create_exceptions): Rename to
767         create_domain_objects. Create the ephemeron tombstone object.
768
769         * domains-internals.h (MonoDomain): Add new field for the
770         ephemeron tombstone.
771
772         * domain.c (mono_domain_free): Set ephemeron_tombstone to
773         NULL.
774
775 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
776
777         * sgen-gc.c (mono_gc_clear_domain): Both ephemerons
778         and dislinks must be processed before LOS since they
779         could end up with pointers to memory returned to the
780         OS.
781
782 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
783
784         * class.c (mono_class_alloc): New helper function to centralize memory allocation
785         for classes, allocates either from the image mempool or from the heap.
786
787         * class.c: Use mono_class_alloc to allocate memory owned by classes.
788
789         * metadata.c (free_generic_class_dependents): Free more items belonging to
790         generic classes.
791
792 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
793
794         * reflection.c (mono_reflection_method_get_handle): Handle MonoGenericMethod
795         as well. Fixes #604054.
796
797 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
798
799         * metadata-verify.c: MS doesn't mind duplicates in the
800         typeref table. Move it to full verification.
801
802         Fixes #600508.
803
804 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
805
806         * image.c (do_mono_image_load): Report verification
807         errors when loading an image fails.
808
809 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
810
811         * reflection.c (mono_type_get_object): Remove chunk of code
812         no longer in use.
813
814 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
815
816         * icall-def.h
817         * icall.c: Delete some unused icalls.
818
819 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
820
821         * appdomain.c (mono_domain_has_type_resolve): Check for
822         NULL domain objects to make pedump happy.
823
824         * object.c (mono_field_get_value): Assert on NULL object.
825         It's the caller resposibility to check for this.
826
827         * object.c (mono_field_get_value_object): Ditto.
828
829         Fixes #601384.
830
831 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
832
833         * icall.c (ves_icall_type_is_subtype_of): Non iface subtype
834         checks can avoid doing a mono_class_init.
835
836         * icall.c: Remove mono_class_init from a bunch of icalls that
837         don't need it.
838
839         Hopefully we're now lazy enough to fix most victims of #601431.
840
841 2010-05-07  Mark Probst  <mark.probst@gmail.com>
842
843         * sgen-gc.c: Remove REMSET_ROOT_LOCATION.
844
845 2010-05-07  Mark Probst  <mark.probst@gmail.com>
846
847         * sgen-gc.c: Remove unnecessary checks in domain clearing code.
848
849 2010-05-07  Marek Habersack  <mhabersack@novell.com>
850
851         * culture-info-tables.h: updated to include en-TT culture. Fixes
852         bug #594035
853
854 2010-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
855
856         Move mono_class_init from mono_type_get_object to icalls.
857         This causes massive memory savings for Assembly::GetTypes () and
858         make it fail a lot less due to missing dependencies.
859
860         This is a conservative, naive change as it doesn't remove some
861         mono_class_init from places that might not need them. Carefull
862         review of those should follow.
863
864         * reflection.c (mono_type_get_object): Don't mono_class_init the
865         returning type.
866
867         * reflection.c:
868         * cominterop.c:
869         * icall.c:
870         * marshal.c: Call mono_class_init in functions receiving a MonoType
871         object.
872
873         First step into fixing #601431.
874
875 2010-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
876
877         * gc-internal.h: Add new functions required for ephemeron support.
878
879         * gc.c: Implement ves_icall_System_GC_register_ephemeron_array.
880
881         * icall-def.h: Add GC::register_ephemeron_array.
882
883         * object.c (compute_class_bitmap): sys.rt.cs.Ephemeronis an opaque type
884         under sgen. Its fields must not be marked.
885
886         * sgen-gc.c (mono_gc_clear_domain): Call cleanup function for ephemerons.
887
888         * sgen-gc.c (finish_gray_stack): Mark all reachable ephemerons before
889         handling finalizable objects. Clean dead ones after all finalizable
890         handling.
891
892         * sgen-gc.c (dump_heap): Add new kind of internal memory.
893
894         * sgen-gc.c (null_ephemerons_for_domain): Remove from the list ephemeron
895         arrays from the dead domain.
896
897         * sgen-gc.c (clear_unreachable_ephemerons): Clear dead ephemerons entries.
898
899         * sgen-gc.c (mark_ephemerons_in_range): Mark/Copy all ephemeron values
900         whose keys are reachable.
901
902         * sgen-gc.c (mono_gc_ephemeron_array_add): Register the array into the
903         list of live ephemeron arrays.
904
905 2010-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
906
907         * class.c (mono_class_layout_fields): Don't perform alignment
908         if align is zero.
909
910         * class.c (mono_class_layout_fields): Init field related information
911         to sane defaults.
912
913 2010-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
914
915         * verify.c (mono_verifier_verify_class): Verify the constraint
916         of generic type definitions.
917
918 2010-05-04  Mark Probst  <mark.probst@gmail.com>
919
920         * sgen-marksweep.c: Simplify free list maintenance in sweep.
921
922 2010-05-02  Mark Probst  <mark.probst@gmail.com>
923
924         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Unify
925         major_do_collection() across the two major collectors.
926
927 2010-05-02  Mark Probst  <mark.probst@gmail.com>
928
929         * sgen-gc.c: Add heavy statistics counter for re-added global
930         remsets.
931
932 2010-05-02  Mark Probst  <mark.probst@gmail.com>
933
934         * sgen-marksweep.c, sgen-gc.c: Use one mark bit per ALLOC_ALIGN to
935         get rid of a division in critical code.
936
937 2010-04-29  Mark Probst  <mark.probst@gmail.com>
938
939         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Have separate
940         blocks for objects without references in mark&sweep, to improve
941         performance.
942
943 2010-04-28  Mark Probst  <mark.probst@gmail.com>
944
945         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Bring heavy
946         statistics up-to-date.
947
948 2010-04-27  Mark Probst  <mark.probst@gmail.com>
949
950         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Support
951         heap-dump for mark&sweep.
952
953 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
954
955         * loader.c (mono_method_get_header): Move the is_inflated case before the
956         wrapper case, as a method can be both.
957
958 2010-04-27  Mark Probst  <mark.probst@gmail.com>
959
960         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Don't do a
961         separate pass to scan pinned and large object but use the gray
962         queue like for regular objects.
963
964 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
965
966         * boehm-gc.c: Applied patch from Robert Nagy (robert@openbsd.org). Include
967         string.h for memmove.
968
969         socket-io.c: Applied patch from Robert Nagy (robert@openbsd.org).
970         ipaddress_to_struct_in6_addr() is only needed when
971         defined(HAVE_STRUCT_IP_MREQN) || defined(HAVE_STRUCT_IP_MREQ).
972
973 2010-04-25  Mark Probst  <mark.probst@gmail.com>
974
975         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Properly
976         separate copy_object functions for major vs nursery.  Allows us to
977         get rid of a few checks and the start and end parameters for many
978         functions.
979
980 2010-04-25  Mark Probst  <mark.probst@gmail.com>
981
982         * sgen-marksweep.c, sgen-gc.c, sgen-major-copying.c,
983         sgen-protocol.c, sgen-protocol.h, Makefile.am: Major Mark&Sweep
984         collector.
985
986 2010-04-25  Zoltan Varga  <vargaz@gmail.com>
987
988         * class.c (mono_class_create_from_typedef): Initialize class->nested_in after
989         calling setup_mono_type () since the nested parent could recursively reference
990         the nested class using generic constraints. Fixes #599469.
991
992 2010-04-24  Mark Probst  <mark.probst@gmail.com>
993
994         * sgen-gc.c, sgen-pinning.c, sgen-major-copying.c: Major collector
995         abstraction.
996
997 2010-04-24  Mark Probst  <mark.probst@gmail.com>
998
999         * sgen-gc.c: Remove more unneeded code.
1000
1001 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1002
1003         * sgen-gc.c: Disable managed allocator and wbarrier when the
1004         binary protocol is enabled.
1005
1006 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1007
1008         * sgen-gc.c: Put nursery-fragment-cleaning into its own function.
1009
1010 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1011
1012         * sgen-gc.c: Remove a few commented out and unneeded bits.
1013
1014 2010-04-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
1015
1016         * threadpool.c: patch from Robert Nagy that fixes a nullref and
1017         uses mono_sem_wait instead of mono_sem_timedwait for openbsd.
1018
1019 2010-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
1020
1021         * icall.c (ves_icall_type_is_assignable_from): Properly handle byref
1022         types.
1023
1024         Fixes #331126
1025
1026 2010-04-21  Mark Probst  <mark.probst@gmail.com>
1027
1028         * sgen-gc.c: Turn off semi-precise stack mark.
1029
1030 2010-04-20  Sebastien Pouliot  <sebastien@ximian.com>
1031
1032         * reflection.c (mono_custom_attrs_from_index): Use right function
1033         to free 'list' (i.e. g_list_free) if the verifier fails.
1034
1035 2010-04-19 Rodrigo Kumpera  <rkumpera@novell.com>
1036
1037                 * verify.c: Handle the case where mono_type_get_underlying_type_any
1038                 returns NULL. Remove duplicated code between MONO_TYPE_GENERICINST
1039                 and MONO_TYPE_VALUETYPE in those case.
1040
1041                 Based on a slightly modified patch by Sebastien Pouliot  <sebastien@ximian.com>
1042
1043                 Hopefully Fixes #564253.
1044
1045 2010-04-19 Gonzalo Paniagua Javier <gonzalo@novell.com>
1046
1047         * domain-internals.h: made threadpool_jobs volatile.
1048         * mono-wsq.c: add an assert to verify that the threadpool cleaned up
1049         all local jobs.
1050         * threadpool.c:
1051                 -When two threads try to initialize the socket IO pool,
1052                 the second one waits until the intialization is finished
1053                 instead of continuing right away.
1054                 -Add checks for domain unload: no items added in this case.
1055                 -Only measure the time every 10 elements added to the queue.
1056                 This is an experiment since linux x86 gettimeofday() sucks.
1057                 -Create new thread if there are none waiting for work items.
1058                 -There was a missing decrement of the busy threads.
1059                 -Make sure the local queue is cleaned up before exiting the
1060                 thread when the program ends.
1061
1062 2010-04-19 Rodrigo Kumpera  <rkumpera@novell.com>
1063
1064         * reflection.c (mono_type_get_object): Normalize generics types
1065         as to how managed code expect them to be. A generic instance over
1066         the GTD arguments must have the same mirror as the GTD itself.
1067
1068         Fixes #473289.
1069
1070 2010-04-19  Zoltan Varga  <vargaz@gmail.com>
1071
1072         * locales.c: Implement support for DISABLE_NORMALIZATION.
1073
1074 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1075
1076         * marshal.c (mono_marshal_get_native_func_wrapper): Set the marshal info to NULL,
1077         since it is not a MonoMethod.
1078
1079 2010-04-16  Sebastien Pouliot  <sebastien@ximian.com>
1080
1081         * icall-def.h: Add get_RequiresElevatedPermissions icall to
1082         System.Security.SecurityManager - used only by Moonlight
1083         * security-core-clr.c|h: Add Elevated Trust/Permission support
1084         for CoreCLR / Moonlight
1085
1086 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1087
1088         * boehm-gc.c (mono_gc_base_init): Applied patch from Robert Nagy
1089         (robert@openbsd.org). Fix GC_stackbottom calculation on OpenBSD.
1090
1091 2010-04-16  Marek Habersack  <mhabersack@novell.com>
1092
1093         * mono-perfcounters.c: added code for the "Mono
1094         Memory/Total Physical Memory" performance counter.
1095
1096         * mono-perfcounters-def.h: added definition of the "Mono
1097         Memory/Total Physical Memory" performance counter.
1098
1099 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1100
1101         * class.c (mono_class_get_method_by_index): Return NULL
1102         on type load failures.
1103
1104 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1105
1106         * class.c (mono_class_from_typeref): Check if the supplied
1107         image has an assembly bound to it.
1108
1109         Fixes #567884.
1110
1111 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1112
1113         * loader.c (mono_method_get_signature_full): Use new function
1114         inflate_generic_signature_checked to check for errors.
1115
1116         Fixes #560839.
1117
1118 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1119
1120         * loader.c (inflate_generic_signature): Add _checked variant
1121         and move this function to use it.
1122
1123 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1124
1125         * class.c (mono_class_setup_vtable_general): Use error checking
1126         version of mono_class_inflate_generic_method_full.
1127
1128         Fixes #596975.
1129
1130 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1131
1132         * class.c (mono_class_inflate_generic_type_no_copy): Do proper
1133         error handling passing MonoError around.
1134
1135         Fixes #560336.
1136
1137 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1138
1139         * socket-io.c: make GetHostByName ("") work on windows.
1140         Fixes bug #456723.
1141
1142 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1143
1144         * object-internals.h:
1145         * threads.c: use a spin lock when accesing the per-thread appdomain
1146         list.
1147
1148 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1149
1150         * threads.c: no need to take the threads lock in push/pop appdomain.
1151
1152 2010-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1153
1154         * reflection.c (_mono_reflection_parse_type): MS supports
1155         non-assembly-qualified types in a generic type parameter list
1156         when enclosed in '[]' (which signals that they should be a fqn).
1157
1158         This breaks ECMA specs for how type names are encoded in cattr
1159         blobs but F# does it.
1160
1161         Fixes #576342.
1162
1163 2010-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1164
1165         * icall.c (ves_icall_InternalInvoke): Check if the vtable is sane
1166         for instance methods/ctors.
1167
1168         Fixes #422113.
1169
1170 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1171
1172         * reflection.c: Use the new verifier support for checking
1173         custom attributes.
1174
1175         Fixes #595306.
1176
1177 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1178
1179         * metadata-verify.c: Implement structural verification
1180         of custom attributes. This check requires access to the
1181         loader since to resolve the size of an enum we have to
1182         look it up.
1183         We don't check if named argumenments are encoded in a
1184         compatible fashion to their underlying field/prop.
1185         Maybe we should?
1186
1187         * verify-internals.h: Add two new cattr verification API.
1188
1189 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1190
1191         * metadata-verify.c (decode_signature_header): Fix signature.
1192
1193 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1194
1195         * verify.c (mono_verifier_is_enabled_for_method): Handle
1196         assembly less images.
1197
1198         * verify.c (mono_verifier_is_class_full_trust): Ditto.
1199
1200 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1201
1202         * loader.c (mono_method_signature_checked): Properly
1203         init MonoError.
1204
1205         * loader.c (mono_method_signature): It's the calee
1206         resposibility to init the error object.
1207
1208 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1209
1210         * metadata-verify.c (decode_signature_header): Do proper
1211         overflow checking.
1212
1213 Tue Apr 13 12:36:29 CEST 2010 Paolo Molaro <lupus@ximian.com>
1214
1215         * reflection.c: maintain the invariants required by
1216         mono_class_layout_fields() also in typebuilder_setup_fields ().
1217
1218 2010-04-11  Sebastien Pouliot  <sebastien@ximian.com>
1219
1220         * security-core-clr.c: Call mono_class_setup_methods in 
1221         get_default_ctor before checking klass->methods. Fix typo in
1222         comment
1223
1224 2010-04-10  Jb Evain  <jbevain@novell.com>
1225
1226         * domain.c (supported_runtimes): remove .net 4.0 beta 2 and
1227         add .net 4.0 RTM version.
1228
1229 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1230
1231         * reflection.c (resolve_object): Properly inflate generic
1232         methods when a context is supplied.
1233
1234         Fixes #591226.
1235
1236 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1237
1238         * verify.c (mono_method_verify): A switch op don't empty
1239         the stack for the next one. Fixes a bug when running fsi
1240         under --verify-all.
1241
1242 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1243
1244         * metadata-verify.c (is_valid_standalonesig_blob): Accept
1245         fields as valid standalone sig too. F# does generate them.
1246
1247         * metadata-verify.c (verify_typedef_table_full): Ignore
1248         what <module> extends.
1249
1250 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1251
1252         * verify.c (do_invoke_method): It's ok to do use call with
1253         virtual, non-final methods if their class is sealed.
1254
1255 2010-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1256
1257         * icall.c (ves_icall_MonoField_GetValueInternal): This function
1258         is a near identical copy of mono_field_get_value_object. So simply
1259         call it.
1260
1261         * object.c (mono_field_get_value_object): Handle literal fields
1262         on open generic classes.
1263
1264         Fixes #594942.
1265
1266 2010-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1267
1268         * reflection.c (mono_reflection_create_runtime_class): Setup
1269         parent/supertype information again since it can be changed
1270         without notice.
1271
1272 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1273
1274         * verify.c (verify_type_compatibility_full): Properly handle
1275         stores between arrays of primitives.
1276
1277         Fixes the verifier side of #555950.
1278
1279 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1280
1281         class.c (mono_bounded_array_class_get): Properly init
1282         cast_class to take the fact that uint[] and int[] can be
1283         casted between each other.
1284
1285         Fixes #555950.
1286
1287 2010-04-07  Geoff Norton  <gnorton@novell.com>
1288
1289         * domain.c: Avoid a deadlock on osx.  Fixes #565765
1290
1291 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1292
1293         * icall.c (ves_icall_System_Enum_ToObject): Avoid a crash for unfinished type
1294         builders. Fixes #594464.
1295
1296 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1297
1298         * icall.c (ves_icall_System_Environment_Exit): Shutdown the threadpool before
1299         waiting for all threads to suspend, as those threads can't be suspended.
1300
1301 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1302
1303         * threads.c (mono_thread_suspend_all_other_threads): Call ensure_synch_cs_set ()
1304         to avoid crashes on newly created threads.
1305
1306 2010-04-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
1307
1308         * file-io.c: reset the MonoIOStat structure in case of error.
1309         Fixes bug #582667.
1310
1311 2010-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
1312
1313         * class.c (print_implemented_interfaces): Print proper type name.
1314
1315         * class.c (mono_class_setup_vtable): Don't try that hard to produce
1316         the override map for generic instances since it later ignored.
1317
1318         * class.c (mono_class_implement_interface_slow): Don't break for
1319         dynamic generic instances.
1320
1321         * object.c (mono_runtime_invoke_array): Add an assert for allocation.
1322
1323         * reflection.c (mono_reflection_method_get_handle): New method that
1324         resolves a method handle.
1325
1326         * reflection.c (mono_reflection_get_dynamic_overrides): Handle the
1327         case when we override methods from a dynamic generic instance interface.
1328
1329         Fixes #575941.
1330
1331 2010-04-05 Gonzalo Paniagua Javier <gonzalo@novell.com>
1332
1333         * threadpool.c: don't attempt to close the pipe when it has not been
1334         created.
1335
1336 2010-04-05 Gonzalo Paniagua Javier <gonzalo@novell.com>
1337
1338         * threadpool.c: if there are no waiting threads, try to start a new
1339         one. This fixes the not-so-random hangs in System.ServiceModel tests.
1340         No need to use InterlockedCompareExchange to read volatile variables.
1341
1342 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1343
1344         * verify.c (verify_type_compatibility_full): Fail mixed valuetype
1345         and reference types that point to the same class.
1346
1347         Fixes #565598.
1348
1349 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1350
1351         * verify.c (verify_stack_type_compatibility_full): Ignore constraints
1352         when verifying compatibility between a generic instance and a generic
1353         parameter.
1354
1355         * verify.c (check_is_valid_type_for_field_ops): Improve error message.
1356
1357         * verify.c (stack_slot_stack_type_full_name): Improve verification type
1358         name.
1359
1360         Fixes #587849.
1361
1362 2010-04-04  Mark Probst  <mark.probst@gmail.com>
1363
1364         * sgen-gc.c: Remove superfluous scanning of alloc-pinned objects.
1365
1366 2010-04-04  Zoltan Varga  <vargaz@gmail.com>
1367
1368         * threads.c Applied some openbsd changes from Robert Nagy <robert@openbsd.org>.
1369
1370 2010-04-03  Marek Habersack  <mhabersack@novell.com>
1371
1372         * process.c: when cross-compiling with MinGW, force GetProcessId
1373         lookup using GetProcAddress.
1374
1375 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1376
1377         * sgen-gc.c: parse_environment_string_extract_number() must be
1378         static.
1379
1380 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1381
1382         * sgen-gc.c, sgen-gray.c: Macros for gray_object_enqueue() and
1383         gray_object_dequeue(), to make sure they're inlined.
1384
1385 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1386
1387         * sgen-gc.c, sgen-gray.c: Fix a few debug levels, put a few
1388         asserts in inner loops into DEBUG and lower MAX_DEBUG_LEVEL.
1389
1390 2010-04-02  Jb Evain  <jbevain@novell.com>
1391
1392         * exception.c: remove dead code.
1393
1394 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1395
1396         * *-gc.c: Fix the signature of mono_gc_get_used/heap_size () to be consistent
1397         with mono-gc.h.
1398
1399 2010-04-01  Sanjoy Das <sanjoy@playingwithpointers.com>
1400
1401         * sgen-gc.c: Make the nursery size adjustable by the
1402         MONO_GC_PARAMS environment variable.
1403
1404         Code is contributed under MIT/X11 license.
1405
1406 2010-04-01 Gonzalo Paniagua Javier <gonzalo@novell.com>
1407
1408         * threadpool.c: threadpool threads wait is alertable.
1409         Fixes bug #592964.
1410         Reduced the stack size of the *poll_wait thread.
1411
1412 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1413
1414         * exception.c|metadata-internals.h: Add new mono_get_exception_
1415         field_access_msg and mono_get_exception_method_access_msg 
1416         functions that accept a const char* parameter to provide more 
1417         details when the exception is thrown.
1418         * security-core-clr.c|h: Rework code to allow logging exceptions
1419         (export MONO_LOG_MASK="security") and to supply more details in
1420         [TypeLoad|MethodAccess|FieldAccess]Exception thrown. Also added
1421         mono_security_core_clr_is_field_access_allowed and 
1422         mono_security_core_clr_is_call_allowed to return an exception,
1423         with messages and logging, that can be emitted by method-to-ir.c
1424
1425 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1426
1427         * sgen-gc.c, sgen-pinning-stats.c: In the heap-dump, dump each
1428         pinned object.
1429
1430 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1431
1432         * appdomain.c (mono_domain_assembly_postload_search): Avoid a crash/assert if
1433         the assembly name is not well formed utf8. Fixes #567882.
1434
1435 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1436
1437         * reflection.c (mono_reflection_create_generic_class): Set the flags field of
1438         the generic parameters from the builder. Fixes #473298.
1439
1440 2010-03-31  Miguel de Icaza  <miguel@novell.com>
1441
1442         * object.c (mono_class_proxy_vtable): Eliminate warning. 
1443
1444         * marshal.c (emit_marshal_boolean): Eliminate possible
1445         uninitialized local warning. 
1446
1447 2010-03-30  Sebastien Pouliot  <sebastien@ximian.com>
1448
1449         * class.c (mono_class_init): Postpone coreclr inheritance check
1450         until the end of the initialization (so we can check up the 
1451         default ctor manually for the core-clr inheritance rules).
1452         * security-core-clr.c: Add the missing (undocumented) checks on
1453         default constructors when verifying inheritance rules.
1454
1455 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1456
1457         * domain-internals.h (MonoJitExceptionInfo): Add new field
1458         handler_end to the data union. To be used to point the end
1459         of a finally block.
1460
1461 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1462
1463         * reflection.c: Add support for new v4 type
1464         System.Reflection.MonoModule that is the concrete version
1465         of Module which is abstract unver v4.
1466
1467 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1468
1469         * class.c (mono_class_init): Don't set class failure after
1470         inited = 1 is set. It must be done before.
1471
1472 2010-03-30  Andreas Färber  <andreas.faerber@web.de>
1473
1474         * mono-config.c: Add support for OS "haiku"
1475         * ChangeLog: Fix UTF-8 encoding
1476
1477         Code is contributed under MIT/X11 license.
1478
1479 Tue Mar 30 15:53:06 CEST 2010 Paolo Molaro <lupus@ximian.com>
1480
1481         * console-unix.c: fixed include logic for sys/ioctl.h.
1482
1483 2010-03-30  Mark Probst  <mark.probst@gmail.com>
1484
1485         * threads.c: Fix bitmap generation for TLS marking on 64 bit
1486         systems.
1487
1488 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1489
1490         * icall.c (ves_icall_System_Enum_get_underlying_type): Don't crash on
1491         unfinished/broken typebuilders.
1492
1493 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1494
1495         * sgen-gc.c: Use the same heuristic for the LOS target that we use
1496         for the minor section allowance.
1497
1498 2010-03-29  Raja R Harinath  <harinath@hurrynot.org>
1499
1500         * metadata-verify.c (INVALID_METHOD_IMPLFLAG_BITS): Allow bit 6
1501         "NoOptimization".
1502
1503 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1504
1505         * sgen-gc.c: Count bytes allocated with heavy statistics.
1506
1507 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1508
1509         * sgen-gc.c: More detailed time statistics.
1510
1511 Mon Mar 29 11:52:34 CEST 2010 Paolo Molaro <lupus@ximian.com>
1512
1513         * gc-internal.h, sgen-gc.c, threads.c, utils/mono-hash.c:
1514         fix the user defined mark interface to pass a pointer
1515         to the object location and not the object itself.
1516
1517 2010-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
1518
1519         * reflection.c (mono_method_body_get_object): Release
1520         the method header before the call to CACHE_OBJECT since
1521         this is a macro that returns.
1522
1523 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1524
1525         * class.c (inflate_generic_type): mono_metadata_type_dup
1526         already dupes array information, the g_memdup was just
1527         leaking memory.
1528
1529 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1530
1531         * verify.c: Add stack_peek function. Fix CEE_DUP
1532         to not read from invalid memory if push did expand
1533         the stack.
1534
1535 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1536
1537         * verify.c: Remove old table verification code that has
1538         been superseeded by the new metadata verifier.
1539
1540         * verify.h: Remove mono_image_verify_tables from the public
1541         API.
1542
1543         * pedump.c: Fix for removed bits.
1544
1545 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1546
1547         * verify.c: Allocate stack slows lazily to reduce stack usage
1548         in case of methods with huge stacks. Reduces memory consumption
1549         for mcs yyparse from 459Mb to 1.8Mb.
1550
1551 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1552
1553         * threadpool.c: don't try executing items from domains being
1554         unloaded. Fixes appdomain-async-invoke test.
1555
1556 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1557
1558         * threadpool.c: spin while the threadpool initializes.
1559         * mono-wsq.c: if the WSQ has not been initialized or has been shut
1560         down, don't do anything.
1561
1562 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1563
1564         * threads.c (mono_thread_create_internal): Set the GC type of the
1565         threads_starting_up hash table.
1566
1567 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1568
1569         * threadpool.c: reset 'state' to avoid returning non-null when the
1570         event type is not found.
1571
1572 Fri Mar 26 19:03:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1573
1574         * sgen-gc.c: make copy_object () take the address of the
1575         slot holding the reference. This allows saving memory stores
1576         when not needed and it allows keeping track of oldspace->nursery
1577         references for the card table code.
1578
1579 2010-03-26  Andreas Färber  <andreas.faerber@web.de>
1580
1581         * null-gc.c (mono_gc_invoke_with_gc_lock): Fix function name.
1582
1583         Code is contributed under MIT/X11 license.
1584
1585 Fri Mar 26 11:33:17 CET 2010 Paolo Molaro <lupus@ximian.com>
1586
1587         * object.c, threads.c, threads-types.h, threads.h: make the
1588         managed thread local storage references precisely tracked.
1589
1590 2010-03-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
1591
1592         * threadpool.[ch]: reworked the threadpool:
1593                 -Threadpool threads use a work-stealing queue. Adding a work
1594                 item from a threadpool thread will queue it in the thread
1595                 local queue without locking (in most cases).
1596                 -epoll events are coalesced before being added to the IO
1597                 queue.
1598                 -Dynamically change the number of active threads
1599                 -Changed the global queue to be more GC friendly
1600
1601         * class-internals.h: add 2 new performance counters for the number of
1602         threads in the threadpool and the IO threadpool.
1603
1604         * object-internals.h: new field in MonoAsyncResult.
1605         * icall-def.h: new internal call for queueing work items.
1606
1607         * Makefile.am: add 2 new files.
1608
1609         * appdomain.c: bump up corlib version.
1610
1611         * mono-wsq.[ch]: an implementation of a work-stealing queue.
1612
1613         * mono-perfcounters-def.h:
1614         * mono-perfcounters.c: added 2 new performance counters.
1615
1616 2010-03-26  Mark Probst  <mark.probst@gmail.com>
1617
1618         * sgen-gc.c: More FIXME/TODO updates.
1619
1620 2010-03-25  Mark Probst  <mark.probst@gmail.com>
1621
1622         * gc-internal.h, sgen-gc.c, sgen-gc.h, boehm-gc.c, null-gc.c: New
1623         function mono_gc_invoke_with_gc_lock() which invokes a function
1624         with the guarantee that no collection will occur during its execution.
1625
1626 2010-03-25  Mark Probst  <mark.probst@gmail.com>
1627
1628         * sgen-gc.c: Update a few comments.
1629
1630 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1631
1632         * reflection.c: Add support for new v4 type
1633         System.Reflection.MonoAssembly that is the concrete version
1634         of Assembly which is abstract unver v4.
1635
1636 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1637
1638         * reflection.c (mono_reflection_get_custom_attrs_info): Protect
1639         code that uses System.Reflection.Emit in DISABLE_REFLECTION_EMIT.
1640
1641         Expose a few macros that are needed for SR but not SRE to the
1642         world (previous inside the SRE ifdef)
1643
1644 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1645
1646         * sgen-gc.c (gc_register_current_thread): We need
1647         stack_start_limit as well in the non-attribute pthread case.
1648
1649 2010-03-23 Rodrigo Kumpera  <rkumpera@novell.com>
1650
1651         * threads.c: Fix windows build.
1652
1653 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1654
1655         * thread-types.h: Add mono_thread_resume_interruption.
1656
1657         * threads.c: Add mono_thread_resume_interruption, this
1658         function should be called after the last protected handler
1659         found at interruption time has finished.
1660
1661 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1662
1663         * threads.c (ves_icall_System_Threading_Thread_ResetAbort):
1664         Check MonoInternalThread's ::state instead of ::abort_exc
1665         since the later can be lazily created.
1666
1667         This is specially problematic when running a finally block
1668         under AbortRequested state. ResetAbort must work, but the
1669         abort_exc object has not been created because interruption
1670         has not began.
1671
1672 2010-03-22  Geoff Norton  <gnorton@novell.com>
1673
1674         * locales.c: Its possible for CFStringGetCStringPtr
1675         to return null and not convert encodings.  Use
1676         CFStringGetCString instead.
1677
1678 Mon Mar 22 18:06:38 CET 2010 Paolo Molaro <lupus@ximian.com>
1679
1680         * class-internals.h, class.c, object.c: introduce compressed
1681         interface bitmaps (for now only under small config): this saves
1682         about 600 KB of runtime memory on gmcs bootstraps or monodevelop
1683         startups.
1684
1685 Mon Mar 22 16:03:34 CET 2010 Paolo Molaro <lupus@ximian.com>
1686
1687         * mono-debug.c: don't try to get the method header, it causes a
1688         deadlock and it is not used for anything anymore.
1689
1690 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1691
1692         * loader.c (mono_method_get_marshal_info): Fix the handling of dynamic methods
1693         broken by the last change.
1694
1695 2010-03-21  Andreas Färber  <andreas.faerber@web.de>
1696
1697         * socket-io.c: Don't depend on AF_SNA, AF_DECnet,
1698         SOCK_RDM.
1699         
1700         Code is contributed under MIT/X11 license.
1701
1702 2010-03-20  Sanjoy Das <sanjoy@playingwithpointers.com>
1703
1704         * sgen-gc.c (mono_gc_get_write_barrier): Handle non-aligned
1705         nursery.
1706
1707         Code is contributed under MIT/X11 license.
1708
1709 2010-03-19  Martin Baulig  <martin@ximian.com>
1710
1711         * mono-debug.c (MonoDebugWrapperData): Replace `cil_code' with a
1712         dummy field, containing an empty string.
1713         (mono_debug_add_method): Don't call mono_disasm_code() for wrappers.
1714
1715
1716 Fri Mar 19 17:26:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1717
1718         * class.c: setup_interface_offsets() refactor to not call
1719         mono_class_get_implemented_interfaces () more times than needed and
1720         to reduce the runtime memory requirements to be O(num_interfaces)
1721         instead of O(max_interface_id).
1722
1723 2010-03-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
1724
1725         * mono-mlist.[ch]: add mono_mlist_set_next ().
1726
1727 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1728
1729         * domain-internals.h: Add MonoTryBlockHoleJitInfo struct and
1730         associated changes to support holes in the protected range of a
1731         try block.
1732
1733         * domain.c: Add mono_jit_info_get_try_block_hole_table_info, which
1734         retrieves the holes table from a given MonoJitInfo.
1735
1736 Tue Mar 16 13:11:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1737
1738         * object.h, object-internals.h, object.c, icall.c, gc-internal.h,
1739         debug-helpers.c, cominterop.c, process.c, sgen-gc.c, socket-io.c:
1740         hide the contents of the MonoString and MonoArray structs from the
1741         public API. Change the accessor macros to accessors functions where
1742         needed. Adjusted the array API to allow for pointer-sized lengths and
1743         starting positions, so 64 bit arrays can be optionally provided in an
1744         API compatible way if needed on 64 bit systems.
1745
1746 Tue Mar 16 10:18:07 CET 2010 Paolo Molaro <lupus@ximian.com>
1747
1748         * class-internals.h, class.c, loader.c, marshal.c, metadata.c,
1749         reflection.c: the MonoMethodNormal struct is now unused, so remove it.
1750
1751 Mon Mar 15 18:28:00 CET 2010 Paolo Molaro <lupus@ximian.com>
1752
1753         * class-internals.h: remove the method header from MonoMethod since
1754         from now on it will be transient. We have a header pointer for method
1755         wrappers, since in that case we need to keep track of it. For this
1756         reason, all the Reflection.Emit generated methods use MonoMethodWrapper
1757         structs now. The same happens with MonoMethodInflated.
1758         * class.c: reset the sre_method flag for inflated method structures:
1759         this makes the code that cares look at the header in the MonoMethodInflated
1760         structure.
1761         * loader.c: lookup the method header in the appropriate field now that
1762         it is removed from MonoMethod.
1763         * metadata-internals.h: add a flag to the method header to know if it
1764         can be freed inside mono_metadata_free_mh ().
1765         * method-builder.c: updates after moving the header field from
1766         MonoMethod to MonoMethodWrapper.
1767         * reflection.c: MonoMethods generated from Reflection.Emit use
1768         MonoMethodWrapper structs if they need a method header now (later take
1769         advantage of this and remove all the current unsafe uses of method_aux_hash).
1770         * metadata.c: make method header parsing not leak when verification
1771         fails. Alloc it with g_malloc() and free it in mono_metadata_free_mh().
1772         These changes save a few hundred KB of runtime memory in a mcs
1773         bootstrap or a monodevelop startup.
1774
1775 2010-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1776
1777         * verify.c: Improve error message.
1778
1779 2010-03-12  Jb Evain  <jbevain@novell.com>
1780
1781         * reflection.c (add_exported_type): populate the exported
1782         table with the type's nested type.
1783
1784 2010-03-10  Mark Probst  <mark.probst@gmail.com>
1785
1786         * sgen-gc.c (STRING_SIZE): Semi-revert r153342.  I'm an idiot who
1787         can't read parentheses.
1788
1789 2010-03-10  Mark Probst  <mark.probst@gmail.com>
1790
1791         * threads.c (thread_cleanup): Add a guard to dereferencing
1792         "thread" to avoid an unlikely race condition.
1793
1794 2010-03-09  Sebastien Pouliot  <sebastien@ximian.com>
1795
1796         * assembly.c: Fix crash in moon-unit when aname->culture is NULL
1797         instead of an empty string.
1798
1799 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1800
1801         * object-internals.h (_G_BOOLEAN_EXPR): Fix the definition of this to explicitly
1802         convert to a boolean, recent gcc versions compile this differently.
1803
1804 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1805
1806        * sgen-gc.c (safe_object_get_size): Avoid a function call so this can really be
1807        inlined.
1808
1809 2010-03-09  Mark Probst  <mark.probst@gmail.com>
1810
1811         * sgen-gc.c (STRING_SIZE): Off by one.
1812
1813 2010-03-09  Mark Probst  <mark.probst@gmail.com>
1814
1815         * sgen-archdep.h: Fix the signal context register access for
1816         AMD64.
1817
1818 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1819
1820         * sgen-gray.c: Get rid of the unused 'start' field in GrayQueueSection.
1821
1822 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1823
1824         * verify.c: Store the initial basic block returned by mono_basic_block_split
1825         so we can release the whole list and not just the first one.
1826
1827 Mon Mar 8 17:30:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1828
1829         * verify.c, debug-helpers.c, profiler.c, loader.c,
1830         mono-basic-block.c, mono-debug.c, reflection.c: prepare to make
1831         MonoMethodHeader a transient entity.
1832
1833 2010-03-08  Zoltan Varga  <vargaz@gmail.com>
1834
1835         * sgen-gc.c (scan_needed_big_objects): Call drain_gray_stack () to avoid
1836         uncontrolled growth of the gray stack.
1837
1838         * sgen-gray.c: Rewrite this so it behaves like a stack, not a queue, so recently
1839         added items are removed first, improving cache locality. Avoid freeing queue
1840         segments in the fast path, use the list of segments as the free list, truncate
1841         it to its max size at the start of collection.
1842
1843 Mon Mar 8 10:13:52 CET 2010 Paolo Molaro <lupus@ximian.com>
1844
1845         * metadata-internals.h: more memory savings, both with small config and without.
1846
1847
1848 Sat Mar 6 19:12:12 CET 2010 Paolo Molaro <lupus@ximian.com>
1849
1850         * appdomain.c, domain-internals.h, domain.c, object.c:
1851         make class_vtable_hash into an array to reduce memory usage.
1852
1853 Sat Mar 6 18:16:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1854
1855         * mempool.c, class-internals.h, class.c, icall.c, metadata.c,
1856         object-internals.h, object.c, reflection.c, threadpool.c:
1857         reduce resource usage when the small config is selected.
1858         In particular, up to 64K of methods/fields/properties/events
1859         are allowed and "other" methods in events are ignored.
1860
1861 Fri Mar 5 19:05:47 CET 2010 Paolo Molaro <lupus@ximian.com>
1862
1863         * threads.c: reduce resource usage when compiled for a small config.
1864
1865 2010-03-05  Mark Probst  <mark.probst@gmail.com>
1866
1867         * sgen-gc.c: Also collect number of degraded-alloced objects with
1868         heavy statistics.
1869
1870 2010-03-04  Geoff Norton  <gnorton@novell.com>
1871
1872         * assembly.c: Only support OSX bundling if the bundle is 
1873         actually detectable.
1874
1875 2010-03-04  Geoff Norton  <gnorton@novell.com>
1876
1877         * loader.c: The marshal specs are freed at the end of the call
1878         but it explicitly frees the strings as well as the container,
1879         so we need to dup them too to avoid referencing free'd memory.
1880
1881 2010-03-04  Geoff Norton  <gnorton@novell.com>
1882
1883         * icall-def.h:
1884         * icall.c: Add a new private internal icall to construct
1885         an object from its type without running the ctor.
1886
1887 Thu Mar 4 15:37:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1888
1889         * profiler.c: allow multiple profiler engines to be loaded
1890         at the same time.
1891
1892 Wed Mar 3 20:19:45 CET 2010 Paolo Molaro <lupus@ximian.com>
1893
1894         * profiler-private.h, profiler.c, profiler.h, sgen-gc.c: introduce
1895         profiler event to track object moves.
1896
1897 Wed Mar 3 19:20:39 CET 2010 Paolo Molaro <lupus@ximian.com>
1898
1899         * object.c, profiler.c, profiler.h, string-icalls.c:
1900         remove the reduntant MONO_PROFILE_STRING_ALLOC profiler event.
1901
1902 2010-03-03  Miguel de Icaza  <miguel@novell.com>
1903
1904         * decimal.c (mono_double2decimal): Add support for reducing the
1905         scale of a decimal.  It turns the 0.6000000000000 into 0.6 as
1906         expected.
1907
1908 2010-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1909
1910         * icall-def.h:
1911         * icall.c: Implement System.MonoType::get_core_clr_security_level icall.
1912
1913 2010-03-03  Marek Habersack  <mhabersack@novell.com>
1914
1915         * mono-config.c (mono_config_parse_assembly_bindings): added -
1916         parses assembly binding redirections from appdomain's config
1917         file.
1918
1919         * metadata-internals.h: added definition of a new function -
1920         mono_config_parse_assembly_bindings - to support parsing assembly
1921         binding redirections defined in appdomain's config file.
1922
1923         * domain-internals.h: added two new fields to _MonoDomain - a list
1924         of assembly bindings and a flag to parse the config file only
1925         once.
1926
1927         * assembly.c (assembly_binding_maps_name): empty culture name and
1928         NULL culture name are considered equal.
1929         (mono_assembly_apply_binding): added support for domain specific
1930         assembly binding redirections, read from the appdomain's
1931         configuration file. Fixes bug #580185
1932
1933 Wed Mar 3 11:46:06 CET 2010 Paolo Molaro <lupus@ximian.com>
1934
1935         * appdomain.c, domain.c, icall.c, image.c, marshal.c, object.c,
1936         reflection.c, socket-io.c, threadpool.c, threads.c: removed 1.1/1.0
1937         support.
1938
1939 2010-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1940
1941         * reflection.c (mono_image_get_memberref_token): Extract mono_image_add_memberef_row
1942         from this function. The new function receive the parent token instead of a type.
1943
1944         * reflection.c (mono_image_get_methodref_token_for_methodbuilder):
1945         * reflection.c (mono_image_get_ctorbuilder_token): Use new function to encode
1946         typebuilders. This make it possible to properly encode generic type builders since
1947         their unmanaged type don't have generics data while unfinished.
1948
1949         Fixes #583655.
1950
1951 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1952
1953         * sgen-gc.c, sgen-protocol.c, sgen-protocol.h: New facility for
1954         writing binary log files (can be enabled by #define'ing
1955         BINARY_PROTOCOL) for better debugging of timing-dependent bugs or
1956         bugs in longer running programs.
1957
1958 Mon Mar 1 19:35:32 CET 2010 Paolo Molaro <lupus@ximian.com>
1959
1960         * metadata.c: added some API documentation.
1961
1962 2010-03-01  Robert Jordan  <robertj@gmx.net>
1963
1964         * filewatcher.h: Include glib.h to fix the MSVC build.
1965
1966 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1967
1968         * class-internals.h (MonoClass): Get rid of the reflection_info field, add
1969         a GC handle instead. This is a bit slower to access, but avoids burdening the
1970         GC with 100s of individual roots.
1971
1972         * reflection.c (mono_class_get_ref_info):
1973         (mono_class_set_ref_info):
1974         (mono_class_free_ref_info): New internal helper fuctions.
1975
1976         * reflection.c appdomain.c icall.c class.c: Use the new helper functions instead
1977         of accessing klass->reflection_info directly.
1978
1979         * sgen-gc.c (alloc_complex_descriptor): Fix the computation of the number of
1980         words.
1981
1982         * gc.c (alloc_handle): Create a GC descriptor for the 'entries' array, free
1983         the previous array.
1984
1985 2010-02-28  Zoltan Varga  <vargaz@gmail.com>
1986
1987         * marshal.c (get_runtime_invoke_type): Avoid sharing byref with I, as the latter
1988         needs an indirection.
1989
1990 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1991
1992         * generic-sharing.c: Removed, moved its contents to mini/mini-generic-sharing.c,
1993         so all generic sharing code is in one place.
1994
1995         * class.c (get_implicit_generic_array_interfaces): Fix the last change so
1996         we don't call setup_interface_offsets () for unfinished types.
1997
1998 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1999
2000         * class.c (mono_class_generic_sharing_enabled): Move this to
2001         generic-sharing.c.
2002
2003         * image.c: Add an unload hook which is called before an image is unloaded.
2004
2005         * generic-sharing.c: Use the unload hook to unregister per-image data, to avoid
2006         metadata.c having to depend on generic sharing.
2007
2008 Fri Feb 26 19:23:18 CET 2010 Paolo Molaro <lupus@ximian.com>
2009
2010         * class.c: reduce size of ridiculously large cache.
2011
2012 2010-02-26  Martin Baulig  <martin@ximian.com>
2013
2014         * mono-debug.h
2015         (MONO_DEBUGGER_MINOR_VERSION): Bump to 5.
2016
2017         * threads.c (mono_thread_internal_reset_abort): New method; resets
2018         the abort, but doesn't throw any exception if no abort was requested.
2019
2020 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
2021
2022         * class.c (get_implicit_generic_array_interfaces): Call
2023         mono_class_setup_interface_offsets () before accessing
2024         eclass->interface_offsets_count. This only shows up on platforms without IMT for
2025         some reason.
2026
2027 Thu Feb 25 12:12:44 CET 2010 Paolo Molaro <lupus@ximian.com>
2028
2029         * environment.c, environment.h, icall.c: make the GetOSVersionString()
2030         icall internal.
2031
2032 Thu Feb 25 11:37:50 CET 2010 Paolo Molaro <lupus@ximian.com>
2033
2034         * metadata.c, metadata.h: make MONO_TYPE_IS* functional without
2035         direct access to the MonoType fields.
2036
2037 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
2038
2039         * threads.h: Move some internal functions which were added to this header by
2040         mistake to threads-types.h.
2041
2042         * class.c (mono_class_init): Get rid of mono_setup_vtable_in_class_init.
2043
2044 Wed Feb 24 17:45:27 CET 2010 Paolo Molaro <lupus@ximian.com>
2045
2046         * class-internals.h, class.h, object.h: make MonoRemoteClass
2047         and mono_remote_class() internal.
2048
2049 Wed Feb 24 17:05:18 CET 2010 Paolo Molaro <lupus@ximian.com>
2050
2051         * metadata-internals.h, class-internals.h, metadata.h: make the
2052         MonoType guts internal as well.
2053
2054 Wed Feb 24 16:02:42 CET 2010 Paolo Molaro <lupus@ximian.com>
2055
2056         * reflection.h: the MonoTypeNameParse guts are internal now.
2057         * assembly.c, assembly.h, image.h: the MonoAssemblyName guts
2058         are internal now, provide accessors as needed.
2059         * metadata.h, metadata-internals.h: the MonoMethodSignature
2060         guts are internal now.
2061         * Makefile.am: mempool.h is an internal header now.
2062         * *.h, *.c: remove glib.h usage from the public headers.
2063
2064 2010-02-24  Atsushi Enomoto  <atsushi@ximian.com>
2065
2066         * culture-info-table.h : regenerated.
2067
2068 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
2069
2070         * metadata.c: Add mono_method_get_header_summary which returns minimal
2071         information about the header of a method. This is the information used
2072         by the inline oracle to reject methods.
2073
2074         This method doesn't decode local variables and doesn't cache it's result,
2075         so it should cause a minimal reduction in memory usage.
2076
2077         * metadata-internals.h: Add MonoMethodHeaderSummary structure and
2078         mono_method_get_header_summary.
2079
2080 2010-02-22  Jeffrey Stedfast  <fejj@novell.com>
2081
2082         * threads.c (mono_thread_exit): Make sure that the main thread is
2083         non-null before dereferencing it.
2084
2085 2010-02-21  Geoff Norton  <gnorton@novell.com>
2086
2087         * Makefile.am: Add CoreFoundation linkage on darwin to properly get the current
2088         locale.
2089         * locaes.c: When running on darwin, try to get the local from CoreFoundation 
2090         before falling back to the posix lookup.
2091
2092 2010-02-19  Zoltan Varga  <vargaz@gmail.com>
2093
2094         * threads.c (mono_thread_suspend_all_other_threads): Ignore threads which have
2095         the DONT_MANAGE flag set.
2096
2097 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
2098
2099         * domain.c: Remove old v1 version strings. Let the runtime
2100         default to 2.0 instead of failing because it can't find a
2101         working 1.0 instalation.
2102
2103 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
2104
2105         * domain.c: Add v4 RC version string.
2106
2107 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
2108
2109         * mono-basic-block.c (mono_opcode_value_and_size): Use pointer variant
2110         of overflow checking function.
2111
2112 2010-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
2113
2114         * reflection.c (mono_reflection_method_on_tb_inst_get_handle): Handle non
2115         generic methods.
2116
2117         * reflection.c (mono_reflection_get_custom_attrs_info): Handle compiler context
2118         cases for ParameterInfo.
2119
2120         Fixes #579493.
2121
2122 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
2123
2124         * class.c (mono_class_get_cctor): Fix support for dynamic classes, which doesn't
2125         have has_cctor set. Fixes #575946.
2126
2127 2010-02-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
2128
2129         * appdomain.c: display a warning if the parsing the config file
2130         produces any error.
2131         Skip the BOM in UTF-8 files.
2132         Copy the AppDomainSetup before setting the privateBinPath so that the
2133         correct configuration file is read.
2134
2135 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
2136
2137         * object.c: Instead of using one vtable trampoline, allow the JIT to use one
2138         vtable trampoline per vtable slot index. Not used yet.
2139
2140 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
2141
2142         * icall-def.h:
2143         * icall.c: add internal call that returns the system page size.
2144
2145 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
2146
2147         * debug-helpers.c (mono_method_desc_search_in_image): Handle short names like
2148         'int' for system classes.
2149
2150 Fri Feb 12 18:36:02 CET 2010 Paolo Molaro <lupus@ximian.com>
2151
2152         * icall.c, icall-def.h: new icall to check for sufficient
2153         stack space.
2154
2155 2010-02-12  Mark Probst  <mark.probst@gmail.com>
2156
2157         * reflection.c (ensure_complete_type): Check that reflection_info
2158         is set, too.  Fixes crash of corlib testsuite with -O=-all.
2159
2160 2010-02-11  Rodrigo Kumpera  <rkumpera@novell.com>
2161
2162         * attrdefs.h:
2163         * tabledefs.h: Add NoOptimization flag.
2164
2165 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2166
2167         * sgen-gc.c: Don't consider it a missing remset if the target
2168         object is pinned - we might have done the store but not added the
2169         remset yet.
2170
2171 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2172
2173         * sgen-gc.c: When checking for missing remsets, don't assert on
2174         the first one, but print them all and then assert.
2175
2176 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2177
2178         * sgen-gc.c (find_in_remset_loc): Handle the small bitmap case.
2179
2180 2010-02-09  Miguel de Icaza  <miguel@novell.com>
2181
2182         * console-unix.c: On OSX Control-Y is assigned to
2183         VDSUSP (non-Posix), the
2184         suspend-program-next-time-it-tries-to-read-input command (this is
2185         different than C-z, which suspends immediately).
2186
2187         Do the same thing that bash does and ignore this setting,
2188         making our repl/getline support pasting.
2189
2190 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2191
2192         * sgen-gc.c: Simple plausibility check for scan_starts.
2193
2194 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2195
2196         * sgen-gc.c: Round up when calculating the number of scan starts.
2197
2198 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2199
2200         * reflection.c: Export mono_get_object_from_blob.
2201
2202         * object-internals.h: Ditto.
2203
2204         * icall.c: New icall property_info_get_default_value to get the default
2205         value of a property. Since using this is not common, no caching is done.
2206
2207         * icall-def.h: Add new icall.
2208
2209 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2210
2211         * class.c: Add mono_class_get_property_default_value.
2212
2213         * class-internal.h: Export mono_class_get_property_default_value.
2214
2215 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2216
2217         * reflection.c (mono_image_get_property_info): Encode the default value of a property.
2218
2219 Wed Feb 10 14:48:45 CET 2010 Paolo Molaro <lupus@ximian.com>
2220
2221         * sgen-gc.c: introduced critical regions to allow some lockless
2222         operations and increase scalability.
2223
2224 2010-02-10  Geoff Norton  <gnorton@novell.com>
2225
2226         * reflection.c: Support building with DISABLE_REFLECTION
2227
2228 2010-02-09 Gonzalo Paniagua Javier <gonzalo@novell.com>
2229
2230         * threadpool.c: Fixes for SetMinThreads and SetMaxThreads.
2231         Closes bug #566057.
2232
2233         * exception.c: fix typo in comment.
2234
2235 2010-02-09  Rodrigo Kumpera  <rkumpera@novell.com>
2236
2237         * icall.c (param_info_get_type_modifiers): Handle the case when the member object is a
2238         property. This happens which instances returned by PropertyInfo::GetIndexParameters ().
2239
2240         * reflection.c (mono_reflection_get_custom_attrs_info): Ditto.
2241
2242         * object-internals.h: Export mono_class_is_reflection_method_or_constructor as part of
2243         the internal API.
2244
2245         Fixes #574434.
2246
2247 2010-02-09  Mark Probst  <mark.probst@gmail.com>
2248
2249         * threads.c: Removed two assertions that were too strict.  Added a
2250         clarifying comment.  Fixes #577090.
2251
2252 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
2253
2254         * domain.c (mono_jit_info_table_find): Avoid looking in the root domain, since
2255         the caller has no way of knowing the domain which owns the returned MonoJitInfo.
2256
2257         * appdomain.c (create_exceptions): Call mono_thread_push/popappdomain_ref ().
2258
2259         * verify.c (mono_type_get_stack_name): Fix a warning.
2260
2261 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
2262
2263         * marshal.c (mono_marshal_get_wrapper_info): Rename from
2264         mono_marshal_wrapper_info_from_wrapper.
2265
2266         * marshal.c (mono_marshal_set_wrapper_info): Rename from
2267         mono_marshal_method_set_wrapper_data, and export.
2268
2269         * boehm-gc.c sgen-gc.c null-gc.c: Get rid of mono_gc_get_allocator_type, store
2270         the allocator type in a AllocatorWrapperInfo structure instead, which is accesible
2271         by calling mono_marshal_get_wrapper_info ().
2272
2273         * sgen-gc.c (mono_gc_get_managed_allocator): Add a specialized allocator for
2274         small objects which does no size checks.
2275
2276 2010-02-05  Rodrigo Kumpera  <rkumpera@novell.com>
2277
2278         * icall-def.h: Rename get_MetadataToken to GetMetadataToken.
2279
2280 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2281
2282         * verify.c (mono_method_verify): Use the new basic block formation pass
2283         to avoid verifying dead basic blocks. This is the same behavior as the
2284         runtime MS verifier.
2285
2286 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2287
2288         * mono-basic-block.c:
2289         * mono-basic-block.h: New implementation of a basic block formation pass.
2290         The formation pass does static liveness analysis as well to detect dead
2291         basic blocks.
2292
2293 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2294
2295         * marshal.c (mono_marshal_get_native_wrapper): Emit a null check for the
2296         'this' argument in icalls.
2297
2298 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2299
2300         * reflection.c (resolve_object): Handle MonoArrayMethod. Fixes #575955.
2301
2302 2010-02-01  Mark Probst  <mark.probst@gmail.com>
2303
2304         * object.c, domain.c: When using SGen, we must register
2305         vtable->type as a root if it's not a MonoType, because then it
2306         wasn't pin-alloced.
2307
2308 2010-02-01  Mark Probst  <mark.probst@gmail.com>
2309
2310         * sgen-gc.c: Reset to_space_bumper to to_space_section->next_data
2311         at the start of nursery collections, because we might have had
2312         degraded allocations which changed next_data.
2313
2314 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2315
2316         * marshal.c (mono_marshal_get_managed_wrapper): Avoid constructing the
2317         custom attr so this function works in cross-compiling mode.
2318
2319 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2320
2321         * class.c (make_generic_param_class): Initialize interface offsets since we
2322         set klass->inited. Fixes #574819.
2323
2324 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2325
2326         * domain.c (mono_domain_free): Send the END_UNLOAD profiler event before
2327         calling the JIT domain cleanup hook.
2328
2329 2010-01-28  Rodrigo Kumpera  <rkumpera@novell.com>
2330
2331         * pedump.c (main): Properly set the verifier mode when running the metadata
2332         verifier.
2333
2334 2010-01-28  Rodrigo Kumpera  <rkumpera@novell.com>
2335
2336         * verify.c (verify_class_for_overlapping_reference_fields): Properly verify
2337         overlapping fields now that we're called before has_references is set.
2338
2339         * pedump.c (dump_verify_info): Clear any loader error before verifying another
2340         method. Otherwise all sort of weird stuff happens.
2341
2342 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2343
2344         * object.c (mono_field_get_value_object): Handle nullable types correctly.
2345         Fixes #572874.
2346
2347 2010-01-25  Zoltan Varga  <vargaz@gmail.com>
2348
2349         * icall.c (ves_icall_System_Array_SetValueImpl): Handle nullable types correctly.
2350         Fixes #573322.
2351
2352 2010-01-23  Mark Probst  <mark.probst@gmail.com>
2353
2354         * sgen-pinning.c (evacuate_pin_staging_area): Don't assume
2355         pin_staging_area_index is greater than 0.
2356
2357 2010-01-22 Miguel de Icaza (miguel@novell.com)
2358
2359         * loader.c: Since we do nothing with the error returned, pass NULL
2360         to ignore the error.
2361
2362 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2363
2364         * reflection.c (typebuilder_setup_fields): Pretend field setup already
2365         happened before starting to encode the actual fields. This avoid ciclic
2366         dependencies and eventual crashes.
2367
2368         Fixes #572660.
2369
2370 2010-01-21  Mark Probst  <mark.probst@gmail.com>
2371
2372         * sgen-gc.c, gc-internal.h, object.c: Make string allocation
2373         atomic and remove the half-constructed hack in SGen.
2374
2375 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2376
2377         * metadata-verify.c (parse_generic_inst): Fail a type signature if it 
2378         has a recursive reference to itself.
2379
2380         Fixes #571863.
2381
2382 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2383
2384         * loader.c (mono_method_signature): Fix error message.
2385
2386 2010-01-21  Mark Probst  <mark.probst@gmail.com>
2387
2388         * sgen-gc.c: Reuse to-space sections between nursery collections.
2389
2390 2010-01-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
2391
2392         * icall.c: don't raise AppDomain.TypeResolve when the type is loaded
2393         from the current assembly or mscorlib. Fixes bug #322957.
2394
2395 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2396
2397         * marshal.c: Calculate the target class of the delegete invoke wrappers using
2398         get_wrapper_target_class.
2399
2400 2010-01-19  Mark Probst  <mark.probst@gmail.com>
2401
2402         * sgen-gc.c: Fix warnings.
2403
2404 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2405
2406         * verify.c (store_local): Better error message.
2407
2408 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2409
2410         * object.c (mono_object_get_virtual_method): Handle generic interfaces with variant
2411         arguments.
2412
2413 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2414
2415         * icall.c (ves_icall_Remoting_RemotingServices_GetVirtualMethod): This
2416         function is generics variance aware.
2417
2418 2010-01-19  Sebastien Pouliot  <sebastien@ximian.com>
2419
2420         * security-core-clr.c (mono_security_core_clr_can_access_internals):
2421         Handle the case where 'basedir' can be NULL (e.g. SRE assemblies)
2422
2423 2010-01-19  Sylvain Dupont <duposyl@gmail.com>
2424
2425         * cominterop.c marshal.c: Added support for marshalling in, in/byref,
2426           in/out, in/out/byref parameters of type SAFEARRAY[VARIANT].
2427
2428         Code is contributed under MIT/X11 license.
2429
2430 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2431
2432         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Handle inflated generic methods
2433         on a GTD.
2434
2435 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2436
2437         * marshal.c (mono_marshal_wrapper_info_from_wrapper): New helper function to
2438         return a point to a wrapper specific info structure describing the wrapper.
2439         (mono_marshal_get_array_address): Store the rank+elem_size in the wrapper info.
2440  
2441 2010-01-18  Mark Probst  <mark.probst@gmail.com>
2442  
2443         * sgen-gc.c: Make minor collection section allowance adaptive,
2444         depending on the amount of memory reclaimed in the last major
2445         collection.  If more memory was reclaimed (i.e. more garbage
2446         produced), do the next collection earlier.
2447
2448 2010-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2449
2450         * metadata-verify.c (parse_type): Fail a type signature if it has a recursive reference
2451         to itself.
2452
2453         * metadata-verify.c (mono_verifier_verify_typespec_signature): Change signature to take
2454         the token as parameter.
2455
2456         * verify-internals.h: Ditto.
2457
2458         * metadata.c (mono_type_create_from_typespec): Pass token to verifier.
2459
2460         Fixes #571460.
2461
2462 2010-01-18  Mark Probst  <mark.probst@gmail.com>
2463
2464         * sgen-gc.c: Make store_remset_buffer_index long.
2465
2466 2010-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2467
2468         * class.c (mono_class_from_typeref): Fail loading of self-referencing typeref tokens.
2469
2470         Fixes #569579.
2471
2472 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2473
2474         * sgen-gc.c (mono_gc_base_init): Add 'conservative_stack_mark' option to turn
2475         off precise marking if it is available.
2476         (mono_gc_get_bitmap_for_descr): Fix the handling of run length descriptors.
2477
2478 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2479
2480         * sgen-gc.c (mono_gc_conservatively_scan_area): Resurrect this.
2481
2482         * sgen-pinning.c (evacuate_pin_staging_area): Don't assert if there are no
2483         pinned objects.
2484
2485         * sgen-gc.c (create_allocator): Add the missing n > MONO_ARRAY_MAX_INDEX check
2486         to the array allocator.
2487
2488 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2489
2490         * generic-sharing.c (instantiate_other_info): Don't create ftnptr's from the
2491         result of mono_compile_method (), it already includes an ftnptr.
2492
2493 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2494
2495         * metadata.c (get_image_set): Remove an assert which can happen in normal use.
2496
2497 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2498
2499         * metadata.c (mono_metadata_str_hash): New helper function to compute a stable
2500         hash value which doesn't depend on glib/eglib versions.
2501         (mono_metadata_type_hash): Use it.
2502
2503         * object.c (mono_method_get_imt_slot): Ditto.
2504
2505 2010-01-14  Rodrigo Kumpera  <rkumpera@novell.com>
2506
2507         * class.c (mono_type_has_exceptions): Check the generic instance. It can fail
2508         independently of the GTD.
2509
2510         * class.c (mono_class_setup_fields): Fail if field has negative offset.
2511
2512         * class.c (mono_class_setup_fields): Fail if valuetype has zero size. Add sizeof(MonoObject)
2513         to the upper limit since instance_size includes this amount.
2514
2515         * class.c (mono_class_layout_fields): Check if the types of the static fields have failed.
2516
2517         Fixes #569544.
2518
2519 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2520
2521         * object.c (build_imt_slots): Compute the vtable slot correctly for interfaces
2522         with static methods.
2523
2524         * object.c (build_imt_slots): Avoid asserting when static methods are
2525         encountered in an interface.
2526
2527 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2528
2529         * sgen-gc.c (to_space_expand): Fix assertion.
2530
2531 Wed Jan 13 15:42:28 CET 2010 Paolo Molaro <lupus@ximian.com>
2532
2533         * string-icalls.c: missing declaration fixes.
2534         * sgen-gc.c: portability fixes.
2535
2536 2010-01-12  Rodrigo Kumpera  <rkumpera@novell.com>
2537
2538         * class.c (mono_class_get_implemented_interfaces): Now take a MonoError argument.
2539
2540         * class.c:
2541         * cominterop.c:
2542         * icall.c:
2543         * object.c: 
2544         * class-internals.h: Adjust for new signature of mono_class_get_implemented_interfaces.
2545
2546 2010-01-12  Rodrigo Kumpera  <rkumpera@novell.com>
2547
2548         * class.c (mono_class_setup_interfaces): Now take a MonoError argument and
2549         it can fail loading the type.
2550
2551         * class.c: Add mono_class_inflate_generic_class_checked.
2552
2553         * class.c:
2554         * verify.c:
2555         * class-internals.h: Adjust for new signature of mono_class_setup_interfaces.
2556
2557 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2558
2559         * loader.c (mono_method_signature_checked): New internal function taking an
2560         MonoError argument.
2561
2562         * socket-io.c (AI_ADDRCONFIG): Applied patch from John Lightsey (jd@cpanel.net).
2563         Fixes build on rh 7.3.
2564
2565 2010-01-10  Aaron Bockover  <abockover@novell.com>
2566
2567         * assembly.c (mono_set_rootdir): Support finding the mono paths on OS X
2568         at runtime in the same way as on Windows, which yields a relocatable
2569         Mono. Uses dyld's _NSGetExecutablePath and realpath to resolve the path
2570         of the running mono process.
2571
2572         On TARGET_ARM, fallback () will always be executed.
2573
2574 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2575
2576         * icall.c (ves_icall_Type_GetInterfaceMapData): This function is generics variance aware.
2577
2578 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2579
2580         * class.c (mono_class_is_assignable_from_slow): Support variant
2581         generic delegates.
2582
2583         * class.c (mono_class_implement_interface_slow): Support types with
2584         variant generic arguments.
2585
2586 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2587
2588         * verify.c: Remove some code duplication.
2589
2590 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2591
2592         * object.c: Update docs.
2593
2594 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2595
2596         * object.c (add_imt_builder_entry): Improve DEBUG_IMT spew.
2597
2598         * object.c (build_imt_slots): Interfaces with variant generic arguments use the
2599         fallback trampoline as well.
2600
2601         * class.c (mono_class_interface_offset_with_variance): Add new non_exact_match
2602         out argument that is set to TRUE if the match was direct. 
2603
2604         * class.c (mono_class_is_assignable_from): Delegates require variance testing as well.
2605
2606         * class-internal.h: Update prototype of mono_class_interface_offset_with_variance.
2607
2608 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2609
2610         * class.c: Add mono_class_interface_offset_with_variance function that does same
2611         as mono_class_interface_offset but takes variance into account.
2612
2613         * class-internal.h: Export mono_class_interface_offset_with_variance.
2614
2615         * object.c: Fix and improve DEBUG_IMT. Added an assert for IMT thunk building.
2616
2617 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2618
2619         * object.c:
2620         * icall.c:
2621         * class.c: Add some FIXME for due to variant generic arguments.
2622
2623         object.c (mono_object_isinst_mbyref): Interfaces with variant generic arguments
2624         can't use the simple bitfield check, so call mono_class_is_assignable_from if
2625         the bitfield check fails.
2626
2627 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2628
2629         * class.c (mono_class_is_assignable_from): Rework the generics variance code
2630         to be easier to read and fix bugs in the case a non generic type implements a variant
2631         interface.
2632
2633         * class.c (mono_class_has_variant_generic_params): Make non static.
2634
2635         * class-internals.h: Export mono_class_has_variant_generic_params as part of
2636         the private API.
2637
2638 2010-01-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2639
2640         * assembly.c: fix MONO_PATH debug output.
2641
2642 2010-01-06  Atsushi Enomoto  <atsushi@ximian.com>
2643
2644         * culture-info-table.h : regenerated.
2645
2646 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2647
2648         * verify.c (mono_verifier_verify_class): Properly check for broken parent. Ignore
2649         types that are meant to not have a parent.
2650
2651 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2652
2653         * marshal.c (mono_marshal_get_runtime_invoke): Make a copy of the signature
2654         from the image mempool, so it is not leaked.
2655
2656 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2657
2658         * metadata-internals.h (_MonoImage): Remove unused generic_class_cache field.
2659
2660 2010-01-04  Sebastien Pouliot  <sebastien@ximian.com>
2661
2662         * verify.c (verify_valuetype_layout_with_target): Fix case
2663         that can lead to infinite recursion. Fix bug #567861
2664
2665 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2666
2667         * pedump.c: Run code verifier even if image verification fails
2668         due to a failed type we. This allows more errors to be shown.
2669
2670 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2671
2672         * class.c (count_virtual_methods): Remove the assert and now
2673         fail properly.
2674         
2675         * class.c (setup_interface_offsets): This can fail now.
2676
2677         * class.c (mono_class_setup_vtable_general): Check for parent vtable
2678         errors. Check setup_interface_offsets errors.
2679
2680         * class.c (setup_interface_offsets): Simplify the return error logic
2681         and remove class_init_ok.
2682
2683         Fixes #560327.
2684
2685 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2686
2687         * class.c (mono_class_init): Do class verification at the beginning. Add
2688         some asserts to avoid tripping into invalid memory.
2689
2690         * object.c (compute_class_bitmap): Replace a g_assert_not_reached with a
2691         g_error and a decent message.
2692
2693         * verify.c (mono_verifier_verify_class): Verify for invalid super type.
2694
2695         Fixes #567548.
2696
2697 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2698
2699         * mempool-internals.h (g_list_prepend_mempool): Define this and related functions
2700         as inline functions instead of defining them in mempool.c.
2701
2702         * metadata-internals.h (MonoImageSet): New structure representing a set of
2703         MonoImages, which own a collection of generic instances.
2704
2705         * metadata.c: Get rid of the global generic caches, instead assign each generic
2706         instance to the image set which consists of all the images referenced by the
2707         instance. This greatly speeds up mono_metadata_clean_for_image (), and allows
2708         the memory used by generic instances to be allocated from a per image-set mempool
2709         later.
2710
2711 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2712
2713         * marshal.c (mono_marshal_get_runtime_invoke): Fix a memory leak.
2714
2715 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2716
2717         * appdomain.c (zero_static_data): Fix a warning.
2718
2719         * locales.c (construct_culture_from_specific_name): Applied patch from
2720         José Antonio Sánchez Lázaro <jasl@darcysoft.es>. Fix a crash if a culture was
2721         not found. Fixes #567900.
2722
2723 2009-12-31  Sebastien Pouliot  <sebastien@ximian.com>
2724
2725         * loader.c (mono_method_get_signature_full): Remove two asserts.
2726         Return NULL instead so that the verifier can handle both cases 
2727         gracefully.
2728
2729 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2730
2731         * class.c (mono_class_setup_methods): Use checked version of mono_class_inflate_generic_method_full
2732         so we can properly fail types instead of crashing.
2733
2734         Fixes #567676.
2735
2736 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2737
2738         * reflection.c (reflection_methodbuilder_to_mono_method): Assert in case of a broken
2739         generic method.
2740
2741 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2742
2743         * marshal.c (mono_mb_emit_restore_result): Properly handle generic enums.
2744
2745 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2746
2747         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait): Don't close the
2748         wait handle if the wait is interrupted, since it is still in mon->wait_list, and
2749         we can't remove it from it since we don't hold the lock.
2750         (mon_new): Free the orphaned events here when a mon structure is added to the
2751         freelist. Fixes #561239. Thanks to Mike Rieker <wmrieker@nii.net> for tracking
2752         this down.
2753
2754 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2755
2756         * verify.c (init_stack_with_value_at_exception_boundary): Do stack overflow checking here
2757         as max stack might be zero.
2758
2759         Fixes #562320.
2760
2761 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2762
2763         Rework all uses of mono_class_setup_methods to accept that it can fail now.
2764
2765         * class.c (mono_class_setup_methods): This function now can fail the class. Do so for generic
2766         instances if the GTD did.
2767
2768         * class.c (mono_class_setup_properties): Ditto.
2769
2770         * class.c (mono_class_setup_events): Ditto.
2771
2772         * class.c (mono_class_setup_vtable): Fail early if the type is already broken.
2773
2774         * class.c (mono_class_setup_vtable_general): Add a few more missing broken type checks. Sanitize
2775         error setting.
2776
2777         * class.c (mono_class_init): Fail if GTD did.
2778
2779         * cominterop.c:
2780         * generic-sharing.c:
2781         * icall.c:
2782         * loader.c:
2783         * object.c:
2784         * verify.c: Properly handle failure of mono_class_setup_methods.
2785
2786 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2787
2788         * class-internals.c: Add mono_class_inflate_generic_method_full_checked and make
2789         mono_class_inflate_generic_method_full internal.
2790
2791         * class.c (inflate_generic_context): Now takes a MonoError argument.
2792
2793         * class.c (mono_class_inflate_generic_method_full): Now calls the _checked and abort on
2794         errors.
2795
2796 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2797
2798         * generic-sharing.c (instantiate_other_info): Avoid creating jump trampolines since
2799         they cannot be patched. Partly fixes #564408.
2800
2801 2009-12-24  Mark Probst  <mark.probst@gmail.com>
2802
2803         * metadata-internals.h, reflection.c: Use the
2804         MonoDynamicImage.handleref hash table only with unmanaged keys,
2805         and add a managed hash table handleref_managed for managed keys.
2806
2807 2009-12-24  Mark Probst  <mark.probst@gmail.com>
2808
2809         * sgen-gc.c: Unset to-space bumper between collections.  It might
2810         become invalid due to degraded allocations.
2811
2812 2009-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
2813
2814         * loader.c (mono_method_get_signature_full): Check if the returned signature is compatible
2815         with the one from the original method.
2816
2817         * metadata-verify.c (mono_verifier_is_sig_compatible): New function to verify signature
2818         compatibility.
2819
2820         * verify-internals.h: Add new function to the internal API.
2821
2822 2009-12-18  Dimitar Dobrev  <dpldobrev@yahoo.com>
2823
2824         * culture-info-tables.h: regenerated it to include the Georgian culture.
2825
2826 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2827
2828         * sgen-gc.c: Include mono/utils/memcheck.h.
2829
2830         * reflection.c (mono_reflection_get_type_internal_dynamic): Use assembly->domain
2831         instead of the current domain, since the two might not match if this is called
2832         from the debugger.
2833
2834         * metadata-internals.h (MonoDynamicAssembly): Add a 'domain' field to specify the
2835         domain which created this assembly.
2836
2837 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2838
2839         * debug-helpers.c (dis_one): Avoid a glib assert on empty strings.
2840
2841 2009-12-17  Mark Probst  <mark.probst@gmail.com>
2842
2843         * sgen-gc.c: Managed implementation of the specialized generic
2844         store write barrier.
2845
2846 2009-12-17  Rodrigo Kumpera  <rkumpera@novell.com>
2847
2848         * icall.c (ves_icall_Type_GetMethodsByName): Don't pin virtual methods if they are newslot.
2849         A private virtual newslot method is used to implement an interface method without exposing
2850         it to users. When querying for public instance methods, such method would hide a public one
2851         on a parent type.
2852
2853         Fixes #564379.
2854
2855 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2856
2857         * reflection.c (resolve_object): Fix the encoding of unmanaged calling
2858         conventions.
2859
2860 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2861
2862         * reflection.c (mono_type_get_object): Guard against NULL generic param owner.
2863
2864 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2865
2866         * class-internals.h (MonoDynamicGenericClass): Kill property and event related fields
2867         as they are no longer used.
2868         
2869          * metadata.c (free_generic_class_dependents): Remove reference to previous fields
2870
2871         * reflection.c (mono_reflection_generic_class_initialize): Ditto.
2872
2873 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2874
2875         * reflection.c (mono_type_get_object): If the type is VAR or MVAR check
2876         if the owner class has not been finished before returning reflection_info.      
2877
2878         Fixes #565127.
2879
2880 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2881
2882         * reflection.c (mono_custom_attrs_from_param): Avoid a crash if a dynamic
2883         param doesn't have custom attributes. Fixes #565117.
2884
2885         * class.c (mono_bounded_array_class_get): Make these classes PUBLIC. Fixes
2886         #565120.
2887
2888 2009-12-15  Rodrigo Kumpera  <rkumpera@novell.com>
2889
2890         * class.c (mono_class_setup_fields): Fail valuetypes that are bigger than 1Mb.
2891
2892 2009-12-15  Rodrigo Kumpera  <rkumpera@novell.com>
2893
2894         * pedump.c: Add partial-md mode that doesn't perform full metadata verification. It does the
2895         same amount done by a core-clr enabled runtime.
2896
2897 2009-12-15  Marek Habersack  <mhabersack@novell.com>
2898
2899         * appdomain.c (mono_make_shadow_copy): make sure access mode of
2900         the target files is reset to writable by owner and readable by
2901         everyone else to prevent problems when updating shadow copies of
2902         files whose source is read-only. Fixes bug #556884
2903
2904 2009-12-15  Mark Probst  <mark.probst@gmail.com>
2905
2906         * class.c (mono_generic_class_get_class): Allocate the generic
2907         class via malloc again, so that it can be freed when any one of
2908         the images of its constituent types is closed.
2909
2910         * metadata.c: When closing an image, don't free generic insts and
2911         generic classes right away, but put them into a list for later
2912         freeing.
2913
2914         * image.c, metadata-internals.h: Store the free list and in the
2915         second pass of closing an image, free it.
2916
2917 2009-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
2918
2919         * reflection.c (mono_generic_class_get_object): Assert if this is ever called.
2920
2921         * reflection.c (mono_reflection_register_with_runtime): Only register dynamic
2922         types in type_hash.
2923
2924         * reflection.c (resolve_object): Call ensure_complete_type on the inflated field.
2925
2926 2009-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
2927
2928         * reflection.c (mono_reflection_type_get_handle): Properly fail in case of a broken
2929         user type.
2930
2931         * reflection.c (mono_reflection_register_with_runtime): Throws in case a bad user type
2932         is used.
2933
2934 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2935
2936         * verify.c (mono_method_verify): The Unused opcodes produce an
2937         InvalidProgramException on .NET
2938
2939 2009-12-14  Sebastien Pouliot  <sebastien@ximian.com>
2940
2941         * loader.c (mono_method_get_header): Move assert after the verifier
2942         has been called on the method header.
2943
2944 2009-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
2945
2946         * object-internals.h: Remove useless field from MonoReflectionGenericClass.
2947
2948         * appdomain.c: Bump corlib version.
2949
2950 2009-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
2951
2952         To properly support user types, MonoGenericClass has to be used for regular, non SRE,
2953         types as well since otherwise generic instances would not return UT as arguments but
2954         their undelying system type.
2955
2956         * object-internals.h: Change field types of MonoGenericClass and *OnTypeBuilderInst
2957         to reflect the fact that they can have now multiple different types.
2958
2959         * reflection.c (mono_image_get_field_on_inst_token): Handle MonoField.
2960
2961         * reflection.c (mono_image_get_ctor_on_inst_token): Handle MonoCMethod.
2962
2963         * reflection.c (mono_image_get_method_on_inst_token): Handle MonoMethod.
2964
2965         * reflection.c (mono_reflection_register_with_runtime): Init super types
2966         if the image is not dynamic.
2967
2968         * reflection.c (mono_reflection_bind_generic_parameters): In case of a MonoGenericClass,
2969         check if the generic type definition is a TypeBuilder.
2970
2971         * reflection.c (mono_reflection_generic_class_initialize): If the generic type definition
2972         doesn't belong to a dynamic image, skip initialization.
2973
2974         * reflection.c (resolve_object): Properly handle *OnTypeBuilderInst types where their
2975         base definition is not a dynamic type.
2976
2977 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2978
2979         * object.c (mono_ldstr, mono_ldstr_metadata_sig): added calls to
2980         mono_profiler_string_allocation
2981
2982         * string-icalls.c (ves_icall_System_String_InternalAllocateStr):
2983         if string profiling is enabled, call
2984         mono_profiler_string_allocation
2985
2986         * profiler.h: added two MonoProfileFlags -
2987         MONO_PROFILE_IOMAP_EVENTS and MONO_PROFILE_STRING_ALLOC as well as
2988         installation functions for the hooks below.
2989
2990         * profiler-private.h, profiler.c: added two hooks:
2991         mono_profiler_string_allocation called whenever a string is
2992         allocated by InternalAllocateStr and mono_profiler_iomap called
2993         whenever IOMAP code performs an adjustement on a file path.
2994
2995 Fri Dec 11 18:24:04 CET 2009 Paolo Molaro <lupus@ximian.com>
2996
2997         * boehm-gc.c: fixed race condition while getting the target of a
2998         disappearing link (bug #522233).
2999
3000 2009-12-10  Rodrigo Kumpera  <rkumpera@novell.com>
3001
3002         * class.c (mono_type_get_full): Produce warning instead of simply swallowing
3003         the error.
3004
3005 2009-12-10  Rodrigo Kumpera  <rkumpera@novell.com>
3006
3007         * reflection.c: Add mono_reflection_register_with_runtime icall to
3008         allow a MonoGenericClass to register itself as the managed mirror of
3009         a given generic instance.
3010         This is a temporary workaround until all MGC instantiation happens in
3011         managed code.
3012
3013         * object-internals.h: Ditto.
3014
3015         * icall-def.h: Ditto.
3016
3017 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3018
3019         * sgen-gc.c (find_in_remsets): Also search the generic store
3020         remsets.
3021
3022 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3023
3024         * sgen-gc.c: Don't access class names in debugging code when
3025         unloading a domain, because they might not be valid anymore.
3026
3027 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3028
3029         * domain.c, domain-internals.h: New function mono_domain_unset().
3030
3031         * appdomain.c (unload_thread_main): Detach the thread again at the
3032         end.
3033
3034         * threads.c: When a thread exists or is detached, unset its domain
3035         so that it's NULL when, for example, a pthread destructor runs.
3036
3037         * sgen-gc.c: Assert that there is no domain set after a thread is
3038         done.
3039
3040 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3041
3042         * class.c (mono_generic_class_get_class),
3043         metadata.c (free_generic_class): Allocate generic MonoClass's from
3044         the image mempool, not via malloc.  The problem with malloc is
3045         that when unloading a domain those classes are freed before
3046         clearing the heap and SGen needs the classes.  Rewriting the
3047         unloading code to do the free later would be more work and there's
3048         no point in using malloc anyway.
3049
3050 2009-12-09  Sebastien Pouliot  <sebastien@ximian.com>
3051
3052         * loader.c (mono_method_signature): Always call mono_loader_unlock 
3053         before returning.
3054
3055 2009-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3056
3057         * metadata-verify.c: Add mono_verifier_verify_string_signature to check
3058         user string blobs.
3059
3060         * verify-internals.h: Add new function to the internal API.
3061
3062         * verify.c (do_ldstr): Call into mono_verifier_verify_string_signature to
3063         check if it's a valid string.
3064
3065         * object.c (mono_ldstr): Ditto.
3066
3067         Fixes #561943.
3068
3069 2009-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3070
3071         * icall.c (ves_icall_GetCurrentMethod): Drop all generic arguments
3072         from a method before returning it. This is the expected behavior.
3073
3074 2009-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3075
3076         * reflection.c (inflate_method): Handle the case of a regular system type.
3077
3078 2009-12-08  Mark Probst  <mark.probst@gmail.com>
3079
3080         * sgen-gc.c, sgen-pinning-stats.c, sgen-gray.c: More statistics
3081         gathering code.
3082
3083         * mempool.c, mempool-internals.h: New function
3084         mono_mempool_get_bytes_allocated().
3085
3086         * Makefile.am: sgen-pinning-stats.c added.
3087
3088 2009-12-08  Mark Probst  <mark.probst@gmail.com>
3089
3090         * sgen-gc.c (create_allocator): Only use the fast path if the
3091         object size is within the small object size limit.
3092
3093 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3094
3095         * sgen-gc.c: Make sure section->data is aligned to 8 bytes by
3096         possibly adding padding to sizeof (GCMemSection).
3097
3098 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3099
3100         * sgen-gc.c (mono_gc_wbarrier_nostore): Skip the remset if the
3101         reference is not in the nursery.
3102
3103 2009-12-07  Rodrigo Kumpera  <rkumpera@novell.com>
3104
3105         * class.c (mono_class_from_typeref): Bounds check idx against the 
3106         assemblyref table.
3107
3108 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3109
3110         * sgen-gc.c, sgen-pinning.c: When pinning, make only one pass
3111         through the potential roots, then sort the results and find the
3112         pinned objects from there.
3113
3114         * Makefile.am: sgen-pinning.c added.
3115
3116 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3117
3118         * sgen-gc.c: Record generic stores in specialized remset buffers.
3119
3120 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3121
3122         * sgen-gc.c: Make pinned chunks the same size as major heap
3123         sections, and align them as well, so that we can check whether an
3124         object is in a pinned chunk or a major section in constant time.
3125
3126 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3127
3128         * sgen-gc.c (build_nursery_fragments): Don't leak fragments.
3129
3130 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3131
3132         * sgen-gc.c: Make all major heap sections the same size (currently
3133         128k) and allocate them on aligned addresses.  Small heap sections
3134         give us better granularity with pinned objects - we can free up
3135         much more memory.
3136
3137 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3138
3139         * string-icalls.c (ves_icall_System_String_GetLOSLimit): Debug
3140         output removed.
3141
3142 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3143
3144         Applied patch from Laurent Etiemble (laurent.etiemble@gmail.com).
3145
3146         * mono/metadata/assembly.c: When opening an assembly image, pass the real
3147         names in addition to the runtime generated one.
3148
3149         * mono/metadata/image.h: Add a function to take the real name of the assembly
3150         image.
3151
3152         * mono/metadata/image.c: If a real name has been passed to load an assembly,
3153         use it instead of the runtime generated one.
3154
3155         Code is contributed under MIT/X11 license.
3156
3157 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3158
3159         * marshal.c (emit_marshal_vtype): Do the klass == date_time_class checks
3160         before the other checks to prevent problems if the DateTime class is blittable.
3161         Hopefully fixes #559600.
3162
3163 2009-12-05  Mark Probst  <mark.probst@gmail.com>
3164
3165         * string-icalls.c, string-icalls.h, icall-def.h: New icall that
3166         returns the largest string length that will not be put into the
3167         LOS.
3168
3169         * sgen-gc.c, gc-internal.h: New function that returns the largest
3170         object size that will not be put into the LOS.
3171
3172         * appdomain.c: Bump corlib version.
3173
3174 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3175
3176         * class-internals.h: Add MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
3177
3178         * generic-sharing.c: Handle MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
3179
3180 2009-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3181
3182         * reflection.c (inflate_method): Fix signature.
3183
3184         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Reflect change
3185         in managed code.
3186
3187 2009-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3188
3189         * reflection.c (inflate_method): Make this method work with TypeBuilder as well.
3190
3191 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3192
3193         * sgen-gc.c: Abstract to-space handling.
3194
3195 2009-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
3196
3197         * loader.c (find_method_in_class): Ignore methods with broken signatures.
3198
3199         Fixes #559906.
3200
3201 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3202
3203         * sgen-gc.c: Only add references from outside the nursery to
3204         within the nursery to the global remset list.
3205
3206 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3207
3208         * appdomain.c (create_exceptions): Set the domain temporarily if
3209         necessary to avoid cross-domain references.
3210
3211 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3212
3213         * verify.c (get_stack_type): Return that the type is invalid instead of
3214         asserting.
3215
3216         * verify.c (mono_method_verify): Verify that all locals and arguments
3217         have valid stack types.
3218
3219         Fixes #559913.
3220
3221 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3222
3223         * verify.c (mono_method_verify): Bounds check the filter offset. Make all
3224         bounds checking overflow aware.
3225
3226         Fixes #559910.
3227
3228 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3229
3230         * verify.c (do_invoke_method): Check for invalid method signatures.
3231
3232         Fixes #553450.
3233
3234 2009-12-02  Jb Evain  <jbevain@novell.com>
3235
3236         * appdomain.c (MONO_CORLIB_VERSION): bump.
3237         * icall-def.h (get_base_definition): renamed to get_base_method
3238         and add a boolean argument indicating we want the original
3239         method definition, or the immediate base method.
3240         * icall.c: apply the get_base_definition to get_base_method change.
3241
3242 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3243
3244         * class.c (mono_class_setup_fields): Fail an enum without an instance field.
3245
3246         Fixes #558042.
3247
3248 Wed Dec 2 16:35:49 CET 2009 Paolo Molaro <lupus@ximian.com>
3249
3250         * class.c: remove asserts for invalid type token in
3251         mono_class_name_from_token(), mono_assembly_name_from_token() and
3252         mono_class_create_from_typedef () (fixes bug #553318).
3253
3254 Wed Dec 2 15:48:19 CET 2009 Paolo Molaro <lupus@ximian.com>
3255
3256         * metadata.c, class.c, loader.c: remove assert after bsearch() for
3257         incorrect assemblies (bug #553322).
3258
3259 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3260
3261         * metadata.c (mono_metadata_inflate_generic_inst): Add MonoError parameter.
3262
3263         * metadata-internals.h: Change signature of mono_metadata_inflate_generic_inst. 
3264
3265         * class.c (inflate_generic_type): Use new version of mono_metadata_inflate_generic_inst.
3266
3267         * class.c (inflate_generic_context): Ditto.
3268
3269         * loader.c (method_from_methodspec): Ditto.
3270
3271         Fixes #558230.
3272
3273 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3274
3275         * class.c (mono_type_retrieve_from_typespec): Use MonoError machinery to report errors.
3276
3277         * class.c (mono_class_create_from_typespec): Ditto.
3278
3279         * class.c (mono_class_get_full): Fix for change on the above 2 functions.
3280
3281         * class.c (mono_type_get_full): Fix for change on the above 2 functions.
3282
3283         Fixes #558184.
3284
3285 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3286
3287         * verify.c (mono_class_has_default_constructor): Check fror broken signatures.
3288
3289         * verify.c (verify_delegate_compatibility): Ditto.
3290
3291         * verify.c (do_newobj): Ditto.
3292
3293         Fixes #558046.
3294
3295 2009-12-02  Mark Probst  <mark.probst@gmail.com>
3296
3297         * sgen-gc.c: Use a gray queue instead of requiring that gray
3298         objects are in a contiguous region.
3299
3300         * sgen-gray.c: The gray queue implementation.
3301
3302         * Makefile.am: sgen-gray.c added.
3303
3304 2009-12-02  Mark Probst  <mark.probst@gmail.com>
3305
3306         * appdomain.c: When unloading a domain, zero its static data and
3307         perform a minor collection when using SGen.  That will get rid of
3308         all the remsets pointing into that domain's static data.
3309
3310         * sgen-gc.c: Allow remsets into static data.  By doing this we
3311         need less checks so we're more efficient.
3312
3313 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3314
3315         * verify.c (mono_method_verify): Check for catch clauses with broken
3316         types.
3317
3318         Fixes #558465.
3319
3320 2009-12-01  Jb Evain  <jbevain@novell.com>
3321
3322         * class.c (make_generic_param_class): set the namespace of
3323         the generic parameter class from its owner, if available.
3324
3325 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3326
3327         * verify.c (code_bounds_check): Do proper overflow checking.
3328
3329         * verify.c (mono_method_verify): The number of switch entries is
3330         an unsigned int. Properly bounds check it.
3331
3332         Fixes #558594.
3333
3334 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3335
3336         * metadata.c: Kill mono_metadata_get_param_attrs_checked. Add
3337         mono_metadata_method_has_param_attrs which only checks if a given param
3338         list has a non zero flags entry.
3339
3340         * metadata.c (mono_metadata_get_param_attrs): Add param_count parameter
3341         to inform how many params should we expect to decode.
3342
3343         * loader.c (mono_method_signature): Use mono_metadata_method_has_param_attrs
3344         as it's faster than mono_metadata_get_param_attrs.
3345
3346         * metadata-internals.h: Fix mono_metadata_get_param_attrs signature and
3347         add mono_metadata_method_has_param_attrs.
3348
3349 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3350
3351         * class.c (mono_class_setup_vtable_general): Check for mono_method_get_vtable_slot
3352         failures.
3353
3354         * class.c (mono_method_get_vtable_slot): Don't assert if the computed method slot
3355         is -1 but its class is broken.
3356
3357         Fixes #558522.
3358
3359 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3360
3361         * metadata.c: Introduce mono_metadata_get_param_attrs_checked which checks
3362         for parameter overflow.
3363
3364         * metadata.c (mono_metadata_parse_method_signature_full): Use checked version
3365         of mono_metadata_get_param_attrs.
3366
3367         * metadata-internals.h: Add mono_metadata_get_param_attrs_checked to the internal
3368         API.
3369
3370         * loader.c (mono_method_signature): Use checked version of mono_metadata_get_param_attrs.
3371
3372 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3373
3374         * class.c (mono_class_setup_fields): Check for fields with broken types.
3375
3376         Fixes #558741.
3377
3378 2009-11-28  Rodrigo Kumpera  <rkumpera@novell.com>
3379
3380         * reflection.c (ensure_generic_class_runtime_vtable): Split this function in 2
3381         so we can avoid calling ensure_runtime_vtable multiple times for the GTD during
3382         its TypeBuilder::CreateType ().
3383
3384         * reflection.c (ensure_generic_class_runtime_vtable): Avoid initializing interfaces
3385         if not needed.
3386
3387         * reflection.c: Every time we change the interface array, set interfaces_packed to NULL
3388         to make setup_interface_offsets happy.
3389
3390         * reflection.c (remove_instantiations_of_and_ensure_contents): Fix instances again as corlib
3391         compilation now works.
3392
3393 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
3394
3395         * appdomain.c (create_exceptions): New helper function extracted from
3396         mono_runtime_init () to precreate objects used during exception handling.
3397         (mono_runtime_init): Call it.
3398         (mono_domain_create_appdomain_internal): Ditto. Fixes #555264.
3399
3400 2009-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3401
3402         * reflection.c (remove_instantiations_of_and_ensure_contents): Temp hack to fix corlib
3403         compilation until the proper one is found.
3404
3405 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
3406
3407         * class.c (mono_class_setup_vtable_general): Cache the result of
3408         get_virtual_methods () since it can be slow because of the metadata
3409         optimization.
3410
3411         * metadata-internals.h (_MonoImage): Change 'method_cache' to a GHashTable
3412         from a MonoValueHashTable for now, since the later is based on an earlier
3413         version of hpj's internal probing code and seems to have serious collision
3414         issues.
3415
3416         * loader.c (mono_get_method_full): Update after the change above.
3417
3418 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3419
3420         * class-internals.h (MonoCachedClassInfo): Add 'is_generic_container' field.
3421
3422 2009-11-26  Rodrigo Kumpera  <rkumpera@novell.com>
3423
3424         * reflection.c (get_field_on_inst_generic_type): Try to fallback using the field from
3425         the GTD instead of the DGC instead of crashing.
3426
3427         * reflection.c (ensure_generic_class_runtime_vtable): Only reinflate stuff that is
3428         required. Inflate fields if needed.
3429
3430         * reflection.c (remove_instantiations_of): Ensure generic instances are properly
3431         finished. Renamed.
3432
3433 2009-11-26  Rodrigo Kumpera  <rkumpera@novell.com>
3434
3435         * class.c (check_interface_method_override): Check for NULL signatures and fail
3436         the type.
3437
3438         * debug-helpers.c (mono_signature_get_desc): Return a fixed string for NULL signatures.
3439
3440         Fixes #553428.
3441
3442 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3443
3444         * class.c (mono_class_get_virtual_methods): Call decode_row_col to obtain
3445         the MONO_METHOD_FLAGS column instead of decoding the whole row.
3446
3447 2009-11-25  Rodrigo Kumpera  <rkumpera@novell.com>
3448
3449         * loader.c (field_from_memberref): Resolve the class first then the field
3450         signature. Remove a lot of duplicated code and make sure we don't pass valid
3451         values to mono_loader_set_error_field_load.
3452
3453         Fixes #553306.
3454
3455 2009-11-25  Rodrigo Kumpera  <rkumpera@novell.com>
3456
3457         * class.c (inflate_generic_type): Change code to use new signature of
3458         mono_error_set_bad_image.
3459
3460         Fixes #558124.
3461
3462 2009-11-25  Sebastien Pouliot  <sebastien@ximian.com> 
3463
3464         * verify.c (mono_method_verify): Don't free ctx.params items if 
3465         we aborted while inflating the ctx.locals. Complete previous fix
3466
3467 2009-11-25  Sebastien Pouliot  <sebastien@ximian.com>
3468
3469         * verify.c (mono_method_verify): Use the uninflated type name, 
3470         when the inflated is null, to report errors. Also take care when
3471         freeing, not to free everything since, in case of an error, some
3472         stuff would be copies (i.e. not allocated by the function itself)
3473         Fix bug #558145
3474
3475 2009-11-24  Rodrigo Kumpera  <rkumpera@novell.com>
3476
3477         * verify.c (stack_push, stack_pop, stack_pop_safe): Assert if we underflow
3478         or overflow. The caller must have done this check explicitly. This guard us
3479         from accessing invalid memory.
3480
3481         * verify.c (do_push_static_field): Check for stack overflow.
3482
3483         Fixes #553333.
3484
3485 2009-11-24  Rodrigo Kumpera  <rkumpera@novell.com>
3486
3487         * loader.c (find_method_in_class): Don't crash if the signature cannot
3488         be resolved.
3489
3490         * metadata.c (mono_metadata_parse_generic_param): Return NULL instead
3491         of asserting for the case of invalid params.
3492
3493         Fixes #553304.
3494
3495 2009-11-24  Sebastien Pouliot  <sebastien@ximian.com>
3496
3497         * image.c (mono_image_load_module): Fix crash when a bad assembly
3498         has no module at all (fix bug #553412) and also replace the 
3499         g_assert with a return NULL (documented return value for failure)
3500
3501 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
3502
3503         * debug-helpers.c (mono_type_get_desc): Handle typedbyref.
3504
3505 2009-11-23  Miguel de Icaza  <miguel@novell.com>
3506
3507         * file-io.c: Change FindFirst/FindNext/FindClose API to return the
3508         file attribute to managed code and avoid doing the mask/attribute
3509         checks here. 
3510
3511 2009-11-22  Miguel de Icaza  <miguel@novell.com>
3512
3513         * file-io.c: Surface a smart FindFirst/FindNext/FindClose API to
3514         the managed world.
3515
3516         * icall-def.h: New entry points.
3517         
3518 2009-11-19  Mark Probst  <mark.probst@gmail.com>
3519
3520         * process.c: Don't put references to managed objects into a
3521         g_ptr_array.
3522
3523 2009-11-18  Sebastien Pouliot  <sebastien@ximian.com>
3524
3525         * class.c (can_access_internals): Allow CoreCLR to participate in
3526         allowing (or not) [InternalsVisibleTo] between assemblies.
3527         * security-core-clr.c|h: Make sure that only trusted code (a 
3528         superset of platform code) can access the internals of platform
3529         code.
3530
3531 Mon Nov 16 16:28:11 CET 2009 Paolo Molaro <lupus@ximian.com>
3532
3533         * reflection.c: use the correct base class to get the virtual method
3534         "get_UnderlyingSystemType" and speed up the icall. Fixes bug #555013.
3535
3536 2009-11-16  Sebastien Pouliot  <sebastien@ximian.com>
3537
3538         * security-core-clr.c (get_caller_no_reflection_related): 
3539         [Mono]Type.InvokeMember is outside System.Reflection[.Emit] but
3540         it's still reflection and must be filtered correctly.
3541
3542 2009-11-16  Mark Probst  <mark.probst@gmail.com>
3543
3544         * object.c (compute_class_bitmap): Fix for large bitmaps.
3545
3546 2009-11-15  Zoltan Varga  <vargaz@gmail.com>
3547
3548         (mono_gc_get_suspend_signal): Fix the build with a system libgc.
3549
3550         * boehm-gc.c (mono_gc_base_init): Applied patch from DKoushik K. Dutta (
3551         koush@koushikdutta.com). Disable GC_no_dls on android.
3552
3553 2009-11-12  Mark Probst  <mark.probst@gmail.com>
3554
3555         * sgen-gc.c (find_tlab_next_from_address): Handle the case where
3556         tlab_next points outside the TLAB because the allocator was
3557         interrupted.
3558
3559 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3560
3561         * reflection.c (mono_image_module_basic_init): Handle exceptions correctly.
3562
3563 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3564
3565         * object-internals.h: Change signature for mono_string_to_utf8_image.
3566
3567         * object.c (mono_string_to_utf8_image): Change signature to take a MonoError
3568         argument.
3569
3570         * reflection.c: Take care of mono_string_to_utf8_image change and avoid raising
3571         exceptions due to mono_string_to_utf8.
3572
3573 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3574
3575         * object-internals.h: Change signature for mono_string_to_utf8_mp.
3576
3577         * object.c (mono_remote_class): Make sure all resources are released before
3578         raising an exception.
3579
3580         * object.c (mono_print_unhandled_exception): Avoid raising an exception.
3581
3582 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3583
3584         * mono-perfcounters.c (network_get_impl): Change variable initialization
3585         ordering to fix potential memory leak in case of exceptions.
3586
3587         * mono-perfcounters.c (mono_perfcounter_create): Properly handle badly
3588         encoded strings.
3589         
3590 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3591
3592         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): Change
3593         variable initialization ordering to fix potential memory leak in case
3594         of exceptions.
3595
3596 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3597
3598         * icall.c (mono_ArgIterator_Setup): Remove the MONO_ARCH_REGPARMS stuff, its not
3599         needed.
3600
3601 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3602
3603         * appdomain.c: Fix shadow path code to better deal with exceptions.
3604
3605 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3606
3607         * appdomain.c: Use checked version of mono_string_to_utf8 to avoid raising an
3608         exception in the middle of the runtime code.
3609
3610 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3611
3612         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): Don't
3613         leak memory with broken envvar value.
3614
3615 2009-11-06  Mark Probst  <mark.probst@gmail.com>
3616
3617         * reflection.c (mono_reflection_setup_internal_class): Because
3618         nested classes are not added to the name cache, we must put them
3619         in the reflection_info_unregister_classes list.
3620
3621 2009-11-05  Sebastien Pouliot  <sebastien@ximian.com>
3622
3623         * class.c: When CoreCLR is enabled don't call mono_init_com_types
3624         if MONO_CLASS_IS_IMPORT return true unless the type reside in 
3625         platform (trusted) code. Instead we return a TypeLoadException to
3626         be thrown later. This is the exception thrown by Silverlight 2 if
3627         a type, inside application (user) code is marked with [ComImport]
3628
3629 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3630
3631         * icall.c (ves_icall_System_Diagnostics_Debugger_IsAttached_internal): Call
3632         mono_is_debugger_attached () too.
3633
3634         * mono-debug.c (mono_is_debugger_attached): New helper function.
3635         (mono_set_is_debugger_attached): Ditto.
3636
3637 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3638
3639         * object-internals.h: Add mono_string_to_utf8_checked.
3640
3641         * object.c: Implement mono_string_to_utf8_checked.
3642
3643 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3644
3645         * class.c: Add missing check for load errors after every
3646         call to mono_class_setup_fields
3647
3648         Fixes #552282.
3649
3650 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3651
3652         metadata-verify.c (verify_tables_schema): Fix the error message.
3653
3654 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3655
3656         * metadata.c: Change event table schema to use TDOR for event type
3657         as this is what it's meant to be.
3658
3659         * metadata.c (mono_metadata_compute_size): Change MONO_TABLE_ASSEMBLYPROCESSOR
3660         to MONO_TABLE_ASSEMBLYREFPROCESSOR, which is table that has a MONO_MT_TABLE_IDX
3661         entry.
3662
3663         * metadata.c (mono_metadata_compute_size): Trim MT_TABLE_IDX of code that no
3664         longer makes sense: remove MONO_TABLE_EVENT and remove checks for non-existent
3665         rows in MONO_TABLE_GENERICPARAM.
3666
3667         Fixes #552289.
3668
3669 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3670
3671         * class.c (mono_image_add_to_name_cache): Assert on duplicate
3672         insertion.
3673
3674         * reflection.c (mono_reflection_setup_internal_class): Avoid
3675         registering a gc root the same MonoClass multiple times.
3676         Don't register nested types on the global scope as they should
3677         not be available there.
3678
3679 2009-11-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3680
3681         * culture-info-tables.h: regenerated.
3682
3683 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3684
3685         * debug-helpers.c: avoid g_strdup() in mono_type_full_name().
3686
3687 2009-11-04  Sebastien Pouliot  <sebastien@ximian.com>
3688
3689         * string-icalls.c|h: Remove string internal calls that are not 
3690         used anymore by the class libraries.
3691         * icall.c: Remove System_Reflection_FieldInfo_internal_from_handle
3692         which is not used in the class librairies.
3693         * icall-def.h: Update tables.
3694
3695 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3696
3697         * class.h: Move mono_class_inflate_generic_type_checked...
3698
3699         * class-internals.h: to here and make it internal. We don't want to
3700         further expose MonoGenericContext. 
3701
3702 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3703
3704         * verify.c (mono_method_verify): Improve error message.
3705
3706 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3707
3708         * reflection.c (fieldref_encode_signature): If field_image is NULL then
3709         the token is already properly encoded. Fixs 4.0 build.
3710
3711 2009-11-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3712
3713         * locales.c (construct_number_format): Check if the number index is
3714         valid before trying to use it, if not, just return.
3715         
3716 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3717
3718         * marshal.c (mono_marshal_get_runtime_invoke): Don't reset abort exceptions,
3719         since that loses the abort state. Fixes #539394.
3720
3721 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3722
3723         * marshal.c (mono_marshal_get_native_wrapper): For icall wrappers, add an
3724         explicit this argument to the call signature.
3725         (mono_marshal_get_icall_wrapper): Ditto.
3726
3727 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3728
3729         * reflection.c (fieldref_encode_signature): Add new field_image parameter
3730         to indicate which assembly to use when resolving a custom-mod.
3731
3732         Fixes handling of volatile fields used across assemblies as reported in #551513.
3733
3734 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3735
3736         * loader.c: Improve error messages.
3737
3738 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3739
3740         * class.c (mono_class_setup_methods): Only give a slot for virtual methods
3741         of interfaces. Fixes IKVM.
3742
3743         * class.c (mono_class_setup_vtable_general): Improve debug spew.
3744
3745 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3746
3747         * verify.c (verifier_inflate_type): Return the inflated type on success.
3748
3749 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3750
3751         * debug-mono-symfile.c (check_line): Fix the handling of IL offset 0.
3752
3753         * threads.c (mono_thread_attach): Call the profiler thread start callback.
3754
3755         * object-internals.h (_MonoThreadInternal): Add a 'flags' field.
3756
3757         * threads.c (build_wait_tids): Ignore threads which have the DONT_MANAGE
3758         flag set.
3759
3760         * profiler.c: Add new profiler callbacks for runtime invoke.
3761
3762         * object.c (mono_runtime_invoke): Call the runtime invoke callbacks.
3763
3764 2009-11-01  Mark Probst  <mark.probst@gmail.com>
3765
3766         * sgen-gc.c: Keep track of the reason for a major collection and
3767         write it to the heap-dump file.
3768
3769 2009-10-31  Miguel de Icaza  <miguel@novell.com>
3770
3771         * threads.c: refactor the code that initializes the
3772         thread_start_args into a reusable function and use this in the two
3773         methods that start up threads.
3774
3775 2009-10-31  Zoltan Varga  <vargaz@gmail.com>
3776
3777         * appdomain.c (mono_domain_try_unload): Applied patch from Romain Tartière.
3778         Fix returning when WaitForSingleObjectEx returns WAIT_IO_COMPLETION.
3779
3780 2009-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3781
3782         * mono-perfcounters.c: add the "_Total" instance for CPU counters.
3783         Until now, we only had the per-cpu(core) counters.
3784
3785 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3786
3787         * gc-internal.h, boehm-gc, sgen-gc.c, null-gc: Add
3788         mono_gc_get_suspend_signal(), which returns the suspend signal
3789         number used by the GC.
3790
3791 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3792
3793         * threads.c (start_wrapper): Avoid an assert if thread_start_args () is NULL.
3794
3795         * threads.c (start_wrapper): Call mono_profiler_thread_start () later after
3796         signalling start_notify.
3797
3798 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
3799
3800         * appdomain.c: do not test the st_mode field for shadow-copies.
3801         Fixes bug #545276.
3802
3803 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
3804
3805         * threadpool.[ch]: added hooks for thread start/finish and item
3806         processing begin/end. For monotouch use only.
3807
3808 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3809
3810         * threads.c (mono_thread_get_name): New helper function.
3811
3812         * reflection.c (resolve_object): Set handle_class for strings too.
3813         (mono_reflection_create_custom_attr_data_args): New helper function to decode
3814         a cattr blob into a set of arrays and structures without creating the custom
3815         attributes themselves.
3816         (create_custom_attr_data): Simplify using create_custom_attr_data_args.
3817
3818         * mono-debug.c (mono_debug_il_offset_from_address): New helper function.
3819
3820         * debug-mono-symfile.c (mono_debug_symfile_get_line_numbers): New helper
3821         function.
3822
3823 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3824
3825         * verify.c: Replace calls to mono_class_inflate_generic_type with
3826         mono_class_inflate_generic_type_checked. Fixes #480005.
3827
3828 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3829
3830         * class.c (mono_class_inflate_generic_type_with_mempool): Clear the error
3831         object since not all paths lead to callees initing it.
3832
3833 2009-10-23  Alp Toker  <alp@nuanti.com>
3834
3835         Fix embedding API breakage from r144688. mono-compiler.h is an internal
3836         header and should not be shipped:
3837
3838         * class.h: Back out MONO_DEPRECATED change. Currently depends on config.h
3839         which is specific to the mono build. Not going to work.
3840
3841 2009-10-23  Sebastien Pouliot  <sebastien@ximian.com>
3842
3843         * security-manager.c: Report if core-clr is active from
3844         ves_icall_System_Security_SecurityManager_get_SecurityEnabled
3845         to allow Moonlight BCL to behave appropriately (both in browser
3846         and outside, e.g. smcs)
3847
3848 2009-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
3849
3850         * mono-config.c: ignore UTF-8 BOM and report parser errors.
3851         Fixes bug #549108.
3852
3853 2009-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3854
3855         * class.c: fix typo.
3856
3857 2009-10-22  Rodrigo Kumpera  <rkumpera@novell.com>
3858
3859         * class-internals.h: Change signature of mono_class_inflate_generic_type_with_mempool to take
3860         a MonoError parameter.
3861
3862         * class.h: Mark mono_class_inflate_generic_type deprecated, add new mono_class_inflate_generic_type_checked
3863         version that can does proper error handling.
3864
3865         * class.c (inflate_generic_type): Add a MonoError parameter. Don't assert on error, use new mono error machinery.
3866
3867         * class.c (mono_class_inflate_generic_type_with_mempool): Add new MonoError parameter.
3868
3869         * class.c, generics-sharing.c: Changes to handle mono_class_inflate_generic_type_with_mempool new signature.
3870
3871 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
3872
3873         * debug-helpers.c (dis_one): Fix the disassembly of empty strings when
3874         NO_UNALIGNED_ACCESS is defined.
3875
3876 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3877
3878         * marshal.c (mono_string_builder_to_utf16): Applied patch from
3879         Hib Eris  <hib@hiberis.nl>. Return empty string for empty string builders.
3880         Fixes #549173.
3881
3882 2009-10-22  Mark Probst  <mark.probst@gmail.com>
3883
3884         * sgen-gc.c: Shorten sections whenever possible.
3885
3886 2009-10-22  Mark Probst  <mark.probst@gmail.com>
3887
3888         * sgen-gc.c: Use our portable semaphore #defines.
3889
3890 2009-10-22  Mark Probst  <mark.probst@gmail.com>
3891
3892         * sgen-gc.c: A debug option for dumping the heap layout to a file
3893         after each collection.
3894
3895 2009-10-21  Mark Probst  <mark.probst@gmail.com>
3896
3897         * sgen-gc.c: Make managed write barriers atomic via
3898         thread-restarts.
3899
3900 2009-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3901
3902         * verify.c (verify_delegate_compatibility): Properly verify delegate creation of static
3903         methods. Fixes #543021.
3904
3905 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
3906
3907         * socket-io.[ch]: fix VS build.
3908
3909 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
3910
3911         * icall-def.h:
3912         * socket-io.[ch]: implemented SendFile.
3913
3914 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
3915
3916         * class.c (mono_class_create_from_typedef): Initialize class->element_class
3917         before the interfaces to avoid crashes later if class initialization fails.
3918         Fixes #548417.
3919
3920         * marshal.c (emit_marshal_vtype): Implement byref marshalling of DateTime.
3921         Fixes #548276.
3922
3923 2009-10-20  Marek Safar  <marek.safar@gmail.com>
3924
3925         * domain.c: Bump 4.0 version.
3926
3927 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3928
3929         * assembly.c (mono_assembly_load_reference): Fix leak when 'status'
3930         code is known. (parse_public_key) Remove duplicate (unneeded) NULL
3931         check since 'pubkey' can't be NULL at this stage
3932         * icall.c (ves_icall_System_Array_FastCopy): Add comment about
3933         the check. (ves_icall_Type_GetInterfaceMapData) Remove duplicate
3934         initialization of 'iter'
3935
3936 2009-10-16  Bill Holmes  <billholmes54@gmail.com>
3937
3938         * cominterop.c : Search the interface parts of vtable to find 
3939           method matches.  Fixes 547030.
3940
3941         Code is contributed under MIT/X11 license.
3942
3943 2009-10-15 Gonzalo Paniagua Javier <gonzalo@novell.com>
3944
3945         * marshal.c: BeginInvoke cannot be called on multicast delegates with
3946         multiple targets. Fixes bug #574426.
3947
3948 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3949
3950         * profiler.h: Put here the definition of
3951         MONO_PROFILER_MAX_STAT_CALL_CHAIN_DEPTH
3952         (and fix the build...).
3953
3954 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3955
3956         * profiler.c, profiler.h, profiler-private.h:
3957         Added support for different ways of getting call chains in stat mode.
3958
3959 2009-10-12  Mark Probst  <mark.probst@gmail.com>
3960
3961         * object.c, object-internals.h: New function for computing the
3962         size of an array, factored out of mono_array_new_full().  Use
3963         SGen's functions for allocating arrays and vectors.
3964
3965         * sgen-gc.c, gc-internal.h: Special functions for allocating
3966         arrays and vectors without race conditions.  A managed array
3967         allocator method.
3968
3969         * boehm-gc.c, null-gc.c: Don't provide a managed array allocator.
3970
3971 2009-10-12  Mark Probst  <mark.probst@gmail.com>
3972
3973         * object.c, object.h, icall.c: Write barriers do the copying now,
3974         as well, so no need for an additional memcpy.
3975
3976         * sgen-gc.c: Lock when storing remsets.  Do the memory
3977         copying/moving in the write barriers.
3978
3979         * null-gc.c, boehm-gc.c: Write barriers must copy here, too.
3980
3981         * reflection.c: Added an assert.
3982
3983 2009-10-12  Mark Probst  <mark.probst@gmail.com>
3984
3985         * threads.c, process.c: A few missing write barriers.
3986
3987 2009-10-12  Joel W. Reed <joelwreed@gmail.com>
3988
3989         * mono-perfcounters.c, mono-perfcounters-def.h: Add
3990         network performance counters for bytes sent per second, bytes
3991         received per second, and bytes total per second.
3992
3993         Code is contributed under MIT/X11 license.
3994
3995 2009-10-09  Mark Probst  <mark.probst@gmail.com>
3996
3997         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
3998         Fix warning.
3999
4000 2009-10-09  Mark Probst  <mark.probst@gmail.com>
4001
4002         * threads.c, object-internals.h, object.c: Move code for
4003         transferring an object to a different domain (via
4004         serialization/remoting) to object.c.
4005
4006         * object.c (call_unhandled_exception_delegate): If the exception
4007         is in a different domain than the delegate, transfer the exception
4008         to that domain.
4009
4010 2009-10-07  Zoltan Varga  <vargaz@gmail.com>
4011
4012         * marshal.c (emit_marshal_vtype): Emit marshalling of DateTime to OLE DATE.
4013         Fixes #322934.
4014
4015 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
4016
4017         * domain.c (DEFAULT_RUNTIME_VERSION): Change this to v2.0.
4018
4019 2009-10-06  Mark Probst  <mark.probst@gmail.com>
4020
4021         * object.c (mono_method_return_message_restore): Handle the case
4022         where the argument is an instance of a generic type.  Fixes
4023         #544446.
4024
4025 2009-10-06  Mark Probst  <mark.probst@gmail.com>
4026
4027         * object.c (set_value): Write barrier fix - we must pass the
4028         count, not the size.
4029
4030 2009-10-05  Zoltan Varga  <vargaz@gmail.com>
4031
4032         * domain.c (mono_init_internal): Print a useful error message when encountering
4033         an old mscorlib, instead of crashing. Fixes #544307.
4034
4035 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
4036
4037         * appdomain.c (copy_app_domain_setup): Fix a warning.
4038
4039         * debug-helpers.c (dis_one): Ditto.
4040
4041 2009-10-04  Mark Probst  <mark.probst@gmail.com>
4042
4043         * domain-internals.h, appdomain.c: The AppDomainSetup is copied
4044         into the new domain, instead of referencing the original one.
4045
4046         * marshal.c, marshal.h: Make mono_marshal_xdomain_copy_value()
4047         non-static.
4048
4049         * appdomain.c: Corlib version bump.
4050
4051 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
4052
4053         * threadpool.c: one more...
4054
4055 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
4056
4057         * threadpool.c: forgot a LeaveCriticalSection when telling the idle
4058         threads to die because we're shutting down. delgate5.exe works again.
4059
4060 2009-10-01  Bill Holmes  <billholmes54@gmail.com>
4061
4062         * cominterop.c (mono_marshal_free_ccw_entry): Updating the
4063           ccw_interface_hash table when a ccw is finalized.
4064
4065         Code is contributed under MIT/X11 license.
4066
4067 2009-09-30  Mark Probst  <mark.probst@gmail.com>
4068
4069         * assembly.c, domain.c, image.c, metadata-internals.h: Split
4070         domain and image unloading into two steps.  We must do this
4071         because clearing the domain in SGen requires the class metadata to
4072         be intact, but we need to free the mono_g_hash_tables in case a
4073         collection occurs during domain unloading and the roots would trip
4074         up the GC.
4075
4076 2009-09-30  Mark Probst  <mark.probst@gmail.com>
4077
4078         * object-internals.h: Remove serialized culture fields from
4079         MonoInternalThread.
4080
4081         * icall-def.h, thread-types.h, threads.c: Remove serialized
4082         culture icalls.
4083
4084         * appdomain.c: Corlib version bump.
4085
4086 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
4087
4088         * marshal.c (emit_marshal_object): Emit out marshalling of stringbuilders.
4089         Fixes #543133.
4090
4091 2009-09-30  Mark Probst  <mark.probst@gmail.com>
4092
4093         * sgen-gc.c: Try to shorten the new section after a major
4094         allocation to avoid ever-growing sections.
4095
4096 2009-10-13  Martin Baulig  <martin@ximian.com>
4097
4098         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
4099         `MONO_DEBUGGER_EVENT_TRAMPOLINE' into
4100         `MONO_DEBUGGER_EVENT_OLD_TRAMPOLINE' and added a new
4101         `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
4102
4103         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 4.
4104
4105 2009-09-29 Gonzalo Paniagua Javier <gonzalo@novell.com>
4106
4107         * threadpool.c: fixed the order in which 'completed' and the wait
4108         handle, if any, are set.  Fixes bug #542933 and delegate2.exe
4109         No need to use the wait_handle field of ASyncCall. Make sure the
4110         threadpool is active when adding a job or queueing an idle thread.
4111
4112 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
4113
4114         * object.c (mono_unhandled_exception): Fix a crash if there is no main thread.
4115
4116         * threads.c (build_wait_tids): Fix a crash if there is no main thread, like
4117         when using --compile-all.
4118
4119 2009-09-27  Mark Probst  <mark.probst@gmail.com>
4120
4121         * metadata.c (free_generic_class): Unregister the field_objects
4122         roots if we're using SGen.
4123
4124 2009-09-27  Mark Probst  <mark.probst@gmail.com>
4125
4126         * reflection.c (mono_dynamic_image_free): Deregister the GC root
4127         for GenericParamTableEntry.gparam.
4128
4129 2009-09-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
4130
4131         * marshal.c: don't create the handle when calling. It is created later
4132         if needed.
4133
4134 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4135
4136         * sgen-gc.c: Warning fixes.
4137
4138 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4139
4140         * sgen-gc.c: New debug option "xdomain-checks", which scans the
4141         whole heap for cross-domain references before each collection.
4142
4143         * sgen-scan-object.h: The scan action can now use SCAN to scan the
4144         object.
4145
4146         * threadpool-internals.h, threadpool.c: New function
4147         mono_thread_pool_is_queue_array() for checking whether a given
4148         array is used as a (cross-domain) queue by the thread pool code.
4149
4150 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4151
4152         * sgen-gc.c: New function mono_gc_scan_for_specific_ref() which
4153         searches the whole heap for objects containing a specific
4154         reference.  Only for debugging.
4155
4156 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4157
4158         * appdomain.c (MONO_CORLIB_VERSION): Bumped.
4159
4160         * icall-def.h, threads.c, threads-types.h: New icalls for copying
4161         byte arrays between domains.
4162
4163 2009-09-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
4164
4165         * threadpool.c:
4166         * class-internals.h:
4167         * mono-perfcounters-def.h:
4168         * mono-perfcounters.c:
4169         -There is a list of idle threads
4170         -Each of those idle threads wait on their own WaitHandle instead
4171         of all of them using the same semaphore. When a new work item is
4172         added, the job is assigned directly to an idle thread or a newly
4173         created one if possible and then the handle for that thread is
4174         signaled. Compare that to the current approach where all the
4175         threads in the pool compete to dequeue a job from the same
4176         queue.
4177         -New struct ThreadPool that brings together the bunch of static
4178         variable for each threadpool (IO and regular).
4179         -New performance counters: # of items added and its rate per
4180         threadpool. The rate will be used later, perhaps together with
4181         other perf. counters, to decide when idle threads should exit.
4182
4183 2009-09-25  Jonathan Chambers  <joncham@gmail.com>
4184
4185         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal): 
4186         Fix typo on Windows build.      
4187         (ves_icall_System_Net_Sockets_Socket_Accept_internal): Fix typo on Windows build.
4188         
4189         Code is contributed under MIT/X11 license.
4190
4191 2009-09-25  Mark Probst  <mark.probst@gmail.com>
4192
4193         * object-internals.h: The Thread class is split up into Thread and
4194         InternalThread now.  We have exactly one InternalThread per
4195         thread, and at most one Thread per appdomain per thread.  Most
4196         data is stored in InternalThread.  All InternalThread objects live
4197         in the root domain.
4198
4199         * class-internals.h: Add internal_thread_class to MonoDefaults.
4200
4201         * appdomain.c (mono_domain_unload), attach.c (receiver_thread),
4202         domain.c, gc.c, icall-def.h, monitor.c, object.c, sgen-gc.c,
4203         socket-io.c, threadpool.c, thread-types.h, threads.c: Changes
4204         resulting from the split of the Thread class.
4205
4206         * gc-internal.h: Prototype for new function for checking whether a
4207         thread is the finalizer thread.
4208
4209         * appdomain.c: Corlib version bump.
4210
4211 2009-09-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4212
4213         * appdomain.c|h: Add a mono_domain_try_unload method which is
4214         equivalent to mono_domain_unload, except that it returns an exception
4215         instead of throwing it. Make mono_domain_unload use the
4216         mono_domain_try_unload method to avoid code-duplication.
4217
4218 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
4219
4220         * debug-helpers.c (dis_one): Avoid unaligned accesses on platforms where that is
4221         a problem.
4222
4223 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
4224
4225         * marshal.c (emit_ptr_to_object_conv): Generate an exception instead of
4226         aborting when a conversion is not implemented.
4227
4228 2009-09-23  Miguel de Icaza  <miguel@novell.com>
4229
4230         * verify.c: when comparing culture strings, use g_ascii_strcmp
4231
4232         * assembly.c (mono_public_tokens_are_equal): Change g_strcasecmp
4233         when comparing public key tokens to use memcmp on 16 bytes.   I do
4234         not believe this ever worked as advertised in the past.
4235
4236         The standard Public Key is 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00
4237         which would have always failed earlier.
4238
4239 2009-06-25  Miguel de Icaza  <miguel@novell.com>
4240
4241         * gc.c: Raise a NullArgumentException if the object passed is
4242         null.
4243
4244 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
4245
4246         * image.c (mono_image_close): Atomically decrement the reference count and
4247         remove the image from the hash tables, to prevent another thread from seeing a
4248         dying MonoImage. Fixes #541194.
4249
4250 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4251
4252         * threadpool.c: actually use the minimum number of 'completion ports'
4253         (for us is just a potential worker thread).
4254
4255 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4256
4257         * threadpool.c: remove ares_htable. It does not make sense any more
4258         since the same objects are now stored in GC-tracked arrays while they are
4259         in the queue.
4260
4261 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4262
4263         * threadpool.c: increase the minimum length of the queues to 128.
4264         Remove warning.
4265
4266 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
4267
4268         * marshal.c (mono_marshal_get_string_ctor_signature): New internal function to
4269         return the modified signature used by string ctors.
4270
4271 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
4272
4273         * marshal.c (mono_marshal_get_runtime_invoke_dynamic): New internal function
4274         to return a runtime-invoke wrapper which uses DYN_CALL to call the wrapped
4275         method, to be used by full-aot.
4276
4277 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
4278
4279         Since the runtime supports lazy initialization of a type's vtable and this can cause a type
4280         to fail, we need to ensure that the vtable is properly initialized at spots were the type must
4281         be known to be good.
4282
4283         * class.c (mono_class_init): Fail array types if their element type fails initialization
4284         as well.
4285
4286         * object.c (mono_class_create_runtime_vtable): Fail array types if their element type fails
4287         initialization, additionally we request the element_type vtable to be initialized as well.
4288
4289         This is fine and should not increase the working set in any meaningful way since it's reasonable
4290         to assume       that most code will create an array and eventually populate it, which will require the
4291         type's vtable to be initialized.
4292
4293         * loader.c (field_from_memberref): Add a comment for a possibly useless mono_class_init call.
4294
4295 2009-09-17  Atsushi Enomoto  <atsushi@ximian.com>
4296
4297         * normalization-tables.h : regenerated.
4298
4299 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
4300
4301         * mono-debug.c (mono_debug_add_method): Increase the size of the buffer,
4302         a leb128 encoding can take up to 5 bytes.
4303
4304 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
4305
4306         * class.c (verify_class_overrides): Remove useless argument.
4307
4308         * class.c (mono_class_setup_vtable_general): Move the overrides check to happen
4309         before interface enumeration as this is no longer required.
4310
4311 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
4312
4313         * class.c: New function mono_class_is_assignable_from_slow that is safe to be
4314         used under mono_class_init context. This functions avoid any code path that
4315         calls mono_class_init, which leads it to be slow as some things like the interface
4316         bitmap are not available.
4317
4318         * class.c (verify_class_overrides): Use mono_class_is_assignable_from_slow instead
4319         of it's own broken version. Fixes the verifier part of #538588.
4320
4321         * class-internals.h: Export mono_class_is_assignable_from_slow as part of the internal
4322         API.
4323
4324 2009-09-15  Mark Probst  <mark.probst@gmail.com>
4325
4326         * class.c (mono_class_init): Always set an exception in a class if
4327         vtable setup fails.  Fixes #538577.
4328
4329         * generic-sharing.c: Raise an exception if mono_class_vtable()
4330         returns NULL.
4331
4332 2009-09-13  Zoltan Varga  <vargaz@gmail.com>
4333
4334         * marshal.c (mono_marshal_get_runtime_invoke): Don't share instance 
4335         methods of vtypes, as they could be incorrectly shared with static methods
4336         taking an IntPtr argument.
4337
4338 2009-09-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
4339
4340         * domain.c:
4341         * object.c:
4342         * class-internals.h: renamed waithandle_class to
4343         manualresetevent_class.
4344         * marshal.c: propagate the exception if a remoting BeginInvoke call
4345         fails.
4346
4347 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4348
4349         * object.c: Properly handle vtable failures.
4350
4351 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4352
4353         * socket-io.c: Assert on vtable failure.
4354
4355         * mono-mlist.c: Assert on vtable failure.
4356
4357 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4358
4359         * marshal.c: Assert on vtable failure.
4360
4361 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4362
4363         * icall.c: Properly handle vtable failures.
4364
4365 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4366
4367         * debug-helpers.c (mono_class_describe_statics): Properly handle vtable failures.
4368
4369 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4370
4371         * cominterop.c (ves_icall_System_ComObject_CreateRCW): Property handle vtable failures.
4372
4373         * console-unix.c (do_console_cancel_event): Same.
4374
4375 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4376
4377         * class-internals.h: Add mono_class_vtable_full function that allows control
4378         if an exception should be raised or not.
4379
4380         * object.c (mono_class_vtable): Call into mono_class_vtable_full. Fix this function
4381         to do what its documentation say, that is to return NULL and set exception_type on
4382         failure.
4383
4384         * object.c (mono_class_create_runtime_vtable): Add new raise_on_error parameter
4385         and change the code to honor it.
4386
4387 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4388
4389         * verify.c: Fix typo in error message.
4390
4391 2009-09-10  Sebastien Pouliot  <sebastien@ximian.com>
4392
4393         * security-core-clr.c: Fix default_platform_check so it can run
4394         the runtime coreclr tests (without an infinite recursion when
4395         throwing an exception).
4396
4397 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4398
4399         object.c (mono_delegate_ctor_with_method): Guard against null method.
4400
4401 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4402
4403         * marshal.c (mono_marshal_get_xappdomain_dispatch): Add an assert
4404         that should be replaced with error handling later.
4405
4406 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4407
4408         * marshal.c (mono_delegate_end_invoke): Fix warning.
4409
4410 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4411
4412         * loader.c (mono_field_from_token): Properly handle invalid
4413         dynamic tokens.
4414
4415 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4416
4417         * pedump.c (verify_image_file): Skip types that can't be
4418         decoded.
4419
4420 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4421
4422         * verify.c: Look for recursive valuetypes only against the
4423         type been initialized as this is a lot simpler and works.
4424
4425 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4426
4427         * verify.c: Ensure that fields are properly loaded before
4428         checking them.
4429
4430 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
4431
4432         * object.c (mono_object_get_virtual_method) : Call 
4433           mono_cominterop_get_invoke if the object is a COM object.
4434
4435         Code is contributed under MIT/X11 license.
4436
4437 2009-09-09  Rodrigo Kumpera  <rkumpera@novell.com>
4438
4439         * verify.c: Check for recursive valuetype definitions.
4440
4441 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
4442
4443         Use inheritance-aware interface offsets. Inherited types use the same offsets
4444         of their parents. This reduce offset duplication in case more than one type in
4445         the inheritance tree explicitly implements the same interface.
4446
4447         This also removes a source of vtable bubbles found in #532409. An abstract type
4448         isn't required to provide abstract methods to all interfaces it implements, which
4449         resulted in a bubble with the previous scheme as the child would get a non-full
4450         vtable from its parent. We fail all concrete types with vtable bubbles, so this
4451         should be fixed.
4452
4453         This change causes an increase of 1.7% in vtable memory usage for IronPython pystone but
4454         it's expected to not cause any significant increase beyond that.
4455
4456         * class.c (setup_interface_offsets): Compute super class iface offsets
4457         first to force sharing.
4458
4459         * class.c: Add VTABLE_SELECTOR macro to the vtable debug macros to help
4460         dumping only the relevant ones.
4461
4462         * class.c (mono_class_setup_vtable_general): Give newslot, non final, virtual
4463         methods a new slot regardless if they belong to an interface or not. This allows
4464         an inherited type to override the iface method separately from the class one.
4465
4466 2009-09-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
4467
4468         * threadpool.c: make the Sleep() alertable to prevent delays exiting
4469         applications that take less than 2s to execute.
4470         Bug #524984 fixed.
4471
4472 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
4473
4474         * object-internals.h (MonoRuntimeCallbacks): Add a 'get_runtime_build_info' callback.
4475
4476         * object.c (mono_get_runtime_callbacks): New helper function to return
4477         the runtime callbacks.
4478
4479         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Use the result of
4480         mono_get_runtime_build_info () as the display name.
4481         
4482 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4483
4484         * marshal.c (emit_marshal_array): Call conv.ovf.i on the array parameter
4485         argument, since NEWARR expects a native int. Fixes #481559.
4486
4487 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4488
4489         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Guard
4490         against broken SRE methods.
4491
4492 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4493
4494         * class.c (mono_type_get_full): Don't call mono_metadata_free_type on
4495         a NULL variable. Abort early on failure.
4496
4497 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4498
4499         * class.c (can_access_type): Fail visibility test for non nested
4500         types with nested visibility.
4501
4502 2009-09-02  Sebastien Pouliot  <sebastien@ximian.com>
4503
4504         * assembly.c (parse_public_key): Avoid allocating (and not 
4505         freeing) the public key array when it's not requested by the 
4506         caller.
4507         * threads.c (mono_thread_manage, mono_thread_create_internal, 
4508         ves_icall_System_Threading_Thread_Thread_internal): Free 
4509         allocated memory on error.
4510
4511 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4512
4513         * icall.c, icall-def.h: Remove some dead code from early SRE changes.
4514
4515 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4516
4517         * class.c (mono_class_setup_fields): Remove duplicated local variable
4518         named gklass.
4519         Rename gklass to gtd to reflect the fact that it points to the generic
4520         type definition.
4521         Remove the duplicated call to mono_class_setup_fields on gtd and move
4522         the error check to the beginning.
4523
4524 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4525
4526         * marshal.c (mono_array_to_lparray): Do DISABLE_COM properly.
4527         Remove cruft of the previous patch.
4528
4529 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4530
4531         * metadata-verify.c (verify_method_table): Check for abstract + final.
4532         Fixes #534175.
4533
4534 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4535
4536         * verify.c (verify_class_fields): Check for duplicate fields.
4537
4538 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4539
4540         * metadata-verify.c: Verify the typeref table for duplicates.
4541
4542 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4543
4544         This reverts r140936 and properly handles interfaces with static methods. The
4545         right fix is to ensure vtables without bubles which is an easier to verify
4546         constraint. We should avoid such special cases as of the reverted patch as those
4547         only make the runtime more brittle.
4548
4549         * class.c (mono_class_setup_vtable_general): Revert previous change that handle
4550         static methods on interfaces.
4551
4552         * class.c (setup_interface_offsets): Use the number of virtual methods when
4553         calculating interface offsets instead of the number of methods. This way we
4554         avoid bubles on the layout.
4555
4556 2009-08-31  Rodrigo Kumpera  <rkumpera@novell.com>
4557
4558         * metadata-verify.c (verify_metadata_header): Some very smart
4559         obfuscators like to add extra stream headers. Ignore them.
4560
4561 2009-08-30  Zoltan Varga  <vargaz@gmail.com>
4562
4563         * class.c (mono_class_setup_vtable_general): Verify interfaces with static
4564         methods correctly.
4565
4566 2009-08-29  Rodrigo Kumpera  <rkumpera@novell.com>
4567
4568         * metadata-verify.c: Verify for duplicated types.
4569
4570 2009-08-28  Rodrigo Kumpera  <rkumpera@novell.com>
4571
4572         * metadata-verify.c (verify_typedef_table): Verify for nested types
4573         without an entry on the nested class table.
4574
4575 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4576
4577         * cominterop.c (cominterop_get_ccw): Applied patch from tom hindle
4578         <tom_hindle@sil.org>. Add locking around hash table accesses.
4579
4580 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4581
4582         * verify.c (mono_verifier_verify_class): Verify all interface if
4583         really are interfaces. Fixes #534184.
4584
4585 2009-08-27  Rodrigo Kumpera  <rkumpera@novell.com>
4586
4587         * pedump.c: Initialize all types during metadata validation so we report
4588         errors only detected as part of class initialization.
4589
4590 2009-08-26  Rodrigo Kumpera  <rkumpera@novell.com>
4591
4592         * metadata-verify.c (verify_method_table): PInvoke requires method to
4593         be static. Fixes #534189
4594
4595 2009-08-26  Zoltan Varga  <vargaz@gmail.com>
4596
4597         * threads.c (mono_thread_suspend_all_other_threads): Handle 'threads_starting_ip'
4598         being NULL.
4599
4600 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4601
4602         * class.c (mono_class_setup_vtable_general): Verify the resulting vtable
4603         for holes or bad methods. Fixes #525314.
4604
4605 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4606
4607         * class.c (setup_interface_offsets): Don't allocate slot
4608         for the same interface multiple times. This creates bubbles
4609         that waster space and make vtable verification harder.
4610
4611         The same interface get a slot multiple times since we need
4612         to get the closure of all implemented interfaces, which means
4613         the same interface is reported multiple times.
4614
4615 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4616
4617         * verify.c (mono_verifier_verify_class): Don't check the fields
4618         of generic instances since the context on which they got expanded
4619         might lead to false positives.
4620
4621         Such thing happens when a generic type is inflated in the context
4622         of a generic method and the inflated type of a field turns into a
4623         generic method argument, which causes the checking code to think
4624         it's an invalid class when it's not.
4625
4626 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4627
4628         * verify.c (mono_type_is_valid_in_context): Verify if type
4629         is NULL and remove duplicate test.
4630
4631 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4632
4633         * verify.c (mono_verifier_verify_class): Check fields for
4634         invalid generic arguments.
4635
4636 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4637
4638         * class.c (verify_class_overrides): Verify if for static
4639         and non virtual methods.
4640
4641 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4642
4643         * icaa.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor):
4644         Check for errors after retrieving the vtable.
4645
4646 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4647
4648         * class.c (mono_class_setup_vtable_general): Verify
4649         if method overrides are valid before processing them.
4650
4651 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4652
4653         * marshal.c (mono_array_to_lparray): Fix minimal build with
4654         cominterop disabled.
4655
4656         * marshal.c (mono_free_lparray): Same.
4657
4658 2009-08-21  Mark Probst  <mark.probst@gmail.com>
4659
4660         * threadpool.c (mono_thread_pool_init): Use mono_object_hash() as
4661         the hash function for the ares_htable.
4662
4663 2009-08-20  Rodrigo Kumpera  <rkumpera@novell.com>
4664
4665         * metadata-verify.c (verify_assembly_table): Accept 0x10 as a valid
4666         bit for assembly flags. MS is ok with it but there is no spec anywhere
4667         on its mean
4668
4669 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4670
4671         * class.c (mono_class_create_from_typedef): Emit profiler events
4672         in all cases.
4673
4674 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4675
4676         * icall.c (ves_icall_Type_GetMethodsByName): Don't leak loader errors.
4677         Release memory on failure.
4678
4679 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4680
4681         * class-internals.h: Add mono_metadata_load_generic_param_constraints_full
4682         to the internal API.
4683
4684         * metadata.c (get_constraints): Use a single-linked table as we don't
4685         traverse it backward. Fail and return FALSE if only of the contraint types
4686         is not found.
4687
4688         * metadata.c (mono_metadata_load_generic_param_constraints_full): Identical
4689         to mono_metadata_load_generic_param_constraints except for having a return value.
4690         This has to be done since the later is part of the public API.
4691
4692         * class.c (mono_class_create_from_typedef): Properly check the loading of constrains
4693         and fail the type.
4694
4695         * loader.c (mono_get_method_from_token): Properly check the loading of constraints
4696         and fail the method.
4697
4698 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4699
4700         * metadata-verify.c (is_valid_method_header): Add work-around to deal
4701         with MS broken behavior of emmitting EH section sizes without the
4702         header size added.
4703
4704 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4705
4706         * metadata.c (mono_type_create_from_typespec): Don't allocate image
4707         memory until we're sure that we'll need it. This avoids leaking for
4708         broken types or duplicated instantiation.
4709
4710 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4711
4712         * metadata-verify.c (is_valid_method_header): Fix stupid formating
4713         mistake.
4714
4715 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4716
4717         * metadata-verify.c (is_valid_method_header): Fix number of clauses
4718         and expected size calculation.
4719
4720 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4721
4722         * class.c (mono_class_get_field_idx): Add fixme for broken
4723         behavior for types with multiple fields with the same name.
4724         I would rather fix it, but have no idea on how to generate
4725         such artifact for testing.
4726
4727 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4728
4729         * verify.c (verifier_load_field): We should allow references to
4730         fields to be made using the generic type definition. It's up to
4731         the loader system to fail invalid ops.
4732
4733         * verify.c (get_boxable_mono_type): Only uninstantiated GTDs
4734         are invalid.
4735
4736 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4737
4738         * class.c: Fix usage of mono_metadata_interfaces_from_typedef_full.
4739
4740         * metadata-internals.h: Fix declaration of 
4741         mono_metadata_interfaces_from_typedef_full.
4742
4743         * metadata.c (mono_metadata_interfaces_from_typedef_full): Add extra
4744         heap_alloc_result parameter that controls if the result should be
4745         g_malloc'd.
4746
4747         * metadata.c (mono_metadata_interfaces_from_typedef): Let the resulting
4748         array be g_malloc'd and properly document this public API function.
4749
4750 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4751
4752         * cil-coff.h: Fix METHOD_HEADER_FORMAT_MASK to be 2 bits and
4753         remove METHOD_HEADER_TINY_FORMAT1.
4754
4755         * reflection.c: Remove reference to METHOD_HEADER_TINY_FORMAT1.
4756
4757         * metadata.c (mono_metadata_parse_mh_full): Kill tiny format1.
4758
4759         Both spec and MS uses only 2 bits to enumerate the kind of header.
4760         So given that 0x6 and 0x2 are equal under a 2 bits mask, tiny format1
4761         is superfluous, only used for tiny headers with odd code lengths.
4762
4763         This change also make sure that mono doesn't wronly interpret bit 2
4764         of fat header flags, which is currently reserved.
4765
4766 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4767
4768         * metadata.c (do_mono_metadata_parse_type): Do error
4769         checking for element types. Don't abort if presented
4770         with a broken type kind.
4771
4772 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4773
4774         * metadata.c (mono_metadata_parse_method_signature_full):
4775         Gracefully fail bad vararg signatures.
4776
4777 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4778
4779         * profiler.c:
4780         * class.c: Fix warnings for uninitialized variables.
4781
4782 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4783
4784         * icall.c: Fix _NSGetEnviron method declaration warning.
4785
4786 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4787
4788         * icall.c:
4789         * reflection.c: Make bitwise checks explicit.
4790
4791 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4792
4793         * debug-helpers.c:
4794         * marshal.c: Fix printf warnings.
4795
4796 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4797
4798         * reflection.c (encode_cattr_value): Fix a warning.
4799
4800 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4801
4802         * metadata.c (mono_metadata_parse_array_full): Fix memory leak
4803         of array bounds.
4804
4805 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4806
4807         * loader.c (mono_method_signature): Don't assert on broken
4808         signature. Print a more useful error message.
4809
4810 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4811
4812         * loader.c (mono_method_get_marshal_info): Assert if
4813         signature is invalid. Bounds check stores to the
4814         mspecs array;
4815
4816 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4817
4818         * loader.c (field_from_memberref): Fix warning.
4819
4820 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4821
4822         * loader.c (mono_method_get_param_names): Check if signature
4823         is null. Don't store beyond the size of the name array.
4824
4825 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4826
4827         * loader.c (mono_get_method_constrained): Check if signature
4828         is null.
4829
4830 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4831
4832         * loader.c (mono_loader_set_error_bad_image): Improve
4833         error messages.
4834
4835 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4836
4837         * loader.c (mono_get_method_full): Convert an assertion
4838         into a loader error.
4839
4840 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4841
4842         * class-internals.h, class.c: Better naming and documentation.
4843
4844 2009-08-17  Zoltan Varga  <vargaz@gmail.com>
4845
4846         * boehm-gc.c (mono_gc_add_weak_track_handle): Don't do any work if
4847         obj is NULL.
4848
4849 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4850
4851         * loader.c (mono_method_get_signature_full): Fail gracefully if signature
4852         parsing fails.
4853
4854 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4855
4856         * loader.c (mono_loader_error_prepare_exception): Handle missing field
4857         errors with no class set.
4858
4859         * loader.c (field_from_memberref): If the field signature is of the wrong
4860         type fail with a MissingFieldException instead of a BadImageException as
4861         this is the behavior observed on MS. 
4862
4863 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4864
4865         * loader.c (field_from_memberref): Don't crash if either the field
4866         signature or the typespec class are invalid.
4867
4868 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4869
4870         * verify.c (verifier_load_field): Don't allow field related
4871         ops to reference fields on generic type definition.
4872
4873 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4874
4875         * metadata-verify.c: Add new warning level for errors specified
4876         by ECMA 335 but that MS ignores.
4877
4878         * metadata-verify.c (verify_method_table): Make compiler controled
4879         visibility + (rt)specialname error a warning as MS ignores this. Ignoring
4880         this check is safe because the end result will only be some visibility
4881         exceptions been thrown.
4882
4883 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4884
4885         * verify.c (get_boxable_mono_type): Don't allow the
4886         use of the generic type definition on boxed type positions.
4887
4888         Fixes #531237.
4889
4890 2009-08-14  Mark Probst  <mark.probst@gmail.com>
4891
4892         * threadpool.c: Make sure no cross-domain references remain in
4893         ares_htable or the arrays that are thrown away when resizing.
4894
4895 2009-08-14  Mark Probst  <mark.probst@gmail.com>
4896
4897         * appdomain.c, metadata-internals.h, image.c: In MonoImage add a
4898         list of classes for which we have to unregister reflection_info
4899         with the GC and which are not in the namespace cache.
4900
4901         * reflection.c (mono_reflection_initialize_generic_parameter): Add
4902         the class to the list.
4903
4904 2009-08-14  Mark Probst  <mark.probst@gmail.com>
4905
4906         * domain.c (mono_domain_free): Unregister the GC roots in
4907         MonoDomain.
4908
4909 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
4910
4911         * reflection.c (mono_reflection_type_get_handle): Fix typo.
4912
4913 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
4914
4915         * class.c: Add mono_class_get_field_from_name_full which does
4916         the same as mono_class_get_field_from_name but does check field
4917         signature as well.
4918
4919         * class-internals.h: Export mono_class_get_field_from_name_full as
4920         part of the internal API.
4921
4922         * loader.c (field_from_memberref): Search fields by name and signature
4923         as it's valid to have two fields with same name but different types.
4924
4925         Fixes #528055.
4926
4927 2009-08-10  Rodrigo Kumpera  <rkumpera@novell.com>
4928
4929         * icall-def.h: Add a bunch of temporary icalls to MonoGenericClass.
4930
4931         * reflection.c (mono_reflection_type_get_handle): Handle MonoGenericClass.
4932
4933         * reflection.c (encode_cattr_value): Use mono_reflection_type_get_handle to encode
4934         System.Type.
4935
4936 2009-08-13  Zoltan Varga  <vargaz@gmail.com>
4937
4938         * gc.c (GCHandle_CheckCurrentDomain): Moved this here from icall.c.
4939
4940         * boehm-gc.c (mono_gc_add_weak_track_handle): Handle nulls.
4941
4942 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4943
4944         * sgen-gc.c, sgen-scan-object.h: Object scanning code factored out
4945         to sgen-scan-object.h, which can be included and parameterized via
4946         macros.
4947
4948         * Makefile.am: sgen-scan-object.h added.
4949
4950 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4951
4952         * gc.c: #define GC_dont_gc if we're compiling with SGen.
4953
4954 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4955
4956         * domain.c (mono_domain_free): Free a domain's mono_g_hash_tables
4957         before clearing a domain in the GC.
4958
4959 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4960
4961         * exception.c (mono_exception_from_name_domain): Actually create
4962         the exception in the specified domain.
4963
4964         * appdomain.c (mono_domain_create_appdomain_internal): Create the
4965         OutOfMemoryException a bit later so that the domain is inialized
4966         "enough" that it works.
4967
4968 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4969
4970         * threads.c (thread_cleanup): Clean up the cached_culture_info
4971         array to prevent cross-domain references.
4972
4973 Tue Aug 11 14:38:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4974
4975         * metadata.c: more documentation for MonoType accessors.
4976
4977 2009-08-11  Raja R Harinath  <harinath@hurrynot.org>
4978
4979         Fix incorrect size definitions where the tail array isn't a list
4980         of pointers
4981         * class-internals.h (MONO_SIZEOF_MARSHAL_TYPE): Use offsetof to
4982         define size.
4983         * domain-internals.h (MONO_SIZEOF_JIT_INFO): Likewise.
4984         * metadata.h (MONO_SIZEOF_TYPE): Likewise.
4985         * reflection.h (MONO_SIZEOF_CUSTOM_ATTR_INFO): Likewise.
4986
4987 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4988
4989         * reflection.h:
4990         * reflection.c: MONO_SIZEOF_CUSTOM_ATTR_INFO.
4991
4992 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4993
4994         * metadata.c:
4995         * loader.c:
4996         * metadata-internals.h:
4997         * method-builder.c:
4998         * reflection.c: use MONO_SIZEOF_METHOD_HEADER.
4999
5000 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5001
5002         * cominterop.c:
5003         * metadata.c:
5004         * metadata.h:
5005         * loader.c:
5006         * marshal.c:
5007         * reflection.c: #define for sizeof in MonoType and
5008         MonoMethodSignature.
5009
5010 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5011
5012         * domain.c:
5013         * domain-internals.h: add and use #define's instead of sizeof()
5014         for MonoJitInfo and MonoJitInfoTable.
5015
5016 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5017
5018         * object.c:
5019         * class.h: use #define instead of sizeof() for MonoRemoteClass.
5020
5021 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
5022
5023         * metadata.c:
5024         * metadata.h:
5025         * object.c:
5026         * class-internals.h:
5027         * generic-sharing.c:
5028         * marshal.c: use a #define instead of sizeof() for a few
5029         structures that use a zero-length array.
5030
5031 2009-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
5032
5033         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Add new fields
5034         to handle inflated generic methods.
5035
5036         * appdomain.c: Bump corlib version.
5037
5038         * reflection.c (mono_image_get_method_on_inst_token): Handle generic method
5039         instances.
5040
5041         * reflection.c (fixup_method): Same
5042
5043         * reflection.c (resolve_object): Same.
5044
5045         * reflection.c (inflate_method): Replace a g_assert_not_reached with a
5046         g_error and a decent message.
5047
5048 2009-08-06  Massimiliano Mantione  <massi@ximian.com>
5049
5050         * bohem-gc.c (mono_gc_add_weak_track_handle): Get the domain
5051         from the object because it could not yet be available globally
5052         (it happens if the profiler tries to create a gchandle on the
5053         MonoThread object of a thread that is still registering itself
5054         with the runtime).
5055
5056 2009-08-04  Rodrigo Kumpera  <rkumpera@novell.com>
5057
5058         * reflection.c (mono_generic_class_get_object): Initialized the
5059         managed type arguments array.
5060
5061         * object-internals.h (MonoReflectionGenericClass): Add type_arguments field.
5062
5063         * appdomain.c: Bump corlib version.
5064
5065 2009-08-04  Zoltan Varga  <vargaz@gmail.com>
5066
5067         * threads.c (thread_cleanup): Free serialized_ui_culture_info. Fixes
5068         #527902.
5069
5070 2009-08-03  Zoltan Varga  <vargaz@gmail.com>
5071
5072         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
5073         Avoid a crash if synch_cs is not set.
5074         
5075         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
5076         Handle the case when the handle is 0.
5077
5078         * appdomain.c: Bump corlib version.
5079
5080 2009-08-02  Zoltan Varga  <vargaz@gmail.com>
5081
5082         * reflection.c (mono_type_get_object): Fix a warning.
5083
5084 2009-08-01  Mark Probst  <mark.probst@gmail.com>
5085
5086         * sgen-gc.c (mono_gc_wbarrier_value_copy): Don't compute the GC
5087         descriptor here.  We assume it's already been computed.
5088
5089         * generic-sharing.c (instantiate_other_info): Compute the GC
5090         descriptor for info type MONO_RGCTX_INFO_KLASS.
5091
5092 2009-08-01  Mark Probst  <mark.probst@gmail.com>
5093
5094         * reflection.c (mono_type_get_object): MonoDomain is an unmanaged
5095         type, so don't use MONO_OBJECT_SETREF to set a field.
5096
5097 2009-08-01  Mark Probst  <mark.probst@gmail.com>
5098
5099         * gc.c: We were missing one case where invoking a finalizer would
5100         not reset the domain.  Also, in the finalizer thread loop, assert
5101         that we're in the root domain.
5102
5103 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
5104
5105         * icall.c (ves_icall_MonoType_GetArrayRank): Throw ArgumentException
5106         if the type is not an array.
5107
5108 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
5109
5110         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Return the
5111         method bound to the declaring type of the method. Raise an exception
5112         if the type is not a generic param.
5113
5114 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
5115
5116         * class.c (print_unimplemented_interface_method_info): Print the
5117         full type name.
5118
5119         * class.c (mono_class_setup_vtable_general): When dealing with a
5120         generic instance first check if the generic type definition is
5121         not broken.
5122
5123 2009-02-11 Tom Hindke <tom_hindle@sil.org>
5124
5125         * marshal.c (mono_array_to_lparray): Implemented so managed object types are converted to native types.
5126
5127         * marshal.c: Added new method mono_free_lparray to free memory allocated by mono_array_to_lparray
5128
5129         * marshal.c (emit_marshal_array): call emit mono_free_lparray where approprate.
5130
5131         * marshal.c (conv_to_icall): added MONO_MARSHAL_FREE_LPARRAY case
5132
5133         * metadata.h (MonoMarshalConv enum): added MONO_MARSHAL_FREE_LPARRAY
5134
5135         Code is contributed under MIT/X11 license
5136
5137 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
5138
5139         * verify.c: Fix naming of stelem and ldelem.
5140
5141 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5142
5143         * generic-sharing.c: Replace the templates lock with the loader
5144         lock because of very hard to resolve deadlock issues.
5145
5146 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
5147
5148         * icall.c (ves_icall_Type_GetMethodsByName): Use 
5149         mono_class_get_vtable_size () instead of accessing klass->vtable_size
5150         directly. Fixes #525338.
5151
5152         * class.c (mono_class_get_vtable_size): New helper function.
5153
5154         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle_type): Fix the second argument, its a MonoType* not a MonoClass*. Check whenever
5155         the field belongs to the type. Fixes #525733.
5156
5157 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5158
5159         * sgen-gc.c: When we stop a thread and its stack top is not within
5160         its allocated stack (because it's in an altstack signal handler),
5161         restart it and stop it again, until it is.
5162
5163 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5164
5165         * sgen-gc.c: Take a thread's stack top and registers from the
5166         sigcontext in the suspend signal handler.
5167
5168         * sgen-gc.h, sgen-archdep.h, Makefile.am: Move arch-dependent
5169         stuff to sgen-archdep.h.
5170
5171         * gc.c, gc-internal.h: Remove the get_ip_from_sigctx installer and
5172         caller, because have code in sgen-archdep.h to acquire that data.
5173
5174 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
5175
5176         * profiler.c, profiler.h, profiler-private.h:
5177         Added support for keeping track of code chunks and buffers.
5178
5179 2009-07-29 Rodrigo Kumpera  <rkumpera@novell.com>
5180
5181         * metadata-verify.c: Fix endianness problems on decoding functions.
5182         Based on a patch by Ulrich Weigand <uweigand@de.ibm.com>
5183
5184 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
5185
5186         * icall.c (ves_icall_Type_make_array_type): Handle the new encoding
5187         schema for vectors and one dimension SZARRAY.
5188
5189 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
5190
5191         * reflection.c (mono_reflection_type_get_handle): Handle the new encoding
5192         schema for vectors and one dimension SZARRAY.
5193
5194 2009-07-27  Mark Probst  <mark.probst@gmail.com>
5195
5196         * icall-def.h, thread-types.h, threads.c: New separate icalls for
5197         Interlocked.(Compare)Exchange with object arguments, which invoke
5198         write barriers.
5199
5200 2009-07-26  Miguel de Icaza  <miguel@novell.com>
5201
5202         * icall.c (ves_icall_Type_GetNestedType): Throw an exception when
5203         passed invalid arguments.   Fixes another crasher in the
5204         Silverlight test suite.
5205
5206         * class.c (mono_class_array_element_size): Return 0 for the size
5207         of the class;  This fixes the crasher exposed by :
5208
5209         typeof (void).MakeArrayType ();
5210
5211         * icall.c (ves_icall_MonoType_GetEvent): Do not dereference method
5212         if there is no method to dereference.    Put all the code that
5213         depends on this inside the if (method) block.
5214
5215         This fixes the crasher exposed by Microsoft's Silvelright CLR test
5216         suite  ./Reflection/Emit/TypeBuilder/TypeBuilderGetEvent.exe
5217
5218         With this change, we pass the test.
5219         
5220         * reflection.c (mono_reflection_sighelper_get_signature_local):
5221         Only dereference the assembly if it has been set.    Fixes a
5222         crasher exposed by #525328
5223
5224 2009-07-25  Mark Probst  <mark.probst@gmail.com>
5225
5226         * sgen-gc.c, object.h, null-gc.c, boehm-gc.c, marshal.c: Really
5227         don't perform the store in mono_gc_wbarrier_generic_nostore().
5228         Remove the second argument (value), which is not needed.
5229
5230 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
5231
5232         * null-gc.c (mono_gc_wbarrier_generic_nostore): Define this to fix
5233         the build.
5234
5235         * boehm-gc.c: Ditto.
5236         
5237 2009-07-24  Mark Probst  <mark.probst@gmail.com>
5238
5239         * sgen-gc.c, marshal.c, object.h: Make the managed write barrier
5240         not perform the store itself.  Introduce
5241         mono_gc_wbarrier_generic_nostore(), which is the same as
5242         mono_gc_wbarrier_generic_store(), except it doesn't perform the
5243         store.
5244
5245 2009-07-24  Mark Probst  <mark.probst@gmail.com>
5246
5247         * icall.c (ves_icall_System_Array_SetGenericValueImpl):
5248         mono_gc_wbarrier_value_copy() doesn't perform the copy itself, so
5249         we still need the memcpy().
5250
5251 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5252
5253         * sgen-gc.c: Align array bounds calculation to mono_array_size_t
5254         so that big arrays are handled correctly.  Always use
5255         safe_object_get_size() to calculate array object sizes, which
5256         takes bounds into account.
5257
5258 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5259
5260         * sgen-gc.c (mono_gc_wbarrier_value_copy): Make sure the class's
5261         GC descriptor is computed before we use it.
5262
5263 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5264
5265         * icall.c (ves_icall_System_Array_SetGenericValueImpl): Use a
5266         write barrier if necessary.
5267
5268 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5269
5270         * icall-def.h, icall.c, thread-types.h: New separate icall for
5271         VolatileWrite(object&,object) that uses a write barrier.
5272
5273         * console-unix.c, file-io.c, icall.c, threads.c: Use write
5274         barriers in icalls which write to "ref" or "out" arguments.
5275
5276 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
5277
5278         * marshal.c (mono_marshal_get_runtime_invoke): Do the work done in the exception
5279         handler in a separate icall, to reduce the size of the wrappers.
5280
5281 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5282
5283         * metadata-verify.c (is_valid_typespec_blob): Fix error message.
5284
5285 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5286
5287         * metadata-verify.c (parse_field): Allow byref field.
5288
5289         * metadata-verify.c (parse_locals_signature): Allow byref locals.
5290
5291         * metadata-verify.c (is_valid_typespec_blob): Allow byref typespec.
5292
5293 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5294
5295         * verify.c (do_cast): Fail for any non reference type that isn't boxed.
5296         Fixes #522784.
5297
5298 2009-07-20  Robert Jordan  <robertj@gmx.net>
5299
5300         * cominterop.c (cominterop_get_managed_wrapper_adjusted):
5301         Fix invalid IL in valuetype handling (STOBJ must push the
5302         corresponding class). Fixes bug #523149.
5303
5304         Code is contributed under MIT/X11 license.
5305
5306 2009-07-20  Geoff Norton  <gnorton@novell.com>
5307
5308         * gc.c: Use proper semaphores where available on posix and darwin.
5309
5310 2009-07-19  Geoff Norton  <gnorton@novell.com>
5311
5312         * gc.c: Unnamed posix semaphores are broken on darwin-arm too.
5313
5314 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
5315
5316         * refletion.c (is_sre_usertype): Change name to is_usertype and
5317         invert it's result so it returns true if the type is an user type
5318         and not the opposite.
5319
5320         * reflection.c (is_*_type): Change all of those to use new macro
5321         check_corlib_type_cached that cached the type lookup so we don't
5322         need to do string comparisons all the type. Changed the signature
5323         to take a MonoClass instead.
5324
5325         * reflection.c: Change mono_image_create_token and resolve_object
5326         to use is_sre_* functions.
5327
5328 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5329
5330         * sgen-gc.c: Check for writes to the stack in the managed
5331         wbarrier as well.
5332
5333 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5334
5335         * sgen-gc.c: When a thread is unregistered, don't free its remsets
5336         but put them on a list which is processed with the other thread's
5337         remsets.
5338
5339 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5340
5341         * sgen-gc.c: Fix and enable the internal allocator instead of
5342         using malloc/free (which causes deadlocks).
5343
5344 2009-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
5345
5346         * refletion.c: Fix builds with SRE disabled by adding a minimal
5347         implementation of mono_reflection_type_get_handle.
5348
5349 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
5350
5351         * refletion.c: Make mono_reflection_type_get_handle non static.
5352
5353         * object-internals.h: Export mono_reflection_type_get_handle.
5354
5355         * icall.c (ves_icall_MonoGenericClass_InflateType): Resolve the
5356         unmanaged handle using mono_reflection_type_get_handle.
5357
5358 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
5359
5360         * refletion.c: Replace all reads of MonoReflectionType::type with
5361         calls to mono_reflection_type_get_handle. Only the functions that
5362         deal with constructing TypeBuilder::type have not been changed
5363         because they have to deal with NULL values.
5364
5365         This is a first step into supporting reflection types that don't
5366         map directly into their unmanaged counterpart.
5367
5368 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
5369
5370         * metadata-verify.c (parse_locals_signature): Don't complain
5371         on signature with zero locals since MS generates it and doesn't
5372         bother with.
5373
5374 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
5375
5376         * reflection.c (mono_image_get_array_token): Resolve return
5377         type using mono_reflection_type_get_handle.
5378
5379         * reflection.c (mono_image_get_array_token): Resolve array method
5380         parent type using mono_reflection_type_get_handle.
5381
5382 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
5383
5384         * reflection.c (mono_image_basic_init): Applied patch from
5385         <Dax@daxxfiles.net>. Set the public key token from the assembly
5386         builder. Fixes #518909.
5387
5388         * appdomain.c: Bump corlib version.
5389
5390 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
5391
5392         * class.c (mono_class_needs_cctor_run): Make this return false if
5393         the class has no cctor.
5394
5395 2009-07-13  Mark Probst  <mark.probst@gmail.com>
5396
5397         * sgen-gc.c: When the minor GC needs to allocate a new section,
5398         invoke the major GC afterwards.
5399
5400 2009-07-14  Bill Holmes  <billholmes54@gmail.com>
5401
5402         * process.c  (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal) :
5403           Applying the window_style field to the SHELLEXECUTEINFO struct.
5404
5405         Code is contributed under MIT/X11 license.
5406
5407 2009-07-13  Mark Probst  <mark.probst@gmail.com>
5408
5409         * sgen-gc.c: Fix the race condition in the unmanaged allocator by
5410         locking earlier.  Fix it in the managed allocator by making sure
5411         that no thread is stopped there before the GC runs.  If we do stop
5412         a thread there, we restart it and let it run a but, until it stops
5413         somewhere else.
5414
5415         * gc-internal.h, gc.c: Function for getting the IP from a signal
5416         context via a function registered by mini.
5417
5418 2009-07-11  Zoltan Varga  <vargaz@gmail.com>
5419
5420         * object-internals.h (MonoIntPtr): New structure describing a boxed
5421         IntPtr.
5422
5423         * object.c (mono_runtime_invoke_array): Handle ptr arguments and
5424         returns. Fixes #519953.
5425
5426         * marshal.c (mono_marshal_get_runtime_invoke): Handle pointer returns.
5427
5428 2009-07-09  Mark Probst  <mark.probst@gmail.com>
5429
5430         * class-internals.h, generic-sharing.c: New RGCTX info type for
5431         getting a remoting invoke with check wrapper.
5432
5433 2009-07-07  Geoff Norton  <gnorton@novell.com>
5434
5435         * icall-def.h: Fix the enable-minimal build.
5436
5437 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5438
5439         * object-internals.h: Add MonoReflectionDerivedType.
5440
5441         * reflection.c: Implement support for PointerType.
5442         Fixed tons of warnings.
5443
5444 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5445
5446         * object-internals.h: Add MonoReflectionByRefType.
5447
5448         * reflection.c: Implement support for ByRefType.
5449
5450 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5451
5452         * icall-def.h: Add System.Reflection.Emit.DerivedType::create_unmanaged_type.
5453
5454         * object-internals.h: Add MonoReflectionArrayType and
5455         mono_reflection_create_unmanaged_type.
5456
5457         * reflection.c: Implement support for ArrayType.
5458
5459 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5460
5461         * metadata-verify.c (is_valid_method_header): Parse EH block
5462         flags correctly.
5463
5464 2009-07-03  Mark Probst  <mark.probst@gmail.com>
5465
5466         * sgen-gc.c (finish_gray_stack): Set the to_space pointer after
5467         processing the disappearing links, and process disappearing links
5468         in a loop until no new objects are copied.
5469
5470 2009-07-03  Mark Probst  <mark.probst@gmail.com>
5471
5472         * object.c (handle_enum): Invoke the write barrier when copying
5473         value type instances.
5474
5475         * sgen-gc.c: Register remsets for unmanaged write barriers only
5476         when the address written to is actually on the heap.  This makes
5477         set_value() in object.c work without requiring that the result be
5478         on the heap.
5479
5480 2009-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
5481
5482         The runtime wrappers are all bound to a given type that must
5483         exist in the same image. For regular images we use the <Module>
5484         type, which is required to exist for all images.
5485
5486         The <Module> type can't be used for dynamic images because it
5487         might not exist at the time the wrapper is required, so we create
5488         a synthetic type to use instead.
5489
5490         The current code works because of the 2 stage setup of MonoClass,
5491         but once this is gone it will no longer work.
5492
5493         * icall-def.h: Add ModuleBuilder::set_wrappers_type.
5494
5495         * metadata-internals.h (MonoDynamicImage): Add wrappers_type.
5496
5497         * object-internals.h: Export mono_image_set_wrappers_type icall
5498         as part of the internal API.
5499
5500         * marshal.c (get_wrapper_target_class): If the image is dynamic,
5501         use MonoDynamicImage::wrappers_type instead of the <Module> type.
5502
5503         reflection.c: Add mono_image_set_wrappers_type qhixh sets the dynamic
5504         image wrappers_type to the provided value.
5505
5506 2009-07-01 Rodrigo Kumpera  <rkumpera@novell.com>
5507
5508         * appdomain.c (deregister_reflection_info_roots): No need
5509         to use the image lock here.
5510
5511 2009-07-02  Mark Probst  <mark.probst@gmail.com>
5512
5513         * sgen-gc.c (collect_nursery): Also scan from write-barrier roots.
5514
5515 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
5516
5517         * threads.c: Store the thread start argument in a hash table instead of
5518         registering it as a root, as libgc doesn't support unregistering roots
5519         under windows, leading to 'too many root sets' errors when many threads
5520         are created.
5521
5522         * gc.c (mono_gc_run_finalize): Avoid finalizing dynamic methods during
5523         shutdown, they can still be referenced by the other dying objects.
5524         Fixes #514506.
5525
5526 2009-06-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
5527
5528         * socket-io.c: DontLinger does not allow LingerOptions.
5529
5530 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5531
5532         * metadata-verify.c: The spec doesn't mention that it's possible to add
5533         custom attribute to a generic parameter. Fixed.
5534
5535 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5536
5537         * class.c (inflate_generic_type): Don't crash while trying to output a message
5538         on why we're aborting.
5539
5540 2009-06-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
5541
5542         * socket-io.c: DontLinger can take an int or a boolean too.
5543
5544 Fri Jun 26 17:00:04 CEST 2009 Paolo Molaro <lupus@ximian.com>
5545
5546         * gc.c: check for a null argument to SuppressFinalize () and
5547         ReRegisterForFinalize ().
5548
5549 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5550
5551         * loader.c (method_from_methodspec): Call into the verifier to check
5552         the signature.
5553
5554         * metadata-verify.c: Addmono_verifier_verify_methodspec_signature.
5555
5556         * verify-internals.h: Export mono_verifier_verify_methodspec_signature as
5557         part of the internal API.
5558
5559 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5560
5561         * metadata.c (mono_type_create_from_typespec): Call into the verifier to check
5562         the signature.
5563
5564         * metadata-verify.c: Add mono_verifier_verify_typespec_signature.
5565
5566         * verify-internals.h: Export mono_verifier_verify_typespec_signature as
5567         part of the internal API.
5568
5569 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5570
5571         * metadata.c (mono_metadata_parse_mh_full): Call into the verifier to check
5572         the signature.
5573
5574         * metadata-verify.c: Add mono_verifier_verify_standalone_signature. Fix
5575         blob verification.
5576
5577         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
5578         part of the internal API.
5579
5580 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5581
5582         * metadata-verify.c: Use is_valid_blob_object to verify blob validity
5583         when doing basic verification. 
5584
5585         This check must be done since the runtime peeks into signatures in much
5586         more places than it does decoding so it makes sense to ensure that all
5587         pointers to blob objects are well formed.
5588
5589 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5590
5591         * metadata-verify.c (is_valid_blob_object): Add extra minsize argument.
5592         Use proper overflow dectection. Fix usage of it.
5593
5594 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5595
5596         * loader.c (field_from_memberref): Call into the verifier to check
5597         the signature.
5598
5599         * loader.c (mono_method_get_signature_full): Same.
5600
5601         * loader.c (method_from_memberref): Same.
5602
5603         * metadata-verify.c: Add mono_verifier_verify_memberref_signature.
5604
5605         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
5606         part of the internal API.
5607
5608 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5609
5610         * threadpool.c (mono_thread_pool_add): If the domain is unloading
5611         or unloaded, still return an AsyncResult, but don't add it to the
5612         threadpool.
5613
5614 2009-06-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
5615
5616         * threads.c: fix missing colon when DEBUG is defined.
5617
5618 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5619
5620         * threadpool.c: Don't add new calls to a threadpool if the domain
5621         of the call is unloading or unloaded.  When dequeuing a job, null
5622         the reference in the queue.
5623
5624 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5625
5626         * sgen-gc.c (null_link_in_range): Add the dislink for the old
5627         generation if an object was moved.
5628
5629 2009-06-25  Sylvain Dupont <duposyl@gmail.com>
5630
5631         * cominterop.h cominterop.c marshal.c: Added support for marshalling out 
5632           parameters of type SAFEARRAY[VARIANT].
5633
5634         * reflection.c (encode_marshal_blob): Properly generate element type
5635           (SafeArraySubType marshal attribute option).
5636
5637         Code is contributed under MIT/X11 license.
5638
5639 Thu Jun 25 15:48:09 CEST 2009 Paolo Molaro <lupus@ximian.com>
5640
5641         * reflection.c: in mono_method_clear_object () really ensure all the
5642         objects are removed.
5643
5644 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5645
5646         * loader.c (mono_method_signature): Call into the verifier to check
5647         the method signature.
5648
5649         * metadata-verify.c (verify_method_table): Move signature verification
5650         to verify_method_table_full.
5651
5652         * metadata-verify.c: Add mono_verifier_verify_method_signature.
5653
5654         * verify-internals.h: Export mono_verifier_verify_method_signature as
5655         part of the internal API.
5656
5657 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5658
5659         * loader.c (mono_method_get_header): Call into the verifier to
5660         check the method header.
5661
5662         * metadata-verify.c: Add mono_verifier_verify_method_header.
5663
5664         * verify-internals.h: Export mono_verifier_verify_method_header as
5665         part of the internal API.
5666
5667 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5668
5669         * class.c (mono_class_find_enum_basetype): Call into the verifier to
5670         check the field signature. Replace an assert with an explicit check.
5671
5672         * class.c (mono_class_setup_fields): Call into the verifier to check
5673         the field signature.
5674
5675         * metadata-verify.c: Add mono_verifier_verify_field_signature.
5676
5677         * verify-internals.h: Export mono_verifier_verify_field_signature as
5678         part of the internal API.
5679
5680 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5681
5682         * class.c (mono_class_find_enum_basetype): Simplify this function
5683         by moving code outside of the loop and not decoding static fields.
5684
5685 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5686
5687         * metadata-verify.c (verify_typedef_table): Check the extends
5688         token here. Move to here a flags check from verify_typedef_table_full.
5689
5690 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
5691
5692         * metadata-verify.c (is_valid_method_header): Fix a warning.
5693
5694         * metadata-internals.h (MonoImage): Remove the unused 
5695         static_rgctx_invoke_wrapper_cache.
5696
5697         * image.c marshal.c: Ditto.
5698
5699 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5700
5701         * image.c (do_mono_image_load): Enable table data verification.
5702
5703 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5704
5705         * metadata-verify.c (is_valid_constant): Fix nullref check.
5706
5707 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5708
5709         * metadata-verify.c (is_valid_constant): Fix string bounds check.
5710
5711 2009-06-22  Mark Probst  <mark.probst@gmail.com>
5712
5713         * sgen-gc.c: Managed allocation with pthreads TLS.
5714
5715         * threads.c, threads-types.h: Functions for the JIT to tell the
5716         runtime whether it supports the MONO_TLS opcode.
5717
5718 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5719
5720         * metadata-verify.c (verify_param_table): Fix a crash for assemblies
5721         without methods.
5722
5723 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5724
5725         * metadata-verify.c (is_valid_constant): Fix the string length check.
5726         Use safe overflow checking. Add decent error messages.
5727
5728 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5729
5730         * metadata-verify.c: Move remaininh blob checks to the offline
5731         verification path.
5732
5733 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5734
5735         * metadata-verify.c: Move more blob checks to the offline verification
5736         path.
5737
5738 2009-06-22  Bill Holmes  <billholmes54@gmail.com>
5739
5740         * object-internals.h : Adding interrupt_on_stop field.
5741
5742         * threads.c (mono_thread_request_interruption) : On Windows exit the
5743           thread if interrupt_on_stop is set.
5744
5745         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
5746          Removing old interrupt logic and setting the interrupt_on_stop for the
5747          thread when calling accept.
5748
5749         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal) :
5750          setting the interrupt_on_stop for the thread when calling accept.
5751
5752         Contributed under MIT/X11 license.
5753
5754 2009-06-20  Martin Baulig  <martin@ximian.com>
5755
5756         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 3.
5757
5758 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
5759
5760         * appdomain.c (mono_try_assembly_resolve): Don't call managed code when
5761         running in no-exec mode.
5762
5763 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5764
5765         * metadata-verify.c (verify_method_table): Move header
5766         checking to verify_method_table_full.
5767
5768         * metata-verify.c (mono_verifier_verify_full_table_data):
5769         Call verify_method_table_full.
5770
5771 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5772
5773         * metadata-verify.c (verify_field_table): Move signature
5774         checking to verify_field_table_full.
5775
5776         * metata-verify.c (mono_verifier_verify_full_table_data):
5777         Call verify_field_table_full.
5778
5779 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5780
5781         * metadata-verify.c (verify_typedef_table): Move remaining
5782         stuff to verify_typedef_table_full.
5783
5784 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5785
5786         * metadata-verify.c: Kill is_corlib from VerifyContext.
5787         It is only used by the offline mode.
5788         So we better remove it from the runtime path.
5789
5790 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5791
5792         * metadata-verify.c: Add new mono_verifier_verify_full_table_data
5793         function that perform the offline metadata verification steps.
5794
5795         * metadata-verify.c (verify_typedef_table): Move some checks to
5796         verify_typedef_table_full and make it been called by new function
5797         mono_verifier_verify_full_table_data.
5798
5799         * pedump.c: Call mono_verifier_verify_full_table_data.
5800
5801         * verify-internals.h: Export mono_verifier_verify_full_table_data as
5802         part of the internal API.
5803
5804 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5805
5806         * metadata-verify.c (typedef_is_system_object): Fix System.Object
5807         check.
5808
5809         * metadata-verify.c (verify_implmap_table): Fix implmap invalid
5810         flags bits. SupportLastError was confused as bit 7 instead of 6.
5811
5812         * metadata-verify.c (verify_implmap_table): Fix import scope verification
5813         to check against the module ref table instead of module.
5814
5815         * metadata-verify.c (verify_implmap_table): Fix corlib check.
5816
5817         * pedump.c: Call mono_image_load_names.
5818
5819 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5820
5821         * image.c: Extract mono_image_load_names from do_mono_image_load.
5822
5823         * metadata-internals.h: Export mono_image_load_names as part of
5824         the internal API.
5825         
5826 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
5827
5828         * metadata.c (mono_metadata_cleanup): Free the generic method cache
5829         first, as it could reference data in the other caches.
5830
5831 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
5832
5833         * metadata-verify.c: Finished with method header verification.
5834
5835 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
5836
5837         * metadata-verify.c: Added more header verification code.
5838         Now only EH clauses are missing.
5839
5840 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
5841
5842         * marshal.c (get_runtime_invoke_type): Don't share primitive types
5843         for return values.
5844
5845 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
5846
5847         * metadata-verify.c: Initial method header verification.
5848
5849 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
5850
5851         * metadata-verify.c (verify_import_table): The IAT contents
5852         might end been patched by the windows DL when running with
5853         coree enabled.
5854
5855 2009-06-15 Rodrigo Kumpera  <rkumpera@novell.com>
5856
5857         * class.c (mono_class_from_typeref): If the enclosing type is not
5858         found return null instead of crashing. Fixes #508487.
5859
5860 2009-06-15  Atsushi Enomoto  <atsushi@ximian.com>
5861
5862         * normalization-tables.h : updated to the latest unicode charcter
5863           data.
5864         * appdomain.c : bump corlib version.
5865
5866 2009-06-14  Zoltan Varga  <vargaz@gmail.com>
5867
5868         * class.c (mono_class_from_name): Fix support for assembly references
5869         in the EXPORTEDTYPE table. Fixes #511704.
5870
5871 2009-06-13  Geoff Norton  <gnorton@novell.com>
5872
5873         * domain.c: Ensure that mono_domain_assembly_open actually opens the
5874         assembly in the target domain.
5875
5876 2009-06-12  Robert Jordan  <robertj@gmx.net>
5877
5878         * cominterop.c (cominterop_get_ccw): Increment mspec's SizeParamIndex
5879         because "this" of the managed signature has become an
5880         ordinary parameter in the unmanaged signature.
5881
5882 2009-06-12  Zoltan Varga  <vargaz@gmail.com>
5883
5884         * class-internals.h (struct _MonoGenericContainer): Add an 'image'
5885         field for owner-less generic containers.
5886
5887         * reflection.c (mono_reflection_initialize_generic_parameter): Set the
5888         image field of the owner-less generic containers created here.
5889
5890         * metadata.c (mono_metadata_load_generic_params): Ditto, the
5891         contain is ownerless until the caller sets its owner.
5892
5893         * metadata.c (type_in_image): Handle owner-less generic containers
5894         correctly.
5895         
5896 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
5897
5898         * image.c (mono_image_close): Support debug_assembly_unload for
5899         dynamic images too.
5900
5901 2009-06-11 Andrés G. Aragoneses  <aaragoneses@novell.com>
5902
5903         * class.c: Fix some typos in comments.
5904
5905 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
5906
5907         * reflection.c (add_custom_modifiers): Avoid reading invalid memory.
5908
5909         * threads.c (mono_thread_execute_interruption): Avoid creating the
5910         abort exception object while holding the synch_cs lock.
5911
5912 2009-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5913
5914         * metadata-verify.c: Verify basic cattr content.
5915
5916 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
5917
5918         * reflection.c (add_exported_type): Don't set the FORWARDER flag on
5919         nested types.
5920         
5921         * reflection.c (mono_image_fill_export_table_from_type_forwarders): Add
5922         support for nested types. Fixes #511704.
5923
5924 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5925
5926         * metadata-verify.c: Verify methodspec signatures.
5927
5928 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5929
5930         * metadata-verify.c: Verify typespec signatures.
5931
5932 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
5933
5934         * metadata.c (free_inflated_method): Call 
5935         mono_marshal_free_inflated_wrappers (), which was missed earlier.
5936
5937 2009-06-08  Miguel de Icaza  <miguel@novell.com>
5938
5939         * mono-config.c: Small change to report the PPC64/ILP32 model.
5940
5941 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5942
5943         * metadata-verify.c (parse_type): Check szarray.
5944
5945 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5946
5947         * metadata-verify.c (parse_type): Check fnptr.
5948
5949 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5950
5951         * metadata-verify.c (parse_type): Check generic instances.
5952
5953 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5954
5955         * metadata-verify.c (parse_type): Check array shape.
5956
5957 2009-06-05  Robert Jordan  <robertj@gmx.net>
5958
5959         * class.c (mono_class_create_from_typedef): Check only for
5960         mscorlib's System.Array.
5961
5962 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5963
5964         * metadata-verify.c (parse_type): Check pointer, class/valuetype
5965         and generic params. 
5966
5967         * metadata-verify.c (parse_field): Check the signature.
5968
5969 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5970
5971         * metadata-verify.c: Implement locals signature check.
5972
5973 2009-06-04  Marek Safar  <marek.safar@gmail.com>
5974
5975         * domain.c: Add .NET 4.0 Beta 1 version.
5976
5977 2009-06-04  Bill Holmes  <billholmes54@gmail.com>
5978
5979         * cominterop.c (cominterop_ccw_queryinterface): Fix for bug 499566.
5980           For QueryInterface on CCWs consider the base class
5981           interfaces as well.
5982
5983         Code is contributed under MIT/X11 license.
5984
5985 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
5986
5987         * wrapper-types.h: Delete STATIC_RGCTX_INVOKE.
5988
5989         * marshal.c (mono_marshal_ret_static_rgctx_invoke): Remove, no longer
5990         used.
5991
5992         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
5993         adding a static-rgctx invoke wrapper, it is done by the runtime trampolines.
5994
5995         * generic-sharing.c (inflate_other_data): Ditto.
5996         
5997 2009-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5998
5999         * metadata-verify.c: Implement property signature check.
6000
6001 2009-06-04  Mark Probst  <mark.probst@gmail.com>
6002
6003         * sgen-gc.h: Register saving support for PPC.
6004
6005 2009-06-04  Mark Probst  <mark.probst@gmail.com>
6006
6007         * sgen-gc.c: Fixed a pthread TLS screwup.
6008
6009 2009-06-04  Mark Probst  <mark.probst@gmail.com>
6010
6011         * sgen-gc.c: Do TLS using pthread API if __thread keyword is not
6012         supported.
6013
6014 2009-06-04  Mark Probst  <mark.probst@gmail.com>
6015
6016         * sgen-gc.c: Disable TLA and managed allocation if the __thread
6017         keyword is not supported.
6018
6019 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
6020
6021         * marshal.c metadata.c: Applied patch from Ulrich Weigand 
6022         <uweigand@de.ibm.com>: Free the wrappers of inflated generic methods when
6023         the inflated method is freed. Fixes #508389.
6024
6025         The code is contributed under the MIT/X11 license.
6026         
6027 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
6028
6029         * marshal.c (get_wrapper_target_class): New helper function.
6030         (mono_marshal_get_runtime_invoke): Place runtime-invoke wrappers into
6031         the <Module> class of the image. Fixes #509049.
6032
6033 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6034
6035         * threads.c (ves_icall_System_Threading_Thread_Sleep_internal):
6036         Check if the thread was interrupted and proccess it straight away.
6037         Makes abortion much more responsive.
6038
6039 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6040
6041         * threads.c (mono_thread_execute_interruption): Use atomic cas with
6042         MonoThread::interruption_requested to match it's counterpart.
6043
6044         Fixes a hang in abort-stress-1 on a 2 core x86.
6045
6046         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
6047         Fix warning.
6048
6049 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6050
6051         Change MonoImage::name_cache to be protected by the image lock
6052         instead of the loader lock.
6053
6054         * appdomain.c (deregister_reflection_info_roots): Protect access
6055         to name_cache.
6056
6057         * class.c (mono_image_init_name_cache): Change from the loader lock
6058         to the image lock. Check if the cache wasn't already created.
6059
6060         * class.c: Change from the loader to the image lock.
6061
6062         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Fix
6063         the code to hold the image lock while iterating over name_cache and
6064         not go into mono_array_new holding it.
6065
6066         * metadata-internals.h: Add a comment about this change.
6067
6068 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6069
6070         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
6071         Under the 2.0 profile raise the loader error.
6072
6073         Fixes #508532.
6074
6075 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6076
6077         * marshal.c (mono_marshal_get_runtime_invoke): Emit the right kind
6078         of ldind opcode for generic instances so we don't fail for direct wrappers.
6079         This only affect direct calls.
6080
6081 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
6082
6083         * reflection.c (create_dynamic_mono_image): Fix warnings.
6084
6085         * generic-sharing.c (other_info_equal): Ditto.
6086         
6087 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
6088
6089         * metadata-verify.c: Implement field signature check.
6090
6091 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
6092
6093         * metadata-verify.c: Implement standalone signature check.
6094
6095 2009-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
6096
6097         * metadata-verify.c: Implement methodref signature check.
6098
6099 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
6100
6101         * object-internals.h (MonoRuntimeCallbacks): New structure containing
6102         callbacks supplied by the runtime.
6103
6104         * object.c (mono_install_callbacks): New internal function to install
6105         the callbacks.
6106
6107         * object.c (mono_create_ftnptr): Move the implementation of this to
6108         mini/.
6109
6110         * object.c (mono_get_addr_from_ftnptr): Ditto.  
6111
6112 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
6113
6114         * metadata-verify.c (parse_return_type): Proper byref check.
6115         * metadata-verify.c (is_valid_method_signature): Check for zero arity
6116         generic signatures and method params.
6117
6118 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
6119
6120         * metadata-verify.c (decode_signature_header): Fix bounds check.
6121
6122         * metadata-verify.c (parse_custom_mods): Check custom mods.
6123
6124         * metadata-verify.c (parse_type): Do initial basic verification
6125         of valid values.
6126         
6127         * metadata-verify.c (is_valid_method_signature): Parse the generic
6128         param count.
6129
6130 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
6131
6132         * icall.c (ves_icall_Type_GetMethodsByName): Virtual methods should be
6133         discarded based on their most specific definition so we set the method_slots
6134         array before checking if the method is acceptable or not.
6135
6136         Fixes #506757.
6137
6138 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6139
6140         * icall.c: Free the old array when resizing a mono_ptr_array.
6141
6142 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6143
6144         * reflection.c (create_dynamic_mono_image): Use mono_object_hash()
6145         for the hashes whose keys are managed objects.
6146
6147 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6148
6149         * object-internals.h, threads.c: Set the execution context on
6150         thread start here, not in corlib.
6151
6152         * appdomain.c: Bump corlib version.
6153
6154 2009-05-27  Martin Baulig  <martin@ximian.com>
6155
6156         * mono-debug.c (mono_debug_init): Use `MONO_DEBUG_FORMAT_DEBUGGER'
6157         if `_mono_debug_using_mono_debugger' is set to make things work
6158         properly when embedding Mono.
6159
6160 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
6161
6162         * class.c (mono_class_setup_fields): Don't mark simd types as having
6163         16 bytes alignment as the whole runtime doesn't support.
6164
6165 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
6166
6167         * metadata-verify.c (safe_read): Use endian safe read macros.
6168
6169 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
6170
6171         * object.c (mono_create_ftnptr): Don't allocate from the code mempool since
6172         it is read-only when using full aot.
6173
6174 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6175
6176         * metadata-verify.c (is_valid_method_signature): Verify parts
6177         of the return type. Provide an error message in case of failure.
6178
6179 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6180
6181         * metadata-verify.c (is_valid_method_signature): Verify the call conv.
6182
6183 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6184
6185         * metadata-verify.c: Include the size prefix in the bounds check.
6186
6187 2009-05-22  Miguel de Icaza  <miguel@novell.com>
6188
6189         * icall.c: Remove warnings.
6190
6191         * mono-config.c: Allow for CONFIG_CPU to be set in config.h and
6192         prevent auto-detection based on GCC defines.
6193
6194         Add PS3
6195
6196         * metadata-verify.c: Do not include signal.h
6197
6198         * generic-sharing.c, marshal.c: Add returns to avoid some warning
6199         messages.  Not sure why the g_assert_not_reached is not enough to
6200         quiet the compiler.
6201         
6202
6203         * appdomain.c: Remove code that is not used when
6204         DISABLE_SHADOW_COPY is set.
6205
6206         * image.c: use g_getenv
6207
6208 2009-05-21  Miguel de Icaza  <miguel@novell.com>
6209
6210         * reflection.c: Remove code that it not used with
6211         DISABLE_REFLECTION_EMIT is defined.
6212
6213 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
6214
6215         * marshal.c (mono_marshal_get_runtime_invoke): Share more runtime
6216         invoke wrappers.
6217
6218 2009-05-20  Miguel de Icaza  <miguel@novell.com>
6219
6220         * socket-io.c
6221         (ves_icall_System_Net_Sockets_Socket_Available_internal): Remove
6222         the ifdef here and instead put that on io-layer
6223
6224 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6225
6226         * metadata-verify.c: Verify the generic param constraint table.
6227
6228 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6229
6230         * metadata-verify.c (verify_generic_param_table): Fix
6231         thinko on the valid flags bits for generic params.
6232
6233 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6234
6235         * metadata-verify.c: Verify the methodspec table.
6236
6237 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6238
6239         * metadata-verify.c: Verify the generic param table.
6240
6241 2009-05-19  Mark Probst  <mark.probst@gmail.com>
6242
6243         * sgen-gc.c: Store and use the count with REMSET_VTYPE.
6244
6245 2009-05-19  Mark Probst  <mark.probst@gmail.com>
6246
6247         * sgen-gc.c: Use generation enum more consistently and use the
6248         correct generation in mono_gc_register_for_finalization().
6249
6250 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
6251
6252         * metadata-verify.c: Verify the nested class table.
6253
6254 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
6255
6256         * metadata-verify.c: Verify the manifest resource table.
6257
6258 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
6259
6260         * debug-helpers.c (dis_one): Add little-endian support for ldstr.
6261
6262 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
6263
6264         * class.c (mono_class_get_vtable_entry): Avoid adding static-rgctx
6265         wrappers, this is now done in the JIT.
6266         
6267         * class.c (mono_set_generic_sharing_supported): New internal function.
6268         (mono_class_generic_sharing_enabled): Move the #ifdef stuff to the JIT.
6269
6270 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6271
6272         * metadata-verify.c: Verify the exported type table.
6273
6274 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6275
6276         * pedump.c (main): Fake an assembly for netmodules to make the verifier happy.
6277
6278 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6279
6280         * metadata-verify.c: Verify the file table.
6281
6282 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6283
6284         * metadata-verify.c (verify_assembly_table): Fix an error message.
6285
6286         * metadata-verify.c: Verify the assemblyref table.
6287
6288 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6289
6290         * metadata-verify.c (verify_assembly_table): Fix the valid
6291         bits mask for flags.
6292
6293 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
6294
6295         * debug-helpers.c (mono_method_full_name): Print generic parameters of
6296         generic methods as well.
6297
6298 2009-05-15  Geoff Norton  <gnorton@novell.com>
6299
6300         * gc.c: MachO/Darwin supports and uses semaphores fine for this 
6301         use-case and is significantly more performant than the wapi layer.
6302
6303 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6304
6305         * metadata-verify.c: Verify the assembly table.
6306
6307 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6308
6309         * metadata-verify.c: Fix rows limit check.
6310
6311 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6312
6313         * metadata-verify.c: Verify the fieldrva table.
6314
6315 2009-05-13  Mark Probst  <mark.probst@gmail.com>
6316
6317         * sgen.c: Speed up weak links and finalizers by grouping them by
6318         generation.
6319
6320 2009-05-13  Mark Probst  <mark.probst@gmail.com>
6321
6322         * marshal.c (delegate_hash_table_add): When overwriting an entry,
6323         free the old GCHandle (only applies to SGen).
6324
6325 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
6326
6327         * loader.c (mono_get_method_from_token): Avoid the expensive call to
6328         mono_metadata_load_generic_params () for non-generic methods.
6329
6330 2009-05-12  Mark Probst  <mark.probst@gmail.com>
6331
6332         * monitor.c, monitor.h (mono_monitor_get_object_monitor_weak_link):
6333         New function for returning a monitor's weak link if it has one.
6334
6335         * sgen-gc.c: Remove an object's monitor's weak link (if it has
6336         one) when clearing a domain.  These can still be around because
6337         the object might not have been collected.
6338
6339 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
6340
6341         * gc.c: Fix a warning.
6342
6343 2009-05-12  Kornél Pál  <kornelpal@gmail.com>
6344
6345         * gc.c (mono_gc_init): Set gc_thread on creation. This avoids the
6346         prevous wait that resulted in a deadlock on Windows when initializing
6347         the runtime form DllMain. Also results in improved startup time.
6348         (finalizer_thread): Get rid of thread_started_event.
6349         * threads.c, threads-types.h (mono_thread_create_internal): Return the
6350         resulting MonoThread.
6351
6352         Contributed under MIT/X11 license.
6353
6354 2009-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
6355
6356         * metadata-verify.c: Verify the implmap table.
6357         Don't require that #US and #Strings be present.
6358
6359 2009-05-11  Sebastien Pouliot  <sebastien@ximian.com>
6360
6361         * security-core-clr.c: Delegate checks are done at creation time,
6362         not a invocation time. Fix exception for Telerik Silverlight demo
6363
6364 2009-05-11  Mark Probst  <mark.probst@gmail.com>
6365
6366         * sgen-gc.c (need_remove_object_for_domain): Remove the special
6367         case for the Thread class.
6368
6369         * threads.c: Do clean-up of abort exception/state in
6370         thread_cleanup() instead of Thread.free_internal().  Also clean up
6371         current_appcontext.  The reason we have to do that is because
6372         those references might point into another domain and if that
6373         domain is unloaded before the thread is finalized, they point to
6374         invalid data.
6375
6376 2009-05-10  Andreas Faerber  <andreas.faerber@web.de>
6377
6378         * null-gc.c (mono_gc_weak_link_add, mono_gc_clear_domain): Fix
6379         stub signatures.
6380         
6381         Contributed unter MIT/X11 license.
6382
6383 2009-05-09  Miguel de Icaza  <miguel@novell.com>
6384
6385         * verify.c, metadata-verifier.c: Add support for disabling the
6386         verifier in some builds.
6387
6388         [ Sorry, my previous commit accidentally commited some work in
6389         progress ]
6390
6391 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
6392
6393         * class.c (mono_class_setup_fields): Set class->field.first for
6394         generic instances.
6395
6396 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
6397
6398         * metadata-verify.c: Verify the typespec table.
6399
6400 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
6401
6402         * metadata-verify.c: Verify the module table.
6403
6404 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6405
6406         * metadata-verify.c: Verify the methodimpl table.
6407
6408 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6409
6410         * metadata-verify.c: Verify the property table.
6411
6412 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
6413
6414         * debug-helpers.c (mono_method_desc_match): Add support for generic
6415         glob patterns.
6416
6417 2009-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
6418
6419         * metadata-verify.c: Verify the propertymap table.
6420
6421 2009-05-04 Rodrigo Kumpera  <rkumpera@novell.com>
6422
6423         * metadata-verify.c: Verify the event table.
6424
6425         * metadata-verify.c (search_sorted_table): Fix offset
6426         calculation.
6427
6428 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
6429
6430         * domain-internals.h (struct _MonoJitInfo): Add a 'from_llvm' flag.
6431
6432 2009-05-01  Mark Probst  <mark.probst@gmail.com>
6433
6434         * gc.c (mono_gc_run_finalize): Don't set the domain too late,
6435         because mono_delegate_free_ftnptr() needs it.
6436
6437 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6438
6439         * metadata-verify.c: Verify the eventmap table.
6440
6441 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6442
6443         * metadata-verify.c: Verify the standalonesig table.
6444
6445 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6446
6447         * metadata-verify.c: Verify the field layout table.
6448
6449 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6450
6451         * class.c (mono_type_get_name_recurse): Don't crash
6452         for ownerless generic params.
6453
6454         * debug-helpers.c (mono_type_get_desc): Correct the format
6455         for ownerless generic params.
6456
6457 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6458
6459         * metadata-verify.c: Verify the class layout table.
6460
6461 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6462
6463         * metadata-verify.c: Verify the decl security table.
6464
6465 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6466
6467         * domain.c (mono_domain_set_internal_with_options): Don't do
6468         anything if the old domain is the same as the old one.  Fixes
6469         #499326.
6470
6471 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6472
6473         * appdomain.c: Deregister the reflection_info roots when unloading
6474         a domain.
6475
6476         * sgen-gc.c, domain.c, gc-internal.h: mono_gc_clear_domain() nulls
6477         memory allocated by a domain and frees its disappearing links.
6478
6479         * boehm-gc.c, null-gc.c: Empty implementation of
6480         mono_gc_clear_domain().
6481
6482 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6483
6484         * appdomain.c (clear_cached_vtable): Free the static fields memory
6485         block.
6486
6487 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6488
6489         * gc.c: Set the correct domain when invoking finalizers.
6490
6491         * appdomain.c: Set the correct domain when creating threads.
6492
6493 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6494
6495         * sgen-gc.c: Fix skip size for vectors.
6496
6497 2009-05-03  Martin Baulig  <martin@ximian.com>
6498
6499         * mono-debug-debugger.c
6500         (mono_debugger_check_breakpoints): Check class init handlers even
6501         if we don't have any method load handers.
6502
6503 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
6504
6505         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid 
6506         returning refonly assemblies if refonly is FALSE. Fixes #499013.
6507
6508 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
6509
6510         * metadata-verify.c: Verify the field marshal table.
6511
6512 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
6513
6514         * metadata-verify.c: Verify the custom attribute table.
6515
6516 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6517
6518         * metadata-verify.c: Verify the constant table.
6519
6520 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6521
6522         * metadata-verify.c: Verify the memberef table.
6523
6524 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6525
6526         * metadata-verify.c (get_coded_index_token): Remove
6527         dead argument.
6528
6529 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6530
6531         * metadata-verify.c: Verify the interfaceimpl table.
6532
6533 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6534
6535         * verify.c: Improve error message.
6536
6537         * debug-helpers.c (mono_type_get_desc): Harden the code that
6538         deals with VAR and MVAR.
6539
6540 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
6541
6542         * image.c (mono_image_fixup_vtable): Avoid casting an lvalue. Fixes 
6543         part of #498692.
6544
6545 2009-04-23 Tom Hindle <tom_hindle@sil.org>
6546
6547         * cominterop.c (ves_icall_System_Runtime_InteropServices_Marshal_ReleaseComObjectInternal):
6548         changed to match .Net behaviour of not aborting on additional calls to ReleaseComObject.
6549
6550 2009-04-28  Sebastien Pouliot  <sebastien@ximian.com>
6551
6552         * security-core-clr.c: Avoid redundant checks for platform code, 
6553         e.g. check for method and for class (very common) and check
6554         for class and outer class (less common)...
6555
6556 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
6557
6558         * reflection.c: Avoid returning random cattrs for synthetic methods.
6559         Fixes #498545.
6560
6561 2009-04-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
6562
6563         * assembly.c: assemblies in the GAC should never be shadow-copied.
6564
6565 2009-04-26  Mark Probst  <mark.probst@gmail.com>
6566
6567         * domain.c, domain-internals.h: Disable
6568         track_resurrection_{objects,handles}_hash in MonoDomain if using
6569         SGen.
6570
6571 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6572
6573         * metadata-verify.c: Verify the param table.
6574
6575 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6576
6577         * metadata-verify.c (verify_typedef_table): Range check FieldList and
6578         MethodList.
6579
6580         * metadata-verify.c (verify_method_table): Proper check the ParamList
6581         field.
6582
6583 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6584
6585         * metadata-verify.c (verify_method_table): Check for runtime
6586         implemented functions such as delegate .ctors. Remove spurious
6587         printf.
6588         
6589 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6590
6591         * pedump.c: Proper initialize the runtime forcing the 2.0 profile.
6592
6593 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6594
6595         Don't allocate MonoGenericInfo for ownerless generic params.
6596         * class-internals.h (MonoGenericParam::info): Move field to ...
6597         (MonoGenericParamFull): ... this.  New struct.
6598         (MonoGenericContainer::type_params): Change type to
6599         MonoGenericParamFull.
6600         (MonoGenericParam, MonoGenericContainer): Update accessors.
6601         * metadata.c (mono_metadata_parse_generic_param): Don't initialize
6602         'info' field for ownerless generic param.
6603         (mono_metadata_load_generic_params): Update to changes.
6604         * reflection.c (mono_reflection_create_generic_class): Likewise.
6605         (reflection_methodbuilder_to_mono_method): Likewise.
6606         (mono_reflection_initialize_generic_parameter): Likewise.
6607
6608 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6609
6610         Don't use MonoGenericParamInfo for ownerless generic params.
6611         * class.c (get_anon_gparam_class, set_anon_gparam_class): New.  Don't
6612         use ParamInfo class at all.
6613         (mono_class_from_generic_parameter): Use them.
6614         (make_generic_param_class): Fix a couple of instances where 'pinfo
6615         == NULL' wasn't handle.
6616
6617 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6618
6619         * class.c (make_generic_param_class): Carve out of ...
6620         (mono_class_from_generic_parameter): ... here.
6621
6622 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6623
6624         Simplify mono_class_from_generic_parameter
6625         * class-internals.h (MonoGenericParamInfo::token): New field.
6626         * metadata.c (mono_metadata_load_generic_params): Initialize it
6627         from metadata.
6628         * class.c (mono_class_from_generic_parameter): Use it instead of
6629         searching through metadata.
6630
6631 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6632
6633         * metadata-verify.c: Add verification of the method table.
6634
6635 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6636
6637         * icall.c (ves_icall_Type_GetMethodsByName): Fix memleak for the
6638         Delegate::Invoke optimization.
6639
6640 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6641
6642         * appdomain.c (mono_domain_create_appdomain_internal): Free the
6643         string returned by get_shadow_assembly_location_base.
6644
6645         * appdomain.c (get_shadow_assembly_location_base): Add a comment
6646         about caller's ownership.
6647
6648 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6649
6650         * reflection.c: Add mono_reflection_cleanup_domain to cleanup
6651         reflection memory on domain unload.
6652
6653         * domain.c (mono_domain_free): Don't free refobject_hash, let the
6654         reflection cleanup code do it.
6655
6656         * domain-internals.h: Add mono_reflection_cleanup_domain.
6657
6658         This fixes a memory leak for managed mirrors of reflection objects
6659         on domain unload. 
6660
6661 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
6662
6663         * metadata-verify.c: Implement more verification of the field table.
6664
6665 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
6666
6667         * pedump.c (main): Init mono with mscorlib so it defaults to 2.0 and
6668         doesn't try to parse the input assembly, which can be broken.
6669
6670 2009-04-23  Mark Probst  <mark.probst@gmail.com>
6671
6672         * boehm-gc.c, gc-internal.h, gc.c, monitor.c, null-gc.c,
6673         sgen-gc.c: Implement track resurrection in weak GC handles in SGen
6674         by using the lowest bit in the link to store whether the link is
6675         tracked.  Move the track_resurrection hashes into boehm-gc.c.
6676
6677 2009-04-22  Miguel de Icaza  <miguel@novell.com>
6678
6679         * Makefile.am: Split the console support in platform specific code
6680         and put together a framework for making this easy in the future so
6681         that we can start splitting code instead of having a mess of PLATFORM_WIN32
6682
6683 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6684
6685         * pedump.c: Fix a warning.
6686
6687 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6688
6689         * verify.c (mono_delegate_type_equal): Compare valuetypes using
6690         mono_class_from_mono_type to avoid bad interactions with the dual representation
6691         of the generic type definition.
6692
6693 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6694
6695         * verify.c (do_invoke_method): Use mono_class_from_mono_type to
6696         get the MonoClass for the call context type as it might be a generic
6697         instance.
6698
6699         Fixes #491483.
6700
6701 2009-04-21  Mark Probst  <mark.probst@gmail.com>
6702
6703         * object-internals.h: The Thread object has no execution_context
6704         member anymore.
6705
6706         * threads.c, threadpool.c, threads-types.h: Accessor functions for
6707         the execution context.
6708
6709         * appdomain.c: Bump corlib version.
6710
6711 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6712
6713         * verify.c (do_newobj): Improve error message.
6714
6715 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6716
6717         * verify.c (verify_clause_relationship): Only mask as an error if the exception clause
6718         is nested in the filter block.
6719
6720         * verify.c (verify_clause_relationship): The disjoint check must verify if the exception
6721         block is not fully nested.
6722
6723         Fixes #495656.
6724
6725 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6726
6727         * verify.c (verify_type_compatibility_full): Compare MonoClass and
6728         not MonoType to check for equality of valuetypes as the generic type
6729         definition allows for two different encodings: the generic type definition
6730         class or a generic instance over the GTD arguments.
6731
6732         Fixes #496175.
6733
6734 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6735
6736         * verify.c (dump_stack_value): Fix compilation with extra debug turned on.
6737
6738         * verify.c (do_initobj): Improve error message.
6739
6740 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6741
6742         * metadata-verify.c: Enable pe verification as the issue with #496453
6743         is that the authenticode data directory have a different unspecified
6744         format. Ignore it for now.
6745
6746         * pedump.c: Run the metadata verifier together with the IL verifier.
6747
6748         Fixes ##496453.
6749
6750 2009-04-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6751
6752         * metadata-verify.c: Temporarily disable pe verification due to #496453.
6753
6754 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6755
6756         * class.c (can_access_type): Check visibility against
6757         the element type for pointers and arrays.
6758
6759         Fixes #496150.
6760
6761 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6762
6763         * metadata-verify.c: Fix cli and table verification to use information
6764         from the MonoImage. A lot of duplicated code got killed.
6765
6766 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6767
6768
6769         This patch starts to integrate the metadata verifier with the runtime code.
6770
6771         This patch causes major regression in functionality for the metadata verifier
6772         as cli and table verification are disabled since they require to be ported to
6773         use MonoImage information.
6774
6775         * image.c (do_mono_image_load): Split the code in this function
6776         into mono_image_load_pe_data and mono_image_load_cli_data.
6777         Add     care_about_pecoff parameter to not load pecoff data.
6778         Call into the metadata verifier for pecoff and cli verification.
6779
6780         * image.c (mono_image_open_raw): New function that doesn't perform
6781         any parsing of the image contents.
6782         
6783         The reason for the 3 new functions is to give pedump better control
6784         into the interaction with the verifier.
6785
6786         * metadata-internals.h: Add new functions from image.c as part of the
6787         internal mono API.
6788
6789         * metadata-verify.c: Split mono_image_verify into mono_verifier_verify_pe_data,
6790         mono_verifier_verify_cli_data and mono_verifier_verify_table_data. Prepare
6791         to make those functions work together with the runtime.
6792
6793         * verify.c: Add mono_verifier_is_enabled_for_image function that returns
6794         true if the image needs to be verified.
6795
6796         * verify-internals.h: Export new functions from metadata-verify.c and verify.c.
6797
6798         * pedump.c: Use new metadata verifier API.
6799
6800 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
6801
6802         * object.c (mono_install_vtable_trampoline): Make this receive a
6803         trampoline creation function instead of trampoline, allowing the JIT
6804         to use a different trampoline for each vtable.
6805
6806 2009-04-18  Mark Probst  <mark.probst@gmail.com>
6807
6808         * object.c (mono_raise_exception): Don't reset the thread abort
6809         exception state here.
6810
6811 2009-04-18  Mark Probst  <mark.probst@gmail.com>
6812
6813         * icall-def.h: New icall for getting the thread abort exception
6814         state for a thread.
6815
6816         * object.c, thread.c, object-internals.h: A thread's abort
6817         exception state is now a GC handle.  To get the object it stands
6818         for, we must move it into the current app domain, if it's
6819         different than the one where it originated from.
6820
6821         * appdomain.c: Bump corlib version.
6822
6823         * domain.c, domain-internals.h: New function for setting the
6824         domain and migrate the thread abort exception or not.
6825
6826 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6827
6828         * metadata-verify.c: Add initial verification of the
6829         field table.
6830
6831 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6832
6833         * metadata-verify.c: Add a macro to conditionally enable
6834         dumping of verification information. Add  make_coded_token
6835         and search_sorted_table to enable search sorted tables
6836         by a given coded token.
6837
6838 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6839
6840         * metadata-verify.c: Add array mapping from table index
6841         to description offset. Add get_col_offset and get_col_size
6842         functions.
6843
6844 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6845
6846         * metadata-verify.c: Add remaining table descriptions offsets.
6847         Add remaining coded index descriptions.
6848
6849 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6850
6851         * metadata-verify.c: Fixed constant table description.
6852         Fixed calculation of HasCustomAttribute coded index size.
6853         Fixed calculation of size for many table indexes. 
6854
6855 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6856
6857         * pedump.c (dump_metadata): Dump table offset instead
6858         of useless pointer in memory.
6859
6860 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6861
6862         * metadata-verify.c (verify_typedef_table): Add tests for MethodList.
6863
6864 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6865
6866         * metadata-verify.c (verify_typedef_table): Add tests for FieldList and
6867         a missing of for interface types.
6868
6869 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6870
6871         * metadata-verify.c (verify_pe_optional_header): Add comment of why
6872         the code is commented.
6873
6874         * metadata-verify.c (verify_resources_table): Remove spurious printf
6875         and don't fail if there are unmanaged resources. Gmcs generates a useless
6876         one     for all assemblies - I bet it's some MS compatibility junk.
6877
6878 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6879
6880         * metadata-verify.c (verify_typedef_table): Verify the extends field.
6881
6882         * metadata-verify.c (mono_image_verify): Add a is_corlib.
6883
6884         * verify-internals.h: Same.
6885
6886         * pedump.c: Fix for mono_image_verify new signature.
6887
6888 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6889
6890         * metadata-verify.c (verify_typedef_table): Verify for some invalid
6891         flags combinations.
6892
6893 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6894
6895         * metadata-verify.c (verify_module_table): Ignore the generation field.
6896
6897 2009-04-15  Martin Baulig  <martin@ximian.com>
6898
6899         * debug-mono-symfile.c
6900         (mono_debug_symfile_lookup_location): Don't print a warning for
6901         unknown extended opcodes if they're within 0x40 and 0x7f.
6902
6903 2009-04-15  Zoltan Varga  <vargaz@gmail.com>
6904
6905         * marshal.c (mono_marshal_get_runtime_invoke_sig): Don't share runtime
6906         invoke signatures returning an enum. Fixes #494847.
6907
6908 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6909
6910         * metadata-verify.c: Initial code to verify the typedef table.
6911
6912 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6913
6914         * verify.c (mono_method_verify): Don't fail if an unconditional branch
6915         with non empty stack happens before the beginning of a try block.
6916
6917         Fixes #494812.
6918
6919 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6920
6921         * metadata-verify.c: Verify typename and typenamespace fields of
6922         the typeref table.
6923
6924 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
6925
6926         * metadata-verify.c: Initial code to verify the typeref table.
6927
6928 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
6929
6930         * verify.c (verify_delegate_compatibility): Fix error message.
6931
6932 2009-04-14  Sebastien Pouliot  <sebastien@ximian.com>
6933
6934         * security-core-clr.c: Fix typo
6935
6936 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
6937
6938         * marshal.c (delegate_hash_table_add): Make delegate_target_locations 
6939         a MonoGHashTable to keep its values alive.
6940         (emit_marshal_boolean): Fix a warning.
6941
6942 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
6943
6944         * socket-io.c: don't return IPv4/IPv6 addresses if the machine does
6945         not have any interface configured for IPv4/IPv6.
6946
6947 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
6948
6949         * assembly.c: fix typo in error message.
6950
6951 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
6952
6953         * marshal.c (mono_delegate_to_ftnptr): Use mono_gc_alloc_fixed () for
6954         allocating the location holding the this argument to prevent
6955         'too many root sets' errors.
6956
6957         * object.c (mono_class_create_runtime_vtable): Set field->offset to -1
6958         to mark fields as special static.
6959         (mono_field_static_get_value): Handle special static fields.
6960         (mono_field_static_set_value): Ditto.
6961
6962         * class-internals.h (struct _MonoClassField): Document this.
6963
6964 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
6965
6966         * cominterop.c (mono_cominterop_emit_marshal_com_interface): Assigning
6967           the argument a value of null for the MARSHAL_ACTION_MANAGED_CONV_OUT
6968           case.  This will handle when managed code returns null to native code.
6969
6970         Code is contributed under MIT/X11 license.
6971
6972 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
6973
6974         * object.c (build_imt_slots): Changing a free to a g_free to match
6975           the g_malloc0 in add_imt_builder_entry that allocated this memory.
6976
6977         Code is contributed under MIT/X11 license.
6978
6979 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
6980
6981         * marshal.c (emit_marshal_boolean): Adding code to ensure that
6982           the correct TRUE value is passed through the marshaling layer.
6983
6984         Code is contributed under MIT/X11 license.
6985
6986 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
6987
6988         * marshal.c (mono_marshal_emit_managed_wrapper): Handle closed delegates
6989         correctly. Fixes #492330.
6990         
6991         * marshal.c: Fix the embedding of object pointers into JITted code in
6992         the native-to-managed wrappers by allocating some GC tracked memory, and
6993         embedding the address of that.
6994
6995 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
6996
6997         * object.c (mono_class_create_runtime_vtable): Avoid putting MonoMethod
6998         pointers into the vtable.
6999
7000 2009-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
7001
7002         * verify.c (mono_delegate_type_equal): Proper check MONO_TYPE_CLASS.
7003
7004         * verify.c (verify_ldftn_delegate): Improve error message.
7005
7006 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
7007
7008         * reflection.c (my_mono_class_from_mono_type): Remove.
7009
7010 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
7011
7012         Prepare to reduce memory usage of owner-less generic parameters (1/n)
7013         * class-internals.h (MonoGenericParam): Carve out pklass, name, flags
7014         and constraints fields into ...
7015         (MonoGenericParamInfo): ... this.
7016         (mono_generic_param_info, mono_generic_container_get_param_info):
7017         New accessors.
7018         * class.c, debug-helpers.c, icall.c: Update to changes.
7019         * metadata.c, reflection.c, verify.c: Likewise.
7020
7021 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
7022
7023         * debug-helpers.c (dis_one): Fix decoding of strings in dynamic images.
7024
7025         * marshal.c (get_runtime_invoke_type): Share enums with their base types.
7026         
7027         * marshal.c (get_runtime_invoke_type): Share pointers with ints and
7028         booleans with sbytes.
7029
7030 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
7031
7032         * class.c (can_access_instantiation): Verify accesibility of element types
7033         for arrays and pointers.
7034
7035         * class.c (can_access_type): Return true if the target class is VAR or MVAR.
7036
7037         * class.c (mono_method_can_access_method_full): Fix typos in the documentation.
7038
7039         Fixes #493068.
7040
7041 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
7042
7043         * verify.c (do_invoke_method): Improve error messages.
7044
7045 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
7046
7047         * verify.c:  Fixing the MSVC build.
7048
7049         Code is contributed under MIT/X11 license.
7050
7051 2009-04-08  Sebastien Pouliot  <sebastien@ximian.com>
7052
7053         * security-core-clr.c: Simplify get_reflection_caller not to call
7054         mono_method_get_last_managed (another stack walk) and adjust the
7055         callers to handle a (should not happen) NULL return value.
7056
7057 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
7058
7059         Add accessors to some MonoGenericParam fields
7060         * class-internals.h (mono_generic_param_owner): New accessor.
7061         (mono_generic_param_num): Likewise.
7062         (mono_type_get_generic_param_owner): New helper.
7063         (mono_type_get_generic_param_num): New helper.
7064         * class.c, icall.c, metadata.c, reflection.c, verify.c: Use them.
7065
7066 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
7067
7068         * class-internals.h (mono_generic_container_get_param): New wrapper.
7069         * class.c, icall.c, metadata.c, verify.c: Use it.
7070
7071 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
7072
7073         Fix gtest-252.cs
7074         * verify.c (mono_type_is_valid_type_in_context): Rewrite to use
7075         the standard case/loop.  In particular, don't complain about
7076         references to generic type definitions.
7077
7078 2009-04-07  Zoltan Varga  <vargaz@gmail.com>
7079
7080         * debug-helpers.c (dis_one): Decode string arguments.
7081
7082 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
7083
7084         * pedump.c (dump_verify_info): Dump type name correctly.
7085
7086 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
7087
7088         * verify.c (mono_method_verify): Don't init code slots for exception boundaries if they
7089         are larger than code size.
7090
7091         This can happen in valid code if the try/catch block is not followed by any instruction
7092         and do a backward branch on the leave instruction.
7093
7094         Fixes #492494.
7095
7096 2009-04-06  Sebastien Pouliot  <sebastien@ximian.com>
7097
7098         * security-core-clr.c: Fix typo while comparing second method names
7099         in can_avoid_corlib_reflection_delegate_optimization
7100
7101 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
7102
7103         * verify.c (do_throw): Don't allow an unboxed generic param ar argument.
7104
7105         Fixes #487738.
7106
7107 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
7108
7109         * metadata.c (do_mono_metadata_parse_type): Fail if we are decoding
7110         a MVAR using a class context.
7111
7112         Fixes #490335.
7113
7114 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
7115
7116         * object.c (mono_class_compute_gc_descriptor): Make this non-static.
7117
7118         * domain-internals.h (struct _MonoJitInfo): Add a 'gc_info' field.
7119
7120         * gc-internal.h (MonoGCCallbacks): New stucture containing the callback
7121         functions supplied by the JIT for the SGEN GC.
7122
7123         * sgen-gc.c: Call the callbacks supplied by the JIT to do stack marking.
7124         
7125 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
7126
7127         monitor.c (mono_monitor_try_enter_internal):
7128         Added calls to profile monitor contentions.
7129         Also duplicated a small piece of code (the "get the monitor" logic)
7130         from the fast path to the slow path, and changed the relevant goto
7131         statements, so that monitor acquisition events can be emitted from the
7132         slow path (this is by Paolo Molaro).
7133
7134 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
7135
7136         * profiler.c, profiler.h, profiler-private.h:
7137         Added support for profiling monitor contentions.
7138
7139 2009-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
7140
7141         * metadata-verify.c: Verify the modules table.
7142
7143 2009-04-02 Rodrigo Kumpera  <rkumpera@novell.com>
7144
7145         * verify.c (mono_generic_param_is_constraint_compatible): Inflate the candidate
7146         using the context of the method been verifier and not of the method been called.
7147
7148         * verify.c: Add verifier_inflate_type and mono_type_is_valid_type_in_context to
7149         safely inflate generic types. 
7150
7151 2009-04-02  Sebastien Pouliot  <sebastien@ximian.com>
7152
7153         * security-core-clr.c: Change the strategy for checking the 
7154         "reflection using delegates optimization" to avoid unneeded 
7155         attributes in multiple class libraries.
7156
7157 2009-04-02  Mark Probst  <mark.probst@gmail.com>
7158
7159         * sgen-gc.c: Remove object element in the disappearing link struct
7160         by storing the object pointer in the link.
7161
7162 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7163
7164         * pedump.c (dump_verify_info): Don't crash if signature decoding fails.
7165
7166 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7167
7168         * verify.c (verifier_load_field): Fail if the field parent could not be loaded.
7169
7170         * verify.c (mono_method_verify): Do proper bounds checking of exception
7171         clause ranges.
7172
7173 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7174
7175         * loader.c (mono_field_from_token): Don't crash if the field parent could
7176         not be decoded.
7177
7178 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7179
7180         * sgen-gc.c: Execute critical finalizers after ordinary
7181         finalizers.
7182
7183         * class-internals.h, domain.c: Add CriticalFinalizerObject to
7184         mono_defaults.
7185
7186 2009-03-31 Jb Evain <jbevain@novell.com>
7187
7188         * verify.c (do_ldstr): don't check if a string is in the user strings
7189         heap if the current image is dynamic.
7190
7191 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7192
7193         * sgen-gc.c: Wait until the last finalizer has executed when
7194         returning from WaitForPendingFinalizers.
7195
7196 2009-03-31  Martin Baulig  <martin@ximian.com>
7197
7198         * mono-debug-debugger.h (MonoDebuggerEvent): Add
7199         `MONO_DEBUGGER_EVENT_CREATE_APPDOMAIN' and
7200         `MONO_DEBUGGER_EVENT_UNLOAD_APPDOMAIN'.
7201         (mono_debugger_event_create_appdomain): New function.
7202         (mono_debugger_event_unload_appdomain): New function.
7203
7204         * appdomain.c (mono_domain_create_appdomain_internal): Call
7205         mono_debugger_event_create_appdomain().
7206
7207 2009-03-31  Martin Baulig  <martin@ximian.com>
7208
7209         * mono-debug-debugger.c
7210         (mono_debugger_register_class_init_callback): Also register the
7211         class init callback if the class is already initialized to make
7212         things work with shadow copied assemblies.
7213
7214 2009-03-31  Sebastien Pouliot  <sebastien@ximian.com>
7215
7216         * security-core-clr.c
7217         (mono_security_core_clr_ensure_reflection_access_field): Let 
7218         critical code access the field (just like we do for methods). Use
7219         check_field_access helper.
7220         (mono_security_core_clr_ensure_reflection_access_method): Use 
7221         check_field_access helper.
7222
7223 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7224
7225         * sgen-gc.c: Remove data (callback) element from FinalizeEntry and
7226         call the run-finalize function directly.
7227
7228         * gc.c, gc-internal.h: Make run_finalize() non-static.
7229
7230 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7231
7232         * sgen-gc.c: Use a separate struct for disappearing links.
7233
7234 2009-03-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
7235
7236         * socket-io.c: don't fail if the SocketOptionsFlag has Partial or
7237         * MaxIOVectorLength enabled, just ignore them.
7238         Fixes bug #349688.
7239
7240 2009-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
7241
7242         * metadata-verify.c: Fix eglib build.
7243
7244 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
7245
7246         * threads-types.h: Fix the win32 build.
7247
7248 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
7249
7250         * class.c: move coreclr inheritance/override checks to 
7251         security-core.clr.c
7252         * security-core.clr.c|h: add code from class.c with additional
7253         documentation. Fix override check when the method is not critical.
7254
7255 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
7256
7257         * debug-helpers.c (mono_method_desc_match): Make '*' match anything.
7258         (match_class): Ditto.
7259
7260 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
7261
7262         * metadata-verify.c: Rename bounds_check_offset to bounds_check_datadir.
7263
7264         * metadata-verify.c: Implement table layout row size calculation. Verify
7265         the total size of the tables.
7266
7267 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
7268
7269         * metadata-verify.c: Verify heap sizes and size to decode row counts. 
7270
7271 2009-03-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
7272
7273         * appdomain.c:
7274         * console-io.[ch]: added new mono_console_init() to make sure that
7275         file descriptors 0, 1 and 2 are opened.
7276         Bug #489019 fixed.
7277
7278 2009-03-27  Sebastien Pouliot  <sebastien@ximian.com> 
7279
7280         * appdomain.h: Export a new callback type and a new function to
7281         set this callback. This allow a mono host to provide it's own
7282         definition for "platform code".
7283         * metadata-internals.h: Add a core_clr_platform_code flag on 
7284         _MonoImage to (cache and) know if it is representing platform 
7285         code.
7286         * image.c (do_mono_image_open): Set core_clr_platform_code flag 
7287         on platform code images.
7288         * security-core-clr.c|h 
7289         (mono_security_set_core_clr_platform_callback): Allow the host
7290         to provide it's own platform check definition.
7291         (mono_security_core_clr_determine_platform_image): Detect if an 
7292         image is platform code (using the specified callback).
7293         (mono_security_core_clr_is_platform_image): Return cached value 
7294         for platform code.
7295
7296 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
7297
7298         * threads.c (mono_create_thread): New helper function to wrap CreateThread
7299         which has different parameter types for the 'tid' argument in windows and
7300         the io-layer.
7301
7302         * appdomain.c attach.c threads.c: Use the new helper.
7303
7304 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
7305
7306         * metadata-verify.c: Verify valid table bits.
7307
7308 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
7309
7310         * metadata-verify.c (verify_metadata_header): Store size in the size field.
7311
7312         * metadata-verify.c: Add initial table schema verification.
7313
7314 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
7315
7316         * icall.c (ves_icall_get_parameter_info): Add a 'member' argument, used to
7317         obtain the refclass argument needed by mono_param_get_objects (). Fixes
7318         #488383.
7319
7320         * reflection.c (mono_param_get_objects_internal): Add a 'refclass' argument.
7321
7322         * appdomain.c (MONO_CORLIB_VERSION): Bump this.
7323
7324 2009-03-26  Sebastien Pouliot  <sebastien@ximian.com>
7325
7326         * security-core-clr.c: Add/update documentation
7327
7328 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
7329
7330         * marshal.c (emit_marshal_object): Generate code to throw an exception
7331         instead of throwing it. Fixes #488670.
7332
7333 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com>
7334
7335         * appdomain.c: Bump MONO_CORLIB_VERSION to 73.
7336         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Add
7337         an extra 'throwOnBindFailure' parameter to the icall. Remove FIXME
7338         and add a call to mono_security_core_clr_ensure_delegate_creation
7339         to do the extra checks required by CoreCLR.
7340         * security-core-clr.c|h: Add function to check delegate creation,
7341         both in the binding and accessibility, under CoreCLR.
7342
7343 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com> 
7344
7345         * reflection.c (mono_reflection_create_dynamic_method): when 
7346         coreclr is enabled make sure that every resolved object are
7347         checked (e.g. field and method access).
7348         * security-core-clr.c|h: Add function to check objects resolved
7349         when a dynamic method is created.
7350
7351 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
7352
7353         * metadata-verify.c: Cache directory rva translations.
7354
7355         * metadata-verify.c: Add cli-header and streams verification.
7356
7357 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
7358
7359         * image.c (load_metadata_ptrs): We decode MonoImage::md_version_minor at
7360         the wrong offset (8 instead of 6).
7361
7362 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
7363
7364         * marshal.c (mono_delegate_to_ftnptr): For delegates wrapping pinvoke
7365         methods, return the native function address itself. Fixes
7366         #487758.
7367
7368 2009-03-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
7369
7370         * console-io.c: some of the values for control characters might not be
7371         present.
7372
7373 2009-03-21  Sebastien Pouliot  <sebastien@ximian.com>
7374
7375         * exception.c|h: Add helpers to create [Field|Method]AccessException
7376         * icall.c: Add required coreclr check calls for field reflection.
7377         Move the existing (method) check logic into security-core-clr.c
7378         * security-core-clr.c: Add functions to check if the access of a
7379         field or method is allowed when reflecting under coreclr. This is
7380         mostly done using a stack walk to find the "real" caller: i.e. the
7381         code that is calling the reflection
7382
7383 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
7384
7385         * gc-internal.h: Change location of gc_wrapper.h
7386
7387 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com> 
7388
7389         * class.c: Simplification to coreclr checks for overrides that
7390         makes it easier to set breakpoints.
7391
7392 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com>
7393
7394         * security-core-clr.c|h: (mono_security_core_clr_class_level, 
7395         mono_security_core_clr_method_level): Avoid potential 
7396         MonoCustomAttrInfo allocation for transparent assemblies (e.g. 
7397         user/application code) and make it easier to set breakpoints
7398
7399 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7400
7401         * metadata-verify.c: Reject cli header tables that mono don't handle.
7402
7403 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7404
7405         * pedump.c: Fix CLI header dumping.
7406
7407 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7408
7409         * metadata-verify.c: More CLI header verification.
7410
7411 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
7412
7413         * locales.c (get_current_locale_name): Use g_malloc instead of malloc.
7414
7415 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
7416
7417         * metadata-verify.c: Initial verification of the CLI header.
7418
7419 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
7420
7421         * metadata-verify.c (verify_resources_table): Fix verification of zero
7422         sized resource section and id entries count.
7423
7424 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
7425
7426         * icall.c: Handle user types in many Type icalls. Fixes #486303.
7427
7428 2009-03-17  Jb Evain  <jbevain@novell.com>
7429
7430         * profiler.c: call mono_gc_base_init from mono_profiler_load.
7431
7432 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
7433
7434         * sgen-gc.c (mono_gc_make_descr_for_object): Fix 64 bit support.
7435         (mono_gc_make_descr_for_array): Ditto.
7436
7437 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
7438
7439         * verify.c (mono_verifier_is_class_full_trust): Add support for
7440         CoreCLR security mode where trusted assemblies are defined as
7441         "platform code".
7442
7443 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7444
7445         * metadata-verify.c: Add minimal PECOFF resource verification.
7446
7447 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7448
7449         * metadata-verify.c: Be less restrictive with some coff fields.
7450
7451 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7452
7453         * verify.c (init_stack_with_value_at_exception_boundary): Init generic
7454         params as boxed values on stack. Fixes #485706.
7455
7456 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
7457
7458         * console-io.c: the termios values may vary in different flavors of unix.
7459
7460 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
7461
7462         * console-io.[ch]: return the entire set of control characters when
7463         initializing the terminal.
7464         * appdomain.c: bump corlib version.
7465
7466 Mon Mar 16 11:11:26 CET 2009 Paolo Molaro <lupus@ximian.com>
7467
7468         * mono-perfcounters.c: added support for in-process custom
7469         performance counters.
7470
7471 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7472
7473         * metadata-verify.c: Small cleanup and add comment for IAT directory entry. 
7474
7475 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7476
7477         * metadata-verify.c: Verify the data pointed by the import table. 
7478
7479 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7480
7481         * metadata-verify.c (load_data_directories): Store data
7482         directory contents.
7483
7484         * metadata-verify.c: Verify the import table. 
7485
7486 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7487
7488         * metadata-verify.c: Verify data directories.
7489
7490 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7491
7492         * metadata-verify.c: Check section header flags.
7493
7494 2009-03-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
7495
7496         * appdomain.c: if the assembly name is a shadow-copied file, return
7497         TRUE from mono_is_shadow_copy_enabled but don't actually do anything
7498         in mono_make_shadow_copy.
7499         * icall.c: if the assembly name is a shadow-copied file, replace it
7500         with the original assembly path.
7501
7502         Bug #484244 fixed. NUnit tests for corlib can be run without
7503         --noshadow now.
7504
7505 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
7506
7507         * sgen-gc.c (add_to_global_remset): Fix the handling of root global remset
7508         entries when the table is reallocated.
7509
7510         * icall.c: Allocate the memory used by the mono_ptr_array macros using
7511         mono_gc_alloc_fixed () since it contains GC refs.
7512
7513 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
7514
7515         * reflection.c (ensure_complete_type): New helper function to call
7516         type resolve handlers for unfinished dynamic types.
7517         (resolve_object): Call it for MonoClassFields. Fixes #483852.
7518
7519 2009-03-09  Zoltan Varga  <vargaz@gmail.com>
7520
7521         * reflection.c (mono_custom_attrs_has_attr): Handle interfaces. Fixes
7522         #483247.
7523
7524 2009-03-08 Rodrigo Kumpera  <rkumpera@novell.com>
7525
7526         * appdomain.c (get_shadow_assembly_location): Fix memleak.
7527
7528 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
7529
7530         * domain-internals.h (struct _MonoDomain): Add new hash tables mapping
7531         between GCHandles of type WeakTrackResurrection and the objects they
7532         point to.
7533
7534         * gc.c: Partly implement the sematics of GCHandles of type 
7535         WeakTrackResurrection: these handles should only be cleared after the
7536         finalizer of the object they are pointing to has ran.
7537
7538 2009-03-06  Mark Probst  <mark.probst@gmail.com>
7539
7540         * icall.c: Partially revert r126631 because using the jump
7541         trampolines for generic shared methods makes it superfluous.
7542
7543 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
7544
7545         * threads.c (handle_store): Create the 'threads' hash table with the proper
7546         MONO_HASH_VALUE_GC type.
7547
7548 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
7549
7550         * domain-internals.h (struct _MonoDomain): Move 'typeof_void' before
7551         FIRST_GC_TRACKED.
7552
7553         * domain.c (mono_domain_create): Register the fields between FIRST_GC_TRACKED
7554         and LAST_GC_TRACKED as a GC root.
7555
7556         * gc-internal.h: Fix the comment of mono_gc_alloc_fixed.
7557
7558         * object.c (mono_class_create_runtime_vtable): Create a GC descriptor for
7559         the static data even if it consists of 1 reference.
7560
7561         * boehm-gc.c (mono_gc_alloc_fixed): Allocate using GC_MALLOC_EXPLICITLY_TYPED
7562         if there is a GC descriptor.
7563
7564         * reflection.c (ALLOC_REFENTRY): Allocate ReflectedEntry-es using malloc
7565         instead of through the GC since they contain no object references.
7566
7567 2009-03-05  Mark Probst  <mark.probst@gmail.com>
7568
7569         * generic-sharing.c (instantiate_other_info): Always return a jump
7570         trampoline for method code.
7571
7572 2009-03-05  Marek Habersack  <mhabersack@novell.com>
7573
7574         * culture-info-tables.h: generated to include the en-tt culture.
7575
7576 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
7577
7578         * domain-internals.h (MonoDomain): Add two fields to cache invoke wrappers to
7579         capture the thread context.
7580
7581         * object.c (mono_async_result_new): Cache the invoke wrappers to
7582         ExecutionContext::Capture.
7583
7584 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
7585
7586         * marshal.h: Add a prototype for what mono_compile_method returns
7587         for invoke wrappers.
7588
7589         * gc.c: Use the new prototype declaration.
7590
7591 2009-03-04  Geoff Norton  <gnorton@novell.com>
7592
7593         * boehm-gc.c: Add some MONO_LOG tracing for the GC
7594         * gc-internal.h:
7595         * mono-gc.h: Expose mono_gc_invoke_finalizers in the embedding api.
7596
7597 2009-03-04  Martin Baulig  <martin@ximian.com>
7598
7599         * mono-debug.h
7600         (mono_debugger_runtime_invoke): Removed.
7601
7602         * mono-debug-debugger.c
7603         (mono_runtime_invoke): Moved into ../mini/debug-mini.c.
7604
7605 2009-03-02  Martin Baulig  <martin@ximian.com>
7606
7607         * mono-debug.h
7608         (mono_debugger_unhandled_exception): Removed.
7609         (mono_debugger_handle_exception): Removed.
7610         (mono_debugger_throw_exception): Removed.
7611
7612         * mono-debug.c
7613         (mono_debug_debugger_version): Bump to 5.
7614
7615         * mono-debug-debugger.c: Moved the exception handling code to
7616         ../mini/debug-mini.c
7617
7618 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
7619
7620         * domain-internals.h (struct _MonoDomain): Add a separate lock for the
7621         finalize_objects_hash.
7622
7623         * gc.c: Use the separate lock to access the finalize_objects_hash field.
7624         
7625         * domain-internals.h (struct _MonoDomain): Add finalize_runtime_invoke
7626         field.
7627
7628         * metadata-internals.h (struct _MonoImage): Add runtime_invoke_vcall_cache
7629         cache.
7630
7631         * image.c (mono_image_close): Free it.
7632         
7633         * marshal.c (mono_marshal_get_runtime_invoke): Add a 'virtual' argument
7634         allowing a creation of a wrapper which invokes its method using a CALLVIRT
7635         on the this argument.
7636
7637         * gc.c (run_finalize): Optimize the calling of the finalizers.
7638
7639 2009-03-03  Martin Baulig  <martin@ximian.com>
7640
7641         * mono-debug.h (MONO_DEBUGGER_MAJOR_VERSION): Bump to 81 because
7642         of the `MonoGenericInst' changes.
7643
7644 2009-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7645
7646         * icall.c (ves_icall_MonoType_GetGenericArguments): Use
7647         mono_array_class_get_cached to reduce locking contention. Extract
7648         a domain var.
7649
7650         * icall.c (ves_icall_Type_GetFields_internal): Avoid allocating
7651         intermediary managed arrays. Use caching version of mono_array_new
7652         to allocate the result array.
7653
7654         * icall.c (ves_icall_Type_GetEvents_internal): Same.    
7655
7656         * icall.c (ves_icall_Type_GetNestedTypes): Same.        
7657
7658         * locales.c (create_names_array_idx):  Use mono_array_new_cached
7659         to reduce locking contention.
7660
7661 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
7662                 
7663         * object.c (mono_method_add_generic_virtual_invocation): Put back the
7664         thunk builder code for the non-interface case.
7665
7666 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
7667
7668         * object.c (get_generic_virtual_entries): New helper function to collect
7669         the virtual generic method instances which need to be added to an IMT
7670         thunk.
7671         (mono_method_add_generic_virtual_invocation): Add a 'vtable' argument.
7672         Instead of creating a new IMT thunk, reset the vtable slot to the
7673         trampoline, the thunk will be created the next time the trampoline is called.
7674         (build_imt_slots): Add support for virtual generic methods in interfaces by
7675         adding to the IMT thunk all the methods registered using 
7676         mono_method_add_generic_virtual_invocation ().
7677
7678         * object-internals.h (_MonoImtBuilderEntry): Add a 'has_target_code' field.
7679         (struct _MonoIMTCheckItem): Ditto.
7680
7681         * object.c (mono_method_add_generic_virtual_invocation): Take a
7682         MonoMethod argument instead of a MonoGenericInst. Fix the construction of
7683         the IMT thunk to include all items.
7684         
7685         * object.c (mono_class_create_runtime_vtable): Add a missing
7686         mono_loader_unlock ().
7687
7688 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7689
7690         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7691
7692         * object-internals.h (MonoReflectionEvent): Add cached_add_event.
7693
7694 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7695
7696         * object-internals.h: Rename _MonoReflectionEvent to
7697         MonoReflectionMonoEvent so it reflects the right managed type.
7698         Add a MonoReflectionEvent that correctly represents System.EventInfo.
7699
7700         * icall.c:
7701         * reflection.c: Adjust code to use the new MonoReflectionMonoEvent
7702         type.
7703
7704 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7705
7706         * icall.c (ves_icall_Type_GetMethodsByName): Avoid allocating
7707         intermediary managed arrays. Use caching version of mono_array_new
7708         to allocate the result array.
7709
7710 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7711
7712         * reflection.c: Use cached version of mono_array_new alongside
7713         the mono_reflection_get_custom_attrs_by_type call path.
7714
7715 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7716
7717         * icall.c (ves_icall_Type_GetInterfaces): Avoid allocating
7718         intermediary managed arrays. Use caching version of mono_array_new
7719         to allocate the result array.
7720
7721         * icall.c (ves_icall_Type_GetConstructors_internal): Same.
7722
7723 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7724
7725         * icall.c: Add small implementation of a growable stack bound array.
7726
7727         * icall.c (ves_icall_System_Enum_get_hashcode): Fix warning.
7728
7729         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid allocating
7730         intermediary managed arrays. Use caching version of mono_array_new
7731         to allocate the result array.
7732
7733 2009-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
7734
7735         * icall.c: New icall ves_icall_System_Enum_compare_value_to that
7736         helps Enum::CompareTo to be implemented without reboxing all enums
7737         to their underlying type.
7738 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
7739
7740         * domain.c (SET_APPDOMAIN): Avoid calling TlsSetValue () on some platforms,
7741         since it acquires a global lock leading to scalability problems.
7742
7743         * profiler.c: Make the stat profiler work with multiple appdomains, this
7744         currently only works when no appdomains are unloaded.
7745
7746 2009-02-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
7747
7748         * appdomain.c: make the check to avoid copying when the assembly is
7749         already shadow copied actually work.
7750
7751 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
7752
7753         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7754
7755         * object-internals.h (struct _MonoReflectionGenericClass): Sync with
7756         changes to the managed side.
7757
7758 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
7759
7760         * metadata-internals.h (struct _MonoImage): Add a new cache for szarray
7761         classes + a separate lock for it, as it is used frequently at runtime, not
7762         just during metadata loading/JIT compilation.
7763
7764         * class.c (mono_bounded_array_class_get): Use the separate cache + lock
7765         for szarrays.
7766         
7767         * object-internals.h (mono_class_from_name_cached): New macro to cache
7768         the results of the lookup locally without having to declare a static
7769         variable to hold it.
7770         (mono_class_get_field_from_name_cached): Ditto.
7771         (mono_array_class_get_cached): Ditto.
7772
7773         * threadpool.c threads.c locales.c icall.c reflection.c socket-io.c: Use
7774         the new macros.
7775         
7776         * object.c (mono_get_delegate_invoke): Call setup_methods () to avoid the
7777         slower search in metadata.
7778
7779         * pedump.c: Fix a warning.
7780
7781 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
7782
7783         * reflection.c (encode_locals): Add checks for user types.
7784         (method_encode_clauses): Ditto.
7785         (method_encode_code): Ditto.
7786         (mono_image_create_token): Ditto.
7787
7788         * object-internals.h: Change the type of more fields from MonoReflectionType*
7789         to MonoObject*.
7790
7791 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
7792
7793         * threads.c (mono_thread_suspend_all_other_threads): Handle the case when
7794         the a thread does not suspend within 100ms.
7795
7796         * monitor.c (mono_monitor_try_enter_internal): Handle SuspendRequested
7797         in addition to StopRequested as well.
7798
7799         * mono-debug.c: Call _mono_debug_get_image () while holding the debug lock.
7800
7801         * debug-mono-symfile.c (mono_debug_symfile_lookup_method): Actually
7802         search the method_hash before inserting a new entry, to avoid crashes when
7803         the same method is inserted multiple times, causing the old 
7804         MonoDebugMethodInfo structure to be freed by the value dtor function.
7805
7806 2009-02-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
7807
7808         * socket-io.c: support SO_MAXCONN, SO_USELOOPBACK and
7809         SO_EXLUSIVEADDRUSE where available.
7810
7811 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
7812
7813         * marshal.c (mono_marshal_get_runtime_invoke): Fix _another_ bug sharing
7814         runtime invoke wrappers, this time it is string ctor wrappers, which
7815         pass a dummy string as 'this' instead of their obj argument. Fixes
7816         #478473.
7817
7818 2009-02-21  Jb Evain  <jbevain@novell.com>
7819
7820         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
7821         only get create_culture once.
7822
7823 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
7824
7825         * reflection.c (mono_reflection_setup_internal_class): Move the user type
7826         check before the locking.
7827         
7828         * reflection.c (mono_reflection_setup_internal_class): Check for user types.
7829         (mono_reflection_create_runtime_class): Ditto.
7830         (mono_reflection_sighelper_get_signature_local): Ditto.
7831         (mono_reflection_sighelper_get_signature_field): Ditto.
7832
7833         * object-internals.h (CHECK_MONOTYPE): New macro to check that a Type object
7834         is a System.MonoType object or similar.
7835         (monotype_cast): New helper function to cast a MonoObject to a 
7836         MonoReflectionType object.
7837
7838         * object-internals.h: Change MonoReflectionType* members in structures to
7839         MonoObject* members to force the usage of the monotype_cast () function.
7840
7841         * reflection.c icall.c: Use monotype_cast () for accessing Type members of
7842         structures/arrays. This causes us to assert instead of crashing when 
7843         instances of user defined subclasses of System.Type are encountered.
7844
7845 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
7846
7847         * cil-coff.h:
7848         * icall-def.h:
7849         * icall.c: add new GetUnmanagedResourcePtr that returns a pointer to a
7850         win32 resource loaded from a PE file.
7851
7852         * image.c: fix mono_image_lookup_resource.
7853
7854 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
7855
7856         * icall-def.h:
7857         * threads-types.h:
7858         * threads.c: added internal call for WaitHandle.SignalAndWait.
7859
7860 2009-02-19  Bill Holmes  <billholmes54@gmail.com>
7861
7862         * cominterop.c : Adding cominterop_type_from_handle and 
7863           registering it as an icall.  Replacing all references
7864           to type_from_handle.
7865
7866         Code is contributed under MIT/X11 license.
7867
7868 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
7869
7870         * Makefile.am: Add lock-tracer.h and lock-trace.c.
7871
7872         * appdomain.c: Call the tracer init function.
7873
7874         * domain-internals.h: Enable the tracer for the domain locks.
7875
7876         * image.c: Enable the tracer for image locks.
7877
7878         * loader.c: Enable the trace for the loader lock.
7879
7880         * lock-tracer.h:
7881         * lock-tracer.c: Initial implementation of the lock trace utility.
7882         The tracer requires a compile time define to be enabled and a env var
7883         to be enabled at runtime.
7884
7885 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
7886
7887         * domain.c (mono_domain_code_foreach): Improve documentation.
7888
7889 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
7890
7891         * appdomain.c:
7892         * generic-sharing.c:
7893         * object.c:
7894         * reflection.c:  Adjust locking order to the new semantics where the loader lock
7895         comes first.
7896
7897 2009-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
7898
7899         * domain.c: Add mono_domain_code_* functions that perform locking
7900         around the domain codeman.
7901
7902         * domain-internals.h: Export those functions.
7903
7904         * object.c: Use new functions instead of acquiring the domain lock.
7905
7906 2009-02-19  Zoltan Varga  <vargaz@gmail.com>
7907
7908         * marshal.c (mono_ftnptr_to_delegate): Convert a NULL ftnptr to a null
7909         delegate. Fixes #477396.
7910
7911 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
7912
7913         * reflection.c (create_custom_attr): Get rid of alloca.
7914
7915 2009-02-18  Bill Holmes  <billholmes54@gmail.com>
7916
7917         * cominterop.c (cominterop_get_managed_wrapper_adjusted) :
7918           Adding exception handling for all CCW calls.
7919
7920         Code is contributed under MIT/X11 license.
7921
7922 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
7923
7924         * reflection.c (mono_reflection_init): Remove the unused reflection mutex.
7925
7926         * marshal.c (emit_marshal_boolean): Add null checks to the new 
7927         native->managed marshalling code. Fixes #476247.
7928
7929 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
7930
7931         * class.c (mono_class_get_vtable_entry): Move the addition of
7932         static rgctx invoke wrappers for vtable methods here, this simplifies
7933         a lot of code and causes fewer rgctx wrappers to be created.
7934
7935         * marshal.c (mono_marshal_get_static_rgctx_invoke): Change the
7936         name of the statistics to begin with an uppercase.
7937
7938 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
7939
7940         * reflection.c: Revert previous change as it breaks the build.
7941         
7942 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
7943
7944         * verify.c: Properly handle SZARRAY element type.
7945
7946         Fixes #474271.
7947
7948 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
7949
7950         * reflection.c (mono_image_create_method_token): Correctly encode
7951         MethodDef MemberRefParent token.
7952
7953         Fixes #472845.
7954
7955 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
7956
7957         * image.c (mono_image_close): Delete the critical section before
7958         freeing the memory holding it.
7959
7960 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7961
7962         * verify.c (mono_method_verify): rethrow opcode doesn not fall through.
7963         Fixes #476257.
7964
7965 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7966
7967         * pedump.c (main): Call mono_marshal_init so pedump
7968         doesn't crash.
7969
7970 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7971
7972         * loader.c (method_from_memberref): Properly fix #474271 and
7973         don't break the runtime bad.
7974
7975 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
7976
7977         * domain.c (mono_domain_alloc): Add locking so the caller doesn't have to.
7978         (mono_domain_alloc0): Ditto.
7979
7980 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7981
7982         * loader.c (method_from_memberref): Don't abort if the array
7983         method is not found. A regular loader failure is more informative
7984         and correct.
7985
7986         Fixes #474271.
7987
7988 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7989
7990         *loader.c: Guard MonoImage::method_cache/methodref_cache
7991         using the image lock instead of the loader lock.
7992
7993         * metadata.h: Add comments about which fields are protected by
7994         the image lock.
7995
7996 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
7997
7998         * appdomain.c (mono_set_private_bin_path_from_config): Fix a warning.
7999
8000         * generic-sharing.c (mono_method_construct_object_context): Remove the
8001         wrapper_type == NONE assert, it is not needed.
8002
8003 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
8004
8005         * reflection.c (clear_cached_object): New helper function.
8006         (mono_method_clear_object): New function to clear the cached reflection
8007         objects for a dynamic method.
8008
8009         * object.c (mono_runtime_free_method): Call mono_method_clear_object ().
8010         Partly fixes # 463323.
8011         
8012 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
8013
8014         * class.c:
8015         * loader.c:
8016         * reflection.c: Remove all explicit uses of MonoImage::property_hash.
8017
8018 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
8019
8020         * image.c: Add mono_image_property_(lookup,insert,remove) functions that
8021         take the image lock instead of the loader lock.
8022
8023         * metadata-internals.h: Export new functions.
8024
8025 2009-02-12  Miguel de Icaza  <miguel@novell.com>
8026
8027         * domain.c (app_config_parse): Remove another use of stat that is
8028         not necessary as g_file_get_contents already does the presence
8029         check. 
8030
8031 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
8032
8033         * cominterop.c icall-def.h: Fix the DISABLE_COM build.
8034
8035         * marshal.c: Move the bstr handling code to cominterop.c.
8036
8037         * marshal.c: Remove some COM interop code missed previously.
8038
8039 2009-02-12  Miguel de Icaza  <miguel@novell.com>
8040
8041         More Paolo patches from the Wii port:
8042         
8043         * security.c: Remove ves_icall_System_Environment_get_UserName
8044         from here.
8045
8046         * icall.c: And put ves_icall_System_Environment_get_UserName
8047         here. 
8048
8049         * appdomain.c (mono_set_private_bin_path_from_config): Remove
8050         redundant call to stat that was only used to test for the file
8051         existence.   Patch from Paolo.
8052
8053         * gc.c (run_finalize): If COM is disabled, do not link in
8054         mono_marshal_free_ccw.
8055
8056         * generic-sharing.c: Use alloca.h here as well.
8057
8058 2009-02-13 Rodrigo Kumpera  <rkumpera@novell.com>
8059
8060         * reflection.c (mono_reflection_lookup_dynamic_token): Do the locking properly.
8061
8062 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
8063
8064         * cominterop.c cominterop.h: New files.
8065
8066         * marshal.c: Move the COM interop related code to cominterop.c. Make a few
8067         function/typedefs which are needed by cominterop.c global.
8068
8069 2009-02-12  Mark Probst  <mark.probst@gmail.com>
8070
8071         * generic-sharing.c: Don't take the loader lock to guard image
8072         mempool allocs.
8073
8074 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8075
8076         * reflection.c (mono_reflection_lookup_dynamic_token): This function might be
8077         called without the loader lock which is required to guard MonoImage:tokens.
8078
8079 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8080
8081         * class.c:
8082         * metadata.c:
8083         * method-builder.c:
8084         * marshal.c:
8085         * reflection.c: Don't take the loader lock to alloc memory from the image mempool.
8086
8087 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8088
8089         * metadata.c: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
8090         Rework the code to use regular mono_image_alloc/0.
8091
8092         * loader.c: Rework the code to use regular mono_image_alloc/0.
8093
8094         * metadata-internals.h: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
8095
8096 2009-02-12  Bill Holmes  <billholmes54@gmail.com>
8097
8098         * object-internals.h : Fixing a typo in the 
8099           MonoReflectionComVisibleAttribute struct.
8100
8101         * marshal.c (cominterop_com_visible): Check the implemented 
8102           interfaces for ComImport.
8103
8104         * marshal.c (cominterop_get_native_wrapper_adjusted): For COM calls 
8105           assume that bools should be treated as VARIANTBOOLs.
8106
8107         * marshal.c (emit_marshal_boolean): Adding cases for 
8108           MARSHAL_ACTION_MANAGED_CONV_IN and MARSHAL_ACTION_MANAGED_CONV_OUT.
8109
8110         * marshal.c (mono_marshal_emit_managed_wrapper): Adding calls to 
8111           emit_marshal MARSHAL_ACTION_MANAGED_CONV_IN and OUT for bools.
8112
8113         * marshal.c (cominterop_get_ccw): For COM calls assume that bools
8114           should be treated as VARIANTBOOLs.    
8115
8116         Code is contributed under MIT/X11 license.
8117
8118 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8119
8120         * image.c (mono_image_alloc, mono_image_alloc0, mono_image_strdup): Guard mempool
8121         allocation with the image lock.
8122
8123 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8124
8125         This patch is the last of a series to remove explicit reference of MonoImage::mempool
8126         and use mono_image_alloc set of functions instead. This time we finish with reflection.c
8127
8128         * object.c: Add mono_string_to_utf8_image.
8129
8130         * object-internals.h: Export mono_string_to_utf8_image.
8131
8132         * reflection.c: Rework all explicit references to the the image mempool to go thought
8133         the mono_image_alloc set of functions.
8134
8135 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8136
8137         This patch is the third of a series to remove explicit reference of MonoImage::mempool
8138         and use mono_image_alloc set of functions instead. This time we finish with marshal.c
8139         and generics-sharing.c.
8140
8141         * generics-sharing.c (set_other_info_templates): Take a MonoImage instead of a MonoMemPool
8142         as first argument. Note that this function remains broken as it doesn't perform locking around the
8143         mempool allocation.
8144
8145         * generics-sharing.c (rgctx_template_set_other_slot): Pass the image and not the mempool.
8146
8147         * image.c: Add g_slist_append_image.
8148
8149         * metadata.c (mono_metadata_field_info_with_mempool): Remove the mempool argument and use
8150         the supplied image for allocation. Move code into mono_metadata_field_info_full.
8151
8152         * metadata.c (mono_metadata_parse_marshal_spec_full): Take a MonoImage instead of a MonoMemPool.
8153         Fix all related code to do the same.
8154
8155         * marshal.c (mono_marshal_load_type_info): Pass the image instead of the mempool.
8156
8157         * metadata-internals.h: Fix the signatures.
8158
8159 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8160
8161         This patch is the second of a series to remove explicit reference of MonoImage::mempool
8162         and use mono_image_alloc set of functions instead. This time we rework mono_metadata_type_dup
8163         and similar to work using MonoImage.
8164
8165         * class.c (mono_mempool_dup): Rename to mono_image_memdup and take a MonoImage instead of a
8166         MonoMemPool.
8167
8168         * class.c (mono_dup_array_type): Take a MonoImage instead of a MonoMemPool as first argument.
8169
8170         * class.c (mono_metadata_signature_deep_dup): Same.
8171
8172         * class.c (inflate_generic_type): Same.
8173
8174         * class.c (mono_class_inflate_generic_type_with_mempool): Same.
8175
8176         * metadata.c (mono_metadata_signature_dup_full): Same.
8177
8178         * metadata.c: Add mono_metadata_signature_dup_mempool and extract common functionality from 
8179         mono_metadata_signature_dup_full.
8180
8181         * metadata.c (mono_metadata_type_dup): Same.
8182
8183         * marshal.c: Pass the image to calls to mono_metadata_type_dup.
8184
8185         * reflection.c: Same.
8186
8187         * generic-sharing.c: Pass the image to calls to mono_class_inflate_generic_type_with_mempool.
8188
8189         * metadata-internals.h: Fix the signatures.
8190
8191         * class-internals.h: Same.
8192
8193 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8194
8195         This patch is the first of a series to remove explicit reference of MonoImage::mempool
8196         and use mono_image_alloc set of functions instead. 
8197
8198         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy):
8199         Rename to mono_class_inflate_generic_type_no_copy and take a MonoImage instead
8200         of a MonoMemPool.
8201
8202         * class.c (mono_class_setup_fields): Adapt to mono_class_inflate_generic_type_no_copy.
8203
8204         * class.c (g_list_prepend_mempool): Removed.
8205
8206         * class.c (mono_class_get_nested_types): Use g_list_prepend_image instead of g_list_prepend_mempool.
8207
8208         * image.c: Add g_list_prepend_image.
8209
8210         * metadata-internals.h (struct MonoImage): Fix comment. Export g_list_prepend_image as internal.
8211
8212         * reflection.c (mono_reflection_create_runtime_class): Use g_list_prepend_image instead of g_list_prepend_mempool.
8213
8214
8215 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8216
8217         * metadata-internals.h (struct MonoImage): Add lock field. Export mono_image_lock and
8218         mono_image_unlock.
8219
8220         * image.c (mono_image_init): Init the lock field.
8221  
8222         * image.c (mono_image_init): Cleanup the lock field.
8223
8224         * image.c: Add mono_image_(un)lock functions.
8225
8226 2009-02-11  Mark Probst  <mark.probst@gmail.com>
8227
8228         * class.c, class-internals.h: mono_method_get_context_general()
8229         combines the functionality of mono_method_get_context() and
8230         mini_method_get_context().
8231
8232         * generic-sharing.c, domain-internals.h:
8233         mono_method_construct_object_context() and
8234         mono_domain_lookup_shared_generic() moved from mini.
8235
8236         * icall.c (ves_icall_InternalInvoke): Handle the case where the
8237         method doesn't have the correct instantiation because it's shared
8238         generic code.  Fixes #473999.
8239
8240 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
8241
8242         * loader.c (mono_method_get_wrapper_data): Handle inflated methods as well.
8243
8244         * loader.c (mono_loader_lock): Add a comment pointing to the locking document.
8245         
8246 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8247
8248         * metadata.c: Make mono_image_alloc_lock and mono_image_alloc0_lock non static.
8249
8250         * metadata-internals.h: Export mono_image_alloc_lock and mono_image_alloc0_lock.
8251
8252         * loader.c (mono_get_method_full): Drop the loader lock while constructing the method
8253         and recheck the cache for dups after it.
8254
8255         * loader.c (mono_get_method_from_token): Use _lock version of mono_image_alloc0.
8256
8257         Fixes one of the deadlocks found in #473150.
8258
8259 2009-02-11  Bill Holmes  <billholmes54@gmail.com>
8260
8261         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
8262           For Win32, add additional break conditions for accept.
8263
8264         Code is contributed under MIT/X11 license.
8265
8266 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
8267
8268         * marshal.c (mono_marshal_get_native_func_wrapper): Use get_cache to
8269         lazily initialize the native wrapper cache.
8270         (mono_marshal_get_native_wrapper): Put aot-ed native wrappers into a separate
8271         cache, since they are different from the normal wrappers.
8272
8273         * image.c (mono_image_init): Initialize native_wrapper_cache lazily as well.
8274
8275         * metadata-internals.h (struct _MonoImage): Add a new wrapper for
8276         AOT compiled native wrappers.
8277
8278 2009-02-09  Geoff Norton  <gnorton@novell.com>
8279
8280         * appdomain.h:
8281         * security-core-clr.c: Allow enabling core-clr from the embedding
8282         API.
8283
8284 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8285
8286         * socket-io.c: when requesting all the local ips, if there are no
8287         interfaces up and running, MS returns 127.0.0.1.
8288
8289 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8290
8291         * mono-perfcounters-def.h: processor time is an inverse time.
8292         Fixes bug #468625.
8293
8294 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8295
8296         * socket-io.c: an empty host name returns the list of local IPs.
8297         Fixes bug #386637 part 1/2.
8298
8299 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
8300
8301         * verify.c (mono_class_interface_implements_interface): Call
8302         mono_class_setup_interfaces ().
8303         (merge_stacks): Ditto.
8304
8305 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
8306
8307         * class.c (mono_class_setup_interfaces): New function to lazily initalize
8308         klass->interfaces.
8309         (mono_generic_class_get_class): Don't initalize klass->interfaces.
8310         (mono_generic_class_get_class): Ditto.
8311
8312 2009-02-06  U-QUACK\miguel  <miguel@quack>
8313
8314         * icall-defs.h: Include also the Encrypt/Decrypt string methods as
8315         they live in security.c
8316
8317         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Integrated
8318         another bit from Paolo's code.
8319
8320 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
8321
8322         * object.c (build_imt_slots): Add a small optimization to avoid inflating
8323         methods which will be discarded by add_imt_builder_entry ().
8324
8325         * marshal.c (get_runtime_invoke_type): Avoid sharing enum types since they
8326         need to be boxed.
8327
8328         * loader.c: Add a statistics for the size of the memberref signature cache.
8329         
8330         * loader.c (find_cached_memberref_sig): New helper function.
8331         (cache_memberref_sig): Ditto.
8332
8333         * loader.c: Cache the result of parsing memberref signatures, since otherwise
8334         they will be parsed again for every generic instantiation, leading to unbounded
8335         memory growth.
8336
8337 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8338
8339         * loader.c (mono_get_method_from_token): Avoid creating class for the generic
8340         parameters of generic methods.
8341
8342         * class.c (mono_class_inflate_generic_method_full): Set is_mb_open again
8343         after the original method is copied to the inflated method.
8344         (mono_class_get_vtable_entry): Handle rgctx invoke wrappers more efficiently.
8345
8346         * class-internals.h (struct _MonoMethodInflated): Move the is_mb_open
8347         field to MonoMethod since it only consumes 1 bit there, and 4/8 bytes here.
8348
8349         * class.c metadata.c: Update after the changes above.
8350
8351 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
8352
8353         * metadata-verify.c: Simplified error handling and added
8354         section table validation.
8355
8356 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8357
8358         * class-internals.h (MonoClassExt): New structure containing rarely used
8359         fields of MonoClass.
8360         (struct _MonoClass): Move rarely used fields to MonoClassExt, accessed
8361         through a new 'ext' field.
8362
8363         * class.c (mono_class_alloc_ext): New helper function to allocate 
8364         class->ext.
8365
8366         * class.c metadata.c reflection.c: Update after MonoClass structure changes.
8367
8368 2009-02-05  Mark Probst  <mark.probst@gmail.com>
8369
8370         * object.c (mono_object_get_virtual_method): Properly inflate
8371         generic methods.  Fixes #472692.
8372
8373 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
8374
8375         * class.c (mono_class_create_from_typedef): The CLR supports SystemF
8376         recursive types such as List<T>:Cons<T,List<T>> so when doing the lookup
8377         for the parent type, the created type must be ready to be used on a generic
8378         instantiation.
8379         We fill this_arg/byval_arg if the parent is a generic instance to make sure
8380         we won't have duplicated entries in generic_inst_cache.
8381
8382         Fixes #469553.
8383
8384 2009-02-05  Miguel De Icaza  <miguel@novell.com>
8385
8386         * threadpool.c (socket_io_add_poll): Remove the BSD6 define and
8387         replace with plain BSD per the comments on the bug MONO77637.
8388
8389 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8390
8391         * class.c (mono_class_get_generic_class): New accessor function.
8392         (mono_class_get_generic_container): Ditto.
8393
8394         * class-internals.h (struct _MonoClass): Add 'is_generic' and 'is_inflated'
8395         fields, similar to the ones in MonoMethod.
8396
8397         * class.c (mono_generic_class_get_class): Set klass->is_inflated.
8398         (mono_class_create_from_typedef): Set klass->is_generic if needed.
8399
8400         * reflection.c (mono_reflection_create_generic_class): Set klass->is_generic.
8401         
8402         * class-internals.h (struct _MonoClass): Remove enum_basetype, it contains
8403         the same information as element_class->byval_arg.
8404
8405         * class.c reflection.c: Remove references to class->byval_arg.
8406
8407         * class.c marshal.c: Use mono_class_enum_basetype () instead of accessing 
8408         klass->enum_basetype directly.
8409
8410         * verify.c metadata.c object.c icall.c reflection.c: Use 
8411         mono_class_enum_basetype () instead of accessing klass->enum_basetype 
8412         directly.
8413
8414 2009-02-04  Miguel de Icaza  <miguel@novell.com>
8415
8416         * icall-def.h: Remove internal calls for sockets when
8417         DISABLE_SOCKET is defined, file system writing features when the
8418         OS only support reading and not writing data and Policy support if
8419         the Policy is disabled.
8420         
8421         * image.c (do_mono_image_open): Apply Paolo's patches for using
8422         mono_file_map_ APIs here.
8423
8424         * assembly.c: Add support for platforms to avoid prefix
8425         auto-detection. 
8426
8427 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
8428
8429         * generic-sharing.c (mono_method_fill_runtime_generic_context): Fix a
8430         warning.
8431
8432         * class.c (mono_class_inflate_generic_class): New helper function.
8433
8434         * class.c: Use mono_class_inflate_generic_class in a few places. Add
8435         statistics for inflated methods/classes.
8436
8437         * loader.c (inflate_generic_header): Use mono_class_inflate_generic_class.
8438
8439         * icall.c (ves_icall_Type_GetMethodsByName): Optimize the case when
8440         the call is made from Delegate.CreateDelegate () for the invoke method of
8441         a delegate.
8442
8443         * loader.c: Add a statistics for the memory occupied by inflated signatures.
8444
8445         * metadata.c (mono_metadata_signature_size): New helper function.
8446
8447         * class.c (mono_class_get_method_from_name_flags): Add an optimization for
8448         generic instances.
8449
8450         * metadata.c (inflated_method_in_image): Avoid calling 
8451         mono_method_signature () if the method does not already have a signature.
8452
8453 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8454
8455         * verify.c (is_compatible_boxed_valuetype): When checking if the boxed 
8456         valuetype is compatible with target type, check by inheritance as a
8457         VT is not really compatible with System.ValueType, for example.
8458
8459         * verify.c (do_invoke_method): Improve error message.
8460
8461         * verify.c (do_box_value): If boxing a nullable, use the type argument
8462         on stack instead.
8463
8464         * verify.c (do_newobj): Improve error message.  
8465
8466         Fixes #469549.
8467
8468 2009-02-03  Miguel de Icaza  <miguel@novell.com>
8469
8470         * appdomain.c: Add support for DISABLE_SOCKETS and DISABLE_SHADOW_COPY
8471
8472 2009-02-03  Mark Probst  <mark.probst@gmail.com>
8473
8474         * generic-sharing.c: Don't hold domain lock when calling
8475         instantiate_other_info().  Fixes #471958.
8476
8477         * domain-internals.h, loader.c: Describe locking policy of domain
8478         lock vs loader lock.
8479
8480 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8481
8482         * verify.c (mono_delegate_signature_equal): Make it possible to check
8483         first-arg-bound delegates to static method.
8484
8485         * verify.c (verify_delegate_compatibility): Correctly verify delegates to
8486         static methods with the first arg bound.
8487
8488         Fixes #469529.
8489
8490 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8491
8492         * verify.c: Added stack_slot_full_name to provide decent and more meanfull
8493         errors.
8494
8495         * verify.c (is_compatible_boxed_valuetype): Be less restrictive when not
8496         under strict mode. Any type, when boxed can be seen as a reference type.
8497
8498         Fixes #469528.
8499
8500 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8501
8502         * object.h: The lower bound of an array is a signed integer value.
8503         Introduce mono_array_lower_bound_t typedef. It should be used instead of
8504         gint32 as under MONO_BIG_ARRAYS it will be a gint64.
8505
8506         * icall.c: Cast MonoArrayBounds::length to a signed value so correctly
8507         calculate the upper bound.
8508         
8509         Fixes #471252.
8510
8511 2009-02-02  Miguel de Icaza  <miguel@novell.com>
8512
8513         From Paolo's work, refactored, cleared up:
8514         
8515         * threadpool.c, icall.c: ifdef code that requires a working socket
8516         stack.
8517
8518         * metadata.c (mono_metadata_field_info): Do not attempt to return
8519         a value from a function declared as void.
8520
8521         * console-io.c: Use MONO_NULL_TTYDRIVER to remove the tty driver
8522         from the console stack.
8523
8524         * assembly.c: use strrchr instead of rindex.
8525
8526         * class.c, object.c, marshal.c, icall.c, reflection.c: include
8527         alloca.h on systems that have it.
8528
8529         * environment.c: Avoid code that uses stuff from
8530         HAVE_SYS_UTSNAME_H
8531         
8532         * appdomain.c: Include sys/time.h.
8533
8534         * console-io.c: include sys/ioctl.h if it is available.
8535
8536 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
8537
8538         * method-builder.h (_MonoMethodBuilder): Add a 'skip_visibility' flag.
8539
8540         * method-builder.c (mono_mb_create_method): Set method->skip_visibility from
8541         the method builder.
8542
8543         * marshal.c: Set mb->skip_visibility instead of setting it on the method
8544         after it was created and cached, as the later is not thread safe.
8545         
8546 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
8547
8548         * mono-debug.c (mono_debug_print_stack_frame): Avoid crashes when this is
8549         called while the debugging module is not initialized. Fixes #471669.
8550
8551 2009-02-02 Rodrigo Kumpera  <rkumpera@novell.com>
8552
8553         * icall.c (type_from_name): Ignore reflection frames to find out the real caller.
8554
8555         Fixes #471255.
8556
8557 2009-02-02  Mark Probst  <mark.probst@gmail.com>
8558
8559         * generic-sharing.c (lookup_or_register_other_info): Make sure the
8560         loader lock is not taken while the templates lock is held.  Fixes
8561         #471089.
8562
8563 2009-02-02  Mark Probst  <mark.probst@gmail.com>
8564
8565         * metadata.c (type_in_image): Added a check to fix a monodis
8566         crash.
8567
8568 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
8569
8570         * marshal.c (mono_marshal_get_runtime_invoke): Add support for byref
8571         nullable arguments.
8572
8573         * object.c (mono_runtime_invoke_array): Ditto.
8574         
8575         * marshal.c (mono_marshal_free_dynamic_wrappers): New function for
8576         freeing wrappers of dynamic methods.
8577
8578         * loader.c (mono_free_method): Call it. Fixes #463323.
8579         
8580         * marshal.c (mono_marshal_get_runtime_invoke): Disable sharing for
8581         methods taking vtype/byref arguments, to fix yet another bug caused by
8582         the sharing of runtime invoke wrappers. Partly fixes #471259.
8583
8584 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
8585
8586         * debug-mono-symfile.c (check_line): Return NULL instead of returning
8587         <first file in file table>:1 when the IL offset does not have an associated
8588         line number.
8589
8590 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
8591
8592         * mono-debug.c (mono_debug_lookup_locals): New function to return local
8593         variable info for a method.
8594
8595         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Ditto.
8596         
8597 2009-01-30  Jb Evain  <jbevain@novell.com>
8598
8599         * pedump.c: reuse code from monodis to make sure pedump honors
8600         MONO_PATH, which is needed to verify net_2_1 assemblies.
8601
8602 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
8603
8604         * mono-debug.c (mono_debug_print_stack_frame): Print the IL offset even when
8605         there is no line number info.
8606
8607 2009-01-29  Raja R Harinath  <harinath@hurrynot.org>
8608
8609         Avoid some MonoType allocations
8610         * reflection.c (mono_reflection_initialize_generic_parameter):
8611         Reuse MonoType from param->pklass rather than allocating one.
8612         (mono_dynamic_image_free): Update to changes.
8613
8614 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
8615
8616         Rearrange some code to improve consistency
8617         * reflection.c (mono_reflection_setup_generic_class): Move body ...
8618         (mono_reflection_initialize_generic_parameter): ... here.
8619
8620 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
8621
8622         * generic-sharing.c (has_constraints): Enable gshared for methods/classes
8623         with type constraints as an experiment.
8624
8625         * boehm-gc.c (on_gc_notification): Update mono_stats.
8626
8627 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
8628
8629         Avoid some allocations
8630         * class-internals.h (_MonoGenericInst::type_argv): Convert from
8631         pointer to tail array to avoid extra allocation.
8632         * metadata.c (free_generic_inst): Update to changes.
8633         (mono_metadata_get_generic_inst): Likewise.  Use alloca instead of
8634         on-stack struct.
8635
8636 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
8637
8638         * icall.c (ves_icall_System_Type_EqualsInternal): For user-defined types,
8639         return TRUE if the two type objects are the same.
8640
8641 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
8642
8643         * marshal.c (mono_marshal_load_type_info): Fill out info->min_align.
8644         (mono_class_native_size): Use klass->marshal_info->min_align instead of
8645         klass->min_align, since klass->min_align contains the managed alignment,
8646         while the native alignment can be different, like for longs on x86.
8647         Fixes #469135.
8648
8649         * class-internals.h (MonoMarshalType): Add a min_align field.
8650
8651 2009-01-26 Rodrigo Kumpera  <rkumpera@novell.com>
8652
8653         * assembly.c (mono_assembly_try_decode_skip_verification): Add a hack to check
8654         the 1.0 format.
8655
8656 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
8657
8658         * domain-internals.h (struct _MonoJitInfo): Add a 'from_aot' field plus
8659         some comments about the usage of the used_regs field.
8660
8661         * marshal.c (emit_marshal_ptr): Allow pointers to blittable structures.
8662         Fixes #469217.
8663
8664 2009-01-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
8665
8666         * appdomain.c: return NULL instead of throwing FileNotFoundException
8667         when LoadAssembly() fails.
8668
8669 2009-01-23  Mark Probst  <mark.probst@gmail.com>
8670
8671         * metadata.c (mono_metadata_generic_param_equal): Only compare the
8672         image if the owner is NULL.  Fixes the AOT failures.
8673
8674 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
8675
8676         * metadata.c (mono_metadata_load_generic_params): Initialize the 
8677         MonoGenericParam structure using memset so the image field is initialized
8678         as well.
8679
8680 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8681
8682         * appdomain.c (mono_domain_unload): Change the InterlockedIncrement to
8683         a plain store.
8684
8685 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
8686
8687         * class.c (mono_class_setup_vtable_general): In the generic instance
8688         optimization, set method->slot for abstract virtual methods. Fixes part of
8689         #467834.
8690
8691 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8692
8693         * domain-internals.h: Add new appdomain state MONO_APPDOMAIN_UNLOADING_START
8694         which signals that the unloading has started but all appdomain services must
8695         remain operational.
8696
8697         * appdomain.c (mono_domain_unload): The initial state for unloading now
8698         is unloading_start and we switch to unloading after the managed call to
8699         AppDomain::DomainUnload has finished.
8700
8701         The new unloading state has to be created because managed code in the
8702         DomainUnload event can depend on things like the threadpool still working.
8703         The domain must remain fully functional while the event executes.
8704
8705         This shown as an issue due to Process::WaitForExit, which waits for
8706         async reads of stdout and stderr to complete. Since those are processed
8707         in the threadpool the code deadlocks because the DomainUnload callback 
8708         waits for the async read finished event, which should have been set by a
8709         threadpool job but has been discarded due to the domain been in unload
8710         state.
8711
8712 2009-01-21  Mark Probst  <mark.probst@gmail.com>
8713
8714         * metadata.c (mono_metadata_generic_param_equal): Owner as well as
8715         image must match.
8716
8717 2009-01-21  Mark Probst  <mark.probst@gmail.com>
8718
8719         * reflection.c (resolve_object): For fields, inflate the class and
8720         then get the field in the inflated class.
8721
8722 2009-01-20  Mark Probst  <mark.probst@gmail.com>
8723
8724         * object-internals.h (struct _MonoException): Added a comment
8725         explaining the new use of trace_ips.
8726
8727 2009-01-20  Mark Probst  <mark.probst@gmail.com>
8728
8729         * generic-sharing.c (inflate_other_data): Inflate array methods
8730         correctly.
8731
8732         * loader.c, class-internals.h: Rename search_in_array_class() to
8733         mono_method_search_in_array_class() and make it non-static.
8734
8735 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
8736
8737         * metadata.c (inflated_signature_in_image): Call signature_in_image as well.
8738         Hopefully fixes #458168.
8739
8740 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
8741
8742         * object.c (mono_raise_exception): Remove call to InterlockedIncrement
8743         as it is performed elsewhere.
8744
8745         Code is contributed under MIT/X11 license
8746
8747 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
8748
8749         * mono-perfcounters-def.h: Add counters for asp.net requests total and
8750         requests queued.
8751         * object.c (mono_raise_exception): Increment the exceptions total
8752         counter when an exception is thrown.
8753         * class-internals.h: Add a location for storing the total number of
8754         asp.net requests served.
8755         * mono-perfcounters.c: Implement update support for asp.net counters
8756         from the class libraries. Implement read support for asp.net counters
8757         and exceptions total counter.
8758
8759 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
8760
8761         * loader.c (search_in_array_class): Call mono_class_setup_methods () before
8762         accessing klass->methods. Fixes #467385.
8763
8764 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
8765
8766         * marshal.c (emit_marshal_custom): Avoid calling MarshalNativeToManaged
8767         for byval arguments without an [Out] attribute. Fixes #467212.
8768
8769         * attach.c: Applied patch from Koushik Dutta (koush@koushikdutta.com). 
8770         Fix compilation under android.
8771         
8772         * sgen-gc.c: Instead of scanning gray objects after all roots have been 
8773         processed, scan them directly after they are copied, to achieve better locality
8774         and cache usage.
8775
8776         * socket-io.c: Applied patch from Koushik Dutta
8777         (koush@koushikdutta.com). Disable IPV6 when running under android.
8778
8779 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
8780
8781         * icall.c (ves_icall_InternalExecute): Add write barriers.
8782
8783         * marshal.c (mono_marshal_get_write_barrier): Remove, this is now done in
8784         the GC code.
8785
8786         * sgen-gc.c: Implement write barriers in IL code.
8787
8788 2009-01-17  Geoff Norton  <gnorton@novell.com>
8789
8790         * image.c: Avoid trying to walk the reference table of dynamic assemblies.
8791
8792 2009-01-17  Geoff Norton  <gnorton@novell.com>
8793
8794         * image.c: When unloading the image->references table, there can be gaps
8795         in it.  Ensure that we iterate every entry to avoid leaking assembly references
8796         when unloading an appdomain.
8797
8798 2009-01-16  Zoltan Varga  <vargaz@gmail.com>
8799
8800         * sgen-gc.c: Add support for allocating a nursery at an aligned address, to
8801         speed up ptr-in-nursery checks.
8802
8803         * threads.c (mono_threads_abort_appdomain_threads): Abort threads outside the
8804         threads_lock () to prevent deadlocks.
8805
8806         * sgen-gc.c gc-internal.h: Add a new root type root-with-wbarrier, which
8807         does not need to be scanned during minor collections, since writes to it
8808         must use write barriers.
8809
8810 2009-01-15 Rodrigo Kumpera  <rkumpera@novell.com>
8811
8812         * metadata-verify.c: Add pe nt header verification.
8813         
8814 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
8815
8816         * gc.c: Fix a few warnings when using SGEN.
8817
8818 2009-01-14 Rodrigo Kumpera  <rkumpera@novell.com>
8819
8820         * metadata-verify.c: Add pe optional header verification.
8821
8822 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
8823
8824         * sgen-gc.c: Add support for user defined marker functions, used by
8825         MonoGHashTable to avoid registering a GC root for every hash node.
8826
8827 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
8828
8829         * sgen-gc.c: Fix warnings. Optimize copy_object () a bit. Split pinned/
8830         non-pinned roots into separate hashes to avoid having to traverse them
8831         in functions which are only interested in one kind.
8832
8833 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
8834
8835         * metadata-verify.c: Add pe header machine field verification.
8836         
8837 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
8838
8839         * metadata-verify.c: Add pe header size verification.
8840
8841 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
8842
8843         * reflection.c (ALLOC_REFENTRY): Don't allocate the ReflectionEntry structures
8844         using the GC, they don't contain references.
8845
8846         * domain.c (mono_domain_create): Create ldstr_table using MONO_HASH_KEY_VALUE_GC.
8847
8848 2009-01-13  Geoff Norton  <gnorton@novell.com>
8849
8850         * appdomain.c|h: Expose mono_domain_unload to the embedding api so that 
8851         AppDomains created on the native side can be cleaned up on the native side.
8852
8853 2009-01-13  Geoff Norton  <gnorton@novell.com>
8854
8855         * appdomain.c: Ensure that we call mono_context_init for the embedding api
8856         as well as the managed api.
8857
8858 2009-01-13  Geoff Norton  <gnorton@novell.com>
8859
8860         * appdomain.h|c: New API for creating a MonoDomain in the embedding api
8861         with a MonoAppDomain initialized against it.
8862
8863 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
8864
8865         * reflection.c (MOVING_GC_REGISTER): Fix a warning.
8866         
8867         * reflection.c (mono_image_get_generic_param_info): Use MOVING_GC_REGISTER.
8868
8869         * marshal.c: Avoid setting the exception clauses after a method has been entered 
8870         into the wrapper caches. Fixes #465700.
8871
8872         * method-builder.c (mono_mb_set_clauses): New function to set the clauses of the
8873         method builder.
8874         (mono_mb_create_method): Set the clauses from the method builder.
8875
8876 2009-01-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
8877
8878         * threadpool.c: include sys/socket.h. Fixes compilation on FreeBSD.
8879         Patch from Makoto Kishimoto.
8880
8881 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
8882
8883         * sgen-gc.c (mono_gc_make_descr_from_bitmap): Handle large bitmaps by 
8884         encoding them as ROOT_DESC_COMPLEX.
8885         (precisely_scan_objects_from): Implement support for ROOT_DESC_COMPLEX.
8886
8887 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
8888
8889         * sgen-gc.c (scan_from_remsets): Clear the global remset of pointers which
8890         no longer point to the nursery.
8891
8892         * sgen-gc.c: Add a few comments/FIXMEs.
8893         
8894         * sgen-gc.c: Implement scanning of the alloc_pinned objects.
8895
8896         * marshal.c (mono_marshal_get_synchronized_wrapper): Make the 
8897         initialization of the various _method variables thread safe. Fixes
8898         #465377.
8899
8900 2009-01-12  Mark Probst  <mark.probst@gmail.com>
8901
8902         * domain.c, domain-internals.h: Remove the shared_generics_hash
8903         and its lookup functions.
8904
8905 2009-01-12  Bill Holmes  <billholmes54@gmail.com>
8906
8907         * socket-io.c:  Fixing the MSVC build. 
8908
8909         Code is contributed under MIT/X11 license.
8910
8911 2009-01-12 Rodrigo Kumpera  <rkumpera@novell.com>
8912
8913         * metadata-verify.c: Add pe header watermark verification.
8914
8915 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
8916
8917         * metadata-verify.c: Add lfanew verification.
8918
8919 2009-01-12  Jb Evain  <jbevain@novell.com>
8920
8921         * tabldefs.h: rename METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE to
8922         METHOD_ATTRIBUTE_STRICT to match the ECMA terminology.
8923
8924 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
8925
8926         * socket-io.c: Fix the build.
8927
8928         * environment.c: Fix an #ifdef.
8929
8930 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
8931
8932         * threadpool.c (async_invoke_thread): Handle the wait function returning
8933         WAIT_IO_COMPLETION as well.
8934         (async_invoke_io_thread): Ditto.
8935
8936 2009-01-09  Bill Holmes  <billholmes54@gmail.com>
8937
8938         * threads.c: Fixing the Windows build.
8939
8940         Code is contributed under MIT/X11 license.
8941
8942 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
8943  
8944         * threads.c (signal_thread_state_change): Call wapi_interrupt_thread () to
8945         interrupt a wait.
8946         (mono_thread_execute_interruption): Call wapi_clear_interruption () to enable
8947         the thread to wait again.
8948
8949 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
8950
8951         * metadata-verify.c: Initial skeleton of the metadata verifier.
8952
8953         * pedump.c: Add support for the metadata verifier.
8954
8955         * verify-internal.h: Export the whole assembly metadata verifier function.
8956
8957 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
8958
8959         * gc.c (mono_gc_init): Fix the comments about deadlock on windows.
8960
8961 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
8962
8963         * Makefile.am: Upgrade dtrace-prelink.sh location.
8964
8965 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
8966
8967         * gc.c (mono_gc_init): Wait for finalizer thread to init on windows as
8968         well. Otherwise the shutdown deadlock that happens on unix will can happen
8969         as well.
8970         If the main thread code finishes too fast it's possible that the finalizer
8971         thread won't have executed yet, won't record itself as the finalizer thread
8972         and the shutdown sequence will wait on it forever.
8973
8974 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
8975
8976         * threads.c (mono_thread_current): Make THREAD_DEBUG work on windows
8977         with MSVC.
8978
8979 2009-01-08  Miguel de Icaza  <miguel@novell.com>
8980
8981         * appdomain.c: Initialize the mono_strtod_mutex here, thanks to
8982         Robert Jordan for pointing this out.
8983
8984 2009-01-08  Christian Prochnow  <cproch@seculogix.de>
8985
8986         * icall.c
8987         * icall-def.h: added internal calls ves_icall_System_IO_DriveInfo_GetDiskFreeSpace,
8988         ves_icall_System_IO_DriveInfo_GetDriveType.
8989
8990 2009-01-07  Miguel de Icaza  <miguel@novell.com>
8991
8992         * icall.c: Wrap calls to mono_strtod in CriticalSection
8993         invocations when using eglib, to work around #464316.
8994
8995 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
8996
8997         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Double check the
8998         return value of GetCurrentDirectory to never access unitialized memory.
8999
9000 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
9001
9002         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Properly check the
9003         return value of GetCurrentDirectory and expand the buffer if needed.
9004
9005         Fixes #459094.
9006
9007 2009-10-07 Tom Hindle  <tom_hindle@sil.org>
9008
9009         * marshal.c (GetIUnknownForObjectInternal, GetIUnknownForObjectInternal) : 
9010           Adding a call to mono_init_com_types.
9011
9012         Code is contributed under MIT/X11 license.
9013
9014 2009-01-07  Geoff Norton  <gnorton@novell.com>
9015
9016         * socket-io.c: ioctlsocket(FIONREAD) returns the size of the UDP header as well on 
9017         darwin.  Use getsockopt SO_NREAD instead to get the right values for TCP and UDP.
9018         ai_canonname can be null in some cases on darwin, where the runtime assumes it will 
9019         be the value of the ip buffer.
9020
9021 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9022
9023         * verify.c (mono_class_interface_implements_interface): Verify parents as we can't rely on
9024         interfaces_packed here.
9025
9026         Fixes part of #463294.
9027
9028 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9029
9030         * verify.c (is_array_type_compatible): Ignore bounds and sizes when checking array compatibility.
9031
9032         Fixes part of #463294.
9033
9034 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9035
9036         * verify.c (stack_slot_is_complex_type_not_reference_type): Check if the type
9037         is a boxed complex as well.
9038
9039         Fixes part of #463294.
9040
9041 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9042
9043         * reflection.c (mono_image_get_methodref_token): Add an extra create_typespec parameter to
9044         control if a methodspec should be created for the generic method definition from external assemblies.
9045         Caching of methodspec is done using the handleref hash table.
9046
9047         Fixes #462592.
9048
9049 2009-01-05 Rodrigo Kumpera  <rkumpera@novell.com>
9050
9051         * loader.c (find_method): When searching the interfaces of a class
9052         check the transitive closure of implemented interfaces.
9053
9054         Fixes #463303.
9055
9056 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
9057
9058         * class.c (get_implicit_generic_array_interfaces): Improve debugging code.
9059         
9060 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
9061
9062         * class.c (get_implicit_generic_array_interfaces): Extract valuetype
9063         interfaces calculation to fill_valuetype_array_derived_types.
9064
9065         * class.c (get_implicit_generic_array_interfaces): Valuetypes need IList /
9066         ICollection / IEnumerator interfaces for their extra twin type - sbyte for byte
9067         for example.
9068
9069         * class.c (get_implicit_generic_array_interfaces): InternalEnumerator gets
9070         interfaces for valuetypes if needed.    
9071
9072         * class.c (fill_valuetype_array_derived_types): Enums should have interfaces
9073         for their basetype as well. Types are array expanded if rank is > 0.
9074
9075         Fixes #400716.
9076
9077 2008-12-30  Bill Holmes  <billholmes54@gmail.com>
9078
9079         * socket-io.h : Changing the signature of
9080           ves_icall_System_Net_Sockets_Socket_Accept_internal to pass
9081           the blocking state.
9082
9083         * icall-def.h :  Changing the signature of
9084           System.Net.Sockets.Socket.Accept_internal to pass the blocking state.
9085
9086         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
9087           For Windows only.  Avoid blocking when calling accept by
9088           querying for a connection via select.  The loop also queries
9089           the thread state every 1000 micro seconds for the thread
9090           stop state.  This will avoid the process hanging on shutdown
9091           when using a TcpChannel that is never connected to.
9092
9093         Code is contributed under MIT/X11 license.
9094
9095 2008-12-30  Marek Safar  <marek.safar@gmail.com>
9096
9097         * tabledefs.h: Add METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE.
9098
9099 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
9100
9101         * class.c (get_implicit_generic_array_interfaces): Extract common
9102         code to a helper function making it a lot easier on the eyes.
9103
9104 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
9105
9106         * class.c (get_implicit_generic_array_interfaces): If the internal
9107         enumerator is an interface inflate System.Object instead of itself.
9108
9109         Fixes #461261.
9110
9111 2008-12-24 Rodrigo Kumpera  <rkumpera@novell.com>
9112
9113         * object.c (mono_runtime_invoke_array): Don't assert with
9114         byref nullable types.
9115
9116         * marshal.c (mono_marshal_get_runtime_invoke): To handle
9117         byref nullables we unbox the object and store it on the
9118         stack. 
9119         We can't use the boxed object since it is the T of Nullable<T>
9120         and the boxed representation of a nullable it's underlying type
9121         or null.
9122         We could cheat and create a boxed nullable and use the same
9123         machinery of other byref VTs but this feels like a hack and
9124         using the stack has the bonus of reducing heap pressure.
9125
9126         Fixes #461941.
9127
9128 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
9129
9130         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
9131         return value.
9132
9133         Fixes #461867.
9134
9135 2008-12-19  Bill Holmes  <billholmes54@gmail.com>
9136
9137         * icall-def.h : Adding an internal call definition for 
9138           System.Environment.internalBroadcastSettingChange.
9139
9140         * icall.c : Adding a Windows only implementation to broadcast a 
9141           WM_SETTINGCHANGE when an environment variable has changed.
9142
9143         Code is contributed under MIT/X11 license.
9144
9145 2008-12-19  Mark Probst  <mark.probst@gmail.com>
9146
9147         * class.c, class-internals.h: Made
9148         mono_class_has_parent_and_ignore_generics() non-static.
9149
9150 Thu Dec 18 16:35:22 CET 2008 Paolo Molaro <lupus@ximian.com>
9151
9152         * image.c: deal with the mmap failing when loading an image.
9153
9154 2008-12-17  Geoff Norton  <gnorton@novell.com>
9155
9156         * threadpool.c: Ensure that the io_queue_lock is initialized
9157         in all circumstances, as we always attempt to cleanup against it.
9158
9159 2008-12-17  Miguel de Icaza  <miguel@novell.com>
9160
9161         * icall.c (ves_icall_System_Environment_get_Platform): For
9162         compatibility reasons for existing client code we will keep
9163         returning 4 for a while.   
9164
9165         For how long will depend on the documentation being updated, and
9166         for us to give client code a chance to be updated.
9167
9168         This reverts the original decison on #433108 since we did not
9169         catch roughly 33 instances of the broken code in our own source
9170         code base, we did not catch failures on the buildbots, and QA did
9171         not bring this as a problem.
9172
9173         Only today I found some customer's code breaking due to our own
9174         class libraries not being fully updated and tracked it down to
9175         this change.  I am reverting it because if we could not even get
9176         our story straight in our own code base, how can we hope that our
9177         end user code be fixed?
9178
9179         As of this morning, our Wiki page that documents how to detect
9180         Unix had not been fixed.    
9181
9182 2008-12-16  Zoltan Varga  <vargaz@gmail.com>
9183
9184         * metadata.c (inflated_method_in_image): Add a workaround for #458168.
9185
9186         * class.c (mono_class_get_fields): Handle loading errors.
9187
9188 2008-12-12 Mark Mason <mmason@upwardaccess.com>
9189
9190         * 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.
9191         
9192 2008-12-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
9193
9194         * mono-perfcounters.c: avoid warning.
9195
9196 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9197
9198         * reflection.c (ensure_runtime_vtable): Work on generic instances and
9199         make sure all interfaces have MonoClass::interface_id set.
9200
9201         * reflection.c (ensure_generic_class_runtime_vtable): Ensure the
9202         method table is property set.
9203
9204 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9205
9206         * class.c: New function mono_class_setup_interface_id that setup
9207         MonoClass::interface_id if needed.
9208
9209         * class-internals.h: Export new function.
9210
9211 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9212
9213         * class.c: Add code to sanity check the vtable after setup_vtable_general
9214         has done it's work.
9215
9216 2008-12-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
9217
9218         * icall.c: make Assembly.GetExecutingAssembly work properly when
9219         reflection is used to invoke the method.
9220         Bug #321781 fixed.
9221
9222 2008-12-11  Mark Probst  <mark.probst@gmail.com>
9223
9224         * metadata/generic-sharing.c: Look for constraints in all type
9225         arguments, not just the first one.
9226
9227 2008-12-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
9228
9229         * appdomain.c: return the correct CodeBase for an Assembly instance
9230         that was loaded from the shadow-copy directories.
9231         Bug #458190 fixed.
9232
9233 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
9234
9235         * sgen-gc.c (build_nursery_fragments): Clear nursery_next/nursery_frag_real_end.
9236
9237         * sgen-gc.c (check_object): New debugging helper function.
9238
9239         * object.c: Fix calls to mono_value_copy_array ().
9240
9241 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9242
9243         * class.c (mono_class_setup_fields): If working on an inflated class
9244         first check if the generic definition did init with success.
9245
9246         Fixes #445361.
9247
9248 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9249
9250         pedump.c (main): Fix a warning.
9251
9252 2008-12-10  Bill Holmes  <billholmes54@gmail.com>
9253
9254         * object-internals.h : Adding a definition for 
9255           MonoReflectionComVisibleAttribute.
9256
9257         * marshal.c (cominterop_com_visible) :  Method added to check the 
9258           ComVisible attribute of a class.
9259
9260         * marshal.c (cominterop_raise_hr_exception, cominterop_get_interface) :  
9261           cominterop_raise_hr_exception added to consolidate common code 
9262           to raise hr exceptions.
9263
9264         * marshal.c (cominterop_can_support_dispatch) :  Method added to determine 
9265           if a managed class should support IDispatch.
9266
9267         * marshal.c 
9268           (cominterop_get_idispatch_for_objec, cominterop_ccw_queryinterfacet) :  
9269           Added additional checks for managed object when getting 
9270           an IDispatch interface.
9271
9272         Code is contributed under MIT/X11 license.
9273
9274 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9275
9276         pedump.c (main): Handle mono_get_method () returning NULL. 
9277
9278 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
9279
9280         * marshal.h: Fix a warning.
9281
9282 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
9283
9284         * marshal.c : Adding cominterop_release_all_rcws to release all
9285           runtime callable wrappers held by the runtime.
9286
9287         * marshal.h : Adding declaration for cominterop_release_all_rcws.
9288           
9289         Code is contributed under MIT/X11 license.
9290
9291 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
9292
9293         * metadata.c (mono_image_alloc_lock): New helper function.
9294         (mono_image_alloc0_lock): Ditto.
9295
9296         * metadata.c: Use the alloc_lock () helper functions for allocating
9297         memory from the image mempool.
9298
9299 2008-12-08 Rodrigo Kumpera  <rkumpera@novell.com>
9300
9301         * class.c (mono_class_from_generic_parameter): Document it's
9302         locking behavior. Fix double checked locking here, we stored in
9303         param->pklass a partially initialized MonoClass and no membar was used.
9304
9305 2008-12-05  Marek Habersack  <mhabersack@novell.com>
9306
9307         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
9308         (3) functions are present in the C library use them to do the
9309         job. If they are absent, make sure that the sum of int_part and
9310         dec_part is rounded before returning. This is necessary due to the
9311         division of dec_part by the power of 10 before the final addition
9312         is performed - if the result is not rounded in some cases it will
9313         yield invalid results.
9314
9315 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
9316
9317         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
9318         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
9319         instruction instead of a pointer constant.
9320
9321 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
9322
9323         * loader.c (mono_method_get_header): Do most of the work outside the
9324         loader lock, to avoid assembly load hook deadlocks.
9325
9326         * metadata.c (mono_metadata_parse_mh_full): Use finer-grained locking.
9327         (mono_metadata_parse_type_full): Ditto.
9328
9329 2008-12-02 Rodrigo Kumpera  <rkumpera@novell.com>
9330
9331         * mempool.c (mono_backtrace): Take the number of allocated bytes as argument.
9332         Make the stack depth fixed. Ensure proper argument passing to the backtrace
9333         funtions. Finally, use a lock to produce well ordered output.
9334
9335         The lock looks silly, as all calls to the corlib mempool should be guarded
9336         with the loader lock, but for some reason this fact doesn't help. 
9337
9338         * mempool.c (mono_mempool_alloc0): Add support for TRACE_ALLOCATIONS.
9339
9340 2008-12-02  Mark Probst  <mark.probst@gmail.com>
9341
9342         * socket-io.c: 64 bit big-endian fixes.
9343
9344 2008-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
9345
9346         * verify.c (is_compatible_boxed_valuetype): Rewrite function to work properly with
9347         targets that require strict compatibility between the types.
9348
9349         * verify.c (verify_stack_type_compatibility_full): Boxed values are not compatible
9350         to unboxed types. All cases that this is true are checked by is_compatible_boxed_valuetype.
9351         Kill the strict argument and create a new one valuetype_must_be_boxed.
9352
9353         * verify.c (verify_delegate_compatibility): Use verify_stack_type_compatibility_full to
9354         state that all valuetypes must be boxed.
9355
9356         Fixes #448560.
9357
9358 2008-11-29  Kornél Pál  <kornelpal@gmail.com>
9359
9360         * coree.c (MonoFixupExe): Use sizeof(IMAGE_BASE_RELOCATION) instead of
9361         IMAGE_SIZEOF_BASE_RELOCATION as newer Vista SDKs no longer define the latter.
9362
9363         Contributed under MIT/X11 license.
9364
9365 2008-11-28 Rodrigo Kumpera  <rkumpera@novell.com>
9366
9367         * class.c (mono_class_setup_fields): Don't copy MonoType::attrs as
9368         the inflate_generic_type machinery should handle it.
9369
9370         This avoids a crash when the field's flags is zero and it's type is
9371         a primitive.
9372         What happens is that mono_metadata_parse_type_full will see that opt_attrs
9373         is zero and will return one of the cached built-in primitive types. Since
9374         those types live in read-only memory, the code that copies it crashes.  
9375
9376 2008-11-28  Mark Probst  <mark.probst@gmail.com>
9377
9378         * object.c: Don't put function descriptors into generalized IMT
9379         thunks.
9380
9381 2008-11-28  Mark Probst  <mark.probst@gmail.com>
9382
9383         * class.c: Enable generic code sharing on PPC64.
9384
9385 2008-11-27  Mark Probst  <mark.probst@gmail.com>
9386
9387         * mempool.c, mempool-internals.h: Added g_slist_append_mempool()
9388         from mini/mini.c.
9389
9390         * generic-sharing.c: Allocate the method template slists from the
9391         image mempool so it doesn't leak.
9392
9393 2008-11-27 Rodrigo Kumpera  <rkumpera@novell.com>
9394
9395         * class.c (generic_array_methods): Release the linked list.
9396
9397 2008-11-27  Mark Probst  <mark.probst@gmail.com>
9398
9399         * marshal.c (mono_string_builder_to_utf8): Fixed a wrong
9400         invocation to g_utf16_to_utf8().
9401
9402 2008-11-26  Mark Probst  <mark.probst@gmail.com>
9403
9404         * icall.c (mono_ArgIterator_IntGetNextArg): Handle sub-word sized
9405         arguments on big endian archs.
9406
9407 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
9408
9409         * reflection.c: (_mono_reflection_parse_type) skip leading spaces in
9410         the type name (test added in corlib).
9411
9412 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
9413
9414         * pedump.c: initialize perf. counters. Fixes a segv.
9415
9416 2008-11-25  Martin Baulig  <martin@ximian.com>
9417
9418         * mono-debug-debugger.c
9419         (mono_debugger_runtime_invoke): Return the exception object if an
9420         exception was thrown.  Visual Studio displays the exception object
9421         in the locals window.
9422
9423 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9424
9425         * mini-trampolines.c (mono_delegate_trampoline): Don't return a
9426         ftnptr.
9427
9428 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9429
9430         * marshal.c (mono_type_native_stack_size): MONO_TYPE_I and
9431         MONO_TYPE_U are sizeof (gpointer), too.
9432
9433 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9434
9435         * marshal.c (mono_type_native_stack_size): Fixed size and
9436         alignment for reference types.
9437
9438 2008-11-23  Mark Probst  <mark.probst@gmail.com>
9439
9440         * class.c (mono_class_generic_sharing_enabled): Disable generic
9441         code sharing for PPC64.
9442
9443 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
9444
9445         * icall.c (mono_method_get_equivalent_method): Make sure
9446         method->klass->methods is inited before looping over it.
9447
9448 2008-11-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
9449
9450         * object.c: when calling ExecuteAssembly in a newly created domain,
9451         the configuration file and application base are already set up.
9452         Bug #446353 take 2 fixed.
9453
9454 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
9455
9456         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
9457         Fixes #444715. Fix a warning.
9458
9459 2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
9460
9461         * appdomain.c: write the full path of the assembly to the .ini file
9462         created when "shadow-copying"
9463         Bug #446353 fixed.
9464
9465 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
9466
9467         * debug-helpers.c (mono_method_full_name): Stringify wrapper types even
9468         if signature==FALSE.
9469
9470 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
9471
9472         * marshal.h : Fix the cygwin build.
9473            marshal.c:12442: undefined reference to `_IID_IMarshal'
9474           
9475         Code is contributed under MIT/X11 license.
9476
9477 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
9478
9479         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
9480           free threaded marshaler when QueryInterface is called on a COM callable
9481           wrapper requesting the IMarshal interface.
9482           
9483         Code is contributed under MIT/X11 license.
9484
9485 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
9486
9487         * domain-internals.h (MonoDomain): Update MONO_DOMAIN_LAST_GC_TRACKED.
9488
9489         * reflection.c (mono_type_get_object): Special case the very common
9490         void type.
9491
9492         * domain-internals.h (struct _MonoDomain): Add 'typeof_void' field to
9493         hold typeof(void).
9494
9495 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
9496
9497         * process.h : Adding method declaration for
9498           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9499           
9500         * process.c : Adding implementation for
9501           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9502           
9503         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
9504           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9505
9506         Code is contributed under MIT/X11 license.
9507
9508 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
9509
9510         * appdomain.c (unload_thread_main): Clean up threadpool by
9511         calling mono_thread_pool_remove_domain_jobs.
9512
9513         * domain-internals.h (struct _MonoDomain): Add new fields to
9514         help coordinate the cleanup of the threadpool.
9515
9516         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
9517         that cleans up the threadpool of all jobs associated with an appdomain.
9518         It does that by cleaning up the queues and making sure all active
9519         threads are accounted.
9520
9521         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
9522         unloaded or in the process of. Take this is such way that there is
9523         no race condition between another thread starting the unload and the
9524         current thread acknowledging it.
9525
9526         * threadpool.c (async_invoke_thread): Same.
9527
9528         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
9529         firing the new thread.
9530
9531         * threadpool.c (start_tpthread): Same.
9532
9533         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
9534
9535         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
9536
9537 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
9538
9539         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9540         Add support for DuplicateHandle.
9541         
9542         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9543         Add support for DuplicateHandle.
9544         
9545         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9546         Add support for DuplicateHandle.
9547
9548         Code is contributed under MIT/X11 license.
9549
9550 2008-11-06  Mark Probst  <mark.probst@gmail.com>
9551
9552         * class-internals.h: Make min_align into a whole byte.
9553
9554         * class.c: Set min_align for SIMD types to 16.
9555
9556 2008-11-05  Geoff Norton  <gnorton@novell.com>
9557
9558         * attach.c: Default the attacher to enabled for all cases including
9559         embedded.
9560
9561 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
9562
9563         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
9564         change r117650.
9565
9566 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9567
9568         * monitor.c, monitor.h: New function for querying offsets of
9569         members of MonoThreadsSync.
9570
9571 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9572
9573         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
9574         to speed up this function and to avoid the boundless memory growth caused by
9575         the signature_dup () calls.
9576
9577 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9578
9579         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
9580         wrapper.
9581
9582         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
9583         by 1 bit.
9584
9585         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
9586
9587 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
9588
9589         * appdomain.c:
9590         * domain-internals.h: made mono_set_private_bin_path_from_config()
9591         "internal".
9592         * object.c: call the above function after setting the configuration
9593         file path for the root domain.
9594         Fixes bug #314478.
9595
9596 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
9597
9598         * assembly.c: when the assembly is loaded from an absolute path, end
9599         basedir with a directory separator.
9600         Bug #440781 fixed.
9601
9602 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9603
9604         * monitor.c (mono_monitor_get_fast_enter_method): If
9605         CompareExchange is not available, don't create the fastpath
9606         instead of asserting.  (The method is missing in the 1.1 profile.)
9607
9608 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9609
9610         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
9611
9612         * monitor.c, monitor.h: Code for generating Monitor.Enter and
9613         Monitor.Exit IL fastpaths.
9614
9615 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9616
9617         * class.c (mono_class_create_from_typedef): Added Vector2ul.
9618
9619 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9620
9621         * class.c (mono_class_create_from_typedef): Added Vector2l.
9622
9623 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9624
9625         * class.c (mono_class_create_from_typedef): Added Vector2d.
9626
9627 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
9628
9629         * appdomain.c: translate \ into / for cache_path.
9630         * domain-internals.h: new mono_is_shadow_copy_enabled().
9631         * icall.c: (fill_reflection_assembly_name) do the same path
9632         manipulations that get_code_base does.
9633         (get_code_base) use mono_is_shadow_copy_enabled.
9634
9635 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
9636
9637         * appdomain.c: shadow-copied assemblies go to CachePath +
9638         ApplicationName when both are set. DynamicBase has nothing to do with
9639         shadow copies.
9640         Bug #406877 fixed.
9641
9642 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9643
9644         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
9645         STANDALONESIG table.
9646
9647         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
9648         standalone signatures.
9649
9650         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
9651         comparison code: instead of comparing the signatures using a custom
9652         equals function, transform them to a common signature and compare that. This
9653         works better with AOT.
9654
9655 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
9656
9657         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
9658
9659         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
9660         call for generic instances.
9661         (mono_class_setup_properties): Call setup_properties () before accessing
9662         gklass->properties.
9663
9664         * class.c (mono_class_get_virtual_methods): New helper function to iterate
9665         over the virtual methods of a class using metadata if possible, avoiding the
9666         creation of MonoMethod's for non-virtual methods.
9667         
9668         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
9669         get_virtual_methods () to iterate over the virtual methods of classes.
9670
9671 2008-10-25  Martin Baulig  <martin@ximian.com>
9672
9673         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
9674
9675 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9676
9677         * class.c (mono_class_create_from_typedef): Added Vector4i.
9678
9679 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9680
9681         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
9682         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
9683         special-casing applies to eliminate the call completely.
9684
9685 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9686
9687         * class.c (mono_class_create_from_typedef): Added Vector8s.
9688
9689 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9690
9691         * class.c (mono_class_create_from_typedef): Added Vector16sb.
9692
9693 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
9694
9695         * icall.c: get rid of annoying warning.
9696
9697 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
9698
9699         * threadpool.c: in 1.x, if you change the background status of the
9700         threadpool thread, it's not reset.
9701         Remove unnecessary calls to SetState.
9702
9703 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9704
9705         * threadpool.c: asynchronously create a set of idle threads upon first
9706         use of the threadpool. SetMinThreads will now start the appropriate
9707         number of idle threads if they are not already running. The default is
9708         1 threadpool thread per CPU. Increased the maximum number of threads
9709         per CPU to 10.
9710
9711 2008-10-22  Martin Baulig  <martin@ximian.com>
9712
9713         Revert r116521 from Zoltan, it breaks the debugger:
9714
9715         * class.c (mono_class_get_virtual_methods): New helper function to iterate
9716         over the virtual methods of a class using metadata if possible, avoiding the
9717         creation of MonoMethod's for non-virtual methods.
9718         
9719         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
9720         get_virtual_methods () to iterate over the virtual methods of classes.
9721
9722 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9723
9724         * threads.c: when creating a threadpool thread, set its state to
9725         'background'.
9726         * threadpool.c: reset the background state of a threadpool thread
9727         after finishing each work item
9728         Bug #437888 fixed.
9729
9730 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
9731
9732         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
9733         
9734         * class.c (mono_class_setup_vtable_general): Add an optimized version for
9735         generic instances which works by inflating the methods in the container
9736         class's vtable.
9737
9738         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
9739         variant which doesn't make a copy if no inflation was done.
9740         (mono_class_setup_fields): Use it.
9741
9742         * metadata.c (mono_metadata_get_shared_type): New helper function to
9743         return a shared instance of a given MonoType.
9744
9745         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
9746         a copy of most non-generic types.
9747
9748 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
9749
9750         * threadpool.c: remove one more GetSystemInfo () call.
9751
9752 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
9753
9754         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
9755         use the code in mono-proclib.h to get processor information.
9756
9757 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9758
9759         * appdomain.c: fixed the logic that determines whether assemblies in a
9760         directory are "shadow-copied" or not. Bug #433483 fixed.
9761
9762 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
9763
9764         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
9765         warning.
9766
9767 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9768
9769         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
9770         returning a vtype.
9771
9772         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
9773         reflection.c: Use mono_field_get_name () for accessing a field's name.
9774
9775         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
9776         class.c
9777
9778         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
9779         field.
9780
9781         * loader.c (find_method_in_class): Reenable the metadata optimization by
9782         not using it for generic instances.
9783
9784         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
9785         data/def_type fields from MonoClassField into a separate structure.
9786         (struct MonoClassField): Remove data/def_type fields.
9787         (struct _MonoClass): Add a 'field_def_values' array to store the default
9788         values/RVA for fields.
9789
9790         * class.c reflection.c: Update after the changes.
9791         
9792         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
9793         for accessing field->data.
9794
9795         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
9796
9797         * loader.c (find_method_in_class): Revert the last change for now as
9798         it breaks Mono.C5 unit tests.
9799
9800         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
9801         'field_generic_types' and 'field_objects' which contain the information
9802         previously stored in MonoInflatedField.
9803         (MonoInflatedField): Delete.
9804         (struct _MonoClassField): Delete 'generic_info' field.
9805
9806         * reflection.c: Store the information which was previously in 
9807         field->generic_info in MonoDynamicGenericClass instead.
9808
9809         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
9810         MonoClassField changes.
9811
9812 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
9813
9814         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
9815         store the value inside the data array of the MonoMethodWrapper.
9816         This saves memory, is faster and fixes the lifetime issues (methods
9817         were never removed from the hash previously). May also fix bug#436996.
9818
9819 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9820
9821         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
9822         generic instances, compute the type from the generic definition instead of
9823         looking in field->generic_info.
9824
9825         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
9826         for inflated fields, the only user was get_fieldref_token () which no
9827         longer needs it.
9828
9829         * class.c (mono_class_init): Revert the last change as it seems to cause
9830         crashes.
9831
9832         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
9833         bytes on 64 bit platforms.
9834
9835         * object.c (mono_class_create_runtime_vtable): Fix a warning.
9836         
9837         * object.c (mono_class_create_runtime_vtable): Don't initalize
9838         field->data/field->def_type here, it is done lazily by 
9839         mono_class_get_field_default_value ().
9840
9841         * icall.c (ves_icall_get_enum_info): Call 
9842         mono_class_get_field_default_value () instead of directly accessing
9843         field->data and field->def_type.
9844
9845         * object.c (get_default_field_value): Ditto.
9846
9847         * class.c (mono_field_get_data): Ditto.
9848         
9849         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
9850         call for generic instances.
9851
9852         * loader.c (find_method_in_class): If klass != from_class, then inflate
9853         the method with the context of from_class, since the caller assumes this.
9854
9855 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
9856
9857         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
9858         for accessing method->slot.
9859
9860 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
9861
9862         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
9863
9864 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9865
9866         * class.c (mono_method_get_vtable_index): Use
9867         mono_method_get_vtable_slot () for accessing method->slot.
9868
9869         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
9870         accessing klass->methods.
9871
9872         * class.c (mono_method_get_vtable_slot): New helper function.
9873         (mono_class_get_vtable_entry): Ditto.
9874         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
9875         accessing method->slot.
9876
9877         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
9878         method to get_inflated_method ().
9879
9880         * class.c (mono_class_get_inflated_method): New helper method to obtain
9881         a method of an inflated class without calling setup_methods ().
9882         (mono_class_get_cctor): Use get_inflated_method.
9883
9884         * generic-sharing.c (mono_class_get_method_generic): Ditto.
9885         
9886         * marshal.c image.c: Lazily create all the marshal caches.
9887
9888         * image.c (mono_image_init): Move initialization of runtime_invoke
9889         caches to marshal.c.
9890
9891         * marshal.c (get_cache): New helper function to lazily initialize a 
9892         wrapper cache.
9893         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
9894
9895         * debug-helpers.c (mono_method_full_name): Include generic arguments.
9896
9897 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
9898
9899         * loader.c: fixed check for interface type.
9900
9901 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
9902
9903         * appdomain.c: check for NULL setup before it's referenced.
9904
9905 p
9906 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
9907
9908         * class.c: remove the unused old vtable setup code.
9909
9910 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
9911
9912         * class.c: don't depend on interface order in
9913         setup_interface_offsets (bug #435777).
9914         * reflection.c: sort the InterfaceImpl table (patch from
9915         Jb Evain  <jbevain@novell.com>).
9916
9917 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9918
9919         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
9920         the low level assemblies lock.
9921
9922 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
9923
9924         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
9925         object.c, reflection.c, socket-io.c, threads.c: introduced
9926         mono_framework_version () to return the major framewrok version,
9927         changed the code that was using more complex patterns to use it.
9928         Return the correct value for PlatformID for OSX.
9929
9930 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
9931
9932         * icall-def.h, process.h, process.c: added an icall to get info about
9933         processes using mono-proclib.
9934
9935 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
9936
9937         * mono-perfcounters.c: use the mono-proclib functions to
9938         access process information.
9939
9940 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
9941
9942         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
9943         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
9944         reflection.c: remove rawbuffer usage: mmap support is more sanely
9945         provided by utils/mono-mmap.
9946
9947 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
9948
9949         * gc.c: use posix semaphores when possible so that
9950         mono_gc_finalize_notify() is signal safe.
9951
9952 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
9953
9954         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
9955         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
9956         be #ifdef-ed out, the linker will remove the rest.
9957
9958         * marshal.c: Implement DISABLE_COM.
9959
9960         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
9961
9962 2008-10-11  Miguel de Icaza  <miguel@novell.com>
9963
9964         * locales.c (string_invariant_compare_char): Optimization: do not
9965         call g_unichar_type unless we actually need the information.
9966
9967 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9968
9969         * object.c, class-internals.h: Also create remoting trampolines
9970         for generic methods.  Pass the domain to the remoting trampoline
9971         creation function, too.
9972
9973 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9974
9975         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
9976
9977 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9978
9979         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
9980         Vector4ui.
9981
9982 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
9983
9984         * assembly.c:
9985         * locales.c: remove the use of g_strdown. Fixes bug #322313.
9986
9987 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
9988
9989         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
9990         for the least possible amount of time (extending the fix in r113458).
9991
9992 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9993
9994         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
9995
9996 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9997
9998         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
9999         as possible simd intrinsic types.
10000         Optimized the test to check for the common prefix first.
10001
10002 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
10003
10004         * class.c: back out part of a broken optimization committed on
10005         May 23th (bug #433908).
10006
10007 2008-10-09  Mark Probst  <mark.probst@gmail.com>
10008
10009         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
10010         Win32.  Should fix #432388 for most cases until we have the new
10011         profiler on Win32.
10012
10013 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
10014
10015         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
10016         instead of using inst->id so the hash is stable for AOT.
10017
10018 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
10019
10020         * appdomain.c:
10021         * icall.c: create a .ini file for shadow-copied assemblies that
10022         contains the location of the original assembly. Use this to return the
10023         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
10024         Also fix the number of '/' for windows when returning the CodeBase.
10025         Fixes bug #430920.
10026
10027 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
10028
10029         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
10030
10031         Code is contributed under MIT/X11 license.
10032
10033 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
10034
10035         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
10036           if if the class vtable needs initialized.
10037
10038         Code is contributed under MIT/X11 license.
10039
10040 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
10041
10042         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
10043           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
10044           STRING->BSTR, and CLASS->INTERFACE.
10045
10046         Code is contributed under MIT/X11 license.
10047
10048 2008-10-07  Marek Habersack  <mhabersack@novell.com>
10049
10050         * sysmath.h: changed the declaration of the
10051         ves_icall_System_Math_Round2 icall by adding an extra
10052         away_from_zero parameter.
10053
10054         * sysmath.c (ves_icall_System_Math_Round2): added support for
10055         away from zero rounding. The icall now takes an extra boolean
10056         parameter to signal that away from zero operation is requested.
10057
10058 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
10059
10060         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
10061         the delegate klass so it can work with full-aot.
10062         (mono_marshal_get_delegate_end_invoke): Ditto.
10063         (mono_marshal_get_delegate_invoke): Ditto.
10064
10065 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
10066
10067         * gc.c, attach.h, attach.c: remove a bad pattern:
10068         add_finalizer_callback () is not implemented correctly, it can't
10069         without adding more overhead to the finalizer loop and it's not
10070         even needed, since we know exactly what we need to call, so there is
10071         no need to do so through an expensive function pointer.
10072
10073 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
10074
10075         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
10076         for the no-gc case.
10077         * attach.c (mono_attach_init): Remove the #ifdef.
10078
10079 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
10080
10081         * attach.c (mono_attach_init): Don't use
10082         mono_gc_add_finalizer_thread_callback when compiling without GC.
10083         Fixes #432306.
10084         
10085         Code is contributed under MIT/X11 license.
10086
10087 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10088
10089         * class.c (mono_class_create_from_typedef): Remove the 
10090         #ifndef DISABLE_SIMD stuff.
10091
10092 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
10093
10094         * class-internals.h (MonoClass): Added simd_type bit field.
10095
10096         * class.c (mono_class_create_from_typedef): Check if type is a simd
10097         intrinsic.
10098
10099 2008-10-03  Mark Probst  <mark.probst@gmail.com>
10100
10101         * object.c (mono_method_add_generic_virtual_invocation): Only add
10102         instantiations to the thunk whose count is at least as large as
10103         the threshold.
10104
10105 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
10106
10107         * icall.c: changed the Type of the exception thrown when trying to
10108         invoke a constructor on an abstract class. Part of the fix for bug
10109         #324185.
10110
10111 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10112
10113         * class.c, class-internals.h (mono_method_get_vtable_index): New
10114         function which returns the index into the vtable and properly
10115         handles inflated virtual generic methods.
10116
10117 2008-10-01  Mark Probst  <mark.probst@gmail.com>
10118
10119         * object.c, domain.c, object-internals.h, domain-internals.h:
10120         Generalize IMT thunk machinery to also handle thunks for virtual
10121         generic method invokes.  When a virtual generic method is invoked
10122         more than a number of times we insert it into the thunk so that it
10123         can be called without lookup in unmanaged code.
10124
10125         * generic-sharing.c, class-internals.h: Fetching a
10126         MonoGenericInst* for a method from an (M)RGCTX.
10127
10128 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10129
10130         * marshal.c (emit_marshal_string): Applied a variant of a patch by
10131         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
10132         marshalling. Fixes #431304.
10133
10134 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
10135
10136         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
10137           handle when ref is specified without In or Out.
10138
10139         Code is contributed under MIT/X11 license.
10140
10141 2008-09-30  Mark Probst  <mark.probst@gmail.com>
10142
10143         * loader.c (mono_get_method_constrained): Don't expand method with
10144         the class's context, because it's already a method of that class.
10145
10146 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
10147
10148         * attach.c : should be correct build fix.
10149
10150 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10151
10152         * attach.c: Fix the previous change.
10153
10154 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
10155
10156         * attach.c : quick w32 build fix.
10157
10158 2008-09-27  Miguel de Icaza  <miguel@novell.com>
10159
10160         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
10161         crashes MonoDevelop: #430455.
10162
10163 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10164
10165         * domain-internals.h (struct _MonoDomain): Move most fields used only by
10166         the JIT do MonoJitDomainInfo in ../mini/mini.h.
10167
10168         * domain.c: Remove initialization/cleanup of the removed fields.
10169
10170 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10171
10172         * class.c (mono_class_generic_sharing_enabled): Enable generic
10173         code sharing for PPC.
10174
10175 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
10176
10177         * attach.c : Fixing the Windows builds.
10178
10179         Code is contributed under MIT/X11 license.
10180
10181 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10182
10183         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
10184         the default generic sharing mode to 'all'.
10185
10186 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10187
10188         * generic-sharing.c, class-internals.h: New function for checking
10189         whether a method needs a static RGCTX invoke wrapper.  A few
10190         funtions moved from mini/generic-sharing.c.
10191
10192         * icall.c: New function used.
10193
10194 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10195
10196         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
10197         Static RGCTX invoke wrapping applies to value type methods, too.
10198
10199         * class.c (mono_class_setup_vtable_general): In generic-shared
10200         value types, wrap methods with a static RGCTX invoke wrapper.
10201
10202 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10203
10204         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
10205         osx build.
10206
10207 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10208
10209         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
10210         register a callback which is called when the finalizer thread is woken
10211         up.
10212         (finalizer_thread): Call the callback if it exists.
10213
10214         * attach.h attach.c: New files, implementing the attach mechanism.
10215
10216         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
10217         
10218         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
10219         by the previous change.
10220
10221 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
10222
10223         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
10224         loader.c, marshal.c, metadata-internals.h, metadata.c,
10225         method-builder.c, object.c, reflection.c: introduced specific functions
10226         to allocate from the domain and image mempools and cleaned up most of
10227         the code to use them (still missing a few in reflection.c).
10228         Keep the loader bytes counter updated.
10229
10230 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
10231
10232         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
10233         loader-related counters.
10234
10235 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
10236
10237         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
10238         added more MS-compatible counters.
10239
10240 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10241
10242         * class.c (mono_class_setup_fields): Call setup_fields before accessing
10243         class->blittable. Fixes #428217.
10244
10245 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
10246
10247         * reflection.c (mono_image_get_field_on_inst_token): Call 
10248         field_encode_signature () since that handles custom modifiers too.
10249         Fixes #424663.
10250
10251 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
10252
10253         * reflection.c (add_custom_modifiers): New helper function to merge custom
10254         modifiers stored in objects to a MonoType.
10255         (fieldref_encode_signature): Encode custom modifiers.
10256         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
10257         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
10258
10259 2008-09-19  Kornél Pál  <kornelpal@gmail.com>
10260
10261         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
10262         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
10263         64-bit IL only images because imports are not resolved for IL only images.
10264         Special thanks to Bill Holmes for finding this bug and testing the patch.
10265         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
10266
10267         Contributed under MIT/X11 license.
10268
10269 2008-09-19  Miguel de Icaza  <miguel@novell.com>
10270
10271         * mono-config.c (dllmap_start): Add support for the bits keyword
10272         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
10273
10274 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10275
10276         * reflection.c (inflate_mono_method): When the class the method is
10277         to be inflated for is itself not inflated, just return the method.
10278
10279 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
10280
10281         * mono-perfcounters.c: use more user friendly process instance names.
10282
10283 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
10284
10285         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
10286           handle "[in] ref" and "[in][out] ref" cases.
10287
10288         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
10289           to mono_mb_create_method.  This was causing problems calling native to
10290           managed passing Variants by value.
10291
10292         Code is contributed under MIT/X11 license.
10293
10294 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
10295
10296         * class.c (can_access_internals): Call mono_assembly_load_friends ()
10297         before accessing the friend_assembly_names field.
10298
10299         * assembly.c (mono_assembly_load_friends): Make this callable multiple
10300         times.
10301         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
10302         called lazily when it is needed.
10303
10304         * metadata-internals.h (struct _MonoAssembly): Add 
10305         'friend_assembly_names_inited' flag.
10306
10307 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
10308
10309         * mono-perfcounters-def.h: fix the types of a few counters.
10310         * mono-perfcounters.c: implemented the instance names getter
10311         and a few bugfixes.
10312
10313 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
10314
10315         * culture-info-table.h : regenerated.
10316
10317 2008-09-17  Robert Jordan  <robertj@gmx.net>
10318
10319         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
10320         context bound objects. Fixes #415577.
10321
10322         Code is contributed under MIT/X11 license.
10323
10324 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
10325
10326         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
10327         implementation (bug #423582).
10328
10329 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
10330
10331         * object.c (mono_object_get_virtual_method): Handle the case method->slot
10332         is not set. Fixes #426309.
10333
10334 2008-09-16  Jb Evain  <jbevain@novell.com>
10335
10336         * class.c (mono_class_from_name): fix the exported type look up
10337         when the type is defined in a referenced assembly.
10338
10339 2008-09-16  Jb Evain  <jbevain@novell.com>
10340
10341         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
10342         increment the next index counter on each iteration to make that work
10343         for more than one type forwarder. Unmanaged part to fix #422929.
10344
10345 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10346
10347         * object-internals.h: enum ComInterfaceType in
10348         MonoInterfaceTypeAttribute is guint32, not guint16.
10349
10350 2008-09-12  Mark Probst  <mark.probst@gmail.com>
10351
10352         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
10353         writing code.
10354
10355 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10356
10357         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
10358         not gboolean.
10359
10360 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10361
10362         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
10363         Endianness fixes for MonoSymbolFileOffsetTable.
10364
10365 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
10366
10367         * process.c (complete_path) : Removing quotes from the 
10368           input path.  The glib file routines do not handle file paths
10369           that have quotes around them.
10370
10371         Code is contributed under MIT/X11 license.
10372
10373 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
10374
10375         * socket-io.h : Adding a comment to provide locations where 
10376           changes to MonoSocketAsyncResult need to be synced.
10377
10378         Code is contributed under MIT/X11 license.
10379
10380 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
10381
10382         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
10383         parameters as well. Fixes #425001.
10384
10385 2008-09-08  Miguel de Icaza  <miguel@novell.com>
10386
10387         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
10388         windows build.
10389
10390 2008-09-07  Miguel de Icaza  <miguel@novell.com>
10391
10392         * console-io.c: Add support for tracking the window size if it
10393         changes.
10394
10395         The setup is very simple: the TtySetup function will now return a
10396         pointer to a location in memory that tracks the current console
10397         size.  The managed code checks its current value every time its
10398         queried against the last value set, and updates accordingly.
10399
10400         With this setup we can work with multiple consoles, and we do not
10401         require to poke into managed code from a signal handler.
10402
10403         Additionally, the environment for COLUMNS and LINES is now handled
10404         in unmanaged code.
10405
10406         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
10407
10408 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10409
10410         * marshal.c (mono_type_native_stack_size): Treat
10411         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
10412
10413 2008-09-04  Jb Evain  <jbevain@novell.com>
10414
10415         * class.c (mono_class_is_assignable_from): fix assignability of nullables
10416         to nullables.
10417
10418 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
10419
10420         * verify.c (verify_type_compatibility_full): Revert change
10421         to allow converting a native int to unmanaged pointer be verifiable
10422         under non-strict mode.
10423         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
10424
10425         * verify.c: Added some TODOs.
10426
10427 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
10428
10429         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
10430           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
10431           Changed to use GlobalAlloc for the memory returned on Windows platforms.
10432
10433         Code is contributed under MIT/X11 license.
10434
10435 2008-09-02  Jb Evain  <jbevain@novell.com>
10436
10437         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
10438
10439 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
10440
10441         reflection.c (typebuilder_setup_fields): Handle classes with
10442         explicit size.
10443
10444 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
10445
10446         class.c (mono_class_setup_events): Add memory barrier due to
10447         double checked locking.
10448         
10449         class.c (mono_class_setup_properties): Same.
10450
10451 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10452
10453         * class.c (mono_class_is_assignable_from): Fix the build.
10454         
10455         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
10456         before accessing klass->interface_bitmap. Fixes #421744.
10457
10458 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10459
10460         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
10461         the runtime into no-exec mode, useful when running the AOT compiler.
10462
10463         * appdomain.c gc.c object.c: Avoid executing managed code when running
10464         in no-exec mode.
10465         
10466         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
10467
10468         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
10469         special case when the mono_assembly_loaded () returns NULL because the 
10470         search hook is not installed.
10471
10472 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10473
10474         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
10475         crashes in bstr marshalling on linux.
10476
10477 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10478
10479         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
10480         with more than one parameter.
10481
10482 2008-08-24  Miguel de Icaza  <miguel@novell.com>
10483
10484         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
10485         start/stop flow control as well when turning off ICANON (allows
10486         C-s and C-q to be read by Console.ReadKey).
10487
10488 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10489
10490         * class.c (mono_class_init): Move the initialization of nested classes
10491         into mono_class_get_nested_types (). Fixes #418433.
10492
10493         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
10494         flag.
10495
10496         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
10497         iterating tough the nested classes of a class.
10498
10499 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10500
10501         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
10502         on arm.
10503
10504 2008-08-22  Miguel de Icaza  <miguel@novell.com>
10505
10506         * console-io.c (sigcont_handler): Support signal chaining for
10507         SIGCONT.
10508
10509         (console_set_signal_handlers): Use best practices with sigaction,
10510         clear the structure before using it. 
10511
10512 2008-08-22  Robert Jordan  <robertj@gmx.net>
10513
10514         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
10515         Fix the Windows build.
10516
10517 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10518
10519         * class.c (mono_class_generic_sharing_enabled): Make the default
10520         sharing mode 'corlib'.
10521
10522 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10523
10524         * console-io.c (console_set_signal_handlers): Fix a warning.
10525
10526         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
10527         method normally, the JIT will take care of avoiding recursion.
10528
10529 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10530
10531         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
10532
10533         Code is contributed under MIT/X11 license.
10534
10535 2008-08-20  Miguel de Icaza  <miguel@novell.com>
10536
10537         * console-io.c (sigcont_handler): We need to restore the entire
10538         termios state, not only the original settings, as things like echo
10539         can be controlled after this (Booish exposes this issue with its
10540         own ReadLine implementation).
10541
10542         Additionally, we need to set the terminal back into keypad_xmit
10543         mode.
10544         
10545         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
10546         string as a paramter as well.   Otherwise we get different
10547         keyboard sequences.
10548
10549 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10550
10551         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
10552         delegates with byref out parameter passing. Fixes #351520.
10553
10554         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
10555         a generic context.
10556         (mono_type_get_desc): Add the type arguments for GENERICINST.
10557         (mono_method_full_name): Stringify the class name using mono_type_full_name
10558         so it picks up generic arguments.
10559
10560 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
10561
10562         * console-io.c: Removed debug output.
10563
10564 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
10565
10566         reflection.c (mono_reflection_create_runtime_class): Alloc
10567         the nested classes linked list using the dynamic image mempool.
10568         Fixes leak in corlib compilation.
10569
10570 2008-08-19  Miguel de Icaza  <miguel@novell.com>
10571
10572         * console-io.c: Fix incredibly annoying behavior on the console
10573         after resuming execution after control-z.   This affected every
10574         console application.
10575
10576 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
10577
10578         * mempool-internals.h: Header for mono private mempool functions. The first
10579         two function are for allocating glib linked lists using pools.
10580
10581         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
10582
10583         * Makefile.am: Added mempool-internals.h.
10584
10585 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10586
10587         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
10588         (mono_domain_free): Ditto.
10589
10590         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
10591         be used by the JIT to store its domain-specific information, instead of putting
10592         it directly into MonoDomain.
10593
10594         * domain.c (mono_install_create_domain_hook): New helper function to install
10595         a hook which initializes domain->runtime_info.
10596
10597         * domain.c (mono_install_free_domain_hook): Ditto.
10598         
10599 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10600
10601         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
10602         asserting if the ares parameter is null.
10603
10604         * mono-perfcounters.c: Fix warnings.
10605
10606         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
10607         is not needed, don't check for interruptions either.
10608         (mono_marshal_get_delegate_end_invoke): Ditto.
10609
10610 2008-08-15  Marek Habersack  <mhabersack@novell.com>
10611
10612         * mono-perfcounters.c (predef_readonly_counter): added support for
10613         reading the ASP.NET Requests Queued counter from another process.
10614
10615 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10616
10617         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
10618         MonoImage to simplify the AOT code.
10619
10620 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
10621
10622         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
10623         marshalling. Fixes #416078.
10624
10625 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10626         
10627         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
10628         it is set, looking up the icall address is deferred to the JIT, since 
10629         in embedded scenarios, the icall might not be registered in the runtime
10630         doing the AOT compilation. Backported from the 2.0 branch.
10631
10632 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10633
10634         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
10635         Fixes #415621.
10636
10637 2008-08-05  Marek Habersack  <mhabersack@novell.com>
10638
10639         * Makefile.am: added support for cross-compilation.
10640
10641 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
10642
10643         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
10644
10645 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
10646
10647         * mono-perfcounters.c: jitted methods and jitted bytes counters.
10648
10649 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
10650
10651         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
10652         mono-perfcounters.c: performance counters implementation.
10653
10654 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
10655
10656         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
10657         to gpointer, letting the AOT code decide what to store in it.
10658
10659 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
10660
10661         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
10662           mono_class_setup_methods if the methods are not initialized.
10663
10664         Code is contributed under MIT/X11 license.
10665
10666 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10667
10668         * verify.c: Remove some debug code I commited by accident.
10669
10670         * verify.c (mono_method_is_valid_in_context): Change the return value
10671         to make possible to distinguish between invalid and unverifiable.
10672
10673         * verify.c (verifier_load_method): Don't return NULL for unverifiable
10674         methods.
10675
10676 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10677
10678         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
10679         constraints. Fixes regression in gtest-253.
10680
10681 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10682
10683         * verify.c (mono_verifier_verify_class): Don't allow generic types
10684         with explicit layout.
10685
10686         * verify.c (mono_method_verify): Check locals and argument types.
10687
10688 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
10689
10690         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
10691         wait if the thread is in StopRequested state.
10692
10693         * class.c (mono_class_from_name): Refactor the module searching code into
10694         a separate function so it can be reused in the AOT case too.
10695
10696 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
10697
10698         * verify.c (mono_type_is_valid_in_context): Improve the error message.
10699         Check both the type and it's generic type definition for loader errors.
10700         
10701         * verify.c (mono_method_is_valid_in_context): Don't generate another
10702         error when a type errors occur, this leads to the wrong exception been
10703         thrown.
10704
10705 2008-07-28  Dick Porter  <dick@ximian.com>
10706
10707         * icall-def.h
10708         * process.c
10709         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
10710         New internal calls to duplicate and close a process handle.
10711
10712 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
10713
10714         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
10715
10716 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10717
10718         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
10719
10720 2008-07-27  Robert Jordan  <robertj@gmx.net>
10721
10722         * class.c (mono_class_init): Don't compute class.has_finalize for
10723         valuetypes. Fixes #412477.
10724
10725 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
10726
10727         * verify.c: Implement constraint equivalence checking.
10728         This is required when a generic parameter is used as
10729         argument to a constrained one.
10730
10731         Fixes #410637.
10732
10733 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10734
10735         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10736
10737         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
10738
10739         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
10740         synch with managed object layout.
10741
10742 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
10743
10744         * verify.c (do_branch_op): Handle valuetypes and generic
10745         arguments properly.
10746
10747         * verify.c (do_cmp_op): Same.
10748
10749         Fixes #410383.
10750
10751 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10752
10753         * generic-sharing.c: Fix memory leaks.
10754
10755         * class.c, class-internals.h: Make
10756         mono_class_inflate_generic_type_with_mempool() non-static.
10757
10758 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
10759
10760         * pedump.c (dump_verify_info): Dump full class name.
10761
10762 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10763
10764         * generic-sharing.c: Removed some old code that didn't do anything.
10765
10766 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
10767         * profiler.c: Added runtime_initialized_event,
10768         mono_profiler_install_runtime_initialized and
10769         mono_profiler_runtime_initialized. This new hook tells the profiler
10770         when the runtime is sufficiently initialized to be able to call
10771         mono_thread_attach on the root appdomain.
10772         * profiler.h, profiler-private.h: Likewise.
10773
10774 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
10775
10776         * verify.c (do_cast): Do boxing for generic arguments as well.
10777
10778         * class.c (is_nesting_type): Drop generic instantiations before
10779         checking for nesting.
10780
10781         * class.c (can_access_instantiation): Allow access to generic
10782         arguments.
10783
10784 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
10785
10786         * verify.c (verify_class_for_overlapping_reference_fields):
10787         On some cases, the field size might be zero, guard against that.
10788         Fix the explicit layout check to work as expected.
10789
10790 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
10791
10792         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
10793         mono_thread_resume () during shutdown, since the thread we want to abort
10794         might be suspended.
10795
10796 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
10797
10798         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
10799         warning.
10800
10801         * debug-mono-symfile.c: Fix a warning.
10802
10803         * mono-perfcounters.c (get_cpu_times): Fix a warning.
10804
10805         * object.c (mono_class_vtable): Check if exception_type is set, and return
10806         NULL as defined by the function comments.
10807
10808 2008-07-22  Mark Probst  <mark.probst@gmail.com>
10809
10810         * mempool.c: Use malloc for every single mempool allocation if the
10811         configure option is set.  This makes it easier to track mempool
10812         allocations with tools like Valgrind.
10813
10814 2008-07-22  Jb Evain  <jbevain@novell.com>
10815
10816         * reflection.c (create_dynamic_mono_image): emit the same
10817         metadata version that SL2 does when creating a SL2 image.
10818
10819 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
10820
10821         * icall-def.h:
10822         * icall.c: New icall System.Enum:get_hashcode. This function
10823         avoids the overhead of boxing the enum to the underlying type.
10824
10825 2008-07-21  Mark Probst  <mark.probst@gmail.com>
10826
10827         * reflection.c (mono_method_get_object): Don't let static RGCTX
10828         invoke wrappers get into MonoReflectionMethods.
10829
10830 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
10831
10832         * object-internals.h:
10833         * object.c: New mono_runtime_class_init_full function
10834         that makes throwing the exception optinal.
10835
10836         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
10837         for the case where the exception object is supplied.
10838
10839 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
10840
10841         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
10842         old ld versions.
10843
10844         Contributed under MIT/X11 license.
10845
10846 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
10847
10848         * string-icalls.c (ves_icall_System_String_InternalSplit):
10849         Optimize array allocation by caching the MonoClass of the
10850         array type.
10851
10852         * icall.c (ves_icall_Type_GetMethodsByName): Same.
10853
10854         * reflection.c (mono_param_get_objects): Same.
10855
10856 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
10857
10858         * icall-def.h:
10859         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
10860         It inflates the given type using the class context.
10861
10862 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
10863
10864         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
10865         the vtable if it already exists.
10866
10867         * object-internals.h: Add mono_class_try_get_vtable as part of the
10868         internal API.
10869
10870         * reflection.c (mono_type_get_object): Use the MonoObject from the
10871         vtable when possible. Reduces locking contention on reflection heavy
10872         code.
10873
10874 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
10875
10876         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
10877         g_bit_nth_msf () since that macro is not implemented in eglib.
10878
10879 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
10880
10881         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
10882         on platforms which do not support it.
10883
10884 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
10885
10886         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
10887
10888 2008-07-11  Martin Baulig  <martin@ximian.com>
10889
10890         * mono-debug-debugger.h
10891         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
10892
10893         * mono-debug-debugger.c
10894         (_mono_debugger_interruption_request): New global volatile variable.
10895         (mono_debugger_check_interruption): New public function.
10896
10897         * threads.c
10898         (mono_thread_current_check_pending_interrupt): Call
10899         mono_debugger_check_interruption().
10900         (mono_thread_interruption_checkpoint_request): Likewise.
10901
10902 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10903
10904         * verify.c: Add more type checks for loaded types. Verify the result
10905         handle from ldtoken.
10906
10907 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10908
10909         * loader.c (field_from_memberref): Don't crash if the field
10910         wasn't found.
10911
10912 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10913
10914         * verify.c: Verify if type and method instantiations
10915         don't have invalid VAR or MVAR arguments.
10916
10917 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10918
10919         * verify.c: Fix double free of function pointer list.
10920
10921 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10922
10923         * object.c (mono_string_to_utf8): Comment the new code as it
10924         breaks under eglib.
10925
10926 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
10927
10928         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
10929
10930 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
10931
10932         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
10933           is not throw too many times.
10934
10935         Code is contributed under MIT/X11 license.
10936
10937 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
10938
10939         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
10940         debugging is turned off.
10941
10942 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
10943
10944         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
10945
10946 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10947
10948         * class-internals.h, class.c: Added new generic sharing option:
10949         Share only stuff in System.Collections.Generic, which is now the
10950         default.
10951
10952 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10953
10954         * generic-sharing.c, class-internals.h: New function for getting a
10955         generic method in a generic class given the corresponding method
10956         for a different instantiation of the class.  Partly refactored
10957         from mini-trampolines.c.
10958
10959         * class.c: Make sure generic methods have a class_inst if they are
10960         part of a generic class.
10961
10962         * metadata.c (mono_type_stack_size_internal): Handle type
10963         variables.
10964
10965 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10966
10967         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
10968         Signifies whether information on the this/vtable/mrgctx variable
10969         is available.
10970
10971 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10972
10973         * object.c, object-internals.h, icall.c: New function
10974         mono_delegate_ctor_with_method(), which does the same as
10975         mono_delegate_ctor(), but takes an explicit method argument
10976         instead of taking the method from the jit info.
10977
10978         * marshal.c: When creating a delegate with an inflated method take
10979         the "this" argument as the target class for the castclass.
10980
10981 2008-07-03  Mark Probst  <mark.probst@gmail.com>
10982
10983         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
10984         mono_jit_info_table_find() to perform very badly in some cases.
10985
10986 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
10987
10988         * icall.c (type_from_typename): Handle 'string'.
10989
10990         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
10991         wrappers into the wrapper_hash, since the key is not a MonoMethod.
10992
10993 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
10994
10995         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
10996
10997         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
10998         number of available managed allocator types.
10999
11000         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
11001         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
11002
11003 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11004
11005         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
11006         which is a low level lock protecting just the 'jit_code_hash' hash table.
11007
11008         * domain.c: Initialize+cleanup jit_code_hash_lock.
11009         
11010 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
11011
11012         * coree.c (mono_load_coree): Set coree_module_handle global variable only
11013         after initialization.
11014
11015         * coree.h: Make MonoFixupExe internal.
11016
11017         Contributed under MIT/X11 license.
11018
11019 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
11020
11021         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
11022         because that is platform independent. Check NumberOfRvaAndSizes in PE32
11023         as well.
11024         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
11025         image being loaded is a CLI image and _CorValidateImage gets called.
11026
11027         * coree.h: Add MonoLoadImage.
11028
11029         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
11030         instead of LoadLibrary.
11031
11032         Contributed under MIT/X11 license.
11033
11034 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
11035
11036         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
11037         for any primitive type.
11038
11039 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11040
11041         * object.c (mono_array_new_specific): Optimize this and the other allocation
11042         functions a bit.
11043         
11044         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
11045         domains too if mono_dont_free_domains is set.
11046
11047         * domain-internals.h (mono_dont_free_domains): New internal option controlling
11048         whenever to free appdomain data after it has been unloaded.
11049
11050         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
11051         
11052 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
11053
11054         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
11055         (mono_method_get_equivalent_method): Fix a warning.
11056
11057         * object.c (mono_message_init): Avoid looking up array types for each call.
11058
11059 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11060
11061         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
11062         call.
11063
11064         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
11065         even more.
11066
11067         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
11068         each iteration.
11069
11070         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
11071         fields of an enum.
11072
11073 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
11074
11075         * object.c (mono_value_box): Fix boxing of nullables.
11076
11077 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
11078
11079         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
11080         mono_module_handle that is defined by the linker; no initialization required.
11081         * coree.h: Remove mono_module_handle, add __ImageBase, update
11082         mono_image_open_from_module_handle.
11083         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
11084         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
11085         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
11086         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
11087         to 4 GB away from image base address. IA64 version is not tested but was very
11088         easy to implement and should work if we ever need it.
11089         * domain.c (mono_init_internal): Avoid system error message boxes.
11090         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
11091         with has_entry_point. Handle do_mono_image_load fauilre correctly.
11092         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
11093         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
11094         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
11095
11096         Contributed under MIT/X11 license.
11097
11098 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11099
11100         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
11101         as part of the private mono API.
11102         
11103         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
11104         Do proper argument checking for methods that belong to generic classes.
11105         Do proper type resolution for GMFH/2.
11106         Fixes #377324.
11107         
11108 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11109
11110         * verify.c (do_switch): Fix a memory corruption bug with
11111         the jump index is out of bound.
11112
11113 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11114
11115         * verify.c: Disable debug code.
11116
11117 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11118
11119         * reflection.c (mono_image_get_methodbuilder_token): Use
11120         mono_image_get_methodspec_token_for_generic_method_definition
11121         instead of mono_image_get_memberref_token. We cache more memberef
11122         entries now.
11123
11124 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11125
11126         * verify.c: Inflate exception clause types.
11127         Fixes #402606.
11128         
11129 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11130
11131         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
11132         name.
11133
11134         * reflection.c (mono_image_get_ctorbuilder_token): Same.
11135
11136         * reflection.c (mono_image_create_method_token): Same.
11137
11138 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11139
11140         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
11141         It does the same as mono_image_get_methodref_token but works on
11142         MethodBuilder.
11143
11144         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
11145         and always generate a methodspec. This follows the old behavior and fixes
11146         the regressions in System.Core. 
11147
11148 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11149
11150         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
11151         don't event mono_class_get () succeeds. Fixes #402182.
11152
11153 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
11154
11155         * metadata-internals.h: Added MonoDynamicImage::methodspec
11156         hashtable to store methodspec tokens created for MethodBuilders.
11157
11158         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
11159         MethodBuilders as open instantiations if a methodspec was requested.
11160
11161         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
11162
11163         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
11164
11165         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
11166
11167         Fixes bug #349190.
11168
11169 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
11170
11171         * loader.c (method_from_methodspec): Avoid crashing if the
11172         method lookup fails.
11173
11174 2008-06-20  Dick Porter  <dick@ximian.com>
11175
11176         * socket-io.c (get_socket_assembly): Cope with Moonlight network
11177         classes being in a different assembly.  Fixes bug 399184.
11178
11179 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
11180
11181         * loader.c (mono_loader_init): Make this callable multiple times.
11182         (mono_dllmap_insert): Call mono_loader_init () so this works even before
11183         the runtime is initialized. Fixes #401755.
11184
11185 2008-06-19  Dick Porter  <dick@ximian.com>
11186
11187         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
11188         Fixes bug 349688.
11189
11190 2008-06-19  Dick Porter  <dick@ximian.com>
11191
11192         * socket-io.c:
11193         * icall-def.h: Implement Socket generic Send() and Receive()
11194         methods.  Fixes bug 395168.
11195
11196 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
11197
11198         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
11199
11200         Contributed under MIT/X11 license.
11201
11202 2008-06-18  Martin Baulig  <martin@ximian.com>
11203
11204         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
11205         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
11206         set to 80.0.  The debugger <-> runtime interface is now frozen as
11207         well.   
11208
11209         * mono-debug.c
11210         (mono_debug_debugger_version): Bump to 4.
11211
11212 2008-06-18  Martin Baulig  <martin@ximian.com>
11213
11214         * debug-mono-symfile.c
11215         (load_symfile): Don't check the minor version.
11216
11217         * debug-mono-symfile.h: Bump the version number to 50.0.
11218
11219 2008-06-18  Martin Baulig  <martin@ximian.com>
11220
11221         * debug-mono-symfile.c
11222         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
11223         minimum required version.
11224
11225 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
11226
11227         * reflection.c (mono_custom_attrs_from_property): Fix support for
11228         retriveving cattrs of dynamic inflated generic types.
11229
11230         * reflection.c (mono_custom_attrs_from_event): Same.
11231
11232         * reflection.c (mono_custom_attrs_from_field): Same;
11233
11234         * reflection.c (typebuilder_setup_events): Same cattrs of events.
11235
11236         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
11237         Moved to metadata.c.
11238
11239         * metadata.c: New functions to retrive the equivalent field, event
11240         of property from the generic type definition.
11241
11242         * metadata-internals.h: Added new functions from metadata.c.
11243
11244 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
11245
11246         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
11247         to cached in a mempool is used.
11248
11249         * metadata.c (free_generic_class): In some situations field generic_info type
11250         is not properly dup'ed and leads to double free'ing.
11251
11252         Fixes #400643.
11253
11254 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11255
11256         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
11257         this arguments (will be needed later for generic methods).
11258         Collect stats.
11259
11260 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11261
11262         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
11263         Create a static RGCTX invoke wrapper for methods which require it.
11264
11265 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11266
11267         * object.c, class-internals.h: New function for checking whether
11268         an individual field is special static.
11269
11270 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
11271
11272         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
11273         linear search since the table is sorted.
11274
11275         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
11276         Fixes #324180.
11277
11278 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
11279
11280         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
11281         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
11282
11283         * gc.c (mono_domain_finalize): Allow an infinite timeout.
11284
11285         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
11286         
11287         * threads.c (mono_thread_request_interruption): Get rid of locking, use
11288         InterlockedCompareExchange to query and modify 
11289         thread->interruption_requested.
11290
11291         * object-internals.h (struct _MonoThread): Change interruption_requested
11292         to a gint32 so it can be modified by atomic operations. Add 
11293         'critical_region_level' from the managed side, change small_id to a guint32,
11294         add new set of 'unused' fields.
11295
11296         * appdomain.c: Bump corlib version.
11297
11298 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11299
11300         * class.c (mono_class_from_name): Search modules as well. Fixes
11301         #322332.
11302
11303 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11304
11305         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
11306         templates.  Templates are generalized with an additional type_argc
11307         argument.  RGCTX templates have type_argc==0, MRGCTX templates
11308         have type_argc>0.
11309
11310         * domain-internals.h, domain.c: New hash table for looking up
11311         MRGCTXs.
11312
11313         * metadata.c, metadata-internals.h: Rename hash and equal
11314         functions for MonoGenericInst's and make them public.
11315
11316         * class-internals.h: New data structures for the MRGCTX.  Macros
11317         for distinguishing slots in the RGCTX and the MRGCTX.
11318
11319 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11320
11321         * object.c (mono_method_get_imt_slot): Put the same methods of
11322         different instantiations of the same generic interface in the same
11323         IMT slots, to make generic sharing simpler.
11324
11325 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11326
11327         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
11328
11329         * metadata.c (mono_metadata_field_info_with_mempool): Added.
11330         This function works just like mono_metadata_field_info, but
11331         accept a mempool as argument to be used allocating memory.
11332
11333         * marshal.c (mono_marshal_load_type_info): Use new function
11334         to load marshal data into image mempool.
11335
11336 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11337
11338         * class.c (mono_class_inflate_generic_type_with_mempool):
11339         This function allows to inflate a generic type using
11340         a mempool.
11341
11342         * class.c (inflate_generic_type): Take a mempool as argument
11343         and use it to do type dup'ing.
11344
11345         * class.c (mono_class_setup_fields): Field type for generic
11346         generic classes are allocated from the image mempool.
11347
11348         * metadata.c (free_generic_class): Inflated field type is
11349         now allocated in the image mempool.
11350
11351 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11352
11353         * threads.c (thread_cleanup): Free MonoThread::name.
11354
11355 2008-06-12  Marek Habersack  <mhabersack@novell.com>
11356
11357         * appdomain.c (ensure_directory_exists): avoid unnecessary
11358         mkdir(2) calls when the shadow directory already exists.
11359         (mono_make_shadow_copy): copy also satellite assemblies from the
11360         private bin directories.
11361
11362 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
11363
11364         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
11365         
11366         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
11367         a page boundary. Fixes #396219.
11368
11369 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11370
11371         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
11372         due to double-checked locking.
11373
11374 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11375
11376         * assembly.c (build_assembly_name): Release memory on failure.
11377
11378         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
11379
11380 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11381
11382         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
11383         memory on failure.
11384
11385 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11386
11387         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
11388         memory on failure.
11389
11390 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11391
11392         * loader.c (field_from_memberref): Check if field signature type is equal
11393         to the non-inflated type of the field. Fixes #398980.
11394
11395 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
11396
11397         * assembly.c (mono_assembly_load_from_full): Call 
11398         mono_assembly_load_friends () outside the assemblies lock, since it can
11399         acquire the loader lock. Fixes #323696.
11400
11401         * reflection.c (resolve_object): Inflate the inst with the context for
11402         FieldOnTypeBuilderInst. Fixes #399010.
11403
11404 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11405
11406         * reflection.c (mono_image_get_field_on_inst_token): Don't
11407         inflate the field to encode it's signature. If it's a
11408         VAR or MVAR it should stay that way in the signature.
11409         Fixes #399047.
11410
11411 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11412
11413         * reflection.c (resolve_object): Release memory of inflated types.
11414
11415 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11416
11417         * loader.c (mono_method_get_signature_full): Remove assert about
11418         loading a methodspec to a generic method. We have such methods, such as
11419         System.Threading.Interlocked::CompareExchange<T>.
11420         This assert was removed since it crashes the verifier when it checks
11421         methods calling CompareExchange<T>.
11422
11423 2008-06-10  Marek Safar  <marek.safar@gmail.com>
11424
11425         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
11426         of Type array and not MonoType.
11427
11428 2008-06-10  Marek Habersack  <mhabersack@novell.com>
11429
11430         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
11431         <lupus@ximian.com>
11432
11433 2008-06-10  Martin Baulig  <martin@ximian.com>
11434
11435         * debug-mono-symfile.h
11436         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
11437         changes to the file format, but we were generating incorrect
11438         source file indices in the line number table due to a bug, which
11439         made backtraces report an incorrect source file.
11440
11441 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11442
11443         * mono-debug.c: Moved mono_debug_free_method_jit_info from
11444         mini/debug-mini.c to here.
11445
11446         * mono-debug.c (il_offset_from_address): Free memory from find_method.
11447
11448         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
11449         use it to release structs returned by mono_debug_find_method.
11450
11451 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
11452
11453         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
11454         since it needs to set method->slot for all interface methods.
11455
11456 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11457
11458         * class-internals.h: Forgot to add.
11459
11460 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11461
11462         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
11463
11464         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
11465         Lookup the custom attributes from property_hash.
11466
11467         * reflection.c (mono_save_custom_attrs): Save the custom attributes
11468         in property_hash. Allocate all data using the image mempool.
11469
11470         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
11471         for dynamic_custom_attrs to checks if the image is dynamic.
11472
11473 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11474
11475         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
11476         assemblies array.
11477         
11478         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
11479         runtime functions while holding the domain assemblies lock.
11480
11481 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11482
11483         * verify.c: Reapplied the last bit of the reverted changes.
11484
11485 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11486
11487         * verify.c: Reapplied more of the reverted changes.
11488
11489 2008-06-09  Martin Baulig  <martin@ximian.com>
11490
11491         * debug-mono-symfile.c (load_symfile): Check the major version
11492         first; if it's wrong, don't print the minor version in the error message.
11493
11494 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11495
11496         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
11497         lock instead of the domain lock to avoid deadlocks, since the thread might
11498         already hold the loader lock.
11499
11500         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
11501         (mono_thread_attach): Ditto.
11502
11503         * monitor.c: Use a TLS variable for holding the current thread id instead
11504         of calling pthread_self ().
11505         (mono_monitor_init_tls): New internal function to initialize the TLS
11506         variable.
11507         (mono_monitor_try_enter_internal): Put the owner == id check after the
11508         owner == 0 check.
11509
11510         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
11511         missed optimizations when using gcc-4.3.
11512
11513 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
11514
11515         * reflection.c (mono_dynamic_image_free): Free the memory
11516         used by MonoGenericParam in MonoDynamicImage::gen_param.
11517
11518         * reflection.c (mono_reflection_setup_generic_class): Allocate
11519         container from mempool.
11520
11521         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
11522         container from mempool.
11523
11524 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11525
11526         * threads.c (mono_set_pending_exception): New internal function to set the
11527         pending exception of the current thread.
11528         (mono_thread_get_and_clear_pending_exception): Check for 
11529         thread->pending_exception as well.
11530
11531         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
11532
11533         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
11534         it can trigger a collection.
11535
11536 2008-06-06  Martin Baulig  <martin@ximian.com>
11537
11538         Merged the `debugger-kahalo' branch.
11539
11540         * mono-debug.h
11541         (MONO_DEBUGGER_VERSION): Bumped to 72.
11542
11543         * debug-mono-symfile.h
11544         (MonoSymbolFileMethodIndexEntry): Removed.
11545         (MonoSymbolFileMethodEntry): New public typedef.
11546         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
11547         (MonoSymbolFileSourceEntry): Remove everything except `index' and
11548         `data_offset'.
11549         (MonoSymbolFileMethodEntry): Removed.
11550         (MonoSymbolFileLexicalBlockEntry): Removed.
11551         (MonoSymbolFileLineNumberEntry): Removed.
11552         (MonoDebugLexicalBlockEntry): Removed.
11553         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
11554         removed `num_il_offsets' and `il_offsets'.
11555         (MonoSymbolFile): Replace `version' with `major_version' and
11556         `minor_version'.
11557         (MONO_SYMBOL_FILE_VERSION): Replace with
11558         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
11559         `MONO_SYMBOL_FILE_MINOR_VERSION'.
11560
11561         * debug-mono-symfile.c
11562         (mono_debug_symfile_lookup_location): Add support for the new line
11563         number table format.
11564
11565 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11566
11567         * metadata.c (free_generic_class): Release the inflated
11568         MonoClass of dynamic generic classes if it's not a generic
11569         type definition.
11570
11571 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11572
11573         * verify.c: Reapplied more of the reverted changes.
11574
11575 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11576
11577         * reflection.c (lookup_custom_attr): Clean the cached flag or
11578         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
11579         for SRE types.
11580
11581 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11582
11583         * verify.c: Reapplied a small part of the reverted changes.
11584
11585 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11586
11587         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
11588
11589         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
11590         previously in managed code.
11591         (mono_monitor_exit): Ditto.
11592         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
11593
11594         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
11595         the managed definition.
11596
11597 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
11598
11599         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
11600
11601 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11602
11603         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
11604         
11605         * monitor.c: Add some micro optimizations.
11606
11607         * icall.c (type_from_typename): Handle 'bool'.
11608
11609 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
11610
11611         * verify.c: Implement constructor verification per P III 1.8.1.4.
11612         Fixes #396716.
11613
11614 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11615
11616         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
11617         holding the assemblies lock here too.
11618
11619 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11620
11621         * verify.c: Kill stack_top function.
11622
11623 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11624
11625         * verify.c: Kill stack_get function.
11626
11627 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11628
11629         * verify.c (mono_method_verify): Last change broke the build. Fixed.
11630
11631 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11632
11633         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
11634         more reliable.
11635
11636         * verify.c (mono_method_verify): Inflate params and locals to avoid
11637         mismatch when checking for compatibility.
11638
11639 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
11640
11641         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
11642         Length prefix should be size in bytes. Fix bug #339530.
11643         
11644         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
11645         Length prefix should be size in bytes. Fix bug #339530.
11646
11647         Code is contributed under MIT/X11 license.
11648
11649 2008-06-05  Bill Holmes <billholmes54@gmail.com>
11650
11651         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
11652
11653         Contributed under MIT/X11 license.
11654
11655 2008-06-05  Martin Baulig  <martin@ximian.com>
11656
11657         * mono-debug-debugger.c
11658         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
11659
11660 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
11661
11662         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
11663         while holding the assemblies lock to prevent deadlocks. Handle the case
11664         where the search hook returns NULL but the assembly was still loaded.
11665         Fixes #323696.
11666
11667         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
11668         modify domain state.
11669
11670 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
11671
11672         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
11673         * Makefile.am (pedump_LDADD): Post-process object files and
11674         add dtrace-generated object file, if necessary.
11675
11676         Code is contributed under MIT/X11 license.
11677
11678 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11679
11680         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
11681
11682 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11683
11684         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
11685
11686 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11687
11688         * threads.c: Try to free everything from the delayed free table
11689         when shutting down threads, and set the variable to NULL after the
11690         table is freed so that calling
11691         mono_thread_hazardous_try_free_all() when shutting down the root
11692         domain doesn't crash.
11693
11694 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11695
11696         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
11697         the caller if resulting type was inflated.
11698
11699         * class.c (mono_class_create_from_typespec): Free the MonoType if it
11700         was inflated.
11701
11702         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
11703
11704
11705 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
11706
11707         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
11708         class library tests.
11709
11710         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
11711         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
11712         #396989.
11713
11714 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11715
11716         * domain.c, domain-internals.h: The JIT infos are now freed by the
11717         JIT info table code.  They are freed immediately if there only a
11718         single JIT info table in circulation.  If there is more, the free
11719         is delayed via a queue.
11720
11721         * threads.c, threads-types.h: New hazard pointer function for
11722         freeing all freeable delayed items in one sitting.
11723
11724 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11725
11726         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
11727
11728         * reflection.c (typebuilder_setup_properties): Same.
11729
11730         * reflection.c (typebuilder_setup_events): Same.
11731
11732 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11733
11734         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
11735         and use it for allocating memory.
11736
11737         * reflection.c (mono_marshal_spec_from_builder): Same.
11738
11739         * reflection.c: Change code to use new signatures.
11740
11741         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
11742
11743 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11744
11745         * decimal.c (rescale128): Put back one line which was accidently commented
11746         out.
11747         
11748         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
11749         to cause crashes.
11750
11751 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11752
11753         * reflection.c (mono_reflection_generic_class_initialize): Name must
11754         be always malloc'ed so we can free it later on. Do this for field, property
11755         and event.
11756
11757         * metadata.c (free_generic_class): Free field, property and event names.
11758
11759 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11760
11761         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
11762         instead of g_memdup.
11763
11764         * reflection.c (typebuilder_setup_fields): Same.
11765
11766 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11767
11768         * decimal.c (rescale128): Optimize this function a bit more.
11769
11770 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11771
11772         * metadata.c (free_generic_class): Release some memory from
11773         SRE generic classes.
11774
11775 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11776
11777         * reflection.c (mono_image_get_generic_field_token): No reference
11778         to name is kept, free it.
11779
11780         * reflection.c (mono_reflection_generic_class_initialize): Free
11781         more memory of the inflated field.
11782
11783 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11784
11785         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
11786         code.
11787
11788 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
11789
11790         * reflection.c (mono_dynamic_image_free): Release memory used by
11791         MonoDynamicImage::array_methods elements.
11792
11793         * reflection.c (assembly_add_win32_resources): Release memory after
11794         encoding.
11795
11796 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
11797
11798         * decimal.c (log2_32): Use an optimized version for this function too.
11799         
11800         * decimal.c (log2_64): Fix this on 32 bit machines.
11801
11802 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
11803
11804         * class.c (mono_dup_array_type): Implement allocation using a mempool.
11805
11806         * class.c (mono_metadata_signature_deep_dup): Same.
11807
11808         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
11809         a mempool.
11810
11811         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
11812
11813         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
11814
11815         * metadata-internals.h: Added mono_metadata_signature_dup_full.
11816
11817         * class-internals.h: Update signatures to take a MonoMemPool.
11818
11819 2008-06-02  Dick Porter  <dick@ximian.com>
11820
11821         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
11822         * icall-def.h: Add
11823         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
11824         FormatMessage API to get the error text.  Fixes bug 321827.
11825
11826 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
11827
11828         * decimal.c: Add some micro optimizations to make decimal operations faster.
11829
11830 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
11831
11832         * reflection.c (method_encode_clauses): Take a mempool
11833         as parameter and use it to allocate the clause array.
11834
11835         * reflection.c (mono_image_get_field_on_inst_token): Free
11836         the inflated type after encoding it.
11837
11838         * reflection.c (mono_dynamic_image_free): Free each element
11839         of MonoDynamicImage::gen_params.
11840
11841         * reflection.c (reflection_methodbuilder_to_mono_method):
11842         Allocate the generic param array from the mempool.
11843         Allocate signature params from the mempool.
11844
11845         * reflection.c (mono_reflection_generic_class_initialize):
11846         Free inflated fields after been used.
11847
11848 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
11849
11850         * icall.c: Reapply the memory leak fixes as they no
11851         longer make mono crash.
11852
11853 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
11854
11855         * reflection.c (mono_type_get_object): Don't store the suplied
11856         MonoType with type_hash. A caller which pass a type that
11857         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
11858         might end with a pointer to freed memory.
11859         The solution is to use byval_arg or this_arg from the associated
11860         MonoClass of the supplied type.
11861
11862 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
11863
11864         * icall.c: Revert the rest of the last change as it breaks the build too.
11865
11866 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11867
11868         * icall.c: Revert a leak fix as it's breaking the build.
11869
11870 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11871
11872         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
11873
11874 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11875
11876         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
11877
11878 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11879
11880         * icall.c: Fix some memory leaks.
11881
11882 2008-05-29  Dick Porter  <dick@ximian.com>
11883
11884         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
11885         async socket operations from the pending list when a socket
11886         closes.  Leaving it until the threadpool services the event
11887         exposes a race condition when a socket descriptor is reused.
11888         Fixes bug 377589.
11889
11890 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11891
11892         * object.c: Fix negative index check for array alocation.
11893
11894 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11895
11896         * icall.c, marshal.c: Delegate wrappers should skip visibility.
11897         This check is performed by the verifier for IL created delegates
11898         and by Delegate::CreateDelegate for programatically created ones.
11899         Fixes #372406.
11900
11901 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11902
11903         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
11904         Fix code to use mono_array_size_t instead of int.
11905
11906         Based on patch by Luis F. Ortiz.
11907         Contributed under X11 license.
11908         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11909
11910 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11911
11912         * icall.c: Added ves_icall_System_Array_GetLongLength and
11913         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
11914         arrays.
11915
11916         * icall.h: Export both new functions.
11917
11918         Based on patch by Luis F. Ortiz.
11919         Contributed under X11 license.
11920         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11921
11922 2008-05-28  Martin Baulig  <martin@ximian.com>
11923
11924         The debugger now requires exactly r103463.
11925
11926         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
11927         This version is not supported by the debugger, wait for 72.
11928
11929 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11930
11931         * object.h: Changed array related functions to use
11932         mono_array_size_t instead of guint32. Forgot to commit this file.
11933
11934         Patch by Luis F. Ortiz.
11935         Contributed under X11 license.
11936         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11937
11938
11939 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11940
11941         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
11942         don't define it. Use the number literal instead.
11943
11944 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11945
11946         * icall.c: Changed array related functions to use
11947         mono_array_size_t instead of guint32.
11948
11949         * icall.c (ves_icall_System_Array_GetLength): Check for length
11950         overflow under MONO_BIG_ARRAYS.
11951
11952         Based on patch by Luis F. Ortiz.
11953         Contributed under X11 license.
11954         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11955
11956 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11957
11958         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
11959
11960         Based on patch by Luis F. Ortiz.
11961         Contributed under X11 license.
11962         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11963
11964 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11965
11966         * object.c, object.h: Changed array related functions to use
11967         mono_array_size_t instead of guint32.
11968
11969         Patch by Luis F. Ortiz.
11970         Contributed under X11 license.
11971         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11972
11973 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11974
11975         * object.h: Introduced mono_array_size_t typedef. This must be used
11976         in all places an array length is expected. This is 64bits wide if
11977         MONO_BIG_ARRAYS is enabled.
11978
11979         Patch by Luis F. Ortiz.
11980         Contributed under X11 license.
11981         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11982
11983 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
11984
11985         * security-manager.c class.c: Set the class exception info by calling
11986         mono_class_set_failure ().
11987
11988         * class.c (mono_class_get_exception_data): New accessor function.
11989         (mono_class_set_failure): Store exception_data in the property hash.
11990
11991         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
11992         the struct as a property.
11993
11994         * loader.c (mono_get_method_full): Store the lookup result for method
11995         tokens in method_cache, the others in methodref_cache to decrease the memory
11996         usage of hash tables.
11997
11998         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
11999         (mono_image_init): method_cache is lazy inited now.
12000
12001         * metadata-internals.h (struct _MonoImage): Change method_cache to
12002         a MonoValueHashTable, add a separate methodref_cache.
12003
12004 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
12005
12006         * number-formatter.h: Fix tables to avoid arithemtic overflow in
12007           Double.ToString as exposed by Bug #383531.
12008
12009 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12010
12011         * number-formatter.h: Make some tables static.
12012
12013         * class.c (mono_method_set_generic_container): New accessor function.
12014         (mono_method_get_generic_container): Ditto.
12015
12016         * class-internals.h (struct _MonoMethod): Remove rarely used 
12017         'generic_container' field, store it in the property hash instead. Add 
12018         'is_generic' boolean field instead.
12019
12020         * image.c (mono_image_init): Initialize property_hash.
12021         (mono_image_close): Destroy property_hash.
12022
12023         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
12024         hold rarely used fields of runtime structures belonging to this image.
12025
12026         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
12027         to get/set method->generic_container.
12028
12029         * loader.c (mono_get_method_from_token): Avoid loading the method header for
12030         generic methods.
12031
12032 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
12033
12034         * class.c (mono_class_inflate_generic_method_full): Don't increase
12035         mono_stats.inflated_method_count for methods found in the cache.
12036
12037         * threads.c (mono_thread_request_interruption): Add a comment about 
12038         QueueUserAPC ().
12039
12040 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12041
12042         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
12043         interface_offsets_packed table.
12044         
12045         * class.c (mono_class_init): Remove some dead code.
12046
12047         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
12048         mono_class_setup_vtable () when CAS is active to detect security problems.
12049
12050 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
12051
12052         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
12053
12054         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
12055         parameters as it's irrelevant for delegate checking.
12056
12057 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12058
12059         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
12060
12061         * class.c (mono_class_init): Control the creation of a generic vtable using
12062         a global which is true by default, but set to false by the runtime startup code.
12063         
12064         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
12065         Disabled for now since it breaks the embedding API.
12066         Move the setup of class->methods for arrays to mono_class_setup_methods ().
12067         (mono_class_setup_methods): Add a memory barrier.
12068
12069         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
12070         when mono_class_init () doesn't compute the generic vtable.
12071         
12072 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12073         * profiler.c: Added mono_profiler_install_statistical_call_chain,
12074         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
12075         to support call chains (backtrace) in the stat profiler.
12076         * profiler.c, profiler-private.h: Likewise.
12077
12078 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12079
12080         * generic-sharing.c: Init generic class when a method of it is
12081         requested via a runtime generic context.
12082
12083 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12084
12085         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
12086
12087         * reflection.c (mono_type_get_object): Add a FIXME.
12088
12089         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
12090
12091         * class.c (mono_class_get_method_by_index): New helper function, returning an
12092         entry in the class->methods array.
12093
12094 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12095
12096         * class.c (mono_class_init): Only do the array optimization for szarrays. 
12097         Avoid creating a generic vtable for generic instances as well.
12098         (mono_class_get_method_from_name_flags): Don't search in the metadata for
12099         generic instances.
12100
12101 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
12102
12103         * loader.c (mono_get_method_constrained): Inflate the signature
12104         with class context. Fix #325283.
12105
12106 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12107
12108         * object.c (mono_class_create_runtime_vtable): Add a comment.
12109
12110         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
12111         where needed.
12112         (setup_interface_offsets): Handle the case when this is called twice for arrays.
12113         (mono_class_setup_vtable_general): Add an assert.
12114         (mono_class_init): Avoid creating a generic vtable for arrays.
12115
12116         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
12117         here, let mono_class_init () do that.
12118
12119         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
12120         interfaces in mscorlib.
12121
12122         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
12123         interfaces. Add some comments.
12124         (mono_class_init): Call mono_class_setup_methods () here since it is no
12125         longer called by mono_class_setup_vtable ().
12126
12127         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
12128         not set in class->vtable.
12129         (mono_class_create_runtime_vtable): Reenable the disabled code.
12130
12131         * object.c (mono_class_create_runtime_vtable): Disable the last change for
12132         now as it causes some test failures.
12133
12134         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
12135         if using the vtable trampoline. Also remove some strange code which put the
12136         generic methods themselves into the vtable slots. Remove the AOT init_vtable
12137         stuff as it is no longer needed.
12138
12139 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
12140
12141         * pedump.c: Give make --verify all option check code as well.
12142         Using --verify code won't check for metadata now.
12143
12144 2008-05-19  Martin Baulig  <martin@ximian.com>
12145
12146         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
12147
12148         * mono-debug.c
12149         (_mono_debug_using_mono_debugger): New global variable; it's set
12150         directly by the debugger, so mono_debug_using_mono_debugger() also
12151         works after attaching.
12152
12153 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
12154
12155         * object.c (mono_class_create_runtime_vtable): Use memory barriers
12156         as we do double checked locking on MonoClass::runtime_info and
12157         MonoClassRuntimeInfo::domain_vtables.
12158
12159 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
12160
12161         * debug-helpers.c (print_field_value): Fix a warning.
12162
12163 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
12164
12165         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
12166         set in the AOT case.
12167
12168 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
12169
12170         * class.c (mono_class_setup_vtable_general): Use memory barriers
12171         as we do double checked locking on MonoClass::vtable.
12172
12173 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
12174
12175         * reflection.c (resolve_object): Inflate only if the generic context
12176         is not null. Fixes #389886.
12177
12178 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
12179
12180         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
12181         instead of g_free.
12182
12183         Code is contributed under MIT/X11 license.
12184
12185 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12186
12187         * class.c: Revert unrelated change.
12188
12189 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12190
12191         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
12192         a generic instantiation, use mono_class_from_mono_type instead of playing
12193         with MonoType directly.
12194
12195 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12196
12197         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
12198         checks must ignore generic instantiations, so mono_class_has_parent is not
12199         suitable. Fixes #390128.
12200
12201 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
12202
12203         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
12204         it to avoid registering tokens during metadata generation. Fixes #390023.
12205
12206 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
12207
12208         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
12209         consistent.
12210
12211         Contributed under MIT/X11 license.
12212
12213 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
12214
12215         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
12216         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
12217         to fixup the EXE image.
12218         (mono_cleanup): Use mono_close_exe_image.
12219         (mono_close_exe_image): New function.
12220         * image.c: Include "marshal.h".
12221         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
12222         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
12223         counting when the image is loaded outside of mono_image_open_full. Set status
12224         based on GetLastError.
12225         * coree.c: Include required headers. Add init_from_coree.
12226         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
12227         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
12228         (_CorExeMain): Set init_from_coree.
12229         (CorExitProcess): Only call ExitProcess for now.
12230         (CorBindToRuntimeEx): New stub implementation.
12231         (CorBindToRuntime): New function.
12232         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
12233         (MonoFixupExe): ILONLY executables require no fixups.
12234         (mono_set_act_ctx): New function to set activation context.
12235         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
12236         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
12237         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
12238         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
12239         as MONO_INTERNAL.
12240         * domain-internals.h: Add mono_close_exe_image.
12241
12242         Contributed under MIT/X11 license.
12243
12244 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
12245
12246         * metadata.c (mono_metadata_compute_size): Correctly calculate field
12247         size for generic param and event tables. Fixes #388977.
12248
12249 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
12250
12251         * loader.c (mono_method_signature): Use memory barriers because of the double
12252         checked locking pattern.
12253
12254         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
12255         aborting or aborted as well. Fixes #376391.
12256         
12257         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
12258         existing runtime state in the Suspend handler during shutdown.
12259
12260 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
12261
12262         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
12263
12264         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
12265         which are starting up or shutting down.
12266
12267         * threads.c (mono_threads_set_shutting_down): Don't return a value since
12268         this function never returns if the runtime is already shutting down.
12269
12270         * icall.c (ves_icall_System_Environment_Exit): Update after 
12271         mono_threads_set_shutting_down () signature change.
12272         
12273 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
12274
12275         * class.c: Added can_access_instantiation to verify if the instantiation
12276         is visible. Fix access check for nested types as they returned TRUE
12277         before doing type and generic instantiation visibility checks.
12278
12279 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
12280
12281         * reflection.c (mono_reflection_create_generic_class): The created type
12282         must have a different container from its TypeBuilder. Otherwise they
12283         will end sharing generic arguments, which is wrong.
12284
12285         Due to the sharing, making a generic instance of the created type using
12286         the TypeBuider generic arguments resulted in the generic type definition
12287         been returned, which is wrong as well.
12288
12289         As a bonus the code was leaking the type_params array. This memory should
12290         be allocated from the image mempool.
12291
12292         This fixes bug #354047.
12293
12294 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
12295
12296         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
12297         to here         as they are now used in assembly.c new code.
12298         Added a skipverification flag to MonoAssembly.
12299         New internal function mono_assembly_has_skip_verification.
12300
12301         * assembly.c: New function mono_assembly_has_skip_verification. It checks
12302         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
12303         part of #387274.
12304
12305 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12306
12307         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
12308         needed. Fixes #387034.
12309
12310         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
12311
12312 2008-05-06  Miguel de Icaza  <miguel@novell.com>
12313
12314         * assembly.c (mono_assembly_load_reference): Prevent crash while
12315         disassembling Silverlight 2.0 executables while we still do not
12316         have GACed libraries.
12317
12318 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12319
12320         * reflection.c: Special case generic type definitions as well. Fixes #383444.
12321
12322 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
12323
12324         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
12325         of the dynamic case. Fixes #387404.
12326
12327 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12328
12329         *verify.c (mono_verifier_is_class_full_trust): If under
12330         verify_all and the verifier mode was not set, only
12331         gac and corlib types are fulltrust. This makes --verify-all
12332         usable to detect unverifiable code, which is the expected
12333         use case.
12334
12335 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12336
12337         * verify.h: Ops, commited the header with debug
12338         enabled.
12339
12340 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12341
12342         * verify.c (merge_stack): Use the new value on unverifiable
12343         stack merges.
12344
12345         * verify.c (verify_type_compatibility_full): Comparison
12346         of nullable types can't use mono_class_is_assignable_from.
12347
12348         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
12349         that makes all verification errors be reported.
12350
12351         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
12352         mono_method_verify.
12353
12354 2008-05-05  Robert Jordan  <robertj@gmx.net>
12355
12356         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
12357         support for value types. See #386415.
12358
12359         * object.c: comments.
12360
12361         Code is contributed under MIT/X11 license.
12362
12363 2008-05-05  Martin Baulig  <martin@ximian.com>
12364
12365         * debug-mono-symfile.h
12366         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
12367         for old pre-terrania symbol files.
12368
12369 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
12370
12371         * mono-config.c: Add ppc64 architecture.
12372
12373         Code is contributed under MIT/X11 license.
12374
12375 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
12376
12377         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
12378           PPC64 uses function descriptors as well.
12379
12380         Code is contributed under MIT/X11 license.
12381
12382 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
12383
12384         * object.c (compute_class_bitmap): Ignore literal static fields.
12385
12386         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
12387         var has an invalid format.
12388         (describe_ptr): Add some sanity checks for the vtable.
12389         (add_nursery_frag): Clear unused nursery fragments.
12390         (major_collection): Clear all remaining nursery fragments.
12391
12392 2008-05-03  Robert Jordan  <robertj@gmx.net>
12393
12394         * image.c, metadata-internals.h: add thunk_invoke_cache.
12395
12396         * marshal.c, marshal.h: implement
12397         mono_marshal_get_thunk_invoke_wrapper ().
12398
12399         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
12400
12401         Code is contributed under MIT/X11 license.
12402
12403 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
12404
12405         * verify.c (do_leave): Empty the stack.
12406
12407 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
12408
12409         * class.c (mono_class_is_assignable_from): Variance
12410         doesn't work between reference and value types. For example,
12411         given type C<T+>, C<int32> is not assignable to C<object>.
12412         Break the argument checking loop on first error. 
12413
12414 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
12415
12416         * icall.c : base64_to_byte_array() needs some more strict
12417           check for sequence of '=' characters. Patch by Santa
12418           Marta (http://deee.g.hatena.ne.jp/santamarta).
12419
12420           Contributed under MIT/X11 license.
12421           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
12422
12423 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
12424
12425         * domain.c: Disable LoadLibrary support to fix Win32 build.
12426
12427         Code is contributed under MIT/X11 license.
12428
12429 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
12430
12431         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
12432         to help with cache behaviour.
12433
12434 2008-05-01  Miguel de Icaza  <miguel@novell.com>
12435
12436         * appdomain.c (mono_domain_from_appdomain): Add new accessor
12437         method. 
12438
12439 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
12440
12441         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
12442
12443 2008-05-01  Dick Porter  <dick@ximian.com>
12444
12445         * process.c (process_get_fileversion): Only pass 16 bits of
12446         language ID to VerLanguageName.  Fixes bug 381204.
12447
12448 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
12449
12450         * verify.c (mono_method_verify): Fix the comparison
12451         operator for code bounds check.
12452
12453 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
12454
12455         * verify.c (mono_method_verify): Check the bounds of
12456         all access of the code array.
12457
12458 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
12459
12460         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
12461
12462 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
12463
12464         * image.c (mono_image_strong_name_position): Fix return value when the rva is
12465         not valid.
12466
12467 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
12468
12469         * loader.c (mono_get_method_from_token, mono_method_signature): Add
12470         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
12471         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
12472         fixup main EXE images when using mono.exe for mixed-mode assembly support.
12473         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
12474         mono_runtime_load.
12475         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
12476         runtime initialization from metadata.
12477         * assembly.c: Remove obsolete ceGetModuleFileNameA.
12478         (mono_set_rootdir): Use mono_get_module_file_name.
12479         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
12480         handles.
12481         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
12482         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
12483         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
12484         MonoCLIImageInfo. Add support for module handles.
12485         (load_cli_header): Update mono_cli_rva_image_map signature.
12486         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
12487         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
12488         (mono_image_rva_map): Add support for module handles.
12489         (mono_image_ensure_section_idx): Add support for module handles.
12490         (mono_image_close): Add support for module handles.
12491         (do_load_header): Add support for module handles.
12492         (mono_image_open_from_module_handle): New function for internal use.
12493         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
12494         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
12495         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
12496         handles.
12497         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
12498         * image.h: Add mono_image_fixup_vtable.
12499         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
12500         support.
12501         * coree.h: New file.
12502         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
12503         unsupported native code.
12504         (mono_marshal_set_callconv_from_modopt): New function splitted from
12505         mono_marshal_get_managed_wrapper.
12506         (mono_marshal_get_managed_wrapper): Use
12507         mono_marshal_set_callconv_from_modopt.
12508         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
12509         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
12510         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
12511         that results in a deadlock when the runtime is loaded in _CorDllMain.
12512         * Makefile.am: Add coree.c and coree.h.
12513
12514         Contributed under MIT/X11 license.
12515
12516 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12517
12518         * generic-sharing.c: Search for type arguments in array element
12519         types as well.
12520
12521 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12522
12523         * class-internals.h, generic-sharing.c: New, small runtime generic context.
12524
12525         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
12526
12527         * object.c: Don't setup the RGCTX when the vtable is created,
12528         because we're setting it up lazily now.
12529
12530 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
12531
12532         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
12533         64 bit support.
12534
12535 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
12536
12537         * verify.c (verify_class_for_overlapping_reference_fields): 
12538         If class is under fulltrust allow reference types to overllap
12539         if they have the same RVA.
12540
12541 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
12542
12543         * pedump.c: Added new flag valid-only, that makes the verifier
12544         behaves just like --security=validil. It won't fail type load
12545         due to unverifiable restrictions.
12546
12547 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
12548
12549         * class-internals.h (struct MonoMethod): Added a verification_success
12550         field to cache verifier executions. Reduced MonoMethod:slot size by
12551         one bit.
12552
12553 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12554
12555         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
12556         instead of a 'vt' argument to save an indirection and to allow these to be used
12557         for valuetypes.
12558         (scan_vtype): New helper function to scan an area using a gc descriptor.
12559         (mono_gc_wbarrier_value_copy): Implement this.
12560         (handle_remset): Add support for REMSET_VTYPE.
12561         (find_in_remset_loc): Ditto.
12562         (mono_gc_base_init): Allow some debugging options to be controlled through the
12563         use of the MONO_GC_DEBUG env variable.
12564         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
12565         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
12566
12567 2008-04-23  Martin Baulig  <martin@ximian.com>
12568
12569         * domain.c (mono_domain_create): Move the call to
12570         mono_debug_domain_create() down, after allocating the domain id.
12571
12572 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
12573
12574         verify.c (verify_class_for_overlapping_reference_fields): Skip
12575         static fields while verifying for overlapping fields as they
12576         don't matter at all.
12577
12578 2008-04-23  Marek Habersack  <mhabersack@novell.com>
12579
12580         * domain-internals.h: added a declaration of
12581         mono_make_shadow_copy.
12582
12583         * assembly.c (mono_assembly_open_full): shadow copying of
12584         assemblies moved to here, so that all the assemblies within the
12585         application domain's private binary directories can be
12586         processed. Fixes bug #380546
12587
12588         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
12589         mono_make_shadow_copy and made non-static. The decision whether
12590         to shadow-copy an assembly is made based on its location - it's
12591         copied if it's in one of the private application domain binary
12592         directories and its different to the target file in the shadow
12593         directory. Fixes bug #380546
12594
12595 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12596
12597         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
12598
12599         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
12600         types.
12601
12602         * reflection.c (mono_image_create_token): Handle 
12603         Method/ConstructorOnTypeBuilderInst.
12604         (resolve_object): Ditto.
12605         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
12606         so it can be called from resolve_object. Also handle the case when the inflated
12607         class already has its methods setup.
12608
12609 2008-04-21  Martin Baulig  <martin@ximian.com>
12610
12611         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
12612
12613 2008-04-20  Geoff Norton  <gnorton@novell.com>
12614
12615         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
12616         pointer dereference.
12617
12618 2008-04-15  Marek Habersack  <mhabersack@novell.com>
12619
12620         * appdomain.c (try_load_from): if IOMAP is in effect, call the
12621         portability API to look up the assembly file. Fixes behavior in
12622         situations when the application has a bin/ directory, but the
12623         assembly search patch refers to Bin/ (and thus the requested file
12624         name is Bin/SomeLibrary.dll). Fixes bug #379888
12625
12626 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
12627
12628         verify.c (mono_type_is_generic_argument): Extracted this check
12629         from a dozen places to here.
12630
12631         verify.c: Fixed all issues related to boxing generic arguments
12632         and their constraints.
12633
12634 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
12635
12636         verify.c (mono_class_interface_implements_interface): Fix win32 build.
12637
12638 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12639
12640         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
12641         isn't finished yet. Fixes #363447.
12642
12643 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
12644
12645         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
12646         Fixes #346419.
12647
12648 2008-04-13  Jb Evain  <jbevain@novell.com>
12649
12650         * domain.c: update the 2.1 profile versions.
12651         Merged from the Moonlight 2 branch.
12652
12653 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
12654
12655         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
12656         mscorlibs for the non-refonly case as well.
12657
12658         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
12659         in mono_assembly_load_from_full (). Fixes #378924.
12660
12661 2008-04-11  Geoff Norton  <gnorton@novell.com>
12662
12663         * icall.c: The global extern environ doesn't exist on Mac.  We
12664         need to call NSGetEnviron instead.
12665
12666 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12667
12668         verify.c: Add generic method constraint verification.
12669
12670 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12671
12672         class.c (mono_class_inflate_generic_method_full): Add a long
12673         explanation to the is_mb_open hack. Remove the FIXME.
12674
12675 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12676
12677         * verify.c (mono_method_verify): Mark all unknown opcodes
12678         as invalid. Mark jmp as unverifiable.
12679
12680 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12681
12682         * verify.c: Add code to do type constraint verification on class instances.
12683
12684         * verify.c (mono_verifier_verify_class): Use the type constraint 
12685         verification code.
12686
12687 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12688
12689         * class.c (mono_class_get_field_default_value): Don't pass cindex
12690         as hint to mono_metadata_get_constant_index. The local is not initialized
12691         and should contain garbage most of the time. This could only work
12692         with a lot of luck.
12693
12694 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
12695
12696         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
12697
12698 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
12699
12700         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
12701
12702         * class.c (mono_class_from_generic_parameter): Save the token of the
12703         generic param in MonoClass::sizes.generic_param_token.
12704
12705         * reflection.c (mono_custom_attrs_from_class): If the class type is
12706         VAR or MVAR retrieve the attributes of the generic param.
12707
12708 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12709
12710         * class.c (mono_class_init): Do class verification if the verifier
12711         is enabled.
12712
12713 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12714
12715         * verify-internal.h: Added mono_verifier_verify_class.
12716
12717         * verify.c: Added mono_verifier_verify_class. It checks for
12718         classes with explicit layout that have overlapping reference fields.
12719
12720         * pedump.c: Init the verifier state prior to verification. Fixed
12721         command line arguments.
12722
12723 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12724
12725         * Makefile.am: Added verify-internals.h, hopefully fix the build.
12726
12727 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12728
12729         * verify-internals.h: Fix a warning.
12730
12731 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
12732
12733         * verify-internals.h: New header with the verifier configuration
12734         extracted from mini.c.
12735
12736         * verify.c: Implemented the new functions exported by verify-internals.h.
12737
12738 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
12739
12740         * verify.c: Add proper verification of ckfinite.
12741
12742 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12743
12744         * verify.c (do_conversion): Improved error message to something
12745         more meanfull.
12746
12747         * verify.c (check_is_valid_type_for_field_ops): Fix to work
12748         with primitive types.
12749
12750 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12751
12752         * verify.c: Added tail prefix checking. Marked icall
12753         as unverifible.
12754
12755 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12756
12757         * verify.c: Fix the detection of branches to the middle
12758         of an instruction.
12759
12760 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
12761
12762         * verify.c: Implemented verification of volatile. and
12763         unaligned. prefix. Check if a type is valid after retrieving it.
12764
12765 2008-04-01  Dick Porter  <dick@ximian.com>
12766
12767         * process.c (process_get_fileversion): If there's no string block,
12768         set the file language to en_US.  Fixes the other new part of bug
12769         374600.
12770
12771 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
12772
12773         * class.c: New functions mono_method_can_access_field_full and
12774         mono_method_can_access_method_full. They perform type visibility
12775         and type site check.
12776
12777         * class-internal.h: Added exported functions.
12778
12779         * verify.c: Use new functions to implement proper visibility checks.
12780
12781 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
12782
12783         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
12784
12785 2008-03-28  Dick Porter  <dick@ximian.com>
12786
12787         * process.c (process_get_fileversion): Use the first language ID
12788         we see, rather than insisting on an invariant language.  Fixes bug
12789         374600.
12790
12791 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
12792
12793         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
12794         the streams to fix reading of invalid memory later.
12795
12796         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
12797         to ease debugging.
12798
12799 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12800
12801         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
12802         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
12803
12804 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
12805         * threads.h: Added MonoThreadManageCallback type and
12806         mono_thread_set_manage_callback prototype
12807         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
12808         (used to store the mono_thread_manage callback).
12809         * threads.c: Added mono_thread_set_manage_callback, and handle
12810         "MonoThread->manage_callback" in build_wait_tids.
12811
12812 2008-03-26  Dick Porter  <dick@ximian.com>
12813
12814         * process.c (process_get_fileversion): Set FileVersionInfo strings
12815         to Empty when the resource doesn't have the particular info.
12816         Fixes bug 355717.
12817
12818 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
12819
12820         * verify.c (mono_method_verify): Proper prefix validation.
12821
12822 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12823
12824         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
12825         itself in a separate argument instead of throwing them. Fixes #373448.
12826
12827         * appdomain.c: Bump corlib version.
12828
12829 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
12830
12831         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
12832
12833 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
12834
12835         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
12836         version macros.
12837
12838 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12839
12840         * generic-sharing.c, class-internals.h: Code for putting
12841         reflection types into the runtime generic context.
12842
12843 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
12844
12845         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
12846         Fixes #340662. 
12847
12848
12849 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
12850
12851         * verify.c (VerifyContext): Added instruction prefix data to the struct.
12852
12853         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
12854
12855         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
12856
12857         * verify.c (do_cast): Let the result value keep the boxed status.
12858
12859         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
12860
12861 2008-03-17  Jb Evain  <jbevain@novell.com>
12862
12863         * reflection.c: when running on a 2.0 runtime, emit
12864         unconditionally the #~ header version as 2.0, and the
12865         CLI header version as 2.5, for symmetry's sake with csc.
12866
12867 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
12868
12869         * class.c: Remove the unused cache_interface_offsets stuff.
12870
12871         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
12872         profiler.c: Fix warnings.
12873
12874 2008-03-16  Mark Probst  <mark.probst@gmail.com>
12875
12876         * generic-sharing.c, class-internals.h: Support for putting
12877         methods into the runtime generic context.
12878
12879 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
12880
12881         * class.c (mono_class_setup_fields): Ignore calls made to this function for
12882         classes which are generic instances of not-yet finished typebuilders. Fixes
12883         #351172.
12884
12885         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
12886
12887 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
12888
12889         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
12890
12891         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
12892         field, replace it with a hash table in MonoDynamicImage.
12893
12894         * reflection.c (inflate_mono_method): Access the generic definition object from
12895         image->generic_def_objects instead of imethod->reflection_info.
12896
12897         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
12898
12899         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
12900         
12901         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
12902         function in reflection.c so it is easier to keep in sync with the dynamic image
12903         creation code.
12904
12905         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
12906         mono_image_close ().
12907
12908 2008-03-15  Mark Probst  <mark.probst@gmail.com>
12909
12910         * class.c (mono_class_generic_sharing_enabled): Disable generic
12911         sharing for all architectures except AMD64 and x86 to fix build.
12912
12913 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
12914
12915         * verify.c: Use the generic definition MonoGenericContext when available.
12916         Remove code for checking generics instance compatibility in favor of
12917         mono_class_is_assignable_from.
12918
12919 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12920
12921         * marshal.c, marshal.h, metadata-internals.h, image.c,
12922         wrapper-types.h: New wrapper for invoking a shared static method
12923         without having to pass the runtime generic context argument.
12924
12925 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
12926
12927         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
12928
12929 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12930
12931         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
12932         
12933         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
12934         create a token from a FieldOnTypeBuilderInst.
12935         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
12936         (resolve_object): Ditto.
12937
12938         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
12939         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
12940
12941 2008-03-14  Martin Baulig  <martin@ximian.com>
12942
12943         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
12944
12945         * debug-mono-symfile.h
12946         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
12947         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
12948
12949 2008-03-10  Martin Baulig  <martin@ximian.com>
12950
12951         * debug-mono-symfile.h
12952         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
12953         `lexical_block_table_offset'.
12954         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
12955         `lexical_blocks'.
12956         (MonoSymbolFile): Added `version'.
12957
12958         * mono-debug.h
12959         (MonoDebugLexicalBlockEntry): Removed.
12960         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
12961         `lexical_blocks'.
12962
12963         * mono-debug.c (mono_debug_add_method): Don't compute lexical
12964         blocks here; the debugger now does this internally.
12965
12966 2008-02-27  Martin Baulig  <martin@ximian.com>
12967
12968         * object.c (mono_runtime_exec_main): Call
12969         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
12970         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
12971
12972 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
12973
12974         * verify.c (verify_type_compatibility_full): Allow native int to be converted
12975         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
12976
12977 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
12978
12979         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
12980         ldftn with a virtual method.
12981
12982 2008-03-13  Geoff Norton  <gnorton@novell.com>
12983
12984         * decimal.c:  Only include memory.h if the platform has it.
12985
12986 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
12987
12988         * assembly.c, class.c, metadata-internals.h: make sure public key
12989         tokesns are compared in a case-insensitive way. Also, all
12990         the lookups in the GAC use a lowercase public key token
12991         (gaacutil already does the lowercasing on install). Fixes
12992         bug #369541.
12993
12994 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
12995
12996         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
12997         and return value.
12998
12999 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
13000
13001         * image.c: when someone loads a mscorlib from a file, return the
13002         currently loaded mscorlib (fixes bug #369253).
13003
13004 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
13005
13006         * class.c: handle types with no parents by forcing them to have
13007         System.Object as a parent and marking them as broken (this currently
13008         allows the first part of bug #369173 to work as well, likely because
13009         we don't check for typeload exceptions everywhere yet).
13010
13011 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
13012
13013         * class.c: more complete check that types belong to corlib
13014         (fixes second part of bug #369173).
13015
13016 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
13017
13018         * generic-sharing.c:  Including glib.h for the MSVC builds to define
13019           "inline" to "__inline" before including mono-membar.h.
13020           
13021         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
13022           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
13023           MSVC builds.
13024
13025         Contributed under MIT/X11 license.
13026
13027 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
13028
13029         * verify.c (do_invoke_method): Remove return type validation.
13030
13031         * verify.c (do_ret): Do return type validation at return site instead of
13032         call site.
13033
13034 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
13035
13036         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
13037
13038         * verify.c: Some todos cleaned and improved a few error messages.
13039
13040 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
13041
13042         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
13043
13044 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13045
13046         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
13047         system types correctly.
13048
13049         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
13050         function.
13051
13052 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13053
13054         * assembly.c (build_assembly_name): Fix a warning.
13055
13056 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
13057
13058         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
13059         the called function takes an object type argument. Fixes storing or
13060         valuetypes across remoting as well as reducing memory usage.
13061         * image.c, metadata-internals.h: remove now unused ldfld_remote and
13062         stfld_remote wrapper caches.
13063
13064 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13065
13066         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
13067         is not found.
13068
13069         * reflection.c (mono_image_register_token): New helper function to save
13070         a token->object mapping.        
13071
13072         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
13073         managed code.
13074
13075         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
13076         one dimension arrays. Fixes #367670.
13077         (mono_reflection_get_type_internal): Ditto.
13078
13079 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
13080
13081         * marshal.c: mono_load_remote_field_new() always returns object.
13082         so use the proper signature (fixes bug #366445).
13083
13084 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13085         
13086         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
13087         add an 'inline_failure' flag instead.
13088
13089 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13090
13091         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
13092         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
13093         contains the location of "this", used for exception handling.
13094
13095 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13096
13097         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
13098         their size on all platforms for perf reasons.
13099
13100 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13101
13102         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
13103         object-internal.h
13104
13105         * object-internal.h: Same.
13106
13107 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13108
13109         * reflection.h: Fix the build I just broke.
13110
13111 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13112
13113         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
13114         Test if a token is valid, this remove explicit usage of 
13115         MonoDynamicImage::tokens from the verifier code.
13116
13117         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
13118
13119         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
13120         instead of direct access to MonoDynamicImage::tokens.
13121
13122 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13123
13124         * verify.c (token_bounds_check): Fix the build I just broke.
13125
13126 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13127
13128         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
13129
13130         * verify.c (verifier_load_method): Fixed the errors message.
13131
13132         * verify.c (mono_method_verify): Fixed a debug message.
13133
13134 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
13135
13136         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
13137         mono-perfcounters.h, class-internals.h: support for predefined
13138         writable counters, query of categories and counters, bugfixes.
13139
13140 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
13141
13142         * verify.c (do_refanytype): Verify the refanytype opcode.
13143
13144         * verify.c (mono_method_verify): Use do_refanytype.
13145
13146 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
13147
13148         * verify.c (do_mkrefany): Verify the mkrefany opcode.
13149
13150         * verify.c (mono_method_verify): Use do_mkrefany.
13151
13152 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
13153
13154         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
13155         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
13156         implementation.
13157
13158 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13159
13160         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
13161         the type load exception.
13162
13163 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
13164
13165         * verify.c: Added a few FIXME for method signatures
13166
13167         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
13168         of mono_method_get_signature and get vararg call working. Removed unused
13169         checks for return value.
13170
13171         * verify.c (do_refanyval): Verify the refanyval opcode.
13172
13173         * verify.c (mono_method_verify): Implemented verification of arglist and
13174         use do_refanyval.
13175
13176 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13177
13178         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
13179         vtypes to marshal.c.
13180
13181         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
13182         it works for AOT as well.
13183
13184 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
13185
13186         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
13187         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
13188         the system time is adjusted.
13189
13190 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
13191
13192         * icall.c, icall-def.h: use the new time functions (fixes the
13193         non-monotonic behaviour of TickCount).
13194
13195 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13196
13197         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
13198         it breaks the build.
13199         
13200         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
13201         cattr is not finished yet.
13202
13203 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
13204
13205         * verify.c: Proper token validation for field, method and type.
13206
13207 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
13208
13209         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
13210
13211         * loader.c (method_from_memberref): Generate type load error instead of method missing
13212         if the type is not found.
13213
13214 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13215
13216         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
13217         some of the conversions caused the generation of a marshal directive exception.
13218
13219 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
13220
13221         verify.c: Report which exception should be thrown by the JIT.
13222         Added a lot of FIXME notes.
13223
13224 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13225
13226         * generic-sharing.c: Runtime generic context slots are not
13227         instantiated on init anymore.  Instead, provide function to do the
13228         instantiating on demand.
13229
13230         * class-internals.h: Added vtable to runtime generic context.
13231         Macros for encoding direct and indirect slot offsets in one
13232         guint32.
13233
13234 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13235
13236         * object.c, generic-sharing.c: Moved some generic sharing code
13237         from object.c to generic-sharing.c.
13238
13239         * generic-sharing.c: Added support for extensible runtime generic
13240         context.
13241
13242         * metadata-internals.h: Two new hash tables in MonoImage for
13243         extensible runtime generic context support.
13244
13245         * domain.c: Unregister generic vtables upon domain unloading.
13246
13247         * image.c: Destroy new hash tables upon image unloading.
13248
13249         * metadata.c: Unregister generic subclasses upon image unloading.
13250
13251         * class-internals.h: New data structure for runtime generic
13252         context template.  New fields in the runtime generic context for
13253         extensible part.
13254
13255         * Makefile.am: Added generic-sharing.c.
13256
13257 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
13258
13259         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
13260         there is a pending loader exception, raise it.
13261
13262         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
13263         same.
13264
13265         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
13266         same.
13267
13268         Fixes #363450.
13269
13270 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13271
13272         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
13273
13274         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
13275         
13276         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
13277         ref-only requests for compatibility with MS.
13278
13279 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
13280
13281         * reflection.c (mono_custom_attrs_from_method): Don't silently
13282         return an empty list for generic method instances.
13283         (mono_custom_attrs_from_param): Likewise.
13284
13285 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
13286             Raja R Harinath  <harinath@hurrynot.org>
13287
13288         Fix #354757
13289         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
13290         * class.c (mono_class_inflate_generic_method_full): Initialize it
13291         when a fully-open method is instantiated.
13292         * metadata.c (inflated_method_equal, inflated_method_hash): Update
13293         to new field.
13294         * reflection.c (inflate_mono_method): Don't create a temporary context.
13295
13296 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
13297
13298         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
13299         Compute correct value, to prepare for imethod->reflection_info going away.
13300
13301 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13302
13303         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
13304
13305 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
13306
13307         * verify.c: Implement skip visibility flag.
13308
13309 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
13310
13311         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
13312         which contains an extra field to tell the kind of exception that should be thrown.
13313
13314         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
13315
13316 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
13317
13318         * loader.c (mono_method_get_param_names): Initialize 'klass' after
13319         'method' is updated.
13320
13321 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
13322
13323         * class.c (mono_class_layout_fields): Set class->min_align for classes using
13324         explicit layout as well. Fixes #360375.
13325
13326 2008-02-11  Geoff Norton  <gnorton@novell.com>
13327
13328         * loader.c: Guard and dereference against inflated generic methods
13329
13330 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
13331
13332         * class.c: Include Retargetable spec in assembly name.
13333         * assembly.c: Always include PublicKeyToken spec in assembly name
13334         (with value "null" if assembly is not signed), and include
13335         Retargetable spec.
13336         * icall-def.h: Added icall for Assembly.get_fullname.
13337         * icall.c: Added icall returning the fullname of an assembly.
13338
13339 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13340
13341         * class.c (mono_class_setup_vtable_general): Add a missing call to
13342         mono_class_setup_methods () which is needed in the AOT case.
13343
13344 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
13345
13346         * verify.c (mono_type_get_stack_name): Added. Return the name for the
13347         stack type of the given MonoType.
13348
13349         * verify.c (verify_type_compatibility_full): Handle the void type.
13350
13351         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
13352         way stack merging works.
13353
13354         * verify.c (store_local): Improved verification message.
13355
13356         * verify.c (do_branch_op): If the merging is invalid, the method
13357         is unverifiable and not invalid. Improved error message.
13358
13359         * verify.c (merge_stacks): Properly merge a boxed valuetype and
13360         a reference type diferent than System.Object. Improved error
13361         message.
13362
13363 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
13364
13365         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
13366
13367         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
13368         type of an enum even if the argument is byref.
13369
13370         * verify.c: Replace all explicit uses of enumtype and enum_basetype
13371         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
13372
13373         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
13374
13375         *verify.c (verify_type_compatibility_full): Make enum types
13376         compatible with their base types.
13377
13378         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
13379         types are compatible for the special case of a boxed valuetype and
13380         System.Object.
13381
13382         * verify.c (verify_stack_type_compatibility): The function
13383         is_compatible_boxed_valuetype was extracted from here.
13384
13385         * verify.c (push_arg): Only set ctx->has_this_store if the method
13386         is not static.
13387
13388         * verify.c (do_ldelem): Fixed a typo in an error message and added
13389         strict check for mixing int32 and native int as the array type
13390         and ldelem type.
13391
13392         * verify.c (merge_stacks): Consider boxed valuetypes in the
13393         compatibility checks.
13394
13395 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
13396         * profiler.h: (MonoGCEvent): Added start-stop the world events.
13397
13398 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
13399         *class.c: use_new_interface_vtable_code: renamed the env var to have
13400         a "MONO_" prefix, and fix the logic to enable it by default.
13401
13402 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
13403         *class.c:
13404         mono_class_setup_vtable_general: rewrote the way in which interface
13405         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
13406         makes the code more maintainable.
13407         For now the old code is still there, and can be activated setting
13408         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
13409
13410 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
13411
13412         * verify.c: guarded some debug functions around and #ifdef.
13413
13414         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
13415
13416 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13417
13418         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
13419         changes for now since they seem to break too many things.
13420
13421 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13422
13423         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
13424         mono_marshal_find_nonzero_bit_offset): Added macro and function
13425         for finding the byte- and bit-offset of a bitfield within a
13426         struct.
13427
13428 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13429
13430         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
13431         (mono_marshal_get_struct_to_ptr): Ditto.
13432
13433         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
13434         cctor_signature.
13435
13436 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13437
13438         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
13439         between methods for non-corlib types.
13440
13441 2008-02-02  Geoff Norton  <gnorton@novell.com>
13442
13443         * loader.c (mono_method_get_param_names): Populate the parameter name for 
13444         generic parameters as well. (Fixes #342536)
13445
13446 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
13447
13448         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
13449
13450         * verify.c (do_invoke_method): Fix for calling with byref structs.
13451
13452         * verify.c (do_cast): push a boxed value type based on the type token and not
13453         the type of stack.
13454
13455 2008-01-31  William Holmes  <billholmes54@gmail.com>
13456
13457         * process.c (process_module_string_read): Check the size returned form 
13458           VerQueryValue to avoid out of memory exception. 
13459
13460 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13461
13462         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
13463         Handle properly modules which are not in the moduleref table. Fixes
13464         #356938.
13465
13466 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13467
13468         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
13469         the dynamic case which is now in managed code.
13470         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
13471
13472         * marshal.c (mono_string_to_bstr): Fix a warning.
13473         (init_com_provider_ms): Ditto.
13474
13475         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
13476
13477         * exception.c (mono_get_exception_out_of_memory): New helper function.
13478
13479 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
13480
13481         * marshal.c: Add support for BSTR marshalling
13482         using other COM systems.
13483
13484         Code is contributed under MIT/X11 license.
13485
13486 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13487
13488         * object.c (mono_runtime_invoke_array): reverted previous
13489         commit as it breaks the build.
13490
13491 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13492
13493         * object.c (mono_runtime_invoke_array): Verify arguments for
13494         invalid types. Fixes #348522.
13495
13496 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13497
13498         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
13499         non-final virtual calls using call. 
13500
13501         * verify.c (do_invoke): fixed some TODOs.
13502
13503         * verify.c (push_arg): set has_this_store for "ldarga 0".
13504
13505 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13506
13507         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
13508         which belong to an inflated class. Fixes #356531.
13509
13510 2008-01-26  Robert Jordan  <robertj@gmx.net>
13511
13512         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
13513         which resort to FindFirstFile when a certain error condition
13514         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
13515         Code is contributed under MIT/X11 license.
13516
13517 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
13518
13519         * marshal.c (emit_marshal_string): Fix out string marshalling
13520         to use specified encoding. Fixes #323900.
13521
13522         Code is contributed under MIT/X11 license.
13523
13524 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
13525
13526         * class.c (mono_class_inflate_generic_method_full): Don't modify
13527         iresult->context after cache check.
13528
13529 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
13530
13531         * class.c (mono_class_inflate_generic_method_full): Change the
13532         struct assignments to memcpy for better visibility and add some comments.
13533
13534 2008-01-23  Dick Porter  <dick@ximian.com>
13535
13536         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
13537         procedure, and make it work on windows.
13538
13539 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
13540
13541         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
13542         a MonoReflectionTypeBuilder since it is always of that type.
13543
13544         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
13545
13546         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
13547
13548         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
13549         
13550         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
13551
13552         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
13553
13554         * reflection.c (mono_reflection_create_runtime_class): Remove already created
13555         instantiations from the type cache.
13556
13557 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13558
13559         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
13560
13561         * verify.c (do_unbox_value): push a controled mutability managed pointer.
13562
13563 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13564
13565         * verify.c (do_ldstr): added, verifies if the #US token is valid.
13566
13567         * verify.c (mono_method_verify): removed old TODO
13568
13569 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13570
13571         * verify.c (do_newobj): add visibility check.
13572
13573 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13574
13575         * verify.c (do_load_function_ptr): add visibility check.
13576
13577 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
13578         *class.c:
13579         mono_generic_class_get_class: hook profiler events.
13580         mono_field_get_offset: added to support heap-shot in the new profiler.
13581         *class.h: exported mono_field_get_offset.
13582         * reflection.c:
13583         mono_reflection_setup_internal_class: hook profiler events.
13584
13585 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13586
13587         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
13588         argument here too and use it to avoid checking for pending exceptions if 
13589         possible.
13590
13591 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
13592
13593         * assembly.c (build_assembly_name): add arg for passing the assembly
13594         flags. Do not consider a PublicKey with value "null" valid.
13595         (mono_assembly_name_parse_full): added boolean argument that will be
13596         set if the assembly name contains a PublicKeyToken spec. Added support
13597         for the Retargetable spec for which only Yes or No are allowed as valid
13598         value. Consider assembly name invalid if Retargetable spec is set, but
13599         either version, culture or public key (token) are not specified.
13600         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
13601         with implementation in assembly.c.
13602         * icall.c (fill_reflection_assembly_name): also copy assembly flags
13603         from MonoAssemblyName.
13604         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
13605         introduced argument for mono_assembly_name_parse_full to know if the
13606         assembly name has a PublicKeyToken spec, and if it has instruct
13607         fill_reflection_assembly_name to use default value for keyToken (if
13608         PublicKeyToken is null).
13609
13610 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
13611
13612         * verify.c (mono_method_verify): fixed ovf ops with
13613         float values. They are unverifiable now.
13614
13615 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
13616
13617         * class.c (set_failure_from_loader_error): add BadImageException to the
13618         list of exceptions that can cause a type to fail to load.
13619
13620         * class.c (mono_class_get_exception_for_failure): same.
13621
13622 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
13623
13624         * verify.c (in_any_exception_block): added, check if offset
13625         is part of any exception handling clause.
13626
13627         * verify.c (get_stack_type): added VAR and MVAR types.
13628
13629         * verify.c (do_stobj): better error messages.
13630
13631         * verify.c (do_cpobj): added, check cpobj.
13632
13633         * verify.c (do_initobj): added, check initobj.
13634
13635         * verify.c (do_sizeof): added, check sizeof.
13636
13637         * verify.c (do_localloc): added, check localloc.
13638
13639         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
13640
13641 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13642
13643         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
13644         save_lmf/restore_lmf opcodes.
13645
13646         * threads.c (mono_threads_install_notify_pending_exc): New function to
13647         install a callback notifying the JIT there is a pending exception on a thread.
13648         (mono_thread_request_interruption): Call the new callback.
13649         (mono_thread_get_and_clear_pending_exception): New function to return the
13650         exception pending on a thread.
13651
13652         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
13653         to turn off checking for pending exceptions.
13654         (mono_marshal_get_native_wrapper): Ditto.
13655
13656 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13657
13658         * threads-types.h: Get rid of the unnecessary extern declarations.
13659
13660 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
13661
13662         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
13663         return field from parent class if not private.
13664         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
13665         returns fields from parent class if they are not private.
13666         (method_nonpublic): added function to determine if a given method
13667         should be considered non-public. Returns false for private methods
13668         on parent class, and internal methods from parent on the 1.0 profile.
13669         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
13670         use method_nonpublic function to determine whether method should be
13671         returned.
13672         (property_accessor_public): use newly introduced method_nonpublic
13673         function to determine whether accessor is non-public. 
13674         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
13675         event from parent class if not private. Only return static event if
13676         Static flag is set, and only return static event from parent class if
13677         FlattenHierarchy flag is set.
13678         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
13679         include non-private events from parent class.
13680
13681 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13682
13683         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
13684         warning.
13685
13686 2008-01-16  Wade Berrier <wberrier@novell.com>
13687
13688         * security.c: Add assembly.h header to appease some warnings
13689
13690 2008-01-16  Dick Porter  <dick@ximian.com>
13691
13692         * process.c (process_module_string_read): Remove trailing null
13693         when saving string.
13694
13695 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13696
13697         * class-internals.h: A new data structure describing the layout of
13698         a runtime generic context (MonoRuntimeGenericContextTemplate).
13699
13700         * metadata-internals.h: Added a hash table to MonoDomain that maps
13701         from open generic classes to their runtime generic context
13702         templates.
13703
13704         * object.c: Building of the runtime generic context, including
13705         proper handling of generic type arguments of superclasses.
13706         Building of the runtime generic context according to the template.
13707
13708 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13709
13710         * class.c (mono_class_setup_fields): Set field.count for generic instances.
13711         Fixes #350856.
13712
13713         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
13714         mono_portability_find_file (). Fixes #325466.
13715         (mono_image_get_public_key): Fix a warning.
13716
13717 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13718
13719         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
13720         Fixes #353550.
13721         (mono_class_from_name_case): Ditto.
13722
13723 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
13724
13725         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
13726           common storage for the tables used in the System/NumberFormatter class.
13727
13728 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
13729
13730         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
13731
13732 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
13733
13734         * verify.c (get_boxable_mono_type): check if the token is valid.
13735
13736         * verify.c (set_stack_value): changed to add an error if an
13737         invalid type is set on stack. Changed all callers due to signature change.
13738
13739         * verify.c (do_stobj): implement stobj validation.
13740
13741 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13742
13743         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
13744         set container->is_method, it was set earlier.
13745
13746         * metadata.c (type_in_image): Handle MVARs which belong to not finished
13747         generic methods.
13748
13749         * reflection.c (mono_reflection_initialize_generic_parameter): Set
13750         is_method of the generic container to TRUE for methods.
13751
13752 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13753
13754         * metadata.c (type_in_image): Handle type parameters properly.
13755
13756         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
13757         memory ownership of this structure.
13758
13759 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
13760
13761         * verify.c (get_boxable_mono_type): make typedref types been just
13762         unverifiable. check for void type.
13763
13764         * verify.c (do_unbox_any): added, verify opcode unbox.any.
13765
13766         * verify.c (do_load_function_ptr): accept method spec tokens.
13767
13768 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13769
13770         * marshal.c (mono_class_native_size): Always set *align even if this is called
13771         recursively.
13772
13773 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
13774
13775         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
13776         out-of-date.
13777
13778 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
13779
13780         * verify.c: removed some old unused tables. A huge bunch of small fixes
13781         to things found while testing the verifier with mono basic.
13782
13783         * verify.c (dump_stack_value): dump null literal flag to.
13784
13785         * verify.c (verify_type_compatibility_full): fix comparison
13786         for types that have a generic super type.
13787
13788         * verify.c (verify_stack_type_compatibility): fix compatibility
13789         between null literals and reference types. fix compatibility between
13790         boxed valuetypes and object. fix corner case test for enums.
13791
13792         * verify.c (do_cmp_op): proper verification of cgt.un in case
13793         of reference types.
13794
13795         * verify.c (do_invoke_method): fix error message.
13796
13797         * verify.c (do_store_indirect
13798
13799         * verify.c (check_is_valid_type_for_field_ops): proper verification
13800         of managed pointers to valuetypes and boxed valuetypes. proper verification
13801         of null literals.
13802
13803         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
13804         allow token to be a reference type.
13805
13806         * verify.c (do_cast): proper handling of boxes valuetypes.
13807
13808         * verify.c (do_stelem): proper handling of storing a boxed valuetype
13809         in object[].
13810
13811         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
13812         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
13813         fixed the decoding of unbox_any
13814
13815 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13816
13817         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
13818
13819 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
13820
13821         * verify.c (do_newobj): do delegate verification.
13822
13823         * verify.c (verify_delegate_compatibility): perform delegate
13824         verification.
13825
13826         * verify.c (verify_ldftn_delegate): perform tests related to
13827         ldftn delegates.
13828
13829         * verify.c (mono_delegate_signature_equal): perform the
13830         slightly diferent signature comparison required by delegates.
13831
13832         * metadata.c (mono_metadata_type_equal_full): added and exported
13833         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
13834         allows signature only comparison.
13835
13836         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
13837         as MONO_INTERNAL.
13838
13839 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
13840
13841         * verify.c: added a bunch of stack_slot_* functions to
13842         make access to stack slot type easier. This is required to
13843         allow optional flags, like null literal, boxed value and
13844         this pointer.
13845         All access paths to IlStackDesc::stype have been changed 
13846         to use these new funcions.
13847         Removed a bunch of unused functions and cleared all warnings.
13848         This patch introduces the usage of the this pointer and 
13849         boxed value flags.
13850
13851 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
13852
13853         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
13854
13855 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13856
13857         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
13858         match managed version.
13859
13860         * appdomain.c: Bump corlib version.
13861         
13862         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
13863         argument.
13864
13865 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
13866
13867         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
13868         Set public key token to zero-length byte array if assembly is not
13869         strongnamed.
13870
13871 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13872
13873         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
13874         writing a vtype array elem.
13875
13876 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
13877
13878         * assembly.c (build_assembly_name): return FALSE if length of token is
13879         not 16 (if not "null").
13880         (mono_assembly_name_parse_full): return FALSE if value of version,
13881         culture, token or key is 0.
13882         * icall.c (fill_reflection_assembly_name): add boolean arguments to
13883         specify whether public key and public key token must be set to default
13884         value (zero-length byte array) if not available. Set versioncompat to
13885         SameMachine. If public key is available or the default is set, then
13886         set PublicKey flag.
13887         (ves_icall_System_Reflection_Assembly_FillName): if no public key
13888         is available, use empty byte array as default value. On the 2.0
13889         profile, use default value for public key token if not set.
13890         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
13891         profile, use default value for public key if not set. On the 2.0
13892         profile, use default value for public key token if not set.
13893         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
13894         default values for public key and public key token.
13895
13896 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13897
13898         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
13899         field to keep it in synch with the managed object.
13900
13901         * marshal.c (emit_marshal_object): Add support for byref marshalling of
13902         delegates. Fixes #351520.
13903
13904         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
13905         contains defined memory.
13906         
13907         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
13908
13909         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
13910         
13911         * sgen-gc.c (check_consistency): New helper function to do a consistency check
13912         of the GC data structures.
13913
13914         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
13915
13916         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
13917         
13918         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
13919         barrier.
13920         (mono_array_clone_in_domain): Ditto.
13921         (mono_array_clone_in_domain): Ditto.
13922
13923         * threads.c (start_wrapper): Register the thread start argument as a GC root.
13924         (cache_culture): Use a write barrier.
13925
13926         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
13927         (ves_icall_get_property_info): Ditto.
13928
13929         * object.h (MONO_STRUCT_SETREF): New macro.
13930
13931         * class-internals.h (MonoStats): Add some GC statistics.
13932
13933         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
13934
13935 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
13936
13937         * exception.c (mono_exception_from_name_two_strings):
13938         Break from loop after method is found.
13939
13940 2008-01-04  Dick Porter  <dick@ximian.com>
13941
13942         * process.c (process_module_string_read): Rename variable to
13943         reflect correct usage, after fixing bug 345972.
13944
13945 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
13946
13947         * verify.c (mono_type_create_fnptr_from_mono_method): 
13948         created a MonoType function pointer instance to be used during
13949         verification. The verifier releases this memory at end.
13950
13951         * verify.c (mono_method_is_constructor): extracted repeated
13952         checks for constructor into a single class.
13953
13954         * verify.c (do_push_field): use new extracted method
13955         for constructor check.
13956
13957         * verify.c (do_newobj): same.
13958
13959         * verify.c (do_ldftn): renamed to do_load_function_ptr
13960         and make it verify ldvirtftn too.
13961
13962         * verify.c (mono_method_verify: proper verification
13963         of ldvirtftn. release created MonoMethod instances.
13964
13965 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
13966
13967         * verify.c (token_bounds_check): added.
13968
13969         * verify.c (do_ldftn): added.
13970
13971         * verify.c (mono_method_verify): proper verificartion of ldftn.
13972
13973 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
13974
13975         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
13976         than the table row count. It's the resposibility of the caller to
13977         make the bounds check and raise the correct error.
13978
13979         * metadata.c (mono_metadata_decode_row_col): Same.
13980
13981         * loader.c (mono_get_method_from_token): perform bounds check
13982         on token for methoddef table.
13983
13984 2007-12-29  Miguel de Icaza  <miguel@novell.com>
13985
13986         * icall.c
13987         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
13988         assert into a negative result, the managed code already coped with
13989         that.
13990
13991         Some folks on Windows reported this error. 
13992
13993 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
13994
13995         * appdomain.c: Bump corlib version.
13996         * icall.c:
13997         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
13998         CultureInfo.CreateCulture to create CultureInfo for name.
13999         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
14000         create CultureInfo for name. Fixes bug #347174.
14001
14002 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
14003
14004         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
14005         flags.
14006
14007         * verify.c (is_valid_branch_instruction): allow branching to the
14008         first instruction of the protected block.
14009
14010         * verify.c (is_valid_cmp_branch_instruction): same.
14011
14012         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
14013         avoid double initialization.
14014
14015         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
14016         detect which cases the eval stack should just be copied.
14017
14018         * verify.c (mono_method_verify): check if the eval stack
14019         is empty when entering a protected block.
14020
14021 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
14022
14023         * verify.c: added is_clause_in_range, is_clause_inside_range,
14024         is_clause_nested and verify_clause_relationship. They perform
14025         the verifications stated in P1 12.4.2.7.
14026
14027         * verify.c (mono_method_verify): remove some unused variables,
14028         add the new exception clause checks, add instruction border
14029         checks for protected block start/end, improved some error 
14030         messages and fixed a bug in the way invalid instruction access
14031         is detected.
14032
14033 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
14034
14035         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
14036         from GC 7.0 if available.
14037
14038         * object.c: Remove an unused define.
14039         
14040         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
14041
14042         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
14043
14044         * null-gc.c (mono_gc_make_descr_for_array): Implement.
14045
14046         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
14047
14048         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
14049         to take the same arguments as the other make_descr functions.
14050
14051         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
14052
14053         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
14054         directly.
14055
14056         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
14057         mini.c.
14058
14059         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
14060         call to boehm-gc.c.
14061
14062         * boehm-gc.c (mono_gc_register_root): Fix a warning.
14063
14064         * null-gc.c (mono_gc_register_root): Fix a warning.
14065
14066         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
14067
14068         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
14069         (mono_gc_base_init): Call GC_init ().
14070
14071         * null-gc.c: Define mono_gc_register_root () as a no-op.
14072
14073         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
14074
14075 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
14076
14077         * verify.c: add prototype for merge_stacks at top
14078
14079         * verify.c (do_switch): added.
14080
14081         * verify.c (merge_stacks): on some cases the stack merging
14082         was not happening properly. Unequal stack sizes at merge
14083         points should be invalid.
14084
14085         * verify.c (mono_method_verify): added more debug info on stack state.
14086         verify switch properly.
14087
14088 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
14089
14090         * method-builder.h: New file, moved the mono_mb_ declarations here from 
14091         marshal.h.
14092
14093         * boehm-gc.c marshal.c: Include method-builder.h.
14094
14095         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
14096
14097         * marshal.c: Remove some code which is now in method-builder.c.
14098
14099 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
14100
14101         * method-builder.c: New file, extraction of the method builder functionality 
14102         from marshal.c.
14103
14104         * marshal.c: Move the mb functions into method-builder.c.
14105
14106         * marshal.h marshal.c: Export some mono_mb_... functions.
14107
14108         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
14109
14110         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
14111         the caller.
14112
14113         * class.c (mono_class_get_full): Check the token type in the dynamic case.
14114
14115         * loader.c (mono_field_from_token): Ditto.      
14116
14117         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
14118         type as well.
14119         
14120         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
14121         Fixes #342565.
14122
14123         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
14124         a helper function for setting it.
14125
14126         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
14127
14128         
14129         * assembly.c: Significally simplify code now that referenced assemblies are 
14130         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
14131
14132         * threads.h: Don't include  the internal threads-types.h header file. Fixes
14133         #349952.
14134
14135 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
14136
14137         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
14138         instructions that were target of branches or are at protected block boundaries.
14139
14140         * verify.c (in_same_block): handle filter clauses.
14141
14142         * verify.c (is_valid_branch_instruction): added. checks the target of
14143         instructions br or brtrue/false.
14144
14145         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
14146         binary branch instructions such as beq and bge.
14147
14148         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
14149         and made it pin the instruction as been part of the exception block.
14150
14151         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
14152         of in_same_block.
14153
14154         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
14155         of in_same_block.
14156
14157         * verify.c (do_ret): ret from a protected block is unverifiable and
14158         not invalid.
14159
14160         * verify.c (do_static_branch): verify br and br.s instructions.
14161
14162         * verify.c (merge_stacks): add extra param to support detection
14163         of branches in the middle of instructions.
14164         
14165         * verify.c (mono_method_verify): verify branches and exception blocks
14166         that target the middle of instructions. Proper verification of br and br.s.
14167
14168 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
14169
14170         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
14171         skip_visibility field.
14172         (reflection_methodbuilder_from_dynamic_method): Ditto.
14173
14174         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
14175         registrations. Fixes #348193.
14176
14177         * threads.h: Move the internal mono_thread_get_pending_exception () to
14178         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
14179
14180 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14181
14182         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
14183         icall registration. Fixes #348193.
14184
14185         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
14186         for corlib classes into object. Fixes #349621.
14187
14188 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
14189
14190         * icall.c (property_accessor_nonpublic): new function to determine
14191         whether an accessor allows a property to be considered non-public.
14192         Returns false for private accessor(s) from parent class, and internal
14193         accessor(s) from parent on 2.0 profile (and higher).
14194         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
14195         to determine whether property should be included if NonPublic flag
14196         is set. Fixes bug #349078.
14197
14198 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
14199
14200         * verify.c (init_stack_with_value): added.
14201
14202         * verify.c (mono_method_verify): extracted common
14203         code for exception initialization into init_stack_with_value.
14204
14205         * verify.c (mono_method_verify): initialize the exception
14206         for handler clauses as well.
14207
14208         * verify.c (mono_method_verify): fix the exception clause
14209         ordering rules, it should use handler end offset and not
14210         start offset.
14211
14212 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
14213
14214         * rawbuffer.c: remove useless warning.
14215
14216 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
14217
14218         * threads.h, threads-types.h: move functions to the correct header
14219         (fixes bug#349952).
14220
14221 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14222
14223         * verify.c (mono_method_verify): proper verification
14224         of exception handling clauses ranges and fallthru in
14225         and out of protected blocks.
14226
14227 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14228
14229         * verify.c (mono_method_verify): fixed compilation issue.
14230
14231 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14232
14233         * verify.c (mono_method_verify): a printf slipped in, changed
14234         to use verifier debug macro.
14235
14236 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
14237
14238         * verify.c (is_correct_leave): check for filter clauses.
14239
14240         * verify.c (do_filter): added.
14241
14242         * verify.c (mono_method_verify): property verification of leave.
14243
14244
14245 2007-12-18  Mark Probst  <mark.probst@gmail.com>
14246
14247         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
14248         Win32 build, until we figure out how to do the proper thing on
14249         Win32.
14250
14251 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
14252
14253         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
14254         by the previous patch.
14255         
14256         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
14257         the assembly resolve handler for refonly assemblies.
14258
14259 2007-12-17  Mark Probst  <mark.probst@gmail.com>
14260
14261         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
14262         Make sure only one thread is allowed to commence shutdown, and
14263         don't allow new threads to be started once shutdown is in
14264         progress.
14265
14266 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
14267
14268         * verify.c (is_correct_endfilter): added.
14269
14270         * verify.c (is_unverifiable_endfilter): added.
14271
14272         * verify.c (do_endfilter): added.
14273
14274         * verify.c (mono_method_verify): property verification of endfilter
14275         and fixed a corner case or endfinally.
14276
14277 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
14278
14279         * verify.h: new flags to support fail fast of unverifiable code and
14280         do non-strict verification. Non-strict verification is required to
14281         have MS runtime compatibility. There are a huge amount of unverifiable
14282         code that it accepts as verifiable. The strict mode verifies the code
14283         as the specs says.
14284         Non-strict mode will be required in cases where code needs to be
14285         accepted as verifiable but fails under strict mode.
14286
14287         * pedump.c: added support to fail fast and non-strict verification.
14288
14289         * verify.c: added support for both fail fast and non-strict verification.
14290
14291 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
14292
14293         * verify.c (is_correct_endfinally): added.
14294
14295         * verify.c (mono_method_verify): property verification of endfinally.
14296
14297 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14298
14299         * verify.c (in_any_block): check for filter clauses.
14300
14301         * verify.c (is_correct_rethrow): added.
14302
14303         * verify.c (mono_method_verify): property verification of rethrow.
14304
14305         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
14306
14307 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14308
14309         * verify.c (do_throw): added.
14310
14311         * verify.c (mono_method_verify): property verification of throw
14312
14313 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
14314
14315         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
14316         assemblies. Fixes #346425.
14317
14318 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
14319
14320         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
14321         FieldBuilders.
14322
14323         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
14324
14325         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
14326         prevent asserts when this is called with a token which might not be valid.
14327
14328         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
14329         lookup_dynamic_token_class with valid_token == FALSE.
14330
14331         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
14332
14333         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
14334
14335         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
14336         
14337 2007-12-10  Mark Probst  <mark.probst@gmail.com>
14338
14339         * gc.c: Don't delay threadpool thread finalization unless Mono is
14340         shutting down.
14341
14342 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14343
14344         * threads.c: turn an assert into a non-fatal warning.
14345
14346 2007-12-09  Robert Jordan  <robertj@gmx.net>
14347
14348         * icall.c (GetVirtualMethod): Add missing argument validation.
14349
14350 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14351
14352         * verify.c (do_cast): added.
14353
14354         * verify.c (mono_method_verify): property verification of castclass and isinst.
14355
14356
14357 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14358
14359         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
14360
14361         * verify.c (do_stelem): added.
14362
14363         * verify.c (mono_method_verify): property verification of stelem.X.
14364
14365 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14366
14367         * class.c, class-internals.h: Introduce an environment variable
14368         (MONO_GENERIC_SHARING) through which the extent of generic code
14369         sharing can be controlled (share all classes, share only corlib
14370         classes, or share nothing).
14371
14372         * object.c: Only create runtime generic context for classes for
14373         which sharing is enabled.
14374
14375 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14376
14377         * verify.c (do_ldelem): refactor it to work with ldelem.any.
14378
14379         * verify.c (mono_method_verify): property verification of ldelem.any.
14380
14381 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14382
14383         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
14384         added ldelem.X opcodes.
14385
14386         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
14387
14388         * verify.c: proper verification of ldelem.X 
14389
14390 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14391
14392         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
14393
14394 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
14395
14396         * verify.c (mono_method_verify): null literal requires special handling,
14397         the value pushed on stack need to be flagged as so.
14398
14399         * verify.c (do_ldelema): Verify ldelema properly.
14400
14401 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
14402
14403         * verify.c: Verify ldlen properly.
14404
14405 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
14406
14407         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
14408         to the target object's type. Fixes #346160.
14409
14410 2007-12-05  Dick Porter  <dick@ximian.com>
14411
14412         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
14413         Solaris needs the same workaround as BSD-derived systems.  Fixes
14414         bug 323524, patch by Burkhard Linke
14415         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
14416
14417 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
14418
14419         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
14420         handle to use when error dialog is shown; otherwise, update mask
14421         to show no error dialog when an error occurs.
14422
14423 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14424
14425         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
14426
14427         * class.c (mono_class_get_field_default_value): New helper function to initialize
14428         field->def_type and field->data.
14429
14430 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14431
14432         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
14433         the general one.
14434
14435         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
14436
14437         * marshal.c: Avoid depending on delegate->method_info being set.
14438
14439         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
14440         
14441         * object.c (mono_delegate_ctor): Set delegate->method.
14442
14443         * object-internals.h (struct _MonoDelegate): Add 'method' field.
14444
14445         * appdomain.c: Bump corlib version.
14446
14447 2007-11-27  Raja R Harinath  <harinath@gmail.com>
14448
14449         * metadata.c (mono_generic_inst_equal_full): Short-circuit
14450         equality check if we're comparing canonicalized MonoGenericInsts.
14451
14452 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14453
14454         * class.c (generic_array_methods): Call mono_class_setup_methods () before
14455         accessing class->methods.
14456
14457 2007-11-22  Dick Porter  <dick@ximian.com>
14458
14459         * threads.c: Ensure that the synch_cs is set before trying to use
14460         it.
14461
14462 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
14463
14464         * profiler.c: r89126 broke the statistial profiler, unbreak.
14465
14466 2007-11-22  Martin Baulig  <martin@ximian.com>
14467
14468         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
14469
14470         * mono-debug.c
14471         (mono_debug_debugger_version): Bump to 3.
14472         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
14473         -> mono_debugger_class_initialized().
14474
14475         * mono-debug-debugger.c
14476         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
14477
14478         * class.c
14479         (mono_debugger_start_class_init_func): Removed.
14480         (mono_debugger_class_loaded_methods_func): Added.
14481         (mono_class_setup_methods): Call it here.
14482
14483 2007-11-22  Martin Baulig  <martin@ximian.com>
14484
14485         * mono-debug.c
14486         (mono_debug_add_delegate_trampoline): New public method.
14487         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
14488
14489         * mono-debug.h
14490         (MonoSymbolTable): Added `global_data_table'.
14491         (MonoDebuggerTypeKind): Removed.
14492
14493 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
14494
14495         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
14496         these methods.
14497
14498         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
14499         
14500 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
14501
14502         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
14503
14504 2007-11-20  Martin Baulig  <martin@ximian.com>
14505
14506         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
14507
14508         * mono-debug-debugger.c
14509         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
14510         (mono_debugger_remove_breakpoint): Likewise.
14511         (mono_debugger_check_breakpoints): Likewise.
14512         (mono_debugger_register_class_init_callback): New public method.
14513         (mono_debugger_remove_class_init_callback): Likewise.
14514         (mono_debugger_add_type): Likewise.
14515
14516         * mono-debug-debugger.h
14517         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
14518
14519 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
14520
14521         * class.c: more interface implementations needed for the
14522         array enumerator (fixes bug #341112).
14523
14524 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
14525
14526         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
14527         fix ParamName of ArgumentNullExceptions.
14528
14529 2007-11-17  Miguel de Icaza  <miguel@novell.com>
14530
14531         * reflection.c (mono_reflection_encode_sighelper): Generate the
14532         modopts and modreqs.   I have a useless test that crashes monodis,
14533         but that shows the code working.
14534
14535 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14536
14537         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
14538         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
14539
14540 2007-11-15  Dick Porter  <dick@ximian.com>
14541
14542         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
14543         When joining a thread, it's the thread that's calling Join that
14544         gets WaitSleepJoin state not the target.  Fixes the standalone
14545         test case in bug 334740, and hopefully the whole bug too.
14546
14547 2007-11-15  Dick Porter  <dick@ximian.com>
14548
14549         * process.c: Read file version info from the files pointed at by
14550         process modules, not the current process.  Fixes bug 315969.
14551
14552         Use windows typedef names in some places to fix warnings on the
14553         windows build.
14554
14555 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14556
14557         * image.c, metadata-internals.h: Added a generic_class_cache hash
14558         to MonoImage for looking up generic classes when sharing generics.
14559
14560 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14561
14562         * sgen-gc.c: warning cleanups.
14563
14564 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
14565
14566         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
14567         inherited properties.
14568
14569 2007-11-14  Mark Probst  <mark.probst@gmail.com>
14570
14571         * object.c, class-internals.h: Added more information to the
14572         runtime generic context.
14573
14574 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14575
14576         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
14577         instead of just the target method. Generalize the abstract method handling to
14578         handle any non-static method.
14579
14580         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
14581         mono_marshal_get_delegate_invoke () signature change.
14582
14583 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14584
14585         * class.c, class-internals.h: Made
14586         mono_type_get_basic_type_from_generic () public.  Fixed member
14587         access check for shared generics.
14588
14589         * loader.c: Don't insert field into field cache if it's part of a
14590         non-inflated generic class.
14591
14592         * domain.c, domain-internals.h: The generic sharing context is now
14593         part of the jit info data structure.  Added two accessor
14594         functions.
14595
14596 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14597
14598         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
14599         the array Get/Set/Address methods, since the JIT inlines them.
14600
14601         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
14602
14603         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
14604         (mono_image_init): Initialize runtime_invoke_direct_cache.      
14605
14606         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
14607         mono_marshal_get_delegate_invoke signature change.
14608
14609         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
14610         an additional argument. Add support for invoking abstract methods.
14611
14612         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
14613
14614         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
14615
14616 2007-11-09  Mark Probst  <mark.probst@gmail.com>
14617
14618         * class.c: Do field layout for open generic classes as well.
14619
14620 2007-11-09  Mark Probst  <mark.probst@gmail.com>
14621
14622         * gc.c, gc-internal.h: Don't finalize threadpool threads with
14623         other objects, because the threadpool is still around.  Put them
14624         in a list instead and after finalizing all other objects in the
14625         root domain shut down the thread pool and then finalize the
14626         threads.  Fixes bug #337383.
14627
14628         * threads.c, thread-types.h: New mono_thread_create_internal()
14629         function for marking a thread with the threadpool flag before it
14630         started.  Set synch_cs to NULL after freeing it.
14631
14632         * threadpool.c: Mark threadpool threads before they start.
14633
14634 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14635
14636         * reflection.h, reflection.c: don't export random functions
14637         and lazy load dbnull and missing objects.
14638
14639 2007-11-07  Jonathan Chambers <joncham@gmail.com>
14640
14641         * class.c: Initialize COM types if COM interfaces
14642         are present (not just COM classes).
14643         
14644         Code is contributed under MIT/X11 license.
14645
14646 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14647         * reflection.c:
14648         create_dynamic_mono_image: hook module profiler events (dynamic case).
14649         mono_image_basic_init: hook assembly profiler events (dynamic case).
14650
14651 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14652         * profiler.c:
14653         simple_appdomain_unload: completely terminate the profiler
14654         instead of only processing the statistical samples.
14655         simple_shutdown: make sure this is really called exactly once,
14656         even in multithreaded applications, and always listen to
14657         appdomain events.
14658         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
14659         here, the "[un]load" functions will do it.
14660         Fixes bugs #333791 and #325261.
14661
14662 2007-11-07  Geoff Norton  <gnorton@novell.com>
14663
14664         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
14665         rather than depend on __APPLE__.
14666
14667 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14668
14669         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
14670
14671 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
14672
14673         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
14674         UTF16 MonoString. Fix the crash from bug #335488
14675
14676 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
14677
14678         * marshal.c: Correct (for non-Win32 OS) length != size in 
14679         mono_string_from_bstr. Fix #339530.
14680
14681 2007-11-06  Geoff Norton  <gnorton@novell.com>
14682
14683         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
14684         to succeed
14685
14686 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
14687
14688         * process.c: Added run-time GetProcessId API detection for Windows.
14689
14690 2007-11-04  Miguel de Icaza  <miguel@novell.com>
14691
14692         * reflection.c  (mono_param_get_objects): If a parameter has the
14693         attribute [System.Runtime.InteropServices.Optional] we should
14694         set the DefaultValue of the ParameterInfo to be
14695         System.Reflection.Missing instead of DBNull.
14696
14697         See bug #339013.
14698
14699         (mono_get_reflection_missing_object): New method,
14700         returns the System.Reflection.Missing.Value singleton instance.
14701
14702 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
14703
14704         * culture-info-table.h : regenerated.
14705
14706 2007-11-02  Jonathan Chambers <joncham@gmail.com>
14707
14708         * icall.c: Use GetEnvironmentStrings on windows
14709         so we are using the same environment block as 
14710         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
14711         #333740.
14712         
14713         Code is contributed under MIT/X11 license.
14714
14715 2007-10-31  Martin Baulig  <martin@ximian.com>
14716
14717         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
14718
14719         * mono-debug-debugger.h
14720         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
14721
14722 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
14723
14724         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
14725         classes.
14726
14727 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
14728
14729         * culture-info-table.h : regenerated.
14730
14731 2007-10-30  Robert Jordan  <robertj@gmx.net>
14732
14733         * icall-def.h, icall.c:
14734         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
14735
14736         Code is contributed under MIT/X11 license.
14737
14738 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
14739
14740         * class.c (mono_class_setup_vtable): Find the inflated methods in the
14741         inflated class instead of inflating them again.
14742         
14743         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
14744         dynamic case.
14745
14746         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
14747         Call setup_supertypes () after klass->parent is set.
14748         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
14749
14750         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
14751         for inflated instances of not yet created dynamic generic classes.
14752         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
14753         times from inflated_method.
14754         (methodbuilder_to_mono_method): Ditto.
14755
14756 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
14757
14758         * gc.c: code cleanup and removed old untested option of not creating the
14759         finalizer thread.
14760
14761 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
14762
14763         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
14764         creating a jump trampoline for dynamic methods.
14765
14766 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
14767
14768         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
14769         generic TypeBuilders when called from another method of the same type (bug #335131).
14770
14771
14772 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
14773
14774         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
14775         doesn't seem to work perfectly.
14776         
14777         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
14778         called multiple times.
14779         (methodbuilder_to_mono_method): Ditto.
14780         (resolve_object): Inflate FieldBuilder's.
14781
14782 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14783
14784         * string-icalls.c, string-icalls.h, appdomain.c: patch from
14785         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
14786         RemoveEmptyEntries in the string.Split implementation (bug #322375).
14787
14788 2007-10-26  Dick Porter  <dick@ximian.com>
14789
14790         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
14791         Thread initialisation changes
14792
14793 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
14794
14795         * verify.c: fix compatibility check between arrays and System.Array
14796
14797 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
14798
14799         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
14800         too. Fixes #336999.
14801
14802 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14803
14804         * object.c (mono_value_box): Use typed allocation here.
14805
14806 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14807
14808         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
14809         trampoline instead of compiling the method right away.
14810
14811         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
14812
14813 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
14814
14815         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
14816         related fields for dynamic classes. Fixes #334493.
14817
14818 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
14819
14820         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
14821         
14822         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
14823
14824         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
14825         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
14826
14827         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
14828
14829         * reflection.c (create_generic_typespec): Initialize klass->generic_container
14830         if needed.
14831         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
14832
14833 2007-10-18  Jonathan Chambers <joncham@gmail.com>
14834
14835         * marshal.c: Use correct key when removing item
14836         from ccw_hash.
14837         
14838         Code is contributed under MIT/X11 license.
14839
14840 2007-10-17  William Holmes  <billholmes54@gmail.com>
14841
14842         *marshal.c: Adding a case to marshal booleans to U1
14843
14844         Code is contributed under MIT/X11 license.
14845
14846 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
14847
14848         * class.c (mono_class_from_name): Search the modules compromising dynamic
14849         assemblies. Fixes #331601.
14850
14851 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
14852
14853         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
14854         exception if the type name contains an assembly component. Fixes #334203.
14855
14856         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
14857         modules inside dynamic assemblies. Fixes #334200.
14858         
14859         * reflection.c: Set image->public_key and image->public_key_length;
14860
14861         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
14862         fields.
14863
14864         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
14865         
14866 2007-10-16  Mark Probst  <mark.probst@gmail.com>
14867
14868         * metadata.c: Implemented correct comparing of generic classes.
14869         An inflated generic class can be equal to a non-inflated one if it
14870         is inflated with generic type variables as type arguments.  Fixes
14871         bug #333798.
14872
14873 2007-10-15  Dick Porter  <dick@ximian.com>
14874
14875         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
14876         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
14877         81646.
14878
14879         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
14880         instead of a monitor lock.  This means that monitor_try_enter and
14881         co can set the thread state safely.
14882         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
14883         thread_interrupt_requested, so interrupt actually works.
14884
14885         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
14886         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
14887         state accessor function
14888
14889 2007-10-15  Martin Baulig  <martin@ximian.com>
14890
14891         * mono-debug.h
14892         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
14893         the debugger with the current runtime.
14894
14895 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
14896
14897         * object.c, object-internals.h: added the ability to set a single
14898         trampoline for all the slots in a vtable.
14899
14900 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14901
14902         * marshal.c: deal with a possible race condition during multicast
14903         delegate invocation.
14904
14905 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14906
14907         * class.c: ensure value type methods don't have the synchronized
14908         flag set.
14909
14910 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14911
14912         * string-icalls.c, string-icalls.h: reverted unapproved patch that
14913         breaks the build.
14914
14915 2007-10-11  Joel Reed  <joelwreed@comcast.com>
14916
14917         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
14918         to take an options parameter so that empty entries can be removed during
14919         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
14920
14921 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14922
14923         * marshal.c: make sure we don't store the signature from a dynamic
14924         method into the runtime invoke cache (bug #327189).
14925
14926 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
14927
14928         * marshal.c: make sure the wrapper methods are properly initialized.
14929
14930 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14931
14932         * metadata.c, metadata-internals.h: Generalized
14933         mono_type_stack_size() to mono_type_stack_size_internal() which
14934         takes an additional argument specifying whether it allows open
14935         types.
14936
14937 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
14938
14939         * verify.c (do_invoke_method): handle typedbyref params
14940         correctly and check for unverifiable return values.
14941
14942         * verify.c (do_newobj): fix a warning.
14943
14944 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
14945
14946         * verify.c: don't tread typedbyref as allways unverifable,
14947         so uses, like (ld/st)loc.0 are valid. verify for the cases
14948         that it matters, like boxing related operations.
14949
14950 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
14951
14952         * verify.c: add verification of the newobj opcode. verification
14953         of delegate instantation still missing due ldftn and virldftn not
14954         pushing the function type on stack
14955
14956 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14957
14958         * class-internals.h: Runtime generic context data structure
14959         definition.
14960
14961         * object.c: Initialization of runtime generic context at runtime
14962         vtable creation time.
14963
14964 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
14965         * class.c (mono_class_create_from_typedef,
14966         mono_class_from_generic_parameter, mono_ptr_class_get,
14967         mono_fnptr_class_get, mono_bounded_array_class_get)
14968         * domain.c (mono_domain_create, mono_domain_free)
14969         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
14970         * image.c (do_mono_image_load, mono_image_close):
14971         Hooked up load-unload profiler events.
14972
14973 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14974
14975         * domain.c: track statistics about the actual amount of native code
14976         allocated.
14977
14978 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14979
14980         * class.c: the valuetype enumerators don't have the additional
14981         supertypes interfaces.
14982
14983 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
14984
14985         * class.c: need more interfaces setup for the IEnumerator<T>
14986         object created for arrays (tests/ienumerator-interfaces.2.cs).
14987
14988 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
14989
14990         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
14991
14992 2007-10-05  Alp Toker  <alp@atoker.com>
14993
14994         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
14995         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
14996         #315863.
14997
14998 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
14999
15000         * verify.c (verify_type_compatibility_full): verification of
15001         compatibility improved, validates correctly non-strict checks between
15002         native int and I4 types different than (unsigned)int32.
15003
15004         * verify.c (do_store_indirect): added, do all verification of
15005         ldind.X opcodes. 
15006
15007         * verify.c (get_load_indirect_mono_type): renamed to
15008         get_indirect_op_mono_type, as it now returns the MonoType for 
15009         ldind.X and stind.X opcodes.
15010
15011 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
15012
15013         * reflection.c: Fix the encoding of generic type definition for
15014         TypeBuilders.
15015
15016         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
15017         mono_image_typedef_or_ref but allows to specify if typespec lookups should
15018         be made. Typespec check is done prior to typeref cache lookup.
15019
15020         * reflection.c (mono_image_typedef_or_ref): now just delegate to
15021         mono_image_typedef_or_ref_full.
15022
15023         * reflection.c (encode_generic_class): encode the generic class
15024         directly instead of calling encode_type.
15025
15026         * reflection.c (encode_type): encode the generic type definition
15027         MonoClass as a generic instantiation.
15028
15029         * reflection.c (create_typespec): cache typespec tokens in
15030         the assembly->typespec cache. Don't create typespec for a generic
15031         instance MonoClass. Create typespec for the generic type defintion.
15032
15033         * reflection.c (create_generic_typespec): encode the generic
15034         class directly instead of calling encode_type.
15035
15036         * reflection.c (mono_image_create_token): encode the generic
15037         type definition not using a typespec for MonoType instances.
15038
15039
15040 2007-10-04  Raja R Harinath  <rharinath@novell.com>
15041
15042         Fix #328812
15043         * class.c (mono_image_init_name_cache): Don't return nested
15044         'protected internal' classes.
15045         (mono_class_from_name_case): Likewise.
15046
15047 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
15048
15049         * icall-def.h, icall.c : get_bundled_machine_config() is now the
15050           common function used by both DefaultConfig in System.dll and
15051           InternalConfigurationHost in System.Configuration.dll.
15052
15053 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15054
15055         * class.c: automatically add to vectors only a few essential explicit
15056         generic interfaces. The rest of the interfaces that arrays should
15057         provide are currently implicitly added (but still not lazily, see the
15058         design in the discussion of bug#325495 for the details of what is
15059         needed for that). Additionally, implicit interfaces are assigned the
15060         same vtable slot as the explicit interfaces (as they are compatible):
15061         this enables huge memory savings since we don't need to instantiate
15062         as many memthods and as large vtables anymore. Also, Since
15063         GetEnumerator<T> returns an instance of a type that is required to
15064         support a similarly large set of interfaces as arrays, we add
15065         implicit interfaces and interface offset sharing support to those
15066         types, too. This change adds all the required interfaces so that
15067         the anonarray.cs test case in the bug report works (we don't add
15068         all the interfaces to arrays of arrays 3-level deep and more because
15069         of the memory requirements explained in the bug and since they are much
15070         less common: the lazy-loading support will enabled them to work, too).
15071
15072 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
15073
15074         * verify.c (merge_stacks): major clean up, all type compatibility
15075         checks are done by verify_type_compatibility. This fix my earlier lack
15076         of understanding of the CLR type system and merge_stacks no longer looks
15077         scary.
15078
15079         * verify.c: fixed some bad spelling.
15080
15081 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
15082
15083         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
15084         a given stack slock.
15085         
15086         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
15087         verify_type_compatibility_full. This removed a near indentical function and fixed
15088         handling of Int32 and IntPtr across all opcodes.
15089
15090 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15091
15092         * class.c: only vectors have the additional generic interfaces.
15093
15094 2007-10-01  Jonathan Chambers <joncham@gmail.com>
15095
15096         * mono-config.c: Use g_strcasecmp instead of
15097         strcasecmp like everywhere else to fix
15098         compilation with MSVC.
15099         
15100         Code is contributed under MIT/X11 license.
15101
15102 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15103
15104         * object.c, object-internals.h: refactored the IMT code to enable
15105         building a single slot at a time and lazily creating the IMT trampolines
15106         and thunks.
15107
15108 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
15109
15110         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
15111
15112         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
15113         Fixes #328501.
15114         
15115 2007-09-29  Raja R Harinath  <harinath@gmail.com>
15116
15117         * loader.c (method_from_methodspec): Rearrange to avoid
15118         un-necessary exposition.  Don't assert out if the method's
15119         declaring type is a generic type definition.
15120
15121 2007-09-28  Martin Baulig  <martin@ximian.com>
15122
15123         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
15124
15125 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15126
15127         * class-internals.h: optimize field layout of MonoClass to
15128         requires less cachelines at runtime and save a few bytes on 64 bit
15129         systems.
15130
15131 2007-09-28  Jb Evain  <jbevain@novell.com>
15132
15133         * reflection.c: when encoding type names in custom attributes,
15134         if the type is a closed generic type, its generic arguments
15135         have to be serialized as AssemblyQualifiedName, so that when
15136         they are deserialized, it's possible to re-create them properly.
15137         Fixes #329450.
15138
15139
15140 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
15141
15142         * object.c, class-internals.h: added delegate-creation counter.
15143
15144 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15145
15146         * class.c: cleanup of the code that synthetizes interfaces for
15147         arrays in 2.0: saves quit a bit of corlib mempool memory.
15148         Code to fix bug #325495 ifdeffed out for now until the issues
15149         with memory usage and O(n^2) behaviour are fixed.
15150
15151 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
15152
15153         * marshal.c: when possible, do not duplicate the name of the methods
15154         in the method builder and in the generated MonoMethod.
15155
15156 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
15157         * verify.c: added support for type checking ldind_* opcodes.
15158
15159 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
15160
15161         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
15162         which is used to distinguish the fully open instantiation of a TypeBuilder
15163         with the rest. This temporary hack is required to restore the property that
15164         the fully open instantiation is the same type of the generic type definition.
15165
15166         * class-internals.h (mono_generic_class_is_generic_type_definition):
15167         new function as part of the internal API.
15168
15169         * class.c (inflate_generic_type): return NULL when the generic inst is
15170         fully open. The fully open generic type is now the same as the generic type
15171         definition for non TypeBuilder types.
15172
15173         * class.c (mono_generic_class_get_class): removed assert since it is
15174         no longer valid, gklass->cached_class can point to the generic type definition.
15175
15176         * class.c (mono_generic_class_is_generic_type_definition): new.
15177
15178         * metadata.c (mono_generic_class_hash): added is_tb_open field
15179         to the hash calculation.
15180
15181         * metadata.c (free_generic_class): if the generic class is associated
15182         with the generic type definition, its field will come from the mempool and
15183         must not be freed.
15184
15185         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
15186         new, this function identifies the corner case of a TypeBuilder fully open
15187         instantiation.
15188
15189         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
15190         for lookup. Set gclass->cached_class to be the container class in case of
15191         the fully open instantiation of non TypeBuilder types.
15192
15193         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
15194         to compare generic classes.
15195
15196         * reflection.c (method_encode_methodspec): remove assert that
15197         no longer is valid.
15198
15199         * reflection.c (mono_reflection_generic_class_initialize): add
15200         an aditional assert to ensure the proper type is used.
15201
15202 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
15203
15204         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
15205         to enjoy it.
15206
15207 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
15208
15209         * verify.c (push_arg): Fixed support for ldarga
15210         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
15211         MonoType used as first arg in case of instance calls.
15212
15213 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
15214
15215         * verify.c: Support for verifying VAR and MVAR types, 
15216
15217 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
15218
15219         * icall.c (ves_icall_get_property_info): Set the reflected type of the
15220         accessors correctly.
15221
15222 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15223
15224         * threads.c: support OSX and other systems in
15225         mono_thread_get_stack_bounds (bug #328026).
15226
15227 2007-09-25  Martin Baulig  <martin@ximian.com>
15228
15229         * mono-debug.h
15230         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
15231
15232 2007-09-24  Martin Baulig  <martin@ximian.com>
15233
15234         * mono-debug.h
15235         (MonoDebugClassEntry): Moved the definition of this struct into
15236         mono-debug.c to make it private.
15237
15238         * mono-debug.c
15239         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
15240         type table per symbol file, we don't need to store the symfile id
15241         any longer.
15242
15243 2007-09-24  Martin Baulig  <martin@ximian.com>
15244
15245         Create one type table per symbol file, since a `MonoClass *' gets
15246         invalid when its image is unloaded.
15247
15248         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
15249         (MonoDebugHandle): Added `type_table'.
15250
15251 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15252
15253         * mempool.c, mempool.h: added mono_mempool_new_size () API
15254         to be able to specify a smaller initial size for the pool.
15255         Adjusted the code to slowly increase pool size before using
15256         the previous default size.
15257         * image.c: use a small initial size for image mempools.
15258
15259 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
15260
15261         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
15262         Fixes ##320990.
15263
15264         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
15265         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
15266
15267 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
15268
15269         * metadata.c (mono_type_create_from_typespec): Remove an invalid
15270         free. Fixes #327438.
15271
15272 2007-09-21  Raja R Harinath  <harinath@gmail.com>
15273
15274         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
15275         generic instantiations, etc.
15276         <MONO_TYPE_ARRAY>: Likewise.
15277
15278 2007-09-21  Martin Baulig  <martin@ximian.com>
15279
15280         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
15281         these structs were never defined.
15282         (MonoDebugHandle): Removed the `_priv' field, it was never used.
15283
15284 2007-09-21  Martin Baulig  <martin@ximian.com>
15285
15286         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
15287
15288 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
15289
15290         * image.c: removed the guid hash tables: we can get the same info
15291         without the additional memory usage hit (partially fixes also bug #327052).
15292
15293 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15294
15295         * profiler.h, profiler-private.h, profiler.c: add a new profiler
15296         event to handle unloading methods. After the event is called, the
15297         corresponding MonoMethod* must be considered invalid.
15298         * loader.c (mono_free_method): call the new mono_profiler_method_free
15299         event.
15300
15301 2007-09-20  Mark Probst  <mark.probst@gmail.com>
15302
15303         * domain-internals.h: New flag in MonoJitInfo which marks shared
15304         generic methods.  New hash table (shared_generics_hash) in
15305         MonoDomain to keep track of shared generic methods.  Prototypes
15306         for functions to register and lookup shared generic methods.
15307
15308         * domain.c: Support for registering and looking up shared generic
15309         methods via a hash table (shared_generics_hash) in MonoDomain.
15310
15311         * class-internals.h: New exception to signal failure of shared
15312         compilation of a generic method.  New counters for generics
15313         sharing in MonoStats.
15314
15315 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15316
15317         * image.c, metadata-internals.h: don't keep a file descriptor open
15318         for loaded assemblies (bug#325988).
15319
15320 2007-09-19  Raja R Harinath  <rharinath@novell.com>
15321
15322         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
15323         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
15324         use the corresponding datatypes.
15325         (type_in_image): Update to changes.
15326         (CleanForImageUserData): Simplify.
15327         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
15328         Avoid quadratic behaviour in handling the "stolen" list by
15329         separating the filter predicate out, and by prepending the stolen
15330         items rather than appending them.
15331         (steal_ginst_in_image): Likewise.
15332         (mono_metadata_clean_for_image): Update to changes.
15333
15334 2007-09-19  Martin Baulig  <martin@ximian.com>
15335
15336         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
15337
15338 2007-09-19  Martin Baulig  <martin@ximian.com>
15339
15340         * mono-debug.c (mono_debug_cleanup): Don't call
15341         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
15342
15343 2007-09-19  Raja R Harinath  <harinath@gmail.com>
15344
15345         Fix crash on 'make run-test' in mcs/errors
15346         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
15347         Avoid more potential allocations in mono_class_from_mono_type.
15348         (ginst_in_image): Update to changes.
15349         (gclass_in_image): Rearrange slightly.
15350
15351 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15352
15353         * class.c (mono_class_init): Move the code that sets up class->methods to 
15354         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
15355
15356         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
15357         canonical instance of an inflated generic signature.
15358         (mono_type_create_from_typespec): Remove an invalid free.
15359
15360         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
15361
15362 2007-09-18  Marek Habersack  <mhabersack@novell.com>
15363
15364         * domain-internals.h: added a declaration of the
15365         mono_assembly_load_full_nosearch internal function.
15366
15367         * assembly.c (mono_assembly_load_with_partial_name): use
15368         mono_try_assembly_resolve return value properly.
15369         (mono_assembly_load_full_nosearch): copied the function body from
15370         mono_assembly_load_full, without the code to invoke assembly
15371         search hooks.
15372         (mono_assembly_load_full): calls the above new function and if the
15373         assembly is not resolved, invokes the search hooks.
15374
15375         * appdomain.c (mono_runtime_init): restore the global postload
15376         assembly search handlers.
15377
15378 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15379
15380         * class.c (mono_class_init): Make sure class->methods and class->properties
15381         are never NULL in the generics case.
15382
15383         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
15384
15385 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
15386
15387         * metadata.c (free_generic_class): Disable some code to fix the build.
15388
15389         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
15390
15391         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
15392         from the image mempool.
15393
15394         * metadata.c (free_generic_class): Free more data from the inflated class.
15395
15396         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
15397
15398         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
15399         mempool.
15400         (mono_type_create_from_typespec): Ditto.
15401
15402         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
15403         MonoImage to the caller.
15404         (mono_init_internal): Save the opened image in a global variable.
15405         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
15406
15407         * reflection.c (resolve_object): Fix a leak.
15408
15409         * metadata.c: Fix the freeing of data in the generics caches.
15410         
15411         * metadata.c (free_generic_inst): Comment this out to fix the build.
15412         (free_generic_class): Ditto.
15413
15414         * metadata.c: Free cached generic methods, instantinations and classes when
15415         they are removed from the caches.
15416         (mono_metadata_free_type): Free the type itself.
15417
15418         * class.c: Free the result of mono_class_inflate_generic_type () in a few
15419         places.
15420
15421 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
15422
15423         * boehm-gc.c: restrict managed allocs to __thread supporting
15424         architectures.
15425
15426 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
15427
15428         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
15429         (mono_generic_class_get_class): Fix a leak.
15430
15431         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
15432         mono_metadata_free_type ().
15433         (mono_metadata_inflate_generic_inst): Fix a leak.
15434
15435 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15436
15437         * mono-debug.c (free_header_data): Fix a leak missed earlier.
15438
15439         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
15440         mempool.
15441
15442         * mono-debug.c (mono_debug_close_image): Fix call to 
15443         g_hash_table_remove ().
15444
15445 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
15446
15447         * icall-def.h: redirect all the string ctor to the managed
15448         CreateString () methods.
15449         * string-icalls.c, string-icalls.h: removed dead code for string
15450         ctors and icalls.
15451
15452 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15453
15454         * mono-debug.c: Fix memory leaks.
15455
15456 2007-09-14  Jonathan Chambers <joncham@gmail.com>
15457
15458         * threads-types.h: Implement mono_hazard_pointer_set and 
15459         mono_hazard_pointer_clear macros using do/while(0) to fix
15460         compilation with MSVC.
15461         
15462         Code is contributed under MIT/X11 license.
15463
15464 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15465
15466         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
15467         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
15468
15469 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15470
15471         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
15472         icalls.
15473
15474 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15475
15476         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
15477         managed-code allocated as well.
15478
15479 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15480
15481         * class.c (mono_class_is_assignable_from): Add support for generic variance.
15482
15483 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
15484
15485         * boehm-gc.c: fixed the build after the AOT changes.
15486
15487 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15488
15489         * wrapper-types.h: Add an ALLOC wrapper type.
15490
15491         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
15492         reference managed allocator methods.
15493
15494 2007-09-12  Marek Safar  <marek.safar@gmail.com>
15495
15496         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
15497         of Type array and not MonoType, a fix suggested by Hari.
15498         
15499 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15500
15501         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
15502         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
15503         
15504         Code is contributed under MIT/X11 license.
15505
15506 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15507
15508         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
15509
15510 2007-09-12  Marek Habersack  <mhabersack@novell.com>
15511
15512         * image.c (do_mono_image_open): if assembly file fails to open and
15513         MONO_IOMAP is in effect, try to find the path in a
15514         case-insensitive way.
15515
15516         * appdomain.c (mono_runtime_init): do not install postload hooks -
15517         tests show that MS.NET doesn't use anything of that sort to
15518         trigger the AppDomain.AssemblyResolve event.
15519         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
15520         made non-static.
15521         (mono_runtime_init): init portability helpers here.
15522
15523         * assembly.c (mono_assembly_load_with_partial_name): if other   
15524         attempts fail, trigger the AppDomain.AssemblyResolve event handler
15525         to resolve the assembly.
15526
15527         * domain-internals.h: added mono_try_assembly_resolve and marked
15528         it as internal.
15529
15530 2007-09-11  Jb Evain  <jbevain@novell.com>
15531
15532         * object-internals.h (MonoReflectionDynamicMethod): add
15533         a `MonoReflectionType *owner` field. The owner is used
15534         * reflection.c:
15535         (mono_reflection_create_dynamic_method): use the owner of the dynamic
15536         method as the class declaring the dynamic method.
15537         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
15538         dynamic method to the declaring type of the methodbuilder.
15539
15540 2007-09-11  Mark Probst  <mark.probst@gmail.com>
15541
15542         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
15543         rules for calling methods via reflection.
15544
15545 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
15546
15547         * reflection.c (resolve_object): Add support for MonoGenericClass. 
15548         Inflate MonoType's.
15549
15550 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15551
15552         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
15553         provide a managed method that does fast allocations without needing
15554         a managed->unmanaged transition. Boehm GC implementation currently
15555         enabled for ptrfree objects on sane architectures.
15556
15557 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
15558
15559         * marshal.c, marshal.h: exported a couple of useful functions and
15560         added mono_mb_get_label () to easily handle backward branches.
15561
15562 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
15563
15564         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
15565
15566 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15567
15568         * loader.c (find_method): Fixed the regression introduced while
15569         fixing bug #81466.
15570
15571 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
15572
15573         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
15574         well.
15575         
15576         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
15577         icall.c reflection.c: Pass a MonoGenericContext argument to 
15578         mono_lookup_dynamic_token ().
15579
15580         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
15581         #82744.
15582         
15583 2007-09-09  Robert Jordan  <robertj@gmx.net>
15584
15585         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
15586         for generic methods.
15587
15588         * object.c (mono_object_get_virtual_method): Handle generic methods.
15589         Fixes bug #78882.
15590
15591         Code is contributed under MIT/X11 license.
15592
15593 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
15594
15595         * image.c: fix locking in mono_image_load_file_for_image ().
15596
15597 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
15598
15599         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
15600         used only as a cache: added an icall to fill it.
15601
15602 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
15603
15604         * reflection.h: exposed mono_reflection_free_type_info
15605         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
15606         since mono_reflection_bind_generic_parameters makes a copy of it.
15607         * reflection.c (free_type_info): subinfos should be freed.
15608         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
15609         made non static.
15610         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
15611         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
15612         this fixes #82695 and #81726.
15613    
15614
15615 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
15616
15617         * process.h, process.c:  added support for user profile/info in
15618           ProcessStartInfo. For now only Windows works.
15619
15620 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15621
15622         * metadata.c: consider the generic arguments when comparing
15623         signatures (bug #82614).
15624
15625 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15626
15627         * cil-coff.h, image.c: updated assembly loader to cope with the
15628         PE32+ 64 bit file format.
15629
15630 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15631
15632         * assembly.c, class.c, domain.c, loader.c: remove useless
15633         inclusion of cil-coff.h.
15634
15635 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
15636
15637         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
15638         if interface is marked with CoClassAttribute. 
15639    
15640         Code is contributed under MIT/X11 license.
15641
15642 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
15643
15644         * sgen-gc.c: ensure no object from the to space is copied again or finalized
15645         if it's seen twice in major collections.
15646
15647 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
15648
15649         * sgen-gc.c: big objects are not copied to the gray area, but they
15650         need to be considered for scanning, too, if they are brought alive
15651         by an object ready for finalizations or a survived one.
15652
15653 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15654
15655         * sgen-gc.c: properly account the number of disappearing links when
15656         they are nullified.
15657
15658 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
15659
15660         * sgen-gc.c: share the code to scan the registered roots between the
15661         different types of collections.
15662
15663 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15664
15665         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
15666
15667 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15668
15669         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
15670         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
15671
15672 2007-08-28  Mark Probst  <mark.probst@gmail.com>
15673
15674         * security-manager.c (mono_security_manager_get_methods):
15675         LinkDemandSecurityException now has 2 arguments instead of 3.
15676
15677 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
15678
15679         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
15680         platforms which need it.
15681
15682 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15683
15684         * sgen-gc.c: unregister thread data structures with a pthread_key_t
15685         dtor.
15686
15687 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
15688
15689         * threads.c: free the thread static data on thread exit.
15690
15691 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
15692
15693         * class.c: walk the hierarchy to find the generic definition for
15694         a class (fixes runtime part of bug #82498).
15695
15696 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
15697
15698         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
15699         ...
15700
15701         * image.c (mono_image_close): Here. Hopefully fixes #82510.
15702
15703 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15704
15705         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
15706
15707 2007-08-24  Robert Jordan  <robertj@gmx.net>
15708
15709         * appdomain.c: don't perform the ':'->';' substitution on Win32.
15710
15711 2007-08-24  Jb Evain  <jbevain@novell.com>
15712
15713         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
15714         for byref types.
15715
15716 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15717
15718         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
15719         #82286.
15720
15721 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
15722
15723         * assembly.c: Fix a warning.
15724         
15725 2007-08-23  Marek Habersack  <mhabersack@novell.com>
15726
15727         * appdomain.c: parse the <runtime> section looking for the probing
15728         element with the 'privatePath' attribute, which sets additional
15729         directories in which the runtime should look for assemblies.
15730
15731 2007-08-23  Robert Jordan  <robertj@gmx.net>
15732
15733         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
15734         Fixes #82499.
15735
15736 2007-08-23  Martin Baulig  <martin@ximian.com>
15737
15738         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
15739         _mono_debug_init_corlib() and remove it from the header file.
15740
15741 2007-08-23  Martin Baulig  <martin@ximian.com>
15742
15743         * mono-debug-debugger.c
15744         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
15745         don't notify the debugger about it.
15746
15747         * mono-debug-debugger.h
15748         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
15749
15750 2007-08-23  Robert Jordan  <robertj@gmx.net>
15751
15752         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
15753         Code is contributed under MIT/X11 license.
15754
15755 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15756
15757         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
15758
15759 2007-08-22  Martin Baulig  <martin@ximian.com>
15760
15761         * mono-debug.c: Store debugging info on a per-domain basis and
15762         free it on domain unload.  Add support for unloading symbol files.
15763
15764         * mono-debug.h
15765         (MonoDebugList): New typedef.
15766         (MonoSymbolTable):
15767         - add `data_tables and `type_table'.
15768         - replace 'symbol_files' and `num_symbol_files' with a
15769           `MonoDebugList *'.
15770         (mono_debug_data_table): Removed.
15771         (mono_debug_list_add): New public function.
15772         (mono_debug_list_remove): New public function.
15773         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
15774         (mono_debug_init_2_memory): Renamed into
15775         mono_debug_open_image_from_memory().
15776         (mono_debug_close_image): New public function.
15777         (mono_debug_domain_create): Likewise.
15778         (mono_debug_domain_unload): Likewise.
15779         (MONO_DEBUGGER_VERSION): Bump to 60.
15780
15781         * mono-debug-debugger.h
15782         (MonoDebuggerEvent):
15783         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
15784         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
15785         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
15786         - rename `THREAD_CREATED' and `THREAD_EXITED' into
15787           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
15788         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
15789           meaning.
15790         (mono_debugger_add_symbol_file): Removed.
15791         (mono_debugger_add_type): Removed.
15792         (mono_debugger_lookup_type): Removed.
15793         (mono_debugger_lookup_assembly): Removed.
15794
15795         * domain.c
15796         (mono_domain_create): Call mono_debug_domain_create().
15797         (mono_init_internal): Call mono_debug_init_corlib().
15798
15799         * assembly.c
15800         (mono_assembly_close): Call mono_debug_close_image().
15801
15802 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15803
15804         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
15805         mmap call.
15806
15807 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
15808
15809         * sgen-gc.c: ensure section->pin_queue_end is initialized
15810         correctly when non pinning objects in the section have been found.
15811
15812 2007-08-22  Marek Habersack  <mhabersack@novell.com>
15813
15814         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
15815         containing a list of directories separated by ':'. MSDN docs say
15816         the directories should be separated with ';'. Part of a bugfix for
15817         bug #81446
15818
15819 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
15820
15821         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
15822         it should MonoType and not MonoClass.
15823
15824 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
15825
15826         * culture-info-table.h : regenerated.
15827
15828 2007-08-20  William Holmes  <billholmes54@gmail.com>
15829
15830         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
15831          to call ReplaceFile Kernel32 on windows or in io-layer.
15832         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
15833         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
15834          as an internal call.
15835
15836         Code is contributed under MIT/X11 license.
15837
15838 2007-08-20  Jb Evain  <jbevain@novell.com>
15839
15840         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
15841         and MONO_EXCEPTION_FIELD_ACCESS.
15842
15843         * debug-helpers.[c|h]: new mono_field_full_name function.
15844
15845 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15846
15847         * class.c: Removed class_security_level() and moved it to
15848         security-core-clr.c.
15849
15850         * security-core-clr.c, security-core-clr.h: class_security_level()
15851         is now public and renamed to mono_security_core_clr_class_level().
15852         It also looks for security attributes in the classes a class is
15853         nested in.
15854
15855 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15856
15857         * security-core-clr.c, security-core-clr.h: CoreCLR security
15858         utility functions.
15859
15860         * Makefile.am: Added security-core-clr.[ch].
15861
15862         * security-manager.c, security-manager.h: Functions and enum for
15863         setting and getting the security mode.
15864
15865         * class.c: CoreCLR security checks.
15866
15867 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15868
15869         * icall-def.h, process.c, process.h: implemented icall to get
15870         user/system processor times.
15871
15872 2007-08-17  Mark Probst  <mark.probst@gmail.com>
15873
15874         * domain.c, threads.c, class-internals.h, domain-internals.h: New
15875         reader-lock-free jit_info_table.
15876
15877 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
15878
15879         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
15880
15881         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
15882
15883         * object-internals.h (MonoException): Add missing _data member.
15884
15885 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
15886
15887         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
15888         checking that only methods with matching qname or fqname are picked
15889         from implemented interfaces.
15890
15891 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
15892
15893         * verify.c (do_newarr):added, do type verification of
15894         newarr ops, push the right value on the eval stack.
15895         * verify.c (mono_method_verify): use do_newarr
15896
15897
15898 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
15899
15900         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
15901         factored the common code into get_boxable_mono_type, which
15902         is now using mono_type_get_full, this fixed byref related tests.
15903
15904 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
15905
15906         * class.c: added mono_type_get_full, this function has the same
15907         behavior of mono_class_get_full but the returned MonoType has
15908         all metadata of the associated token in case of a typespec token.
15909         * class.c: added mono_type_retrieve_from_typespec, used by 
15910         mono_type_get_full to retrieve the token type.
15911         * class.c (mono_class_create_from_typespec): changed to use
15912         mono_type_retrieve_from_typespec.
15913         * class.c (mono_ldtoken): changed to use mono_type_get_full
15914         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
15915         * class-internals.h: exported mono_type_get_full for internal use.
15916
15917 2007-08-16  Jb Evain  <jbevain@novell.com>
15918
15919         * domain.c (supported_runtimes): add entry for
15920         the 'moonlight' runtime version.
15921
15922 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15923
15924         * verify.c (mono_method_verify): small typo sliped in.  
15925
15926 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15927
15928         * verify.c (do_unbox_value): added, do type verification of
15929         unboxing ops
15930         * verify.c (mono_method_verify): use do_unbox_value
15931
15932
15933 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15934
15935         * verify.c (dump_stack_value): fixed typo, was printing string
15936         instead of object on stack.
15937         * verify.c (do_box_value): moved the byref check up as it leads
15938         to invalid code and should be done earlier.
15939         * verify.c: improved error messages for and ldobj
15940
15941 2007-08-15  William Holmes  <billholmes54@gmail.com>
15942
15943         * marshal.c (emit_marshal_custom): Omit the call to 
15944           marshal_native_to_managed when calling native to managed 
15945           and the argument is specified as an out argument.
15946
15947         Code is contributed under MIT/X11 license.
15948
15949 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15950
15951         * verify.c: fixed the type checks for generics, function pointers and vectors.
15952         Added type verification for ldobj and ldtoken. The verifier
15953         would segfault if header or signature of a method contained references
15954         to non-existant types.
15955
15956 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
15957
15958         * marshal.c (cominterop_get_ccw): Patch from
15959         Bill Holmes to no walk up interface hierarchy. 
15960         All parent methods should be present in the interface for COM.
15961    
15962         Code is contributed under MIT/X11 license.
15963
15964 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
15965
15966         * marshal.c (emit_marshal_com_interface): Patch from
15967         Bill Holmes to handle COM Interfaces as return values
15968         for native->managed calls.
15969    
15970         Code is contributed under MIT/X11 license.
15971
15972 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
15973
15974         * marshal.c (cominterop_get_idispatch_for_object): Implement
15975         for runtime callable wrappers.
15976    
15977         Code is contributed under MIT/X11 license.
15978
15979 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
15980
15981         * pedump.c (main): changed from mono_init to mono_init_from_assembly
15982         so 2.0 types are accessible
15983
15984
15985 2007-08-13  Miguel de Icaza  <miguel@novell.com>
15986
15987         * domain.c (mono_init_internal): Call mono_assembly_load_friends
15988         once we load mscorlib.   Due to the order in which we initialize,
15989         the mono_assembly_load_full routine that loads mscorlib did not
15990         load friends.   We now load it once we load the
15991         mono_defaults.internals_visible_class class. 
15992
15993         * assembly.c: Expose the mono_load_friend_assemblies method.
15994
15995 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
15996
15997         * verify.c: improved the handling of boxing, better
15998         type checking for unary ops and conversion. Fix bug
15999         regarding managed pointer compatibility checking
16000
16001 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
16002
16003         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
16004
16005         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
16006
16007 2007-08-09  Raja R Harinath  <rharinath@novell.com>
16008
16009         * reflection.c (dup_type): Remove.
16010         * class.c (dup_type): Remove.
16011         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
16012         instead of the dodgy 'dup_type'.
16013         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
16014         handle the case where 'dup_type' needed the second argument.
16015
16016 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
16017
16018         * domain.c: Fix a warning.
16019
16020 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
16021
16022         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
16023         checking that methods with the same fqname are not overridden
16024         with a method from an ancestor.
16025
16026 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
16027
16028         * threads.c (free_thread_static_data_helper): Avoid a crash if
16029         thread->static_data is not yet set.
16030
16031 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
16032
16033         * marshal.c: Use correct image when emitting
16034         native wrapper for COM calls.
16035    
16036         Code is contributed under MIT/X11 license.
16037
16038 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
16039
16040         * icall-def.h, security.c, security.h :
16041           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
16042
16043 2007-08-07  Martin Baulig  <martin@ximian.com>
16044
16045         * mono-debug-debugger.h
16046         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
16047
16048         * domain.c (mono_domain_free): Call
16049         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
16050
16051 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
16052
16053         * verify.c (check_underflow, check_overflow): error message now returns IL offset
16054         * verify.c (in_same_block): code should test if either offset is inside the clauses
16055         * verify.c (mono_method_verify): push the exception into the eval stack of exception
16056         and filter blocks
16057
16058 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
16059
16060         * image.c (mono_image_close): Fix a leak.
16061
16062         * object.c (mono_runtime_invoke_array): Avoid using alloca.
16063
16064         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
16065
16066 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
16067
16068         * domain.c, threads.c, threads-types.h: fix memory retention issue
16069         with thread static variables not being cleared on domain unload.
16070         Reuse thread static slots after domain unload.
16071
16072 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
16073
16074         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
16075         nullable type.
16076
16077         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
16078         now done in mono_runtime_invoke_array.
16079
16080         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
16081         receiver is a nullable type.
16082
16083         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
16084         generic parameter.
16085
16086 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
16087
16088         * marshal.c: Implement COM Objects as return type for 
16089         managed->unmanaged calls. Added Release calls for COM Object
16090         out/return values in managed->unmanaged calls.
16091
16092         Code is contributed under MIT/X11 license.
16093
16094 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
16095
16096         * threads.h, threads-type.h: move the hazard pointer declarations
16097         to the private header.
16098
16099 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
16100
16101         * file-io.c, appdomain.c: memory leak fixes.
16102
16103 2007-08-02  Dick Porter  <dick@ximian.com>
16104
16105         * socket-io.c
16106         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
16107         SO_REUSEADDR setting into io-layer/sockets.c.
16108
16109 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
16110
16111         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
16112         from Object when called on a generic parameter. Fixes #82211.
16113
16114 2007-08-01  Dick Porter  <dick@ximian.com>
16115
16116         * file-io.c (convert_share): Test FileShare values bit-by-bit.
16117         Fixes bug 79250 yet again.
16118
16119 2007-07-30  Martin Baulig  <martin@ximian.com>
16120
16121         Merged the `debugger-dublin' branch.
16122
16123         * mono-debug.h
16124         (MonoDebugDataTable): New typedef.
16125         (MonoDebugMethodAddressList): New typedef.
16126         (MonoDebugWrapperData): Removed.
16127         (MonoDebugSymbolTable): Removed `current_data_table',
16128         `current_data_table_size', `current_data_table_offset'.
16129         (MonoDebugDataItemType): Moved into mono-debug.c.
16130         (MonoDebugMethodJitInfo): Remove `address'.
16131         (mono_debug_data_table): New global variable.
16132         (mono_debug_lookup_method_addresses): New public function.
16133         (mono_debug_find_method): Take a `MonoMethod *', not a
16134         `MonoDebugMethodInfo *'.
16135
16136         * mono-debug.c: Drop support for the old symbol tables.
16137
16138 2007-06-28  Martin Baulig  <martin@ximian.com>
16139
16140         * mono-debug.c (mono_debug_debugger_version): New public variable.
16141
16142 2007-07-31  William Holmes  <billholmes54@gmail.com>
16143
16144         * metadata.c Changed mono_type_create_from_typespec to not insert
16145           the type into the hash map until after
16146           do_mono_metadata_parse_type has completed.
16147         Fixes Bug #82194
16148         Code is contributed under MIT/X11 license.
16149
16150 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
16151
16152         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
16153         generic parameter. Fixes #82211.
16154
16155 2007-07-27  Jb Evain  <jbevain@novell.com>
16156
16157         * pedump.c (dump_metadata, dump_metadata_header): dump
16158         versions contained in the metadata header.
16159
16160 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
16161
16162         * threads.c: register small_id_table with the GC.
16163
16164 2007-07-27  Mark Probst  <mark.probst@gmail.com>
16165
16166         * threads.c, threads.h, class-internals.h, object-internals.h:
16167         Hazard pointers, to be used by lock-free parallel algorithms.
16168
16169 2007-07-26  Dick Porter  <dick@ximian.com>
16170
16171         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
16172         routine on non-windows platforms, as I've not managed to think of
16173         a non-kludgy way of doing this.  Finishes off bug 78739.
16174
16175 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
16176
16177         * object.c: properly setup interface_bitmap in proxy vtables.
16178
16179 2007-07-25  Marek Habersack  <mhabersack@novell.com>
16180
16181         * appdomain.c (get_shadow_assembly_location): do not use TickCount
16182         to create unique shadow copy target directories, use the domain's
16183         serial number instead. Each domain gets a unique target directory
16184         that way.
16185
16186         * domain.c (mono_domain_create): added code to increment domain
16187         shadow copy serial number and cache the value in the current
16188         domain structure.
16189
16190         * domain-internals.h (struct _MonoDomain): added a new field -
16191         shadow_serial to hold the serial number used in generation of
16192         shadow-copy directories. This is to make sure that the directory
16193         name is unique for each and every domain created. We avoid a race
16194         condition with overriding assemblies already in use by other app
16195         domains.
16196
16197 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
16198
16199         * class.c (mono_bounded_array_class_get): fixed memory leak when 
16200         binding generic parameters.
16201
16202 2007-07-24  Raja R Harinath  <rharinath@novell.com>
16203
16204         * metadata.c (do_mono_metadata_parse_generic_class): Use
16205         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
16206         error.
16207
16208 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
16209
16210         * loader.c, class-internals.h, reflection.c: removed the per-method
16211         generics hashtable: we use the global one through the call of
16212         mono_class_inflate_generic_method ().
16213
16214 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
16215
16216         * class.c, metadata.c, class-internals.h: introduce yet another
16217         generics global cache for inflated methods (fixes 98% of the perf
16218         issue in bug #81806).
16219
16220 2007-07-23  Raja R Harinath  <rharinath@novell.com>
16221
16222         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
16223         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
16224         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
16225         return a MonoGenericInst containing (a copy) of those types.
16226         (mono_metadata_inflate_generic_inst): Update to changes.
16227         (mono_metadata_parse_generic_inst): Likewise.
16228         (mono_get_shared_generic_inst): Likewise.
16229         * reflection.c (mono_class_bind_generic_parameters): Likewise.
16230         (mono_reflection_bind_generic_method_parameters): Likewise.
16231         * metadata-internals.h: Likewise.
16232         * icall.c (free_generic_context): Kill.
16233         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
16234
16235         * reflection.c (reflection_methodbuilder_to_mono_method): Use
16236         mono_metadata_type_dup.
16237         * marshal.c (mono_mb_create_method): Likewise.
16238
16239         * metadata.c (mono_metadata_type_dup): Rename from
16240         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
16241         MonoImage.  Handle a few more cases, esp. when no mempool is given.
16242         * marshal.c, metadata-internals.h: Update to changes.
16243
16244 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
16245
16246         * class.c: fixed a small leak for array classes and removed warning.
16247
16248 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
16249
16250         * loader.c (mono_method_get_param_token): Make this work on generic methods.
16251         Return 0x8000000 for return parameters. Fixes #82161.
16252
16253 2007-07-21  Marek Habersack  <grendello@gmail.com>
16254
16255         * appdomain.c (get_shadow_assembly_location): append the current
16256         ticks value to the path. Avoids overwriting the same assemblies by
16257         several threads at the same time.
16258
16259 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
16260         and Raja R Harinath  <rharinath@novell.com>
16261
16262         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
16263         Simplify slightly.
16264         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
16265         property for testing if a method is a generic method definition.
16266
16267 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
16268
16269         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
16270
16271 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16272
16273         * verify.c: used function from private branch, reverted to the one in class.h 
16274
16275 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16276
16277         * verify.c: a typo slipped in and the code wont compile
16278
16279 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16280
16281         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
16282         disabled box instruction as it is doing the wrong thing
16283         improved stack dump messages, now it is easier to debug type related issues
16284
16285
16286 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
16287
16288         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
16289
16290 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16291
16292         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
16293         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
16294         grouped with class and valuetype. This change will simply 
16295         the code as it should be handled just like unmanaged pointers.
16296
16297 2007-07-19  Mark Probst  <mark.probst@gmail.com>
16298
16299         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
16300
16301 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16302
16303         * verify.c: several stack merge issues fixed, reference comparisons now
16304         check the type size. strict type check now works correctly.
16305         added more uses of IS_MANAGED_POINTER macro.
16306         fixed issues pointed by running the test suite against .net.
16307         
16308
16309 2007-07-19  Mark Probst  <mark.probst@gmail.com>
16310
16311         * class.c, loader.c, class-internals.h: Removed the
16312         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
16313         defines.
16314
16315         * icall.c: Better error checking in some internal reflection
16316         methods.
16317
16318 2007-07-18  William Holmes  <billholmes54@gmail.com>
16319
16320         * filewatcher.c : removed unused variable 'filename' in 
16321           ves_icall_System_IO_FSW_SupportsFSW
16322
16323 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
16324
16325         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
16326         obsolete, removed.
16327
16328 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
16329
16330         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
16331         
16332         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
16333
16334 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
16335
16336         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
16337         Implement generics support.
16338         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
16339
16340         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
16341         type_args and method_args arguments.
16342         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
16343         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
16344         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
16345
16346 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
16347
16348         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
16349           It adds a rootimage parameter to mono_reflection_get_type_internal,
16350           adds new function mono_reflection_get_type_with_rootimage and use
16351           the rootimage to resolve the types instead of the current image
16352
16353 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
16354
16355         * culture-info-table.h: Forgot to update after r78304.
16356
16357 2007-07-13  Raja R Harinath  <rharinath@novell.com>
16358
16359         * class.c (mono_class_is_open_constructed_type)
16360         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
16361
16362 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
16363
16364         * class.c (mono_bounded_array_class_get):  method fails if used with
16365         an incomplete TypeBuilder enum (no basetype field), fixed it by 
16366         avoiding calculating the size for such array as it cannot be instantiated.
16367         Fix bug #82015
16368
16369 2007-07-12  Raja R Harinath  <rharinath@novell.com>
16370
16371         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
16372         field.
16373         * metadata.c, reflection.c: Update to changes.
16374
16375 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
16376
16377         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
16378         mono_class_is_valid_enum, they are used to valide a enum when loading.
16379         * reflection.c: used new functions to throw TypeLoadException when and
16380         invalid enum is build with TypeBuilder. Fixes #82018
16381   
16382 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
16383
16384         * object.c: forgot commit of mono_class_setup_methods () to access
16385         iface->methods.
16386         * object-internals.h: added a few more handy fields to
16387         MonoIMTCheckItem.
16388
16389 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
16390
16391         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
16392         iface->methods.
16393
16394 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
16395
16396         * class-internals.h, object-internals.h, object.c: IMT-based
16397         interface invocation core from Massimiliano Mantione
16398         (massi@ximian.com) with a reworked arch-specific interface,
16399         bsearch implementation and a few bugfixes and memory savings by me.
16400
16401 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
16402
16403         * class.c (mono_class_create_from_typedef): mono would segfault if 
16404         an enum did not have a __value field. It now throws a TypeLoadException
16405         for such cases. Fix bug #82022
16406
16407 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
16408
16409         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
16410
16411 2007-07-09  Mark Probst  <mark.probst@gmail.com>
16412
16413         * class.c (mono_class_init): If a class is already inited but has
16414         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
16415
16416 2007-07-09  Mark Probst  <mark.probst@gmail.com>
16417
16418         * class.c: Properly handle the case of an unimplemented interface
16419         method.  Fixes: 81673.
16420
16421 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
16422
16423         * class-internals.h, object.c: cleanup patch from massi: use
16424         MonoVTable->interface_bitmap since the vtable interfaces offset array
16425         is going away.
16426
16427 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
16428
16429         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
16430         GetMDStreamVersion icall instead.
16431
16432 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
16433
16434         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
16435         not use mono_dl_build_path() with a full library name: makes
16436         fallbacks to libgaim and libfam work.
16437
16438 2007-07-06  William Holmes  <billholmes54@gmail.com>
16439
16440         * assembly.c: Added a continue statement in probe_for_partial_name when
16441          parse_assembly_directory_name fails.  Fixes : 82002
16442
16443 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
16444
16445         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
16446         and added a verification  for TYPEDBYREF.
16447         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
16448         make native int interchangeable with int32 and some small cleanup and formating.
16449         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
16450         handle byref of byref.
16451         * verify.c (push_local): handle byref of byref.
16452         * verify.c (do_binop): invalid mix of values is unverifiable
16453         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
16454         added visibility checks
16455         * verify.c (field related method): added visibility checks
16456         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
16457
16458 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
16459
16460         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
16461         string.
16462
16463 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
16464
16465         * profiler.c (mono_profiler_load): Fix an off-by-one error.
16466
16467         * marshal.c (emit_marshal_string): When returning a string from managed code,
16468         allways make a copy even for unicode strings. Fixes #81990.
16469
16470 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
16471
16472         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
16473         of byref generic inst types (bug #81997).
16474
16475 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
16476
16477         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
16478         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
16479
16480 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
16481
16482         * marshal.c (emit_marshal_string): Add support for unicode strings in
16483         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
16484
16485 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
16486
16487         * verify.c: field load/store are now verified, missing only access checks now
16488
16489 2007-06-28  Martin Baulig  <martin@ximian.com>
16490
16491         * mono-debug.c (mono_debug_debugger_version): New public variable.
16492
16493 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
16494
16495         * locales.c: When constructing DateTimeFormat or NumberFormat for
16496         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
16497         MonoCultureInfo contructed from the current locale is always
16498         read-only and has UseUserOverride set to true. All MonoCultureInfo
16499         instances returned for GetCultures have both IsReadOnly and
16500         UseUserOverride set to true. Fixes part of bug #81930.
16501
16502 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
16503
16504        * icall-def.h: Update System.__ComObject icalls
16505        * marshal.c: Avoid managed transition (and object creation)
16506        when looking up COM interface in RCW.
16507        * marshal.h: Ditto.
16508        
16509        Code is contributed under MIT/X11 license.
16510
16511 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
16512
16513         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
16514         to avoid crashes during assembly unloading.
16515
16516 2007-06-22  Raja R Harinath  <rharinath@novell.com>
16517
16518         Fix MethodInfo.IsGenericMethodDefinition
16519         * reflection.c (mono_reflection_bind_generic_method_parameters):
16520         Rearrange code to ensure we always uses a generic method definition.
16521         * class.c (mono_class_inflate_generic_method_full): Set
16522         'generic_container' field only for generic method definitions.
16523         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
16524         Use presense of 'generic_container' field as indication of being a
16525         generic method definition.
16526
16527 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
16528
16529         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16530
16531         * object-internals.h: Reflect changes in the layout of the managed Delegate
16532         class.
16533         
16534         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
16535         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
16536         runtime memory used by the dynamic method. Fixes #77146.
16537
16538 2007-06-21  Dick Porter  <dick@ximian.com>
16539
16540         * file-io.h: 
16541         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
16542         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
16543         81767.
16544
16545 2007-06-21  Raja R Harinath  <rharinath@novell.com>
16546
16547         * reflection.c (method_encode_methodspec): Add a tripwire.
16548         * class.c (inflate_generic_type): The fully open generic type is
16549         not the same as the generic type definition.
16550
16551 2007-06-21  Martin Baulig  <martin@ximian.com>
16552
16553         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
16554
16555         * mono-debug-debugger.h
16556         (MonoDebuggerBreakpointInfo): Removed.
16557         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
16558         (mono_debugger_remove_breakpoint): Likewise.
16559         (mono_debugger_breakpoint_callback): Likewise.
16560         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
16561
16562 2007-06-21  Raja R Harinath  <rharinath@novell.com>
16563
16564         * metadata.c (mono_metadata_lookup_generic_class): The fully open
16565         generic type is not the same as the generic type definition.
16566         * class.c (mono_generic_class_get_class): Likewise.
16567
16568 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
16569
16570         * icall.c: The second argument to 
16571         System.Reflection.MethodBase.GetMethodFromHandleInternalType
16572         is a MonoType not a MonoClass.
16573
16574 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
16575
16576         * verify.c: support for function pointers in the verifier
16577
16578 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
16579
16580         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
16581
16582 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
16583
16584         * assembly.c: removed Mono.Data.SqliteClient from the list of
16585         forward-compatible assemblies as it breaks the ABI (bug #81899).
16586
16587 2007-06-19  Raja R Harinath  <rharinath@novell.com>
16588
16589         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
16590         lookup/update with the loader lock.
16591         * reflection.c (mono_class_bind_generic_parameters): No need to
16592         protect mono_metadata_lookup_* with the loader lock.
16593         * class.c (inflate_generic_type): Likewise.
16594         
16595         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
16596         on a generic instantiated type.
16597
16598 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
16599
16600         *verify.c: produce meanfull error messages on verification error
16601         *verify.c: fixed some cases of verification errors reported as validation errors
16602         *pedump.c: fixed the error name array, now it shows validation errors properly
16603         *verify.h: fixed the contant that should be used for verification errors
16604
16605 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
16606
16607         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
16608         for bug #77596, 81858 and 80743 (generics data structures on domain
16609         unload).
16610
16611 2007-06-15  Raja R Harinath  <rharinath@novell.com>
16612
16613         Avoid allocating 'MonoGenericContext' on the heap.
16614         * class-internals (_MonoMethodInflated::context): Make field
16615         inline, not a pointer.
16616         * loader.c (method_from_methodspec): Allocate 'new_context' on the
16617         stack.  Use the context embedded within the inflated method as the
16618         hash key, rather than 'new_context'.
16619         * class.c (inflate_generic_context): Simplify.  Return a struct
16620         rather than allocating on the heap.
16621         (mono_class_inflate_generic_method_full): Update to changes.  Now,
16622         doesn't salt away a copy of the context -- simplifying the
16623         lifetime rules of a 'MonoGenericContext *'.
16624         (mono_method_get_context): Return pointer to embedded context.
16625         (setup_generic_array_ifaces): Allocate temporary context on stack.
16626         * reflection.c (inflate_mono_method): Likewise.
16627         (mono_reflection_bind_generic_method_parameters): Likewise.
16628         Use the context embedded within the inflated method as the hash key.
16629
16630         Avoid a source of allocation of 'MonoGenericContext'.
16631         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
16632         and 'cached_context' fields into embedded 'MonoGenericContext' field.
16633         * class.c: Update to changes.
16634         (mono_generic_class_get_context): Simplify drastically.  Now just
16635         returns a pointer to the field.
16636         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
16637         argument as a const pointer.
16638         (mono_metadata_generic_context_equal): Likewise.
16639         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
16640         Update to changes.
16641
16642 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
16643
16644         * verify.c improved the handling of brtrue/brfalse, factored out common code
16645
16646 2007-06-14  Raja R Harinath  <rharinath@novell.com>
16647
16648         Kill MonoGenericMethod.
16649         * class-internals.h (MonoGenericContext::method_inst): Rename from
16650         'gmethod' and convert to a MonoGenericInst.
16651         (MonoGenericMethod): Remove.
16652         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
16653         * loader.c (method_from_methodspec): Update to changes.  Use a
16654         MonoGenericContext as the key to the hashtable.
16655         * metadata.c (mono_metadata_generic_context_equal): Rename from 
16656         'mono_metadata_generic_method_equal' and take MonoGenericContext.
16657         (mono_metadata_generic_context_hash): Likewise from
16658         'mono_metadata_generic_method_hash'.  Change hash function.
16659         (mono_metadata_load_generic_params): Update to changes.
16660         (mono_get_shared_generic_method): Remove.
16661         * metadata-internals.h (mono_get_shared_generic_method): Remove.
16662         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
16663         (inflate_generic_context): Likewise.
16664         (mono_class_inflate_generic_method_full): Likewise.
16665         (setup_generic_array_ifaces): Likewise.
16666         (mono_class_create_from_typespec): Likewise.
16667         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
16668         (method_encode_methodspec): Update callsite.
16669         (reflection_methodbuilder_to_mono_method): Update to changes.
16670         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
16671         MonoGenericContext as the key to the hashtable.
16672         (inflate_mono_method): Update to changes.
16673
16674         * class-internals.h (MonoGenericMethod::container): Remove.
16675         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
16676
16677 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
16678
16679         * profiler-private.h, profiler.c, profiler.h: added API to profile
16680         exception events.
16681
16682 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
16683
16684         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
16685
16686 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
16687
16688         * verify.c: method invocation is now validated, now we verify parameter types on stack.
16689         Fixed overflow and underflow not aborting the verification process.
16690
16691 2007-06-13  Mark Probst  <mark.probst@gmail.com>
16692
16693         * class-internals.h (MonoStats): Added stats entries for dynamic
16694         code allocations.
16695
16696 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
16697
16698         * loader.c (mono_free_method): Free header->locals and header->clauses.
16699
16700         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
16701         dynamic case.
16702
16703         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
16704
16705         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
16706
16707 2007-06-12  Raja R Harinath  <rharinath@novell.com>
16708
16709         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
16710         the tables.
16711
16712 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16713
16714         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
16715
16716 2007-06-11  Raja R Harinath  <harinath@gmail.com>
16717
16718         MonoGenericMethod on a diet
16719         * class-internals.h (_MonoMethodInflated::reflection_info): Move
16720         here ...
16721         (_MonoGenericMethod::reflection_info): ... from here.
16722         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
16723         Update to changes.
16724         * reflection.c (inflate_mono_method): Likewise.
16725         (mono_reflection_bind_generic_method_parameters): Likewise.
16726
16727 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16728
16729         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
16730         *verify.c: factored long ldarg forms to share code with short forms
16731
16732 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16733
16734         *verify.c: fixed code formating factored some duplicate code
16735         into a new function
16736
16737         *verify.h: fixed binary incompatibility introduced earlier
16738
16739         *pedump.c: fixed formating
16740
16741 2007-06-11  Raja R Harinath  <harinath@gmail.com>
16742
16743         Fix assertion when disassembling Mono.C5.dll
16744         * loader.c (method_from_methodspec): Avoid inflating a method
16745         twice with the same context.  If the methodref is inflated, use
16746         the declaring method instead.
16747
16748         * class.c (mono_class_from_generic_parameter): Fix case similar to
16749         bug #81830 handled below, but for method containers.
16750
16751 2007-06-10  Raja R Harinath  <harinath@gmail.com>
16752
16753         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
16754         get_shared_generic_class.  Directly inflate the instance.
16755         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
16756         (inflate_generic_class): Delete.
16757         (get_shared_generic_class): Delete.  Move setting of
16758         'cached_class' and 'cached_context' ...
16759         * metadata.c (mono_metadata_lookup_generic_class): ... here.
16760
16761         * metadata.c (mono_metadata_lookup_generic_class): Change
16762         signature to take the components of a MonoGenericClass rather than
16763         an allocated MonoGenericClass.  Change semantics to be intern-like.
16764         * reflection.c (mono_class_bind_generic_parameters): Update to
16765         changes.  Make locking region tighter.
16766         * class.c (inflate_generic_class): Update to changes.
16767         (get_shared_generic_class): Likewise.
16768         * metadata-internals.h: Likewise.
16769
16770         * reflection.c (mono_class_bind_generic_parameters): Take and
16771         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
16772         (mono_reflection_bind_generic_parameters): Use
16773         'mono_class_bind_generic_parameters' rather than duplicate the code.
16774         * class.c (mono_bounded_array_class_get): Update to changes.
16775         * object-internals.h: Likewise.
16776
16777         * reflection.c (mono_class_bind_generic_parameters): Only support
16778         parameterizing generic type definitions.  Remove support for other
16779         open types.
16780
16781 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
16782
16783         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
16784
16785         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
16786         in the dynamic case.
16787
16788 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
16789
16790         * threads.c: When cleaning up thread, reset the Background bit.
16791         Fixes bug #81720.
16792
16793 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
16794
16795        * metadata.c: Move variable declarations to top of scope.
16796        * verify.c: Move variable declarations to top of scope.
16797
16798        Code is contributed under MIT/X11 license.
16799
16800 2007-06-08  Raja R Harinath  <rharinath@novell.com>
16801
16802         * reflection.c (mono_class_bind_generic_parameters): Replace
16803         open-coded loop with mono_metadata_inflate_generic_inst.
16804
16805         * class.c (get_shared_generic_class): Don't call
16806         mono_get_shared_generic_inst.  Use the container's own
16807         'class_inst'.
16808
16809         * metadata.c (mono_metadata_load_generic_params): Move
16810         initialization of 'context' field here from ...
16811         * class.c (mono_class_create_from_typedef): ... here, and ...
16812         * loader.c (mono_get_method_from_token): ... here.
16813
16814         * class.c (get_shared_generic_class): Rename from
16815         mono_get_shared_generic_class and make static.
16816         (mono_get_shared_generic_inst): Move to metadata.c.
16817         * loader.c (mono_get_shared_generic_method): Likewise.
16818         * class-internals.h, metadata-internals.h: Update to changes.
16819
16820         Fix #81830
16821         * class.c (mono_class_from_generic_parameter): Don't assume a
16822         generic container owner exists.  Generic containers from monodis
16823         don't have any.
16824
16825 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
16826
16827         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
16828         * verify.h: new typedefs to returns the non-verifiable status
16829         * verify.c: initial implementation of generics, stack merging and object compatibility check
16830
16831 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16832
16833         * class.c, image.c, class-internals.h (MonoImage): class_cache is
16834         a MonoInternalHashTable again (fixed bug in internal hash table
16835         code).
16836
16837 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16838
16839         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
16840         MonoInternalHashTable again (fixed bug in internal hash table
16841         code).
16842
16843 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16844
16845         * class.c, image.c, class-internals.h, domain.c,
16846         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
16847         changes.  Have to figure out what makes them break the SWF
16848         regression.
16849
16850 2007-06-04  Mark Probst  <mark.probst@gmail.com>
16851
16852         * class.c, image.c, class-internals.h (MonoImage): class_cache is
16853         a MonoInternalHashTable now.
16854
16855 2007-06-04  Mark Probst  <mark.probst@gmail.com>
16856
16857         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
16858         MonoInternalHashTable now.
16859
16860 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
16861
16862         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
16863         invoke_impl code.
16864
16865         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
16866
16867         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
16868         dependent trampoline.
16869
16870         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16871
16872         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
16873
16874 2007-05-29  Robert Jordan  <robertj@gmx.net>
16875
16876         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
16877
16878 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
16879
16880         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
16881
16882 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
16883
16884        * marshal.c: Fix interface lookup loops for
16885        cominterop_get_com_slot_for_method and 
16886        cominterop_get_method_interface. Only need to lookup
16887        if type is a class, else use interface type method is on.
16888
16889        Code is contributed under MIT/X11 license.
16890
16891 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
16892
16893         * reflection.c: HasSecurity can be present even if no specially 
16894         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
16895         SecurityAttribute). Fix CAS regression tests on buildbot.
16896
16897 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
16898
16899        * appdomain.c: Add configure checks for header files.
16900        * image.c: Add configure checks for header files.
16901        * file-io.c: Add configure checks for header files.
16902        * debug-mono-symfile.c: Add configure checks for header files.
16903        * threadpool.c: Add configure checks for header files.
16904        * console-io.c: Add configure checks for header files.
16905        * profiler.c: Add configure checks for header files.
16906        * rawbuffer.c: Add configure checks for header files.
16907        * icall.c: Add configure checks for header files.
16908        * rand.c: Add configure checks for header files.
16909        * socket-io.c: Add configure checks for header files.
16910
16911        Code is contributed under MIT/X11 license.
16912
16913 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
16914
16915         * reflection.c (mono_custom_attrs_from_builders): Remove the 
16916         assertion as it breaks the build.
16917         
16918         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
16919
16920         * reflection.c (lookup_custom_attr): Make a copy here too.
16921
16922         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
16923         dynamic images.
16924
16925         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
16926         images.
16927
16928         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
16929         info.
16930
16931 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
16932
16933         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
16934         (load_cattr_value): Ditto.
16935
16936 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
16937
16938         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
16939
16940 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
16941
16942         * threads.c: In "start_wrapper", set apartment_state to MTA if
16943         apartment_state is Unknown and we're running on 2.0 profile or
16944         higher.
16945         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
16946         to main method, then set apartment_state to Unknown on 1.0 profile,
16947         and MTA on 2.0 profile.
16948
16949 2007-05-16  Jb Evain  <jb@nurv.fr>
16950
16951         * class-internals.h (MonoDefaults): Add an attribute_class and
16952           customattribute_data_class.
16953         * domain.c (mono_init_internal): Populate them.
16954         * reflection.c: Use them to remove duplicates. Make a vew
16955         MonoClass variables `static'.
16956
16957 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
16958
16959         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
16960         step in implementing IMT, so that all isinst checks now can go
16961         through the bitmap.
16962         This was needed because vtables for TransparentProxy need to look
16963         like the vtable of the "target" class, so they need to point to
16964         its interface bitmap directly.
16965
16966         * object.c: inside "mono_class_create_runtime_vtable" and
16967         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
16968
16969 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
16970
16971         * object-internals.h
16972           culture-info.h : added territory field in MonoCulture and
16973           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
16974         * locales.c : fill territory field above too.
16975         * culture-info-table.h : regenerated.
16976
16977 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
16978
16979         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
16980         Fixes #81599.
16981
16982 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
16983
16984         * object.c: Always initialize apartment, even if 
16985         there is no custom attributes on entry point.
16986         
16987         Code is contributed under MIT/X11 license.
16988
16989 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
16990
16991         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
16992         * metadata.c: If no encoding is set, check for unicode
16993         on class.
16994         
16995         Code is contributed under MIT/X11 license.
16996
16997 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
16998
16999         * threads.c: Handle if mono_thread_current returns NULL 
17000         
17001         Code is contributed under MIT/X11 license.
17002
17003 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
17004
17005         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
17006         in start_wrapper. Added mono_thread_init_apartment_state and
17007         mono_thread_cleanup_apartment_state.
17008         * object.c: Initialize thread apartment state on main thread
17009         by checking for STAThreadAttribute on entry point.
17010         * object-internals.h: Add apartment_state field to MonoThread.
17011         * threads-types.h: Add unmanaged definition of 
17012         System.Threading.ApartmentState, MonoThreadApartmentState.
17013         
17014         Code is contributed under MIT/X11 license.
17015         
17016 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
17017
17018         * class.c: Fix windows build.
17019         * class-internals.h: Fix windows build.
17020         
17021         Code is contributed under MIT/X11 license.
17022
17023 2007-05-08  Robert Jordan  <robertj@gmx.net>
17024
17025         * process.c (CreateProcess_internal):
17026         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
17027         .CreateNoWindow was specified. Fixes #81496.
17028
17029 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
17030
17031         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
17032         step in implementing IMT, replaced it with two compact arrays
17033         (interfaces_packed and interface_offsets_packed) and a bitmap that
17034         is used for isinst checks (interface_bitmap).
17035
17036         * class.c: (compare_interface_ids): compare function to pass to
17037         bsearch when looking for an interface with a given id.
17038         (mono_class_interface_offset): reimplemented using bsearch on
17039         interfaces_packed, getting the offset from interface_offsets_packed.
17040         (print_implemented_interfaces): utility debugging function.
17041         (setup_interface_offsets): reworked to initialize interfaces_packed,
17042         interface_offsets_packed and interface_bitmap.
17043
17044         * object.c: replaced all accesses to "MonoClass.interface_offsets"
17045         with uses of interfaces_packed and interface_offsets_packed.
17046
17047 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
17048
17049         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
17050         mono_class_interface_offset prototype to wrap all accesses to
17051         "MonoClass.interface_offsets".
17052
17053         * class.c: Implemented mono_class_interface_offset, and wrapped all
17054         accesses to "MonoClass.interface_offsets".
17055
17056         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
17057         "MonoClass.interface_offsets".
17058
17059 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
17060
17061         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
17062         GetMethodFromHandle overloads (bug #78637).
17063
17064 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
17065
17066         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
17067         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
17068
17069 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
17070
17071         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
17072         #81498.
17073
17074         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
17075         gracefully.
17076         (mono_custom_attrs_from_index): Ditto.
17077
17078         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
17079         Fixes #81501.
17080
17081 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
17082
17083         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
17084         is now allocated from a mempool.
17085
17086 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
17087
17088         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
17089         caller holds threads_lock, leading to deadlocks. Fixes #81476.
17090
17091 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
17092
17093         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
17094         mono_loader_clear_error () too late. Fixes #81463.
17095
17096 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
17097
17098         * culture-info-table.h : regenerated.
17099
17100 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
17101
17102         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
17103         is missing.
17104
17105 2007-04-25  Dick Porter  <dick@ximian.com>
17106
17107         * Makefile.am: Put the mingw enforced-optimisation back into the
17108         PLATFORM_WIN32 section.
17109
17110 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
17111
17112         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
17113         patch.
17114
17115         * image.c (mono_image_load_module): New API function to load a module reference.
17116
17117         * image.c (load_modules): Load modules lazily. Fixes #80812.
17118
17119         * class.c (mono_class_from_typeref): Use mono_image_load_module.
17120         
17121         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
17122
17123         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
17124         to mono_image_load_module_dynamic.
17125
17126 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
17127
17128         * marshal.c: Fix calling convention for CCW on non-windows
17129         platforms. STDCALL on windows, CDECL everywhere else to work 
17130         with XPCOM and MainWin COM.
17131         
17132         Code is contributed under MIT/X11 license.
17133
17134 2007-04-23  Martin Baulig  <martin@ximian.com>
17135
17136         Fix #80969.
17137
17138         * loader.c
17139         (method_from_memberref): Added `gboolean *used_context' argument.
17140         (mono_get_method_from_token): Likewise.
17141         (mono_get_method_full): Don't insert the method in the cache when
17142         `used_context' is true.
17143
17144 2007-04-23  Raja R Harinath  <rharinath@novell.com>
17145
17146         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
17147
17148         * reflection.c (mono_reflection_bind_generic_parameters): Don't
17149         create new MonoTypes for returned types.
17150         * class.c (mono_generic_class_get_class): Export mono-internal.
17151         * class-internals.h: Update to changes.
17152
17153 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
17154
17155         * threadpool.c, threadpool.h, icall-def.h: patch from
17156         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
17157
17158 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
17159
17160         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
17161         
17162         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
17163
17164         * threads.c (mono_thread_get_stack_bounds): New helper function.
17165
17166         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
17167         Correctly compute stack bounds when attaching. Fixes #81394.
17168
17169 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
17170
17171         * reflection.c: fix handling of doubles in custom attributes
17172         for the arm-fpa format (bug #81368).
17173
17174 2007-04-18  Raja R Harinath  <rharinath@novell.com>
17175
17176         * reflection.c (assembly_add_win32_resources): Mildly relax an
17177         bounds check to let the end pointer point just past the end of the
17178         allocated buffer.  (may fix #81384)
17179
17180 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
17181
17182         * culture-info-table.h : regenerated.
17183
17184 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
17185
17186         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
17187         the thread is aborted early.
17188
17189 2007-04-05  Dick Porter  <dick@ximian.com>
17190
17191         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
17192         FindFirstFile()/FindNextFile() to find entries.  This lets the
17193         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
17194         81038.
17195
17196         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
17197         the parameters of
17198         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
17199
17200 2007-04-04  Martin Baulig  <martin@ximian.com>
17201
17202         * debug-helpers.c
17203         (mono_method_desc_full_match): Add support for nested classes.
17204
17205 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
17206
17207         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
17208
17209 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
17210
17211         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
17212         waiting for too many threads.
17213
17214 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
17215
17216         * environment.c: Fix return value check on uname so we can get the 
17217         executing version on Solaris operating systems.
17218
17219 2007-03-28  Jb Evain  <jbevain@gmail.com>
17220
17221         * class.c (mono_type_get_name_recurse): Complete the
17222         fix for the creation of assembly qualified names for
17223         pointer types. Fixes #81208.
17224
17225 2007-03-27  Dick Porter  <dick@ximian.com>
17226
17227         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
17228         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
17229         changed.
17230
17231         * threads.c
17232         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
17233         the value of ReleaseMutex().
17234
17235 2007-03-27  Dick Porter  <dick@ximian.com>
17236
17237         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
17238         in little-endian order, not network endian, so must be converted
17239         to host endian here.  Fixes bug 80593.
17240
17241 2007-03-22  Jb Evain  <jbevain@gmail.com>
17242
17243         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
17244         qualified names for pointer types. Fixes #81208.
17245
17246 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
17247
17248         * marshal.c: Add support for PreserveSigAttribute. 
17249         
17250         Code is contributed under MIT/X11 license.
17251
17252 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
17253
17254         * process.c: Fix endianness issues. Fixes #81126.
17255
17256         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
17257         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
17258
17259         * image.c (mono_image_lookup_resource): Make this work on big-endian
17260         machines.Change API contract so the caller needs to free the return value.
17261         
17262         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
17263         API change.
17264         
17265 2007-03-14  Martin Baulig  <martin@ximian.com>
17266
17267         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
17268         mono_type_get_desc() as well.
17269
17270 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
17271
17272         * icall.c:  Fix environ access in VS.  
17273         
17274 2007-03-13  Alp Toker  <alp@atoker.com>
17275
17276         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
17277         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
17278         #63841.
17279
17280 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
17281
17282         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
17283         circular references among dynamic methods. Fixes #81091.
17284
17285         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
17286
17287 2007-03-09  Martin Baulig  <martin@ximian.com>
17288
17289         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
17290
17291 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
17292
17293         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
17294         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
17295         
17296         Code is contributed under MIT/X11 license.
17297         
17298 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
17299
17300         * loader.c: Reapply patch for bug #79424.
17301
17302 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
17303
17304         * metadata.c (mono_type_to_unmanaged): Only convert object to
17305         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
17306
17307 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
17308
17309         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
17310         (and incorrectly set) is_reference field from MonoGenericInst.
17311
17312 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
17313
17314         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
17315         a little earlier.
17316
17317         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
17318
17319         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
17320
17321 2007-03-05  Miguel de Icaza  <miguel@novell.com>
17322
17323         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
17324         FileOptions.1 value to mean "temporary", map that to
17325         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
17326
17327         Fixes 80688
17328
17329 2007-03-03  Marek Habersack  <mhabersack@novell.com>
17330
17331         * appdomain.c: implement MS .Net style shadow copying. Copies of
17332         the assemblies are made in a subdirectory of the dynamic base
17333         directory, the assembly names are preserved.
17334         Copy .mdb and .config files along with the assemblies being shadowed.
17335
17336 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
17337
17338         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
17339         (emit_marshal_handleref): Ditto.
17340
17341         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
17342         on Visual C++. Fixes #80671.
17343
17344 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
17345
17346         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
17347         for clone operations.
17348
17349 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
17350
17351         * marshal.c: Fix warnings.
17352
17353 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
17354
17355         * loader.c: allow case-insensitive matching of the dll name
17356         in dllmap handling when prefixed with "i:".
17357
17358 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
17359
17360         * threads.c: Fix #ifdef for dummy_apc function for VS.
17361
17362 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
17363
17364         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
17365
17366 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
17367         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
17368         giving precedence to the methods with a fully qualified name
17369         (InterfaceName.MethodName) when building the interface sections
17370         of the vtable.
17371
17372 2007-02-16  Dick Porter  <dick@ximian.com>
17373
17374         * threadpool.c (append_job): Fix fast-path array handling, so it's
17375         less likely the array will grow exponentially when the load is
17376         heavy.
17377
17378 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
17379
17380         * metadata-internals.h, loader.c: fix dllmap lookup order
17381         for non-function maps, too, and prepare for fallback code.
17382
17383 2007-02-12  Robert Jordan  <robertj@gmx.net>
17384
17385         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
17386         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
17387         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
17388         GlobalFree. Fixes a part of bug #77075.
17389
17390 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
17391
17392         * loader.c: implemented typedef parent in field memberref.
17393
17394 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
17395
17396         * marshal.c: Fix warnings and remember to call Release on
17397         IUnknown of RCW.
17398         
17399         Code is contributed under MIT/X11 license.
17400
17401 2007-02-10  Miguel de Icaza  <miguel@novell.com>
17402
17403         * class-internals.h: Add MonoHandleRef definition, and
17404         handleref_class to mono_defaults. 
17405
17406         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
17407         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
17408
17409         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
17410         (do nothing on this stage)
17411         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
17412         (emit_marshal_handleref): New method, used for argument handling
17413         of HandleRefs. 
17414
17415 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
17416
17417         * class.c (mono_class_setup_parent): Lazily init com types.
17418         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
17419         init com types.
17420         * object.c (mono_remote_class_vtable): Lazily init com types.
17421         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
17422         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
17423         * domain-internals.h: Expose mono_init_com_types.
17424         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
17425         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
17426         Add support for COM Callable Wrapper marshalling.
17427         * marshal.h: Add icall definitions.
17428         * gc.c: Handle freeing of CCWs in finalizer code.
17429         
17430         Code is contributed under MIT/X11 license.
17431
17432 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
17433
17434         * reflection.c: changed all the signature encoding code to use
17435         a variable-sized buffer.
17436
17437 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
17438
17439         * marshal.c: locking fixes: never take the loader lock
17440         or other runtime locks when holding the marshal lock
17441         (fixes bug#80664).
17442
17443 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
17444
17445         * marshal.c: make the delegate function pointer mapping
17446         work for the moving GC.
17447
17448 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
17449
17450         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
17451         for bug #80618.
17452
17453 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
17454
17455         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
17456         gmodule.
17457
17458 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
17459
17460         * threadpool.c: made the code moving-GC safe.
17461
17462 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
17463
17464         * assembly.c, boehm-gc.c, class-internals.h, class.c,
17465         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
17466         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
17467         warning cleanup.
17468         * reflection.c: warning cleanup, some threading and moving GC fixes.
17469
17470 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
17471
17472         * class.c, loader.c: create the needed Set/Get/Address array methods
17473         as well as the .ctors in mono_class_init (), fixes bug #80567.
17474
17475 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
17476
17477         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
17478         we doesn't decrease its alignment. Should fix the sparc build.
17479
17480 2007-01-24  Dick Porter  <dick@ximian.com>
17481
17482         * socket-io.c
17483         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
17484         Create the returned object if we need to ignore an unsupported
17485         socket option.  Fixes a segfault reported by Atsushi.
17486
17487 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
17488
17489         * class.c, object.c: restrict GC-tracked fields to
17490         UIntPtr fields used inside corlib, so we provide better
17491         type info to the GC and also allow broken packing as in
17492         bug #80580.
17493
17494 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
17495
17496         * sgen-gc.c: removed duplicated function.
17497
17498 2007-01-19  Miguel de Icaza  <miguel@novell.com>
17499
17500         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
17501         value that means that the value is not supported, but that we
17502         should not return a failure, but instead report this as a
17503         successful operation.
17504
17505 2007-01-19  Raja R Harinath  <rharinath@novell.com>
17506
17507         Fix tests/bug79956.2.il
17508         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
17509         (mono_generic_class_get_class): If the generic definition in an
17510         enum, copy over other fields related to it.
17511
17512 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
17513
17514         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
17515         genericinst enums (bug #79215).
17516
17517 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
17518         * class.c: Fix bug 80307.
17519
17520 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
17521
17522         * image.c: if the file table is not present, try to load
17523         all the modules, since we don't have info about them
17524         having or not metadata (bug #80517).
17525         * assembly.c: allow mono_assembly_load_references () to
17526         work for netmodules.
17527
17528 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
17529
17530         * image.c, metadata-internals.h, object.c: execute module
17531         cctors when running on the 2 runtime if present (bug #80487).
17532
17533 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
17534
17535         * icall.c: optimized InitializeArray() on bigendian.
17536
17537 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
17538
17539         * icall.c: fix for the broken ARM FPA double format.
17540
17541 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
17542
17543         * icall.c: handle endian issues for r4 and r8 types, too, in
17544         the InitializeArray() icall.
17545
17546 2007-01-15  Miguel de Icaza  <miguel@novell.com>
17547
17548         * loader.c (mono_loader_error_prepare_exception): Clear the error
17549         once we have extracted the information from it, do this before we
17550         call into the JIT's class loading mechanisms.
17551
17552         * object.c (mono_class_create_runtime_vtable): Do not clear the
17553         loader error before calling mono_class_get_exception_for_failure
17554         as the loader error is needed inside
17555         mono_class_get_exception_for_failure to throw the error (thinko).
17556
17557         Fixes #80521
17558         
17559 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
17560
17561         * reflection.c: align fields rva data so it's faster to load at
17562         runtime.
17563
17564 2007-01-12  Raja R Harinath  <rharinath@novell.com>
17565
17566         Prepare to simplify GenericMethod handling.
17567         * class-internals.h (mono_method_get_context): New accessor function.
17568         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
17569         rather than directly accessing '->context' field.
17570
17571         * class-internals.h (_MonoGenericParam.method): Move ...
17572         (_MonoGenericContainer): ... here.  Add into union with klass field.
17573         * class.c, icall.c, loader.c, metadata.c, reflection.c:
17574         Update to changes.
17575
17576 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
17577
17578         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
17579         the wrapper type enum and reduce relocations.
17580
17581 2007-01-12  Raja R Harinath  <rharinath@novell.com>
17582
17583         * reflection.c (inflate_mono_method): Reuse method instantiation
17584         from the generic method, if available.
17585
17586 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17587
17588         * marshal.c (emit_marshal_variant): Fix conv_arg
17589         type in last commit, based on whether parameter is byref.
17590         
17591 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17592
17593         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
17594         marshalling.
17595         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
17596         MONO_TYPE_OBJECT back for VARIANT support.
17597
17598 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17599
17600         * marshal.c, marshal.h, icall-def.h: Implement 
17601         Marshal.ReAllocCoTaskMem.
17602
17603 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
17604
17605         * marshal.c: memory retention fixes: use the proper
17606         image cache for runtime_invoke method lookups.
17607
17608 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
17609
17610         * mempool.c: added code to help debug mempool allocations.
17611
17612 2007-01-11  Dick Porter  <dick@ximian.com>
17613
17614         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
17615         support (experimenting with faking it with IP_MTU_DISCOVER for
17616         systems that don't have IP_DONTFRAGMENT.)
17617         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
17618         icall.
17619
17620         * icall-def.h: new System.Net.Sockets.Disconnect icall.
17621
17622         * socket-io.h: Add new fields to MonoSocketAsyncResult
17623         corresponding to the new ones in Socket.cs.
17624
17625 2007-01-11  Raja R Harinath  <rharinath@novell.com>
17626
17627         Fix IronPython regression mentioned in #80249
17628         * metadata.c (do_mono_metadata_parse_generic_class): Clear
17629         'cached_context' field, since it may have been initialized as a
17630         side-effect of metadata parsing.
17631
17632         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
17633         (_MonoGenericClass.cached_class): Move here and rename from lone
17634         remaining field of ...
17635         (_MonoInflatedGenericClass): ... this.  Remove.
17636         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
17637         to changes.
17638
17639         Fix mcs/tests/test-128.cs regression.
17640         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
17641         2007-01-10 change below.
17642         [MONO_TYPE_OBJECT]: Recurse into array case.
17643
17644 2007-01-11  Raja R Harinath  <harinath@gmail.com>
17645
17646         * class-internals.h (mono_get_inflated_generic_class): Remove.
17647         * class.c (mono_get_inflated_generic_class): Remove.
17648         (mono_generic_class_get_class): Rename from
17649         mono_class_create_generic.
17650         (mono_class_from_mono_type) [GENERICINST]: Use it.
17651         * reflection.c, metadata.c: Update to changes.  Use
17652         'mono_class_from_mono_type'.
17653
17654 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
17655
17656         * reflection.c: use passed type when encoding an array element
17657         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
17658
17659 2007-01-09  Robert Jordan  <robertj@gmx.net>
17660
17661         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
17662         result arguments (someDelegate.EndInvoke (unrelatedAres)).
17663         Fixes bug #80392.
17664
17665 2007-01-09  Raja R Harinath  <rharinath@novell.com>
17666
17667         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
17668
17669         * object.c (set_value): Avoid aliasing between type->data.klass
17670         and type->data.generic_class.
17671
17672         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
17673
17674 2007-01-08  Raja R Harinath  <rharinath@novell.com>
17675
17676         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
17677         between type->data.klass and type->data.generic_class.
17678
17679 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
17680
17681         * marshal.c: In MS.NET, StringBuilder objects are not copied by
17682         value in out parameters.
17683
17684 2007-01-08  Raja R Harinath  <rharinath@novell.com>
17685
17686         Simplify invariant for MonoGenericClass::klass field.
17687         * class.c (mono_class_create_generic): Verify 'klass' is null.
17688         * metadata.c (do_mono_metadata_parse_generic_class): Don't
17689         initialize 'klass' field.
17690
17691 2007-01-05  Raja R Harinath  <rharinath@novell.com>
17692
17693         Ongoing work to avoid redundant data and simplify invariants.
17694         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
17695         'generic_class', and change type to a GenericInst.
17696         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
17697         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
17698
17699 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
17700
17701         * class.c : skip io-layer under PLATFORM_WIN32.
17702
17703 2007-01-03  Tor Lillqvist  <tml@novell.com>
17704
17705         Fix #80305: In a bundled executable, look in the bundled exe
17706         assembly to determine the runtime version. Add the possibility to
17707         bundle also the machine.config file.
17708         
17709         * assembly.c (mono_assembly_open_from_bundle): Make
17710         non-static. Allow being called even if we have no bundled
17711         assemblies, and return NULL right away in that case.
17712
17713         * domain-internals.h: Declare mono_assembly_open_from_bundle()
17714         here.
17715
17716         * domain.c (app_config_parse): Take an assembly exe file name as
17717         parameter instead of a config file name. Check for a bundled
17718         config file for that assembly by calling
17719         mono_config_string_for_assembly_file() (see below) before looking
17720         for one in the file system.
17721         (get_runtimes_from_exe): Corrsponding change to call of
17722         app_config_parse().
17723         (get_runtimes_from_exe): Check for bundled assembly exe file first
17724         by calling mono_assembly_open_from_bundle(). If no bundled
17725         assembly exe file is found, call mono_image_open() as before to
17726         look it up in the file system.
17727
17728         * mono-config.c: Add variable bundled_machinec_onfig.
17729         (mono_config_string_for_assembly_file): New function.
17730         (mono_config_for_assembly): Move code snippet that looks for a
17731         bundled assembly .config file into the above new function. Call
17732         it.
17733         (mono_register_machine_config, mono_get_machine_config): New
17734         functions to set and retrieve
17735
17736         * assembly.h: Declare mono_register_machine_config().
17737
17738         * mono-config.h: Declare mono_get_machine_config() and
17739         mono_config_string_for_assembly_file().
17740
17741         * icall.c: No declaration of environ necessary on Win32. It is
17742         declared (as a macro expanding to a function call) in stdlib.h.
17743         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
17744         New internal mono function. Returns the value of
17745         mono_get_machine_config() as a Mono string.
17746
17747         * icall-def.h: Add get_bundled_machine_config().
17748
17749 2007-01-04  Raja R Harinath  <rharinath@novell.com>
17750
17751         Remove redundant field
17752         * class-internals.h (_MonoGenericContext.container): Remove field.
17753         * loader.c (mono_method_get_signature_full): Don't parse a
17754         "container" for a signature parse when the signature is inflated
17755         immediately.
17756         (method_from_methodspec): Likewise, for a generic_inst.
17757         * class.c, metadata.c, reflection.c: Update to changes.
17758
17759 2006-01-04  Raja R Harinath  <rharinath@novell.com>
17760
17761         * class-internals.h (_MonoGenericClass): Rename 'context' field to
17762         'cached_context', and change semantics -- it starts off NULL, and
17763         is initialized on demand.
17764         * class.c (mono_generic_class_get_context): New accessor to
17765         replace 'context' field accesses.
17766         (mono_class_get_context): New helper.
17767         (*): Update to changes.
17768         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
17769
17770 2007-01-03  Miguel de Icaza  <miguel@novell.com>
17771
17772         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
17773         before the memcpy.   Fixes Marshal2 regression.
17774
17775 2007-01-02  Jb Evain  <jbevain@gmail.com>
17776
17777         * blob.h: add a MONO_TYPE_ENUM definition
17778         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
17779         fix the encoding of arrays of enums in custom attributes.
17780
17781         Fixes #79666.
17782
17783 2007-01-01  Miguel de Icaza  <miguel@novell.com>
17784
17785         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
17786         string is null terminated, but only cut the string short if it
17787         overflows the buffer.   
17788         
17789         (mono_string_to_byvalstr): Also fix this routine.   The code here
17790         was not properly terminating a string (it was only terminated
17791         because of the previous catch-all memset). 
17792
17793         I left the memset, because I do not know if applications expect
17794         the runtime to clear this region. 
17795
17796         Fixes #79944.
17797
17798         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
17799         Clear the error before returning to unmanaged code to prevent the
17800         runtime from being confused later on (fixes  80420).
17801         (ves_icall_type_from_name): Always call mono_loader_clear_error
17802         after parsing a type that could have failed.
17803         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
17804
17805         * loader.c (mono_loader_clear_error): Fix indentation.
17806
17807 2006-12-28  Martin Baulig  <martin@ximian.com>
17808
17809         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
17810
17811 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17812
17813         * reflection.c: patch from Rolf Bjarne Kvinge to fix
17814         getting a token for an EnumBuilder.
17815
17816 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
17817
17818         * reflection.c: be more careful in case resource generation
17819         fails to create the data array.
17820
17821 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
17822
17823         * sgen-gc.c: write barrier for clone and fix unregister handles.
17824
17825 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17826
17827         * reflection.c: some fixes needed in the generics code for the moving GC.
17828
17829 2006-12-22  Robert Jordan  <robertj@gmx.net>
17830
17831         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
17832         account. Fixes bug #80299.
17833
17834 2006-12-21  Raja R Harinath  <rharinath@novell.com>
17835
17836         Fix WaitHandle usage in delegates.
17837         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
17838         * object.c (mono_wait_handle_new): Use the property set method to
17839         initialize the handle.
17840         (mono_wait_handle_get_handle): New.
17841         * threadpool.c (mono_async_invoke): Use it.
17842         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
17843         Likewise.
17844         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
17845
17846 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
17847
17848         * marshal.c (emit_marshal): Call emit_marshal_variant and
17849         emit_marshal_com_interface when applicable.
17850         (emit_marshal_variant, emit_marshal_com_interface): Add
17851         methods for this case and remove if's from emit_marshal_object.
17852         
17853 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
17854
17855         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
17856
17857 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
17858
17859         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
17860         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
17861         and GlobalFree on Windows. Remove FIXME.
17862
17863 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17864
17865         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
17866         implementation for managed objects.
17867
17868 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
17869
17870         * object.c: implemented code to be used for checking
17871         that no reference field overlaps with non-references.
17872
17873 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
17874
17875         * threadpool.c: fix queue code to be compatible with the
17876         moving GC.
17877
17878 2006-12-18  Miguel de Icaza  <miguel@novell.com>
17879
17880         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
17881         in structures by throwing ArgumentNullException.
17882
17883         (emit_marshal_safehandle): Also when they are null parameters.
17884
17885         (emit_marshal_safehandle): Add support for ref
17886         SafeHandles parameters
17887
17888 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
17889
17890         * profiler.c: updated to use the mono-dl API instead of
17891         gmodule.
17892
17893 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
17894
17895         * profiler.c: updated to use the mono-dl dynamic loading
17896         API instead of gmodule.
17897
17898 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17899
17900         * profiler.c: use readlink, older versions of glib don't have
17901         g_file_read_link ().
17902
17903 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
17904
17905         * profiler.c: try to detect the path to mono if libc fails to provide
17906         a useful name (bug #80286).
17907
17908 2006-12-16  Raja R Harinath  <rharinath@novell.com>
17909
17910         Fix #80242
17911         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
17912         instance, use the generic type definition instead.
17913         (ves_icall_Type_GetNestedTypes): Likewise.
17914         * class.c (mono_class_create_generic): Always set the
17915         nested_classes of a generic instance to NULL, even if the generic
17916         type definition has nested types.
17917
17918 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
17919
17920         * marshal.c (mono_string_from_bstr): Revert previous Windows change
17921         and fix on Linux.
17922         
17923 2006-12-15  Miguel de Icaza  <miguel@novell.com>
17924
17925         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
17926         my arguments were in the wrong order.   I also fixed the Windows
17927         version which seems to have had the same issue.
17928
17929         (mono_free_bstr): On Unix, this is g_free.
17930         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
17931         conversions (for the tests in corlib to pass).
17932
17933 2006-12-14  Miguel de Icaza  <miguel@novell.com>
17934
17935         * marshal.c (emit_ptr_to_object_conv): For now, ignore
17936         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
17937         exception if a ref SafeHandle in a struct has changed).
17938         
17939         (emit_struct_conv): Do not perform layout checks for classes
17940         derived from SafeHandle, as those are specially handled. 
17941
17942         (emit_object_to_ptr_conv): Add support for
17943         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
17944
17945         (emit_marshal_safehandle): Implement conversion of return values
17946         of safehandles (MARSHAL_ACTION_CONV_RESULT).
17947         
17948         * threads.c: WaitHandle now is compiled with two different handles
17949         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
17950         for 2.0.
17951         
17952         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
17953         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
17954         these routines to cope with both kinds of fields.
17955
17956 2006-12-12  Miguel de Icaza  <miguel@novell.com>
17957
17958         * metadata.c (mono_type_to_unmanaged): Handle the case where
17959         type->data.klass is a SafeHandle, and in that case, return the
17960         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
17961         MONO_MARSHAL_CONV_SAFEHANDLE. 
17962
17963 2006-12-11  Miguel de Icaza  <miguel@novell.com>
17964
17965         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
17966         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
17967         calling emit_marshal_object.
17968
17969         (emit_marshal_safehandle): Implement marshalling of
17970         SafeHandle parameters (no ref support yet).
17971
17972         (MarshalAction): Document the defines as I implement
17973         them for SafeHandle.
17974
17975         (emit_marshal_object): indentation police.
17976
17977         * class-internals.h: Define MonoSafeHandle.
17978         Add safehandle_class to MonoDefaults type.
17979
17980         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
17981         list of classes to check for fields. 
17982
17983         * domain.c (mono_init_internal): Add SafeHandle to the list of
17984         mono_defaults loaded.
17985
17986 2006-12-15  Raja R Harinath  <rharinath@novell.com>
17987
17988         Fix #80253
17989         * reflection.c (mono_reflection_bind_generic_parameters): If the
17990         generic type definition is a type builder, ensure that it is fully
17991         initialized before instantiating it.  Kill some dead code.
17992
17993 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17994
17995         * object.c: clear the loader_error () before loading
17996         more metadata stuff (bug #80258).
17997
17998 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
17999
18000         * icall.c, icall-defs.h: type modifiers icalls for
18001         parameters and properties.
18002
18003 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
18004
18005         * object.c, icall.c: fixed warnings.
18006
18007 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18008
18009         * marshal.c: fixed a couple of leaks and coding style in a few places.
18010
18011 2006-12-08  Dick Porter  <dick@ximian.com>
18012
18013         * process.c: Cope with NULL ProcessStartInfo arguments on windows
18014         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
18015         80173.
18016
18017 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
18018
18019         * process.c: ProcessStartInfo may have only filename set and
18020         arguments can be NULL.
18021
18022 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
18023
18024         * icall.c: fix leak found by Robert Jordan.
18025
18026 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18027
18028         * marshal.c, marshal.h: generate managed method to access an element
18029         of a multi-dimensional array.
18030
18031 2006-11-30  Paolo Molaro (lupus@ximian.com)
18032
18033         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
18034
18035 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
18036
18037         * icall.c: back out GetFields () fix until the serialization code is
18038         fixed to not depend on the incorrect behaviour.
18039
18040 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
18041
18042         * profiler.c: provide defaults if none are set.
18043
18044 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
18045
18046         * Makefile.am, attrdefs.h: new public header file with
18047         constants for attributes for use by embedders.
18048
18049 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18050
18051         * icall.c: GetFields () fix for bug #80064.
18052
18053 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
18054
18055         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
18056         removed long unused icalls.
18057
18058 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
18059   
18060         * marshal.c: 
18061                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
18062                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
18063                 can be generated without a delegate class.
18064                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
18065         
18066         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
18067
18068 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18069
18070         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
18071         #80069.
18072
18073 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
18074
18075         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
18076         icall-def.h: added icalls needed by System.GC.
18077
18078 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
18079
18080         * loader.c: ensure the class in catch clauses is handled
18081         correctly for generics methods (fixes bug#79980).
18082
18083 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
18084
18085         * monitor.h, monitor.c: added mono_locks_dump () function
18086         to help debug deadlocks involving managed locks.
18087
18088 2006-11-13  Dick Porter  <dick@ximian.com>
18089
18090         * file-io.c (get_file_attributes): If the file is a symlink try
18091         and get the stat data for the target, but also add the
18092         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
18093         the specs for the windows symlink support, but will probably have
18094         to be reworked when I have test data from a vista machine.  Fixes
18095         bug 79887.
18096
18097 2006-11-13  Dick Porter  <dick@ximian.com>
18098
18099         * gc.c (mono_domain_finalize): 
18100         * marshal.c (mono_delegate_begin_invoke): 
18101         * threadpool.c (socket_io_init, mono_thread_pool_init)
18102         (mono_thread_pool_finish): 
18103         * monitor.c (mono_monitor_try_enter_internal): 
18104         * threads.c (mono_thread_resume, mono_thread_init)
18105         (mono_thread_suspend_all_other_threads)
18106         (mono_thread_execute_interruption): 
18107         * appdomain.c (mono_domain_unload): Check for NULL error returns
18108         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
18109         75733.
18110
18111 2006-11-11  Miguel de Icaza  <miguel@novell.com>
18112
18113         * process.c
18114         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
18115         Only close the handle if the value of the handle is not
18116         INVALID_HANDLE_VALUE.  This just makes the process a bit more
18117         robust.
18118
18119         Improvement for #75733, so that we do not run into this problem. 
18120
18121         
18122         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
18123         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
18124         internal variables.  Fixes #79462 
18125         
18126
18127 2006-11-09  Dick Porter  <dick@ximian.com>
18128
18129         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
18130         Use poll() not select().  Fixes bug 79397.
18131
18132 2006-11-09  Raja R Harinath  <rharinath@novell.com>
18133
18134         Fix #79872
18135         * assembly.c (mono_assembly_load_from_full): Check that the given
18136         image has an assembly manifest.
18137
18138 2006-11-09  Ankit Jain  <jankit@novell.com>
18139
18140         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
18141         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
18142         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
18143
18144 2006-11-07  Dick Porter  <dick@ximian.com>
18145
18146         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
18147         Put the old resolver behaviour back for pre-2.0 profiles.
18148
18149 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
18150
18151         * threadpool.c: precise GC and locking fixes.
18152
18153 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
18154
18155         * class.c: don't load types that have an explicit unaligned
18156         managed reference. Provide better info in the TypeLoad exception.
18157         Part of the fix for bug #79744.
18158         * object.c: use the correct check for class type load issues.
18159
18160 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
18161
18162         * class.c: enforce alignment of fields with managed references
18163         even when Pack=1 is forced by the user (bug #77788).
18164
18165 2006-11-03  Dick Porter  <dick@ximian.com>
18166
18167         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
18168         If the address reverse lookup fails, return it as the hostname
18169         anyway.  Fixes bug 79721.
18170
18171 2006-11-03  Dick Porter  <dick@ximian.com>
18172
18173         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
18174         Fix build on Windows.
18175
18176 2006-11-02  Dick Porter  <dick@ximian.com>
18177
18178         * icall-def.h: 
18179         * object-internals.h: 
18180         * exception.c (mono_get_exception_thread_interrupted): 
18181         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
18182         Fixes bug 74525.
18183
18184         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
18185         Check for pending Thread.Interrupt.
18186
18187 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
18188         * loader.c: Fixed bug 79684.
18189
18190 2006-10-27  Dick Porter  <dick@ximian.com>
18191
18192         * file-io.c (get_file_attributes): Force symlinks to directories
18193         to be returned as a regular file.  Fixes bug 79733.
18194 2006-10-26  Dick Porter  <dick@ximian.com>
18195
18196         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
18197         CreateFile to open a directory then we need to set the
18198         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
18199
18200 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
18201
18202         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
18203         friends.
18204
18205 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18206
18207         * sgengc.c: small cleanup of timer code.
18208
18209 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
18210
18211         * sgen-gc.c: fix some warnings and start adding support for
18212         complete object removal on domain unload.
18213
18214 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
18215
18216         * assembly.c: build_assembly_name should not consider a version
18217         number without build or revision number invalid. Fixes bug #79715.
18218
18219 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
18220
18221         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
18222         call kernel32 function OutputDebugString directly.
18223         
18224         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
18225         
18226 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
18227
18228         * reflection.c: small cleanup, using a function to insert a MonoString
18229         in the string heap.
18230
18231 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
18232
18233         * reflection.c: moving GC fixes.
18234
18235 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
18236
18237         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
18238         all the objects with finalizers belonging to an unloading appdomain.
18239
18240 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
18241
18242         * sgen-gc.c: added ability to allocate even when the nursery is fully
18243         pinned and fixed a couple of bugs.
18244
18245 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
18246
18247         * threads.h: Revert the last change for now.
18248
18249         * threads.h (mono_thread_get_pending_exception): Rename this to
18250         mono_thread_get_undeniable_exception ().
18251
18252 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
18253
18254         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
18255         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
18256         when fname does not refer to valid assembly. This result in a more
18257         meaningful error message.
18258         * exception.c: added mono_get_exception_bad_image_format2 which 
18259         constructs a BadImageFormatException using the ctor taking a custom
18260         message and the file name. Passing in a NULL msg results in a default
18261         message.
18262         * exception.h: define mono_get_exception_bad_image_format2 function.
18263         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
18264         when file name pointed to an invalid IL image. Use 
18265         mono_get_exception_file_not_found2 to construct FileNotFoundException,
18266         as this results in a more meaningful error message.
18267
18268 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
18269
18270         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
18271         #79465.
18272
18273 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
18274
18275         * metadata.c (mono_type_size): Change the align parameter to guint32 for
18276         consistency with the other _size functions.
18277         (mono_type_stack_size): Ditto.
18278
18279         * class.c object.c icall.c: Fix warnings caused by the above change.
18280
18281         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
18282
18283         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
18284
18285         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
18286
18287 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
18288
18289         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
18290         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
18291         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
18292         threadpool.h, threads-types.h: mark more internal functions.
18293
18294 2006-10-11  Dick Porter  <dick@ximian.com>
18295
18296         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
18297         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
18298         reproduce the bug even before applying the fix.)
18299
18300 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
18301
18302         * reflection.c: allow retrieving attributes for arguments in generic
18303         methods (bug #79241).
18304
18305 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
18306
18307         * debug-mono-symfile.c: properly check fopen () result (found by
18308         coverity).
18309
18310 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
18311
18312         * reflection.c: make error message clearer and fixed two
18313         issuelets found by Coverity.
18314
18315 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
18316
18317         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
18318
18319 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
18320
18321         * object-internals.h, gc-internal.h, profiler-private.h:
18322         mark internal functions.
18323
18324 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
18325
18326         * reflection.c: put data in the text section.
18327         * icall.c: recognize more types in type_from_typename ().
18328         * process.c, marshal.c: added some GC FIXMEs.
18329
18330 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
18331
18332         * loader.c: check for NULL before initializing.
18333
18334 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
18335
18336         * gc.c (finalizer_thread): Use a non-alertable wait here.
18337
18338         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
18339         until the correct solution is found.
18340
18341 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
18342
18343         * reflection.c (mono_module_get_object): Avoid an assert when operating on
18344         modules with no metadata. Fixes #79596.
18345
18346         * image.c (load_metadata_ptrs): Put back the error message when
18347         the #- heap is encountered since the support is not complete yet.
18348
18349 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
18350
18351         * gc.c: do not allow the user to SuppressFinalize () a
18352         delegate because it would leak the trampoline if present.
18353
18354 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
18355
18356         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
18357         PropertyPtr table.
18358
18359 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
18360
18361         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
18362
18363         * metadata.c (mono_metadata_get_param_attrs): Ditto.
18364
18365         * row-indexes.h: Add definitions for *Ptr tables.
18366
18367         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
18368
18369         * metadata.c (mono_metadata_translate_token_index): New helper function to
18370         translate table indexes used in uncompressed metadata.
18371         (mono_metadata_decode_table_row): Ditto.
18372         (mono_metadata_decode_table_row_col): Ditto.
18373
18374         * metadata.c: Add table schema for *Ptr tables.
18375
18376         * class.c loader.c: Use the new helper function to access the affected metadata
18377         tables.
18378         
18379         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
18380         #38532.
18381         
18382 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
18383
18384         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
18385         sequences which can be unbounded in size. Fixes #79583.
18386
18387 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
18388
18389         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
18390         static initialization.
18391
18392         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
18393
18394         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
18395
18396         * domain.c (mono_domain_free): Free up type_init_exception_hash.
18397
18398         * object.c (mono_runtime_class_init): Implement correct semantics when a static
18399         ctor fails, i.e. throw the same exception on subsequent accesses.
18400         
18401 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
18402
18403         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
18404         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
18405         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
18406         Handle marshalling of interfaces and VARIANTs contained in structs.
18407         
18408         Code is contributed under MIT/X11 license.
18409         
18410 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
18411
18412         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
18413         
18414         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
18415         mempool.
18416
18417 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18418
18419         * console-io.c: ignore previous SIGINT handler.
18420
18421 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
18422
18423         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
18424         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
18425         #79460, #79461, #79485.
18426
18427         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
18428
18429         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
18430         #79217.
18431
18432 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
18433
18434         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
18435         could be generated from it.
18436
18437 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
18438
18439         * rand.c: fix read loop to correctly handle EINTR.
18440
18441 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18442
18443         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
18444         internal calls are defined to keep methods closer to the declaring
18445         type and allow a significant reduction in runtime relocations and
18446         memory usage.
18447
18448 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
18449
18450         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
18451         exception message to have FileNotFoundException use the default
18452         assembly load error message. Fixes bug #79426.
18453         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
18454
18455 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18456
18457         * threadpool.c: (start_thread_or_queue) use the root domain when
18458         creating the thread instead of the async object one.
18459
18460 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
18461
18462         * class.c, object.c, class-internals.h, reflection.c:
18463         for arrays, store element_size inside MonoClass (speedup
18464         for array object creation).
18465
18466 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
18467
18468         * icall.c: fixed CodeBase to use the file name and not the module
18469         name (bug #79365).
18470
18471 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
18472
18473         * mono-debug.c, mono-debug.h: export find_method as
18474         mono_debug_find_method ().
18475
18476 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18477
18478         * debug-helpers.c, class-internals.h: added a few functions useful
18479         when debugging under gdb.
18480
18481 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18482
18483         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
18484         characters that need special handling.
18485
18486 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
18487
18488         * mono-config.c: make the os/cpu specification more flexible,
18489         allowing lists and negation.
18490
18491 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
18492
18493         * marshal.c: COM Interop fixes. Handle case where method->klass.
18494         is interface. Handle BSTR/MonoString when null. Use CDECL as 
18495         calling convention on non-windows platforms. This is for
18496         compatibility with XPCOM and MainWin COM.
18497         
18498         Code is contributed under MIT/X11 license.
18499         
18500
18501 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
18502
18503         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
18504         correctly. Fixes #79217.
18505
18506         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
18507
18508 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
18509
18510         * mono-config.c: allow both an os and cpu attribute for dllmap
18511         and dllentry elemnets to enable a single config file to be used
18512         for multiple architectures.
18513
18514 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
18515
18516         * loader.c: MonoLoaderError was cleared too soon on load failure.
18517         Fixes bug #79424.
18518
18519 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
18520
18521         * icall.c: use the defining class vtable when accessing a
18522         static field, not a pobblibly derived class.
18523
18524 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
18525
18526         * icall.c string-icalls.c: Remove references to unicode.h.
18527
18528         * unicode.h unicode.c Makefile.am: Remove these unused source files.
18529
18530         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
18531
18532         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
18533         indicating the image where custom marshaller types should be looked up.
18534         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
18535         custom marshallers, instead of corlib. Fixes #79425.
18536
18537 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
18538
18539         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
18540
18541 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
18542
18543         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
18544         Implement Environment.ProcessorCount.
18545         
18546         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
18547         Implement Environment.ProcessorCount.
18548         
18549         * icall.c: 
18550         Add Environment.ProcessorCount icall.
18551         
18552         Patch by Jason McFall.
18553
18554 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18555
18556         * assembly.c: don't append .exe/.dll when the filename already contains
18557         one of those extensions.
18558
18559 2006-09-12  Martin Baulig  <martin@ximian.com>
18560
18561         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
18562         to array interfaces.
18563
18564 2006-09-11  Martin Baulig  <martin@ximian.com>
18565
18566         * reflection.c (mono_image_build_metadata): Create the
18567         MethodImpl's after emitting all types and methods, so we don't
18568         need another fixup pass for them.
18569
18570 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
18571
18572         * class.c (mono_class_from_name_case): Fix regression introduced by the last
18573         change.
18574
18575 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
18576
18577         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
18578         unload.
18579
18580 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
18581
18582         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
18583         args is not set. Fixes #78926.
18584
18585 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
18586
18587         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
18588
18589         * image.c (load_class_names): Move this to class.c, and rename it to 
18590         'mono_image_init_name_cache'.
18591         (load_modules): Fix a warning.
18592
18593         * class.c icall.c image.c: Initialize image->name_cache lazily.
18594
18595         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
18596         on its name using information in the AOT file.
18597
18598         * class.c (mono_class_from_name): Use the new hook function.
18599
18600 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
18601
18602         * reflection.c (mono_param_get_objects): Handle enum default parameter values
18603         correctly.
18604
18605         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
18606         Fixes #79289.
18607         
18608 2006-09-06  Martin Baulig  <martin@ximian.com>
18609
18610         * icall.c (mono_lookup_internal_call): Small fix.
18611
18612 2006-09-05  Raja R Harinath  <rharinath@novell.com>
18613
18614         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
18615         double g_free.
18616
18617 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
18618
18619         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
18620         when --debug is specified.
18621
18622 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
18623
18624         * class.c (setup_generic_array_ifaces): Fix a warning.
18625
18626 2006-09-04  Miguel de Icaza  <miguel@novell.com>
18627
18628         * Temporarily remove the patch to assemly.c that checks the
18629         assembly versions as it breaks our gacutil.
18630
18631 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
18632
18633         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
18634
18635         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
18636         a net 1.0 runtime.
18637
18638         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
18639         created using the default ctor. Fixes #79152.
18640         (mono_string_builder_to_utf16): Ditto.
18641
18642 2006-09-01  Martin Baulig  <martin@ximian.com>
18643
18644         Fix handling of the generic array interfaces.
18645
18646         * class-internals.h
18647         (MonoDefaults): Removed `generic_array_class' and added
18648         `generic_ilist' class.
18649
18650         * class.c
18651         (mono_bounded_array_class_get): Add the new generic array interfaces.
18652         (setup_generic_array_ifaces): New static method; create vtable
18653         entries for each method in the generic array interfaces.
18654
18655         * metadata.c
18656         (select_container): Allow "parent-less" generic methods.
18657
18658         * marshal.c
18659         (mono_marshal_get_generic_array_helper): New public method.
18660
18661         * icall.c
18662         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
18663         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
18664         moved the interncall into System.Array.
18665
18666 2006-09-01  Raja R Harinath  <rharinath@novell.com>
18667
18668         A few more cases of avoiding work on types with ->byref set.
18669         Has the real fix for #79238
18670         * icall.c (is_generic_parameter): New helper.
18671         (ves_icall_Type_GetGenericParameterPosition): Use it.
18672         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
18673         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
18674         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
18675         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
18676         reference types.
18677         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
18678         reference types.
18679         (ves_icall_Type_get_IsGenericInstance): Likewise.
18680         (ves_icall_Type_get_IsGenericType): Likewise.
18681
18682 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
18683
18684         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
18685         class if possible.
18686
18687         * mempool.h (mono_mempool_get_allocated): New helper function.
18688
18689         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
18690         change.
18691
18692         * mempool.c: Fix warnings and the calculation of stats.
18693
18694         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
18695
18696         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
18697
18698         * loader.c (mono_get_method_from_token): Update method_count stat.
18699
18700         * class-internals.h (MonoStats): Add some stats.
18701
18702 2006-08-31 Robert Jordan  <robertj@gmx.net>
18703
18704         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
18705         with managed variants.
18706         All code is contributed under the MIT/X11 license.
18707         
18708 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
18709
18710         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
18711         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
18712
18713         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
18714
18715         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
18716         with cycles in classes.
18717
18718         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
18719
18720         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
18721         missing a [MarshalAs] directive. Fixes #79203.
18722
18723         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
18724         klass->marshal_info. Fixes #79217.
18725
18726 2006-08-30  Martin Baulig  <martin@ximian.com>
18727
18728         Committing a patch from Joachim Ante <joe@otee.dk>:
18729         Add support for binary data symbol stores.
18730
18731         * debug-mono-symfile.c
18732         (mono_debug_open_mono_symbol_file): Renamed into
18733         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
18734         arguments.
18735
18736         * mono-debug.c
18737         (mono_debug_open_image): Added `raw_contents' and `size' args.
18738         (mono_debug_init_2_memory): New public function.
18739
18740 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
18741
18742         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
18743
18744 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18745
18746         * appdomain.c: implement support for ShadowCopyFiles.
18747
18748 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
18749
18750         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
18751         when value is NULL (and should remove CID #51).
18752
18753 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18754
18755         * image.c: moved 2 functions to ../utils.
18756
18757 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
18758
18759         * gc.c: cope with the target object of a GC handle being NULL
18760         (bug #78877).
18761
18762 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
18763
18764         * class.c: recursively check parent's explicit implementations
18765         of interface methods (fixes bug #79125).
18766
18767 2006-08-19  Miguel de Icaza  <miguel@novell.com>
18768
18769         * filewatcher.c: Avoid warnings when building, do not redefine
18770         constants that are defined.
18771
18772         Remove warnings.
18773
18774 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18775
18776         * image.c: don't fail when the link points to an absolute path.
18777
18778 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
18779
18780         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
18781         Fix CID #3.
18782
18783 2006-08-17  Miguel de Icaza  <miguel@novell.com>
18784
18785         * image.c (full_path): A new method used to obtain the actual path
18786         of an assembly even in the presence of symbolic links.  
18787
18788         This is necessary for the case where we are running a binary that
18789         has been GACed, but we are using the "published" path name
18790         ($prefix/mono/1.0/blah.exe) which happens to point to the real
18791         file in the GAC.
18792
18793         This was the source of the failure for the `xsp' command with the
18794         recent AppDomain changes, as far as the runtime was concerned,
18795         there were two different assemblies: $prefix/mono/1.0/blah.exe and
18796         $prefix/mono/gac/blah/version/blah.exe.
18797
18798         (do_mono_image_open): use full path
18799
18800 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18801
18802         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
18803
18804 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
18805
18806         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
18807         domain_id is supplied. Fix CID #241 and corlib's unit tests.
18808
18809 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18810
18811         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
18812         small structures. Fixes #78990.
18813
18814 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18815
18816         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
18817
18818         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
18819
18820 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18821
18822         * appdomain.c:
18823         * marshal.c: don't load all the assemblies from a domain into newly
18824         created ones. The new domains might have different rules and load
18825         assemblies from different locations. Fixes bug #76757.
18826
18827         Patch by Lluis. Conflicts resolved by Brian Crowell.
18828
18829 2006-08-16  Alp Toker  <alp@atoker.com>
18830
18831         * socket-io.c: First half of the fix for #79084.
18832         Set sa_size to the length of the content, not that of the struct.
18833         Don't add NULL suffix to the content, this should be done in
18834         managed code if needed.
18835
18836 2006-08-14  Raja R Harinath  <rharinath@novell.com>
18837
18838         Fix part of #79012
18839         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
18840         mono_metadata_parse_type returns NULL.
18841
18842 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
18843
18844         * normalization-tables.h : new file for string normalization data.
18845         * locales.c, locales.h, icall.c :
18846           added load_normalization_resource() for string normalization,
18847           and icall as well.
18848         * Makefile.am : added normalization-tables.h to the sources.
18849
18850 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
18851
18852         * marshal.c: Add more helper functions to reduce code duplication and use them
18853         everywhere.
18854
18855 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
18856
18857         * marshal.c: Fix non-x86 stdcall warnings.
18858         
18859         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
18860         them everywhere.
18861
18862 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
18863
18864         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
18865         type check on multi-dimensional arrays. Fixes #79000.
18866
18867 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
18868
18869         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
18870         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
18871         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
18872         * class-internals.h: add is_com_object to class structure.
18873         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
18874         null checks to COM object marshalling. Fix .ctor call on RCW.
18875         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
18876         
18877         All code is contributed under the MIT/X11 license.
18878
18879 2006-08-09  Dick Porter  <dick@ximian.com>
18880
18881         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
18882         racing mono_monitor_allocator_lock() somewhere, so don't delete
18883         the critical section for now.  Found by running and exiting
18884         monodevelop.
18885
18886 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
18887
18888         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
18889         (ves_icall_System_ComObject_FindInterface): Ditto.
18890         (ves_icall_System_ComObject_CacheInterface): Ditto.
18891
18892         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
18893         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
18894
18895 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18896
18897         * threadpool.c: treat pipes from process asynchronous reads as sockets
18898         when reading from them, so we get select/poll or epoll to wait for
18899         data.
18900
18901 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
18902
18903         * loader.c: Fix a typo (CID #233) in the null check.
18904
18905 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
18906
18907         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
18908         Hopefully fixes #78949.
18909         
18910         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
18911         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
18912         bytes. Fixes #78972.
18913
18914 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18915
18916         * filewatcher.c: we need to set errno here.
18917
18918 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18919
18920         * filewatcher.c: let Win32Exception get the error value.
18921
18922 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18923
18924         * filewatcher.c: translate errno into win32 errors for Win32Exception
18925         to know what happened.
18926
18927 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
18928
18929         * threadpool.c: Fix more warnings.
18930
18931         * assembly.c (search_loaded): Fix warnings.
18932
18933         * threadpool.c (mono_thread_pool_finish): Fix warnings.
18934         (mono_async_invoke): Ditto.
18935
18936 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
18937
18938         * object.c (mono_remote_class_vtable): Need to create proxy vtable
18939         entries for __ComObject type in addition to ComImport types.
18940         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
18941         about hash table.
18942         
18943         All code is contributed under the MIT/X11 license.
18944
18945 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
18946
18947         * image.c: avoid tentative loading of modulerefs that contain
18948         no metadata (P/Invoke library names).
18949
18950 2006-07-28  Dick Porter  <dick@ximian.com>
18951
18952         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
18953         mono_loader_lock() somewhere, so don't delete the critical section
18954         for now.  Found by running and exiting monodevelop.
18955
18956 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18957
18958         * filewatcher.c: define the inotify syscalls when we're building on
18959         linux and have sys/syscall.h. The build system might not have support
18960         for inotify but the target system might have it.
18961
18962 2006-07-26  Miguel de Icaza  <miguel@novell.com>
18963
18964         * domain.c: Documentation updates.
18965
18966         * loader.c (mono_free_method): Do not release the method
18967         information if we are being profiled, as profilers will use this
18968         information at shut down to present some data to the user.
18969
18970         This is needed so that the profiler does not crash, as the
18971         profiler tends to keep MonoMethods around, and they might become
18972         invalid if we free these.
18973
18974         (mono_get_method_constrained): Return the original CIL stream
18975         method as well, so verification can be performed against it.
18976
18977 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18978
18979         * filewatcher.[ch]: support for inotify file system watcher.
18980         * icall.c: add new internal calls for the inotify file system watcher.
18981
18982 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18983
18984         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
18985         #78888.
18986
18987 2006-07-20  Dick Porter  <dick@ximian.com>
18988
18989         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
18990         warning.
18991
18992 2006-07-20  Dick Porter  <dick@ximian.com>
18993
18994         * threads.c (start_wrapper): Do the thread cleanup while we still
18995         hold a reference to its object.  Fixes bug 78123.
18996
18997 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
18998
18999         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
19000         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
19001           "managed-to-managed".
19002         * icall.c: Redirect string constructors that take sbyte* to
19003           ves_icall_System_String_ctor_RedirectToCreateString.
19004         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
19005           to CreateString () methods with matching signature.
19006         * reflection.c: Use original security informations for
19007           MONO_WRAPPER_MANAGED_TO_MANAGED.
19008         * security-manager.c: Use original security informations for
19009           MONO_WRAPPER_MANAGED_TO_MANAGED.
19010         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
19011           that is a placeholder and only its address should be used.
19012         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
19013           that is a placeholder and only its address should be used.
19014
19015 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
19016
19017         Begin implementing COM Interop.
19018         * appdomain.c: Increment corlib version.
19019         * class.c: Set ComImport classes' parent to __ComObject.
19020         * loader.c: Mark cominterop methods as such.
19021         * domain.c: Add __ComObject class to MonoDefaults structure.
19022         * image.c: Add 2 hashtables to the image for COM Interop related methods
19023         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
19024         using the mempool allocator
19025         
19026         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
19027         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
19028         declaration for mono_metadata_type_dup_mp.
19029         
19030         * debug-helpers.c: Added strings for two additional wrapper types
19031         * object.c: Create proxy objects for ComImport classes
19032         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
19033         and added __ComObject class to MonoDefaults structure.
19034         
19035         * object-internals.h: Finish MonoRealProxy definition, and add definition of
19036         MonoComInteropProxy and MonoComObject.
19037         
19038         * marshal.c: Added support for COM Interop
19039         (signature_cominterop): Converts managed signature to corresponding
19040         unmanaged COM signature.
19041         (cominterop_get_function_pointer): gets unmanaged function pointer via
19042         COM object vtable
19043         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
19044         (cominterop_get_method_interface): returns interface type that method is defined on
19045         (mono_mb_emit_cominterop_call): emits native call to function pointer
19046         gotten from vtable
19047         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
19048         that matches signature of unmanaged function.
19049         (cominterop_get_native_wrapper): wrapper around adjusted method call.
19050         (cominterop_get_invoke): forwards call from proxy to __ComObject
19051         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
19052         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
19053         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
19054         
19055         * marshal.h: Added Marshal icall declarations.
19056         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
19057         so we can access them in finalizer
19058         
19059 2006-07-14  Dick Porter  <dick@ximian.com>
19060
19061         * object.c (mono_type_initialization_cleanup): Fix a race
19062         condition by temporarily commenting out the critical section
19063         deletion.
19064
19065 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
19066
19067         * reflection.c (create_custom_attr): Fix some warnings.
19068         (create_custom_attr_data): Ditto.
19069         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
19070         types. Fixes #78855.
19071
19072 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
19073
19074         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
19075
19076         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
19077
19078 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
19079
19080         * reflection.c (resolve_object): Add support for DynamicMethod.
19081
19082         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
19083         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
19084
19085 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
19086
19087         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
19088         don't leak GPtrArray's pdata has we have no use (nor free) for it.
19089
19090 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
19091
19092         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
19093         Fixes #77888.
19094
19095 2006-06-30  Raja R Harinath  <rharinath@novell.com>
19096
19097         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
19098         slightly: remove a shadow local variable.
19099
19100 2006-06-29  Raja R Harinath  <rharinath@novell.com>
19101
19102         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
19103         definition that introduces the virtual function slot.
19104         Also fix Coverity #105.
19105
19106 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
19107
19108         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
19109         for dynamic assemblies. Fixes #78724.
19110
19111 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
19112
19113         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
19114         Fixes #78722.
19115
19116 2006-06-21  Martin Baulig  <martin@ximian.com>
19117
19118         * reflection.c
19119         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
19120         fixes #76484.
19121
19122 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
19123
19124         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
19125
19126 2006-06-20  Raja R Harinath  <rharinath@novell.com>
19127
19128         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
19129         nor TYPEREFs.
19130         * class.c (mono_class_create_from_typespec): Add 'context' argument.
19131         Inflate result if necessary.
19132         (mono_class_get_full): Remove old version.  Rename from
19133         'mono_class_get' and add 'context' argument.  Pass it to
19134         ..._create_from_typespec.
19135         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
19136         (mono_ldtoken): Revert change below.
19137
19138 2006-06-20  Martin Baulig  <martin@ximian.com>
19139
19140         * class.c (mono_ldtoken): Don't pass the generic context to
19141         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
19142
19143 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
19144
19145         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
19146         and later freeing it. Fixes #78638.
19147
19148 2006-06-15  Miguel de Icaza  <miguel@novell.com>
19149
19150         * icall.c (mono_class_get_throw): Revert over-zealous error
19151         throwing, the caller for mono_class_get_throw will cope with
19152         errors when classes are not properly initialized already.
19153
19154         The code still copes with loader exceptions though.
19155
19156         Fixes the regression in reftype1 and reftype3 from the CAS tests.
19157         
19158 2006-06-14  Miguel de Icaza  <miguel@novell.com>
19159
19160         Fixes the `make run1' version of RuntimeAbort (to be commited,
19161         source is in Bugzilla).
19162         
19163         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
19164         FALSE on class loading failure instead of returning true.
19165
19166         * class.c (mono_class_create_from_typedef): It is possible for
19167         mono_metadata_interfaces_from_typedef_full to fail if a class is
19168         not found, cope with this.
19169         
19170
19171 2006-06-14  Dick Porter  <dick@ximian.com>
19172
19173         * socket-io.c: 
19174         * process.c: Fix a bunch of signed/unsigned warnings from gcc
19175         4.1.1
19176
19177 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
19178
19179         * culture-info-table.h : oops, forgot to make it nsync with r61548.
19180
19181 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
19182
19183         * icall.c: Another fix for building mono in Visual Studio.
19184
19185 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
19186
19187         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
19188         
19189 2006-06-09  Martin Baulig  <martin@ximian.com>
19190
19191         * debug-mono-symfile.c: Put this back and really fix it this
19192         time. Sorry for all the trouble.
19193
19194 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
19195
19196         * icall.c (mono_class_get_throw): Fix a warning.
19197         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
19198         ReflectionTypeLoadException if needed. Fixes #78606.
19199
19200         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
19201         (mono_class_init): Ditto.
19202
19203         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
19204         ref_only exceptions.
19205         (mono_loader_clear_error): Make this work even if there is no error.
19206
19207 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
19208
19209         * object-internals.h marshal.c marshal.h icall.c: Implement method 
19210         Marshal.GetComSlotForMethodInfo using internal call.
19211
19212 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
19213
19214         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
19215         a function for signalling it.
19216
19217         * class.c (mono_class_from_typeref): Use the new kind of loader error when
19218         a referenced assembly is not found.
19219
19220         * loader.c (mono_loader_error_prepare_exception): Add support for 
19221         LOADER_ERROR_ASSEMBLY. Fix formatting.
19222
19223 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
19224
19225         * domain.c appdomain.c class-internals.h marshal.c: Add support 
19226         for VARIANT marshalling on windows and increment corlib version
19227         since Variant struct was added.
19228
19229 2006-06-03  Miguel de Icaza  <miguel@novell.com>
19230
19231         * debug-mono-symfile.c: Revert Martin's previous patch which broke
19232         stack trace line information:
19233
19234         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
19235         (Martin) when looking up B which is between A and C, return A not C.
19236
19237         Bug is #78573.
19238
19239         Thanks to Alexander Olk for tracking this down.
19240
19241 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
19242
19243         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
19244         
19245         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
19246         avoid clobbering its value.
19247         (mono_string_to_lpstr): Fix a warning on windows.
19248
19249 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
19250
19251         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
19252
19253         * reflection.c loader.c: Removed references to 'dummy' flag.
19254
19255         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
19256
19257         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
19258         it gets GC tracking.
19259
19260         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
19261         GC tracking.
19262         
19263         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
19264
19265         * marshal.c threadpool.c: Update callers of mono_async_result_new.
19266
19267         * appdomain.c: Bump corlib version.
19268
19269 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
19270
19271         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
19272         CEE_STIND_REF when working with object references.
19273
19274 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
19275
19276         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
19277         Fixes #78539.
19278
19279 2006-05-30  Miguel de Icaza  <miguel@novell.com>
19280
19281         * loader.c (method_from_memberref): Fix argument value for
19282         mono_loader_set_error_method_load (I was passing the MonoClass
19283         instead of the class name char *).
19284
19285 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
19286
19287         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
19288         CEE_STIND_REF when working with object references.
19289
19290 2006-05-30  Martin Baulig  <martin@ximian.com>
19291
19292         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
19293         mono_method_full_name() change and replace the ':' with a '.'
19294         here.
19295
19296 2006-05-30  Martin Baulig  <martin@ximian.com>
19297
19298         * debug-mono-symfile.c
19299         (mono_debug_symfile_lookup_location): Fix the algorithm:
19300         when looking up B which is between A and C, return A not C.
19301
19302 2006-05-29  Martin Baulig  <martin@ximian.com>
19303
19304         * mono-debug.h
19305         (MonoDebugMethodInfo): Make the typedef public.
19306         (MonoDebugSourceLocation): New public struct.
19307
19308         * mono-debug.c
19309         (mono_debug_source_location_from_address): Removed.
19310         (mono_debug_source_location_from_il_offset): Removed.
19311         (mono_debug_il_offset_from_address): Removed.
19312         (mono_debug_address_from_il_offset): Removed.
19313         (mono_debug_lookup_method): New public function.
19314         (mono_debug_lookup_source_location): New public function; replaces
19315         the old mono_debug_source_location_from_*() functions; see the
19316         inline documentation.
19317         (mono_debug_free_source_location): New public function.
19318         (mono_debug_print_stack_frame): New public function; see the
19319         inline documentation.
19320
19321         * debug-mono-symfile.c
19322         (mono_debug_find_source_location): Renamed into
19323         mono_debug_symfile_lookup_location(); only take a
19324         `MonoDebugMethodInfo *' and an `offset' argument; added inline
19325         documentation.
19326         (mono_debug_find_method): Renamed into
19327         mono_debug_symfile_lookup_method().
19328
19329 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
19330
19331         * assembly.c (mono_assembly_open_full): Dont overwrite the status
19332         returned by mono_image_open_full ().
19333
19334         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
19335         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
19336         #78517.
19337
19338         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
19339         #78518.
19340
19341 2006-05-27  Miguel de Icaza  <miguel@novell.com>
19342
19343         * class.c (mono_class_from_typeref): handle missing images
19344         earlier, deals with bug #78418.   Refactor code; 
19345
19346         Fix a warning introduced in my previous commit (some stale code
19347         from before I revisited my patch).
19348
19349         * class.c (mono_class_create_from_typedef): On failure, remove the
19350         class from the MonoImage->class_cache as the class is not
19351         initialized;   Fixes the leak pointed out by Paolo.
19352
19353 2006-05-25  Dick Porter  <dick@ximian.com>
19354
19355         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
19356         DeleteCriticalSections until I figure out which one may still be
19357         sometimes locked when mono_thread_cleanup is called.
19358
19359 2006-05-24  Dick Porter  <dick@ximian.com>
19360
19361         * threads.c (mono_thread_cleanup): Move the threading cleanup out
19362         of mono_thread_manage and back into its own function, so it can be
19363         called after the finalizer thread has finished.
19364
19365         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
19366
19367 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
19368
19369         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
19370         Fixes #78495.
19371
19372         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
19373         with non-blittable elements.
19374         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
19375
19376 2006-05-24  Martin Baulig  <martin@ximian.com>
19377
19378         * mono-debug-debugger.h (MonoDebuggerEvent): Added
19379         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
19380
19381         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
19382         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
19383         `mono_debugger_event_handler' to NULL.
19384
19385 2006-05-24  Martin Baulig  <martin@ximian.com>
19386
19387         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
19388
19389 2006-05-24  Martin Baulig  <martin@ximian.com>
19390
19391         * mono-debug-debugger.h
19392         (mono_debugger_create_notification_function): Added
19393         `MonoCodeManager *' argument.
19394
19395 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
19396
19397         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
19398
19399 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
19400
19401         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
19402         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
19403         implementation.
19404
19405 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
19406
19407         * icall.c: precise GC support: objects can't be stored in unmanaged
19408         memory anymore, even if they are kept alive by other references: since
19409         they can move the GC needs to be able to always find them.
19410
19411 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
19412
19413         * object.c: precise GC support for static fields. Support
19414         for moving GCs: write barriers and pinned allocation for interned
19415         strings.
19416
19417 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
19418
19419         * domain.c, domain-internals.h: precise GC support for the MonoDomain
19420         structure.
19421
19422 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
19423
19424         * class.c, gc.c: sgen and precise GC updates.
19425
19426 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
19427
19428         * marshal.h, marshal.c: added write barrier wrapper and precise type
19429         fixes.
19430
19431 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
19432
19433         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
19434         support.
19435
19436 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
19437
19438         * reflection.c: precise and sgen GC updates.
19439
19440 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
19441
19442         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
19443
19444 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
19445
19446         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
19447
19448 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
19449
19450         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
19451         MONO_TYPE_OBJECT. Fixes #78462.
19452
19453 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
19454
19455         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
19456         and blittable types.
19457
19458 2006-05-17  Miguel de Icaza  <miguel@novell.com>
19459
19460         * class.c (mono_class_get_exception_for_failure): Implement parts
19461         of a TODO: if the loader error is set (instead of the class
19462         error), we return a Loader exception that can be properly thrown
19463         elsewhere.
19464
19465         This was exposed by some Winforms 2.0 code that I tried to run
19466         (Atsushi pointed me to it).
19467
19468 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
19469
19470         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
19471         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
19472         
19473         * marshal.c (emit_marshal_vtype): Add limited support for 
19474         UnmanagedType.LPStruct. Fixes #78427.
19475
19476         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
19477         Applied a patch from kangaroo to fix #77523.
19478
19479 2006-05-17  Martin Baulig  <martin@ximian.com>
19480
19481         * threads.c
19482         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
19483         (debugger_thread_created): Removed.
19484         (debugger_thread_exited): Removed.
19485
19486 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
19487
19488         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
19489
19490         * object-internals.h (MonoReflectionResource): Sync with managed version.
19491
19492 2006-05-12  Wade Berrier <wberrier@novell.com>
19493
19494         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
19495
19496 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
19497
19498         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
19499         functions try to allocate from the image mempool.
19500
19501 2006-05-12  Dick Porter  <dick@ximian.com>
19502
19503         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
19504
19505 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
19506
19507         * object.c: The FieldGetter and FieldSetter methods require the full
19508         name of the class, not only the name. Fixes bug #78277.
19509
19510 2006-05-11  Miguel de Icaza  <miguel@novell.com>
19511
19512         * loader.c (method_from_memberref): Do not pass the NULL klass to
19513         mono_loader_set_error_() methods.  Pass the non-NULL value
19514         (class). 
19515
19516 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
19517
19518         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
19519         (mono_assembly_close): Null out assembly->image->references after freeing it.
19520
19521         * image.c (mono_image_close): Free image->references.
19522         
19523         * reflection.c (mono_image_basic_init): Fix a small memory leak.
19524
19525 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
19526
19527         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
19528         before checking if it's NULL (g_assert).
19529
19530 2006-05-10  Martin Baulig  <martin@ximian.com>
19531
19532         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
19533         I thought I already killed that two months ago, but now it somehow reappeared.
19534
19535 2006-05-10  Martin Baulig  <martin@ximian.com>
19536
19537         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
19538
19539 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
19540
19541         * reflection.c: Allocate memory for dynamically created methods in the image
19542         mempools.
19543
19544 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
19545
19546         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
19547         don't use the ad pointer before checking if it's NULL (g_assert).
19548
19549 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
19550
19551         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
19552         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
19553
19554         * marshal.c: Allocate all signatures from mempools.
19555
19556         * marshal.c: Allocate some more signatures from mempools.
19557
19558 2006-05-09  Miguel de Icaza  <miguel@novell.com>
19559
19560         * object.c (mono_load_remote_field): The code used to provide a
19561         temporary variable for returning results if the user did not
19562         provide a result pointer.  But our temporary variable was allocted
19563         on the satck.
19564
19565         Fix calling code to always pass a result area.   Coverity ID 103.
19566
19567 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
19568
19569         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
19570         value, not the old. Fixes #78312.
19571         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
19572
19573         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
19574         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
19575         per-image cache.
19576
19577         * assembly.c (mono_assembly_close): Free image->references.
19578
19579         * assembly.c (mono_assembly_names_equal): Fix a warning.
19580         (mono_assemblies_cleanup): Cleanup more global data.
19581
19582         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
19583
19584         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
19585         ptr_cache and image->modules.
19586
19587         * image.c (mono_image_init): Allocate array_cache lazily.
19588         
19589 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19590
19591         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
19592         behavior was changed recently and has bad side effects.
19593
19594 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
19595
19596         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
19597         
19598         * assembly.c (mono_assembly_close): Remove a debug printf.
19599
19600         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
19601
19602         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
19603         to also allow for temporary references between mono_image_open ()/close ().
19604
19605         * domain.c (get_runtimes_from_exe): Add a FIXME.        
19606
19607 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
19608
19609         * marshal.c: Fix support for dynamic methods.
19610
19611         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
19612
19613         * marshal.c (mono_marshal_cleanup): New cleanup function.
19614
19615         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
19616         image mempools.
19617
19618         * class.c (mono_class_init): Fix leaking class->nested_classes.
19619
19620         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
19621
19622         * image.c (mono_image_init): Initialize the new cashes.
19623
19624         * image.c (mono_image_close): Destroy the new cashes.
19625
19626         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
19627
19628         * mempool.c (mono_mempool_strdup): New helper function.
19629
19630         * class-internals.h: Add prototype for mono_loader_unlock ().
19631
19632         * domain.c (mono_jit_info_table_find): Fix a warning.
19633         (mono_debugger_check_runtime_version): Ditto.
19634
19635         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
19636         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
19637         functions to these modules.
19638
19639         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
19640         metadata modules.
19641         
19642         * marshal.c (mono_free_bstr): Fix a warning.
19643
19644         * assembly.c (mono_assembly_open_full): Fix another small leak.
19645
19646         * object.c: Fix some unload leaks in the remoting code.
19647
19648         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
19649         function.
19650
19651         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
19652
19653         * reflection.c: Fix some unload leaks in dynamic assemblies.
19654
19655 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
19656
19657         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
19658         * marshal.h: Add BSTR support on Win32
19659         * icall.c: Add BSTR icalls
19660         * metadata.h: Add BSTR enums
19661
19662 2006-04-28  Miguel de Icaza  <miguel@novell.com>
19663
19664         Work to catch the crash from #76795 and turn it into an
19665         exception.   As I stubbed out pieces of the VisualBasic support,
19666         I found a number of places where the code was failing and I added
19667         checks to those places. 
19668         
19669         * metadata.c (do_mono_metadata_parse_generic_class): Make this
19670         function return a status code.  If we fail to parse the signature
19671         from mono_metadata_parse_generic_inst, return FALSE.
19672
19673         * loader.c (mono_get_method_from_token): If we fail to load the
19674         method (mono_class_get) return NULL.   
19675
19676         * (method_from_memberref): Return NULL if we are unable to parse
19677         the method signature
19678
19679         (mono_loader_error_prepare_exception): Since we now use the
19680         loader_error flag internally to stop processing, and obtaining
19681         exceptions that might be thrown will walk this code path the
19682         proper way of going from a MonoLoaderError into a
19683         MonoException was convoluted.   This new routine encapsulates the
19684         process of turning the error into an exception and *clearing* the
19685         error afterwards.
19686         
19687 2006-04-27  Miguel de Icaza  <miguel@novell.com>
19688
19689         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
19690         with missing assemblies), and to cope with:
19691
19692                 * Missing fieldref from a non-existing assembly.
19693                 * Missing methodref from a non-existing assembly.
19694
19695         The first batch of work to address *some* of the issues from 76661.
19696         
19697         * object.c (mono_class_create_runtime_vtable): If we fail to
19698         initialize the class raise the exception here. 
19699
19700         * metadata.c (mono_class_get_overrides_full): If any methods fail
19701         to load return the failure to the caller.
19702
19703         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
19704         flagging assemblies that failed to load.   
19705
19706         Do not crash if we are unable to load the assembly.
19707
19708         (mono_assembly_close): Do nothing with REFERENCE_MISSING
19709         assemblies. 
19710
19711         * loader.c (mono_loader_set_error_type_load): Change the
19712         convention to always pass unallocated strings, so we make our own
19713         copies (I know our own code had duplicated strings before, but
19714         this keeps the normal conventions).
19715         (method_from_memberref): Call mono_loader_set_error_method_load
19716         for all possible failures of loading the class. 
19717         Remove assert, turn into a loader error.
19718
19719         (mono_loader_error_to_exception): Move this routine from mini
19720         (mini_loader_error_to_exception) there was no need to have that in
19721         mini. 
19722
19723         * class.c (mono_class_from_typeref): If we were not able to load
19724         the assembly with mono_assembly_load_reference, call the
19725         mono_loader_set_error_type_load to register the problem.
19726
19727         (mono_class_setup_fields): If we fail to load the type from
19728         mono_metadata_parse_type_full, call mono_class_set_failure and
19729         break from the loop.
19730
19731         If class->exception_type is set, we do not layout the fields as
19732         that might crash the runtime, and instead return (from breaking
19733         from the previous loop).
19734
19735         (mono_class_setup_vtable): This now returns a boolean indicating
19736         whether the table was properly setup.   The decision is driven by
19737         mono_class_get_overrides_full which might run into non-existing
19738         methods. 
19739         
19740         (mono_class_init): Returns TRUE on success or FALSE if there was a
19741         problem in loading the type (incorrect assemblies, missing
19742         assemblies, methods, etc).
19743
19744         When we call mono_class_setup_fields we also check for a potential
19745         error inside this call (either a class exception or a general
19746         loader exception).
19747
19748         (mono_class_create_from_typedef): If the parent fails to load
19749         (calling mono_class_get_full) return NULL.
19750         
19751         ** Important **
19752
19753         calls to mono_metadata_parse_type_full should be checked
19754         everywhere and set the mono_class_set_failure
19755         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
19756
19757         The current patch checks the places where my manually constructed
19758         tests show the errors are showing up, but we should do it
19759         everywhere. 
19760
19761         ** Important2 **
19762
19763         mono_class_init return values should be tested everywhere, like
19764         the previous case this is something that we should audit
19765         everywhere and not only on the cases exposed by the tests I
19766         created. 
19767
19768 2006-04-26  Miguel de Icaza  <miguel@novell.com>
19769
19770         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
19771         boolean parameter and instead pass the information on `options'
19772         parameter (FileOptions).
19773
19774         * icall.c: Register the new signature for MonoIO.Open.
19775
19776         * debug-helpers.c (dis_one): Trying to understand how coverity
19777         works.  Fix Run 5, item 78.
19778
19779 2006-04-26  Dick Porter  <dick@ximian.com>
19780
19781         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
19782         dereference.
19783
19784 2006-04-25  Martin Baulig  <martin@ximian.com>
19785
19786         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
19787
19788         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
19789         debugger_thread_created().
19790         (debugger_gc_push_all_stacks): Don't handle the main thread in any
19791         special way.
19792         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
19793         (mono_debugger_finalize_threads): New function; undo the effects
19794         of mono_debugger_init_threads().
19795         (mono_debugger_create_all_threads): Removed.
19796
19797 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
19798
19799         * image.c (mono_image_close): Tidy up trace messages.
19800
19801         * assembly.c (mono_assembly_close): Ditto.
19802
19803         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
19804         no longer references an already freed assembly. Fixes #78168.
19805
19806 2006-04-21  Dick Porter  <dick@ximian.com>
19807
19808         * threads.c (mono_thread_detach): Fix reference counting when
19809         detaching threads.
19810
19811 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
19812
19813         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
19814         #78155.
19815
19816 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
19817
19818         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
19819         (mono_type_to_stind): Ditto.
19820
19821         * marshal.c: Use the new helper functions to simplify code.
19822
19823         * image.c (mono_image_close): Add some code for help debug assembly unloading
19824         problems.
19825
19826         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
19827         image mempool.
19828
19829         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
19830         assembly was already loaded in another appdomain. Fixes #78083.
19831
19832 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
19833
19834         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
19835         referenced assemblies.
19836         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
19837
19838         * domain.c (mono_domain_free): Add a trace message.
19839
19840         * appdomain.c (add_assemblies_to_domain): Ditto.        
19841
19842         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
19843         field.  
19844
19845 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
19846
19847         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
19848
19849 2006-04-12  Martin Baulig  <martin@ximian.com>
19850
19851         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
19852         `USE_INCLUDED_LIBGC'.   
19853
19854 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
19855
19856         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
19857         the patch contains ../ and a small directory name later. Hopefully fixes
19858         #78035.
19859
19860 2006-04-10  Martin Baulig  <martin@ximian.com>
19861
19862         Clean up the debugger's thread-handling code.
19863
19864         The debugger's thread-handling code has been moved from
19865         ../mini/debug-debugger.c to threads.c.  We now iterate directly
19866         over the `threads' hash, keep track of exiting threads and also
19867         use proper locking.
19868
19869         We can now debug XSP and XSP based applications with the debugger.
19870
19871         * object-internals.h (MonoThread): Added `gpointer end_stack'.
19872
19873         * threads.h
19874         (MonoThreadCallbacks): Removed; this was only used by the debugger.
19875         (mono_install_thread_callbacks): Likewise.      
19876
19877         * threads.c (mono_thread_callbacks): Removed.
19878         (debugger_thread_created, debugger_thread_exited): New static functions.
19879         (start_wrapper): Call debugger_thread_created().
19880         (thread_cleanup): Call debugger_thread_exited().
19881         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
19882         (mono_debugger_init_threads): New public function.
19883         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
19884         iterate directly over the `threads' hash and also use proper locking.
19885
19886         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
19887
19888         * mono-debug-debugger.h
19889         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
19890
19891 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
19892
19893         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
19894         argument type=array. Fixes #78057.
19895
19896 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
19897
19898         * culture-info-table.h : regenerated. Fixed bug #69652.
19899
19900 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
19901
19902         * loader.c metadata.c: Reapply a variant r59116.
19903         
19904         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
19905
19906         * class.c (mono_class_setup_interface_offsets): New internal function.
19907
19908         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
19909         interfaces too. Fixes #77398.
19910
19911         * reflection.c (encode_cattr_value): Add support for 
19912         parameter type=object, argument type=array.
19913         (load_cattr_value): Ditto. Fixes #77916.
19914
19915         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
19916         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
19917
19918         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
19919         a byval char array and CharSet is Ansi.
19920
19921         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
19922
19923 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
19924
19925         * metadata.c: Add some locking comments.
19926         
19927         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
19928         mempool.
19929         (mono_metadata_free_method_signature): Don't free the signature itself.
19930
19931         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
19932
19933         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
19934         reference the same MonoImage.
19935         (mono_assembly_load_from_full): Add an assert.
19936
19937 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
19938
19939         * image.c (mono_image_close): Don't put the image we are about to free into the
19940         loaded_images_guid_hash.
19941
19942         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
19943         to reduce code duplication.
19944
19945         * marshal.c: Register the native functions called by this module as icalls, to
19946         somewhat centralize the creation of MonoMethodSignature's.
19947
19948         * loader.c (mono_method_signature): Add a cache for method signatures.
19949
19950         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
19951         the parameter attributes of a method.
19952         (mono_metadata_parse_method_signature_full): Refactored the computation of
19953         parameter attributes into a separate function. Also avoid one allocation in
19954         most cases.
19955
19956         * assembly.c (mono_assembly_close): Ditto.
19957
19958         * image.c (mono_image_close): Log trace messages with INFO level.
19959
19960         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
19961
19962         * image.c reflection.c: Correct reference counting of image modules.
19963         
19964         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
19965         of this function from the image mempool.
19966         
19967         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
19968         to allow more cached types to be used.
19969
19970         * mono-debug.c (mono_debug_add_method): Appled patch from
19971         David S. Miller  <davem@sunset.davemloft.net>: Access 
19972         minfo->lexical_blocks[] entry elements using read32().
19973
19974 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
19975
19976         * loader.c (mono_free_method): No longer free the method header for non-dynamic
19977         methods as it is allocated from the mempool.
19978
19979         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
19980         image mempool.
19981
19982         * metadata-internals.h: Add comments describing the reference counting scheme
19983         used for MonoImage and MonoAssembly.
19984
19985         * image.c assembly.c reflection.c: Rework reference counting of images and 
19986         assemblies so they are freed when the runtime is shut down. Free some 
19987         additional memory structures when an image is unloaded.
19988         
19989 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
19990
19991         * class.c loader.c reflection.c: Allocate more data structures in
19992         the image mempool.
19993
19994 2006-03-31  Miguel de Icaza  <miguel@novell.com>
19995
19996         * icall.c
19997         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
19998         build on pre glib 2.4 systems.
19999
20000 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
20001
20002         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
20003
20004         * icall.c: Fix some warnings.
20005
20006 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
20007
20008         * culture-info-table.h : regenerated.
20009
20010 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
20011
20012         * threads.c, object-internals.h, verify.c: changed the culture caching
20013         code to use a normal MonoArray for storage so the GC can keep track of
20014         them easily. Fixed bits of the cache logic, too and simplified the
20015         code.
20016
20017 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
20018
20019         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
20020         thread for non-Boehm GCs.
20021
20022 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
20023
20024         * domain.c, object.c, domain-internals.h: reduce the amount of memory
20025         needed to keep track of the data for static fields.
20026
20027 2006-03-29  Raja R Harinath  <rharinath@novell.com>
20028
20029         Fix #75172
20030         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
20031         for interface classes.  Use 'num_methods' instead.
20032         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
20033         before using '->vtable_size' field.
20034
20035 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
20036
20037         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
20038         doesn't contain managed pointers, so use a normal hashtable.
20039
20040 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
20041
20042         * reflection.c, class-internals.h, domain.c: fixed handling of types
20043         used as values for objects in custom attributes (bug #77915):
20044
20045 2006-03-24  Martin Baulig  <martin@ximian.com>
20046
20047         * class.c (mono_class_setup_fields): Added support for generic
20048         instances; fixes #77580.
20049
20050 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20051
20052         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
20053
20054 2006-03-24  Dick Porter  <dick@ximian.com>
20055
20056         * file-io.c (get_file_attributes): More stat macro breakage.
20057         Fixes bug 77759.
20058
20059 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
20060
20061         * profiler.c: added the file=filename option in the default profiler
20062         to output the profile data to filename.
20063
20064 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20065
20066         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
20067         bug #77877.
20068
20069 2006-03-22  Martin Baulig  <martin@ximian.com>
20070
20071         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
20072         allocated `MonoClassField *' in `fb->handle'.
20073
20074 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
20075
20076         * class.c, image.c, metadata-internals.h: implemented new mechanism to
20077         allocate interface ID to save memory and allow better ID reuse on
20078         appdomain unload. setup_generic_vtable () removal from Martin.
20079
20080 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
20081
20082         * object.h, appdomain.c, domain.c, exception.c, icall.c,
20083         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
20084         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
20085         write barriers for reference stores with managed objects accessed with
20086         C structures in the runtime and in embedding programs.
20087
20088 2006-03-20  Raja R Harinath  <rharinath@novell.com>
20089
20090         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
20091         'interface_id' and 'max_interface_id' fields of MonoClasses
20092         representing open generic types.
20093
20094 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
20095
20096         * object.h, object.c, icall.c: added functions to deal with
20097         storing valuetypes that contain references in managed objects.
20098         * reflection.c, string-icalls.c, threads.c, marshal.c: small
20099         fixes and comments around uses of mono_array_addr ().
20100
20101 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
20102
20103         * object.h, icall.c, monitor.c: object.GetHashCode ()
20104         implementation that supports the moving garbage collector.
20105
20106 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
20107
20108         * icall.c, threads-types.h, threads.c: implemented finalizer for
20109         LocalDataStoreSlot.
20110
20111 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
20112
20113         * metadata.c (mono_type_size): Add a fixme.
20114         (mono_type_stack_size): Ditto.
20115
20116         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
20117         'type_forwarders' field.
20118
20119         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
20120         attribute from net 2.0.
20121
20122         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
20123         from class.c.
20124
20125         * class.c (mono_class_setup_fields): Fix a warning.
20126         
20127         * class.c (mono_class_from_name): Add support for assemblyref entries
20128         in the EXPORTEDTYPE table.
20129
20130         * reflection.c: Add support for handling type forwarders under net 2.0.
20131
20132         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
20133         
20134 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
20135
20136         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
20137         overwriting entries in ModuleBuild->types, also clean up the code
20138         a little. Fixes #77774.
20139
20140 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
20141
20142         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
20143         load friend assembly info when present.
20144
20145 2006-03-14  Raja R Harinath  <rharinath@novell.com>
20146
20147         Fix crasher on gtest-158.cs.
20148         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
20149         the return value if the MonoClass we want is yet in an
20150         inconsistent state.
20151         * class.c (mono_class_create_from_typedef): Add an comment
20152         explaining an order dependency between mono_class_setup_parent and
20153         mono_class_setup_mono_type.
20154
20155 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
20156
20157         * class.c: documentation updates and events bug fix.
20158
20159 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
20160
20161         * class.c: some cleanup, locking fixes.
20162
20163 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
20164
20165         * class.c: fix the generics code to setup nested
20166         type info to the instantiated type (bug #77770).
20167
20168 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
20169
20170         * marshal.c: fixed a few type correctness issues.
20171
20172 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
20173
20174         * loader.c: the Set/Get/Addrtess array methods should be public.
20175
20176 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
20177
20178         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
20179         
20180         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
20181         info->wrapper.
20182
20183 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
20184
20185         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
20186
20187         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
20188
20189         * mempool.c (mono_mempool_alloc): Speed this up a bit.
20190         (mono_mempool_alloc0): Ditto.
20191
20192 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20193
20194         * socket-io.c:
20195         (create_object_from_sockaddr): it was allocating 4 extra bytes
20196         for the AF_UNIX data. Fixes bug #77747.
20197
20198 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
20199
20200         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
20201
20202 2006-03-09  Dick Porter  <dick@ximian.com>
20203
20204         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
20205         Fixes bug 76966 again.
20206
20207 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
20208
20209         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
20210         names from r57532
20211         * appdomain.c: Bumped corlib version to 48 (due to r57532)
20212
20213 2006-03-07  Martin Baulig  <martin@ximian.com>
20214
20215         * object.c
20216         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
20217
20218 2006-03-07  Martin Baulig  <martin@ximian.com>
20219
20220         * class.c
20221         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
20222         regression introduced in r56970; see gtest-252.cs.
20223
20224         * loader.c (mono_get_method_constrained): Correctly handle generic
20225         methods; see gtest-253.cs.
20226
20227 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
20228
20229         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
20230
20231 2006-03-04  Martin Baulig  <martin@ximian.com>
20232
20233         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
20234         compute the parent type at runtime, just like we're already doing
20235         it for interfaces.
20236
20237         * reflection.c
20238         (mono_reflection_bind_generic_parameters): Don't compute the
20239         parent type anymore.
20240
20241         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
20242
20243 2006-03-04  Martin Baulig  <martin@ximian.com>
20244
20245         * mono-debug-debugger.h
20246         (mono_debugger_create_notification_function): Allocate memory at
20247         runtime and return a pointer to it.
20248
20249 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
20250
20251         * assembly.c: Fix windows build.
20252         
20253         * assembly.c: Fix build.
20254
20255         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
20256
20257         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
20258         
20259 2006-03-03  Dick Porter  <dick@ximian.com>
20260
20261         * process.c
20262         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
20263         Check parameters before dereferencing them.  Fixes Aaron's part of
20264         bug 77393.
20265
20266 2006-03-03  Raja R Harinath  <rharinath@novell.com>
20267
20268         Fix performance regression.
20269         * loader.c (find_method_in_class): Add 'from_class' argument.
20270         Rename 'klass' argument to 'in_class'.  The signature is compared
20271         against the method in 'in_class', and the corresponding method is
20272         returned from 'from_class'.
20273         (find_method): Walk both 'in_class' and 'from_class' in parallel.
20274         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
20275         type definition and generic instantiation in parallel.
20276         (mono_get_method_constrained): Update to changes.
20277
20278 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
20279
20280         * threads.c: make sure the domain is correct, too when doing
20281         mono_thread_attach ().
20282
20283 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
20284
20285         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
20286         windows. Fixes #77683.
20287
20288 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
20289
20290         * object.h, *: introduced specific way to set elements of an array
20291         of references to be used as write barrier. Still need to audit the
20292         uses of mono_array_addr.
20293
20294 2006-03-01  Miguel de Icaza  <miguel@novell.com>
20295
20296         * object-internals.h: New field to cache the assmebly name, patch
20297         from Tambet Ingo (tambet@ximian.com)
20298
20299 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
20300
20301         * decimal.h, class-internals.h, metadata-internals.h,
20302         file-io.h: mark a few function declarations as internal, to
20303         reduce the number of PLT entries.
20304
20305 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20306
20307         * file-io.c: fix typo in warning message.
20308
20309 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
20310
20311         * loader.c: on unix, lookup the "*A" version of a function
20312         if charset is auto as a second option before failing.
20313
20314 2006-02-28  Raja R Harinath  <rharinath@novell.com>
20315
20316         * class.h (mono_class_inflate_generic_method): Revert to two
20317         argument version.
20318         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
20319         (mono_class_inflate_generic_method_full): Add.
20320         * class.c (mono_class_inflate_generic_method_full): Rename from
20321         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
20322         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
20323         * loader.c, reflection.c: Update to changes.
20324
20325 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
20326
20327         * icall.c: const fixes and small improvements.
20328
20329 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20330
20331         * threadpool.c: for asynchronous connect(), enable the same workaround
20332         for BSD 6 as for the Mac. Fixes bug #77637.
20333
20334 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
20335
20336         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
20337         formatted classes. Fixes #77524.
20338
20339 2006-02-24  Raja R Harinath  <rharinath@novell.com>
20340
20341         * class.c (inflate_generic_type): Add a couple more
20342         micro-optimizations.
20343         (inflate_generic_context): Don't use the 'gmethod' from
20344         'inflate_with'.
20345         (mono_class_inflate_generic_method): If the method has generic
20346         parameters, but the passed-in context doesn't have a 'gmethod',
20347         create one.  Use the possibly simplified generic instantiation
20348         from the declaring class instead of the one passed in.
20349
20350 2006-02-24  Raja R Harinath  <harinath@gmail.com>
20351
20352         Make generic method signature and method header handling lazy.
20353         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
20354         (inflate_generic_header): Likewise.
20355         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
20356         parameter to avoid inflating types.
20357         (mono_get_inflated_method): Empty out.
20358         * class.h (mono_class_inflate_generic_method): Update to changes.
20359         * loader.c (mono_get_method_from_token): Don't parse signature for
20360         generic methods, nor methods of generic classes.
20361         (mono_method_signature): Rename from 'mono_method_signature'.
20362         Inflate signature on demand.
20363         (mono_method_get_header): Inflate method header on demand.
20364         * reflection.c: Update to changes.
20365
20366 2006-02-23  Raja R Harinath  <rharinath@novell.com>
20367
20368         * metadata.c (mono_metadata_inflate_generic_inst): If the
20369         instantiation is closed, don't bother expanding it in the new
20370         context.
20371         * class.c (inflate_generic_class): If the generic instantiation
20372         doesn't change after inflation, return the argument itself.
20373         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
20374         Add bounds checks.
20375         (inflate_generic_context): If neither the generic class nor the
20376         generic method instantiations change, return the original context.
20377         * reflection.c (mono_method_get_object): Do
20378         'mono_get_inflated_method' before accessing the ->klass field.
20379         (inflate_mono_method): Don't create a MonoGenericMethod unless
20380         necessary.
20381         (inflate_method): Don't pass a constructed type as the declaring
20382         type of a methodbuilder.
20383
20384 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
20385
20386         * object.c: fix memory overwrite.
20387
20388 2006-02-22  Dick Porter  <dick@ximian.com>
20389
20390         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
20391         it doesn't work any more.
20392         (mono_threads_request_thread_dump): Fix unused variable warnings.
20393
20394 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
20395
20396         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
20397         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
20398         the public header file.
20399
20400 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
20401
20402         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
20403
20404 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
20405
20406         * class-internals.h, object.c: reduce the size of MonoVTable
20407         and store the interface_offsets array at negative offsets.
20408
20409 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
20410
20411         * metadata.c: tweak table descriptors data structures to reduce
20412         size and runtime relocations.
20413
20414 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
20415
20416         * marshal.c: fix some types and opcodes to be type-safe
20417         in marshaling wrappers.
20418
20419 2006-02-21  Ankit Jain  <jankit@novell.com>
20420
20421         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
20422
20423 2006-02-21  Raja R Harinath  <rharinath@novell.com>
20424
20425         * metadata.c (get_constraints): Relax debugging checks for monodis.
20426
20427 2006-02-21  Ankit Jain  <jankit@novell.com>
20428
20429         * metadata.c (mono_metadata_load_generic_params): Move the code
20430         checking for ambiguous generic params from here to mono/dis/get.c
20431         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
20432
20433 2006-02-21  Raja R Harinath  <harinath@gmail.com>
20434
20435         Fix assertion triggered when compiling nemerle.
20436         * class.c (mono_get_shared_generic_inst): Rename from
20437         get_shared_inst and make non-static.
20438         * loader.c (mono_get_shared_generic_method): New.  Used to create
20439         the MonoGenericContext-equivalent of a MonoGenericContainer.
20440         (mono_get_method_from_token): Initialize the 'context' field of
20441         the created MonoGenericContainer.
20442         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
20443         * metadata.c (get_constraints): Add sanity check.
20444         * class-internals.h: Add new internal methods.
20445
20446         * reflection.c (verify_safe_for_managed_space): New sanity check.
20447         Currently checks that owner-less generic parameters aren't allowed
20448         in managed space.
20449         (mono_type_get_object): Use it.
20450         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
20451         that are now in mono_type_get_object.
20452         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
20453
20454 2006-02-19  Raja R Harinath  <harinath@gmail.com>
20455
20456         * metadata.c (mono_type_create_from_typespec): Rename from
20457         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
20458         argument and caching of types in the generic container.
20459         (unwrap_arrays, find_generic_param): Remove.
20460         * metadata-internals.h: Update.
20461         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
20462
20463 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
20464
20465         * class.c (mono_class_get_exception_for_failure): Fix a warning.
20466
20467         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
20468         return values. Fixes #77581.
20469
20470         * class.c (mono_fnptr_class_get): Switch name and name_space.
20471
20472         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
20473         classes and add support for [In, Out] attributes.
20474         (mono_marshal_free_asany): Ditto. Fixes #77524.
20475
20476 2006-02-18  Raja R Harinath  <harinath@gmail.com>
20477
20478         * class.c (mono_class_from_generic_parameter): Make more robust to
20479         incomplete MonoGenericContainers from monodis.
20480
20481 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
20482
20483         * class-internals.h: added some more exception types.
20484         * class.c, metadata.c: added a few checks to handle missing
20485         types.
20486
20487 2006-02-17  Raja R Harinath  <rharinath@novell.com>
20488
20489         Use owner-less generic-params some more.
20490         * class.c (my_mono_class_from_generic_parameter): Remove.
20491         (mono_class_from_generic_parameter): Handle null image,
20492         param->name and param->owner.
20493         (mono_class_from_mono_type): Update.
20494         (mono_class_create_from_typespec): Remove 'container' parameter.
20495         If that parameter is non-null, the result is always inflated by
20496         'mono_class_get_full' anyway.
20497         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
20498         parameter.
20499         (mono_class_get_full): Update.
20500
20501         * class.c (inflate_generic_type) [GENERICINST]: If the generic
20502         instance is not open, don't bother inflating.
20503         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
20504         parse metadata for inflated classes.
20505         (_mono_class_get): Change GenericContext* parameter to
20506         GenericContainer*.
20507         (mono_class_create_from_typespec): Likewise.  Simplify, and
20508         implement trivially.  All the cases are handled in
20509         mono_class_from_mono_type.  Don't inflate returned class.
20510         (mono_class_get_full): Delegate GENERICINST optimization to
20511         inflate_generic_type.
20512         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
20513
20514 2006-02-16  Dick Porter  <dick@ximian.com>
20515
20516         * socket-io.c (create_object_from_sockaddr): Fix typo.
20517         (create_sockaddr_from_object): Check array lengths before
20518         potentially accessing items off the end.
20519         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
20520         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
20521         (ves_icall_System_Net_Sockets_Socket_Send_internal)
20522         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
20523         length checks to avoid wraparound overflows.
20524         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
20525         contents of the array of sockets
20526         (hostent_to_IPHostEntry2)
20527         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
20528         Check return value of inet_ntop ().
20529         (addrinfo_to_IPHostEntry): Fix typo
20530
20531 2006-02-16  Raja R Harinath  <rharinath@novell.com>
20532
20533         Type metadata parsing doesn't use generic-instantiation information.
20534         * metadata.c (mono_metadata_parse_array_full): Change
20535         MonoGenericContext* parameter to MonoGenericContainer*.
20536         (mono_metadata_parse_type_full): Likewise.
20537         (mono_type_create_from_typespec_full): Likewise.
20538         (mono_metadata_parse_mh_full): Likewise.
20539         (mono_metadata_parse_generic_inst): Likewise.
20540         (do_mono_metadata_parse_generic_class): Likewise.
20541         (do_mono_metadata_parse_type): Likewise.
20542         * metadata-internals.h: Update to changes.
20543         * class.c (mono_class_find_enum_basetype): Likewise.
20544         (mono_class_setup_fields): Likewise.
20545         (mono_class_create_from_typespec): Likewise.
20546         * loader.c (method_from_methodspec): Likewise.
20547         (mono_get_method_from_token): Likewise.
20548         (mono_method_get_header): Likewise.
20549
20550 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
20551
20552         * marshal.c: handle additional GENERICINST case (patch from
20553         Thong Nguyen <tum@veridicus.com>).
20554         Fix a few cases where LDIND_I/STIND_I was used for references.
20555
20556 2006-02-16  Raja R Harinath  <rharinath@novell.com>
20557
20558         * reflection.c (mono_reflection_get_token): Remove unused variable.
20559
20560 2006-02-16  Martin Baulig  <martin@ximian.com>
20561
20562         * reflection.c (mono_reflection_get_token): Add support for fields
20563         in instantiated generic types.
20564
20565         * icall.c
20566         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
20567
20568 2006-02-15  Martin Baulig  <martin@ximian.com>
20569
20570         * icall.c
20571         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
20572         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
20573         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
20574         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
20575
20576 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
20577
20578         * class.c, metadata.c, metadata.h, object.c, icall.c,
20579         marshal.c: changed mono_type_get_underlying_type () to do
20580         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
20581         Fixed handling of instantiated generic valuetypes (bug #75479).
20582
20583 2006-02-15  Raja R Harinath  <rharinath@novell.com>
20584
20585         * metadata.c (mono_metadata_decode_signed_value): Simplify.
20586         Delegate to mono_metadata_decode_value, and work on the returned value.
20587
20588         * icall.c (ves_icall_MonoType_GetGenericArguments):
20589         Add consistency check here too.
20590         
20591 2006-02-15  Ankit Jain  <jankit@novell.com>
20592
20593         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
20594         char/short etc.
20595
20596 2006-02-15  Ankit Jain  <jankit@novell.com>
20597
20598         * metadata.c (mono_metadata_decode_signed_value): New function to decode
20599         signed values, used only for representing lower bounds of arrays.
20600         (mono_metadata_parse_array_full): Use new
20601         mono_metadata_decode_signed_value to decode lower bounds.
20602
20603 2006-02-14  Martin Baulig  <martin@ximian.com>
20604
20605         * reflection.c
20606         (mono_reflection_get_token): Support "MonoGenericMethod" and
20607         "MonoGenericCMethod" and allow generic instances / methods.
20608
20609 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
20610
20611         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
20612         to obtain the terminal size using an ioctl.
20613
20614         * object.c (mono_nullable_init): Revert this as nullable reference
20615         types are not valid.
20616         (mono_nullable_box): Ditto.
20617
20618 2006-02-09  Dick Porter  <dick@ximian.com>
20619
20620         * threads.c (mono_thread_detach): Drop a reference to the thread
20621         we're detaching.
20622
20623 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
20624
20625         * object.c (mono_nullable_init): Handle nullable reference types.
20626         (mono_nullable_box): Ditto. Fixes #77446.
20627
20628 2006-02-07  Martin Baulig  <martin@ximian.com>
20629
20630         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
20631
20632 2006-02-07  Ankit Jain  <jankit@novell.com>
20633
20634         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
20635         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
20636         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
20637         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
20638         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
20639         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
20640
20641 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
20642
20643         * class.c (mono_class_create_generic): Set type_token as well.
20644
20645         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
20646         compatible with MS.
20647
20648 2006-02-02  Martin Baulig  <martin@ximian.com>
20649
20650         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
20651         has never been used so far.
20652
20653 2006-02-02  Martin Baulig  <martin@ximian.com>
20654
20655         * mono-debug-debugger.h: Changed comment at the top of this file;
20656         the header is not installed, but it's safe to #include it from
20657         within the JIT.
20658
20659         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
20660         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
20661
20662 2006-02-02  Martin Baulig  <martin@ximian.com>
20663
20664         * mono-debug.h
20665         (MonoSymbolTable): Removed the `metadata_info' field.
20666
20667         * mono-debug.c
20668         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
20669
20670         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
20671         (mono_debugger_add_builtin_types): Removed.
20672         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
20673         (mono_debugger_create_notification_function): We now operate on a
20674         pre-allocated area; take a `gpointer' and return `void'.
20675
20676         * mono-debug-debugger.c
20677         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
20678         (mono_debugger_add_builtin_types): Removed.
20679
20680 2006-02-02  Martin Baulig  <martin@ximian.com>
20681
20682         * threads.c (mono_debugger_create_all_threads): New public method.
20683
20684 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
20685
20686         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
20687         breaks on several platforms.
20688
20689 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
20690
20691         * assembly.c: the VS.NET build doesn't supply default values for
20692         MONO_ASSEMBLIES and MONO_CFG_DIR.
20693
20694 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
20695
20696         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
20697         helper function.
20698
20699         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
20700
20701         * loader.c (method_from_memberref): Fix a warning.
20702
20703         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
20704
20705         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
20706         with explicit layout. Fixes #77433.
20707
20708 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
20709
20710         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
20711         max_interface_id is initialized before using it. Fixes #77398.
20712         (ves_icall_Type_GetInterfaces): Ditto.
20713
20714 2006-01-30  Raja R Harinath  <rharinath@novell.com>
20715
20716         * metadata.c (mono_metadata_parse_method_signature_full): Don't
20717         allocate memory for parameter attributes when parsing memberref
20718         signatures.
20719         * loader.c (mono_loader_set_error_method_load): Don't warn.
20720         (method_from_memberref): Ensure MissingMethodException gets thrown
20721         if method is not found.  Make warning more informative.
20722
20723 2006-01-29  Raja R Harinath  <harinath@gmail.com>
20724
20725         Fix #77397
20726         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
20727         return true if is byref.
20728         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
20729         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
20730         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
20731
20732 2006-01-27  Raja R Harinath  <rharinath@novell.com>
20733
20734         Fix tests/find-method.2.il
20735         * loader.c (find_method, find_method_in_class): Remove is_inflated
20736         argument.  Revert 2006-01-18 change.
20737         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
20738         is generic, search for method in its generic definition.
20739         * class.c (mono_class_setup_vtable_general): Print generic
20740         arguments of generic types in debugging printf.
20741
20742 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
20743
20744         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
20745
20746         * threads.c (mono_threads_request_thread_dump): New helper function.
20747
20748 2006-01-25  Raja R Harinath  <rharinath@novell.com>
20749
20750         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
20751
20752 2006-01-25  Ankit Jain  <jankit@novell.com>
20753
20754         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
20755         move definition to ..
20756         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
20757         
20758 2006-01-25  Ankit Jain  <jankit@novell.com>
20759             Raja R Harinath  <rharinath@novell.com>
20760
20761         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
20762         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
20763         as necessary.
20764
20765 2006-01-25  Martin Baulig  <martin@ximian.com>
20766
20767         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
20768         `MonoDebuggerThread' into debug-debugger.c.
20769
20770 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
20771
20772         * profiler.c: fix printing of data.
20773
20774 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
20775
20776         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
20777           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
20778
20779 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
20780
20781         * object.c: fix deadlock related to string interning.
20782
20783 2006-01-23  Martin Baulig  <martin@ximian.com>
20784
20785         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
20786
20787         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
20788
20789 2006-01-23  Martin Baulig  <martin@ximian.com>
20790
20791         * mono-debug.h: Moved the prototypes of some functions which are
20792         used by the JIT here from mono-debug-debugger.h.
20793
20794 2006-01-21  Martin Baulig  <martin@ximian.com>
20795
20796         * Makefile.am: Don't install mono-debug-debugger.h.
20797
20798 2006-01-21  Martin Baulig  <martin@ximian.com>
20799
20800         * mono-debug-debugger.h: Enforce the private status of this header
20801         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
20802         Moved some stuff from mono-debugger-jit-wrapper.h here.
20803
20804 2006-01-20  Raja R Harinath  <rharinath@novell.com>
20805
20806         * class.c (mono_class_from_typeref): Add a sanity test to help
20807         catch lack of assembly load/search hooks.
20808
20809 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
20810
20811         * marshal.c (emit_struct_conv): Relax the fields with same offset
20812         check even more. Fixes #77230.
20813
20814 2006-01-18  Martin Baulig  <martin@ximian.com>
20815
20816         * loader.c (find_method_in_class): Added `gboolean is_inflated'
20817         argument; if false, we compare the uninstantiated signatures.
20818         (method_from_memberref): Compare the uninstantiated signatures;
20819         fixes #76417.
20820
20821 2006-01-18  Robert Jordan  <robertj@gmx.net>
20822
20823         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
20824         Clear the weak link. Fixes bug #77170.
20825
20826         * gc.c (mono_gchandle_free):
20827         Reflect *-gc.c changes (tiny optimization).
20828
20829 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
20830
20831         * metadata.c (mono_metadata_signature_dup): Applied patch from
20832         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
20833         Fixes #77288.
20834
20835 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
20836
20837         * marshal.c (emit_struct_conv): Allow fields with the same offset when
20838         marshalling from native to managed code. Fixes #77230.
20839
20840 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20841
20842         * threadpool.c: fix problem (Mac only) when more than one asynchronous
20843         connect. Fixes bug #77020.
20844
20845 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
20846
20847         * class.c: fixed id assignement for nested interfaces (bug #77275).
20848         Added also better info for --print-vtable debugging.
20849
20850 2006-01-12  Martin Baulig  <martin@ximian.com>
20851
20852         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
20853         interfaces on-the-fly; fixes #76625.
20854
20855         * class-internals.h
20856         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
20857         don't need that anymore.
20858
20859 2006-01-12  Miguel de Icaza  <miguel@novell.com>
20860
20861         * socket-io.c
20862         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
20863         To avoid initing the nested_classes when not needed I turned the
20864         PeerCredData as a toplevel internal class, as it has to be shared
20865         anyways. 
20866
20867         Fixes the CASA issue.
20868
20869 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
20870
20871         * domain.c: Accessors for MonoJitInfo
20872
20873         * profiler-private.h: Add jitinfo to the end jit hook
20874
20875         * profiler.[ch]: Define new hooks, called after jitting which give
20876         the MonoJitInfo that was compiled
20877
20878 2006-01-10  Martin Baulig  <martin@ximian.com>
20879
20880         * class.c (mono_class_setup_events): Add support for generic
20881         classes; fixes #76440.
20882
20883 2006-01-06  Raja R Harinath  <rharinath@novell.com>
20884
20885         Fix #77160.
20886         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
20887         on passed-in method.
20888
20889 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
20890
20891         * object.c (mono_runtime_invoke_array): Add Nullable support.
20892
20893         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
20894
20895 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
20896
20897         * file-io.c: Don't consider sockets as directory and avoid an endless
20898         loop. Fix bug #76966.
20899
20900 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
20901
20902         * object.c (mono_nullable_init): New helper function.
20903         (mono_nullable_box): Ditto.
20904
20905         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
20906
20907         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
20908
20909         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
20910         
20911 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
20912
20913         * class.c (mono_class_is_assignable_from): Make T assignable to 
20914         Nullable<T>.
20915
20916 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
20917
20918         * appdomain.c: Bump corlib version to 46.
20919         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
20920         serialization purpose) and changed ves_icall_System_Reflection_
20921         Assembly_get_code_base signature to accept a boolean (to escape, or 
20922         not, the assembly code base).
20923
20924 2005-12-23  Dick Porter  <dick@ximian.com>
20925
20926         * icall.c: 
20927         * threads-types.h: 
20928         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
20929         CreateEvent icall now returns "created" boolean parameter.
20930
20931 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
20932
20933         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
20934         #76967.
20935
20936         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
20937         when attr_klass is an interface. Fixes #77045.
20938
20939 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
20940
20941         * marshal.c (emit_struct_conv): Fix previous patch.
20942         
20943         * marshal.c (emit_struct_conv): Add a check for fields with the same
20944         offset.
20945
20946 2005-12-20  Raja R Harinath  <rharinath@novell.com>
20947
20948         Fix regression in Mono.C5.
20949         * class.c (mono_class_create_generic): If 'klass' is an interface
20950         set up the interface offsets.
20951         (mono_class_is_assignable_from): Don't throw away generic arguments.
20952
20953 2005-12-19  Raja R Harinath  <rharinath@novell.com>
20954
20955         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
20956         type parameters.
20957
20958 2005-12-15  Raja R Harinath  <rharinath@novell.com>
20959
20960         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
20961         dead store.
20962         (do_mono_metadata_parse_generic_class): Don't pass the current
20963         generic context when parsing the type being instantiated: it
20964         cannot use it, anyway.
20965
20966         * loader.c (method_from_memberref): Don't inflate a signature if
20967         it doesn't contain any type parameters.
20968
20969 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
20970
20971         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
20972
20973 2005-12-14  Martin Baulig  <martin@ximian.com>
20974
20975         * class.c
20976         (mono_type_get_name_recurse): Don't return null for type
20977         parameters and open generic classes.
20978         (mono_class_setup_methods): Don't exclude generic instances.
20979         (mono_get_unique_iid): Use different IDs for different
20980         instantiations of the same generic type.
20981         (mono_class_setup_vtable): Only use setup_generic_vtable() for
20982         open generic instances; create a normal vtable for closed generic
20983         instances.
20984         (mono_class_setup_vtable_general): We're now also called for
20985         closed generic instances.
20986
20987         * reflection.c
20988         (mono_reflection_bind_generic_parameters): Correctly use
20989         mono_metadata_lookup_generic_inst() everywhere.
20990
20991 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
20992
20993         * object.c (mono_class_create_runtime_vtable): Call 
20994         mono_class_setup_vtable ().
20995
20996         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
20997         function.
20998         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
20999         #76959.
21000
21001         * loader.c (mono_loader_set_error_type_load): Print the type load
21002         warnings to the console so they are more visible to the user.
21003         (mono_loader_set_error_method_load): Ditto.
21004
21005         * reflection.c (ensure_runtime_vtable): Revert the last change as it
21006         is still broken.
21007         
21008         * reflection.c (ensure_runtime_vtable): Fix build.
21009
21010         * reflection.c (ensure_runtime_vtable): Disable an optimization which
21011         doesn't work in all cases.
21012
21013 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
21014
21015         * object.c (mono_array_new_full): Treat a single dimensional array
21016         with 0 lower bounds as an szarray. Fixes #76973.
21017
21018         * reflection.c (custom_attr_visible): Really fix this.
21019
21020 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
21021
21022         * reflection.c (custom_attr_visible): Allow nested public attributes
21023         as well.
21024
21025         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
21026         interface check.
21027
21028 2005-12-12  Raja R Harinath  <harinath@gmail.com>
21029
21030         * class.c (set_generic_param_owner): Delete.
21031         (mono_class_create_from_typedef): Don't set ->owner field of
21032         generic parameters to "param containers" of enclosing classes.
21033         * reflection.c (mono_reflection_initialize_generic_parameter):
21034         Likewise.
21035
21036 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
21037
21038         * reflection.c (custom_attr_visible): Fix build.
21039
21040 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
21041
21042         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
21043         private attributes.
21044         
21045         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
21046         handling of null parameter defaults.
21047
21048 2005-12-09  Raja R Harinath  <rharinath@novell.com>
21049
21050         * class.c (mono_class_from_generic_parameter): Don't set
21051         klass->generic_container.
21052         (my_mono_class_from_generic_parameter): Likewise.
21053
21054 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
21055
21056         * reflection.c (load_public_key): Fix a warning.
21057         (method_encode_code): Fix unaligned accesses.
21058
21059 2005-12-07  Martin Baulig  <martin@ximian.com>
21060
21061         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
21062
21063         * reflection.c
21064         (write_generic_param_entry): Encode our custom attrs.
21065
21066         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
21067
21068 2005-12-07  Martin Baulig  <martin@ximian.com>
21069
21070         * reflection.c (encode_new_constraint): Removed; we don't use the
21071         `NewConstraintAttribute' anymore.
21072
21073 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
21074
21075         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
21076         not fire a TypeResolve event when Assembly.GetType () is called.
21077
21078 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
21079
21080         Beginning of support for nullable types in the runtime. Parts of
21081         this patch are from Martin.
21082
21083         * appdomain.c (MONO_CORLIB_VERSION): Bump
21084
21085         * domain.c (mono_init_internal): get the nullable type
21086
21087         * class.c (mono_class_is_nullable): New method
21088         (mono_class_get_nullable_param): New mehod
21089         (mono_class_create_generic): In types T? set cast_class to T
21090
21091         * class-internals.h (MonoDefaults): new nullable default class
21092         (mono_class_get_nullable_param, mono_class_get_nullable_param):
21093         new methods.
21094
21095 2005-12-05  Raja R Harinath  <rharinath@novell.com>
21096
21097         * metadata.c (select_container): New.  Refactor code to select the
21098         appropriate GenericContainer given the type of generic parameter
21099         we are looking for.
21100         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
21101         not a MonoGenericContext.  Use select_container.  Update parameters.
21102         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
21103         and MONO_TYPE_MVAR.
21104         (unwrap_arrays): Remove duplicate tests.
21105         (find_generic_param): Rename from 'has_same_context'.  Now walks a
21106         generic instantiated class to find any arguments that are generic
21107         parameters.
21108         (mono_type_create_from_typespec_full): Use find_generic_param to
21109         avoid evicting some generic instantiations from the typespec
21110         cache.
21111
21112 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
21113
21114         * reflection.c: fixed writing of doubles on ARM FPA.
21115
21116 2005-12-02  Robert Jordan  <robertj@gmx.net>
21117
21118         * icall.c: Fixed EventInfo.ReflectedType (#76829).
21119
21120 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21121
21122         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
21123         least on SUSE 10 they are not the same (on debian, they are just the
21124         same thing).
21125
21126 2005-12-01  Raja R Harinath  <rharinath@novell.com>
21127
21128         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
21129         DeclaringType for VARs and MVARs.
21130         * class.c (set_generic_param_owner): Fix initialization of owner
21131         fields.
21132
21133 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
21134
21135         * icall.c: fixed Enum.ToObject() to correctly convert the values.
21136
21137 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21138
21139         * threadpool.c: workaround for a bug that shows up on the Mac:
21140         select()+connect() on a blocking socket is not like it should
21141         be, so we proceed to connect() in that case, wasting the I/O
21142         threadpool thread until connect succeedes. Fixes bug #75436.
21143
21144 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21145
21146         * threadpool.c: fix typo when setting file descriptor states.
21147
21148 2005-11-28  Raja R Harinath  <rharinath@novell.com>
21149
21150         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
21151         * metadata.c (mono_metadata_parse_method_signature_full): Don't
21152         create a temporary signature container.
21153         (mono_metadata_parse_generic_param): Update to changes.
21154         (mono_type_create_from_typespec_full): Update to changes.
21155         * loader.c (method_from_memberref): Don't use a
21156         MonoGenericContainer while parsing a memberref signature.
21157         (method_from_methodspec): Remove dead-store of the 'container'
21158         variable.  It's overwritten before use.
21159
21160         * metadata.c (mono_type_create_from_typespec_full): Make debugging
21161         checks tighter.
21162         (mono_metadata_parse_generic_param): Likewise.
21163         * loader.c (find_method_in_class): Does not need a
21164         MonoGenericContainer.  Use 'mono_method_signature' rather than
21165         'mono_method_signature_full'.
21166         (find_method, mono_get_method_constrained, method_from_memberref):
21167         Update to changes.
21168
21169         * metadata.c (mono_type_create_from_typespec_full): Ensure that
21170         owner-less generic-parameters are never evicted from the typespec
21171         cache.
21172
21173         * loader.c (method_from_memberref): Don't use the current context
21174         when parsing signatures.
21175         (method_from_methodspec, mono_get_method_from_token): Update to changes.
21176
21177         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
21178         side-effects in g_assert.
21179         * loader.c (mono_get_method_from_token): Resolve klass earlier so
21180         that we don't potentially lose information.
21181
21182 2005-11-26  Dick Porter  <dick@ximian.com>
21183
21184         * icall.c:
21185         * threads.c: icalls to implement basic (ie, not named)
21186         System.Threading.Semaphore.
21187
21188 2005-11-24  Dick Porter  <dick@ximian.com>
21189
21190         * process.c
21191         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
21192         Use GetProcessId() if it's available.
21193
21194 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
21195
21196         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
21197
21198 2005-11-23  Raja R Harinath  <rharinath@novell.com>
21199             Ankit Jain  <jankit@novell.com>
21200
21201         * loader.c (mono_get_method_from_token): Initialize 'method' field
21202         of all generic parameters before parsing the signature.  Remove
21203         code that "fixed"-up MVAR references.
21204
21205 2005-11-23  Ankit Jain  <jankit@novell.com>
21206
21207         * metadata.c (mono_metadata_has_generic_params):
21208         (mono_metadata_load_generic_param_constraints):
21209         (mono_metadata_load_generic_params): Move duplicate code ...
21210         (mono_metadata_get_generic_param_row): ... here. Returns the
21211         first row-id in GenericParam table for a given owner (token).
21212         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
21213         prototype.
21214
21215 2005-11-23  Raja R Harinath  <rharinath@novell.com>
21216             Ankit Jain  <jankit@novell.com>
21217
21218         * metadata.c (mono_metadata_class_equal): Pass signature_only when
21219         comparing VARs too.
21220         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
21221         type->data.generic_param only if the type is an MVAR.
21222         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
21223         leak owner-less VARs and MVARs into managed space.
21224
21225 2005-11-21  Martin Baulig  <martin@ximian.com>
21226
21227         * class-internals.h
21228         (MonoMethod): Moved the `generic_container' here from
21229         `MonoMethodNormal' since we now also need it for
21230         `MonoMethodPInvoke';
21231         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
21232         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
21233         an union containing both `MonoMethodNormal' and
21234         `MonoMethodPInvoke'.
21235
21236         * loader.c
21237         (mono_get_method_from_token): Allow implementing generic methods
21238         as interncalls.
21239
21240         * threads.c
21241         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
21242         icall.
21243
21244 2005-11-17  Dick Porter  <dick@ximian.com>
21245
21246         * icall.c: 
21247         * process.h: 
21248         * process.c: Split the Process Start_internal icall into
21249         ShellExecuteEx_internal and CreateProcess_internal, which are
21250         called depending on whether UseShellExecute is true.  Fixes bug
21251         76670.
21252
21253         * appdomain.c (MONO_CORLIB_VERSION): Incremented
21254
21255 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
21256
21257         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
21258         'msize' parameters, use the information in 'mspec' instead.
21259         (emit_object_to_ptr_conv): Ditto.
21260
21261         * marshal.c (emit_struct_conv): Handle explicit layout structs with
21262         fields out of order. Fixes #76733.
21263
21264 2005-11-17  Ankit Jain  <jankit@novell.com>
21265
21266         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
21267
21268 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
21269
21270         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
21271           bug #76575.
21272
21273 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
21274
21275         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
21276         for types with non-auto layout. Fixes #76717.
21277
21278 2005-11-16  Ankit Jain  <jankit@novell.com>
21279
21280         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
21281         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
21282         if generic_context is null.
21283           (mono_metadata_generic_param_equal): param->owner can be null.
21284           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
21285         null.
21286
21287 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
21288
21289         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
21290         the correct value.
21291
21292 2005-11-15  Martin Baulig  <martin@ximian.com>
21293
21294         * object.c (set_value): Use mono_class_from_mono_type() instead of
21295         the hack for generic instances; fixes #76136.
21296
21297 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
21298
21299         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
21300         fields.
21301
21302         * image.c (load_metadata_ptrs): Initialize the new fields.
21303
21304         * reflection.c (create_dynamic_mono_image): Ditto.
21305
21306         * reflection.c (build_compressed_metadata): Use the new fields.
21307
21308         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
21309         icall.
21310
21311         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
21312         icall.
21313         
21314 2005-11-15  Ankit Jain  <jankit@novell.com>
21315             Raja R Harinath  <harinath@gmail.com>
21316
21317         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
21318         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
21319         new per-generic_container cache if the cached MonoType's context matches
21320         the current context.
21321           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
21322         to the expected context.
21323           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
21324
21325 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21326
21327         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
21328         we changed the signature of an icall.
21329         * icall.c: Modify to mono_double_ParseImpl return true/false 
21330         depending on the success, instead of throwing the exception. This will
21331         help us in Double.TryParse methods.
21332         
21333 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
21334
21335         * marshal.c (emit_marshal_object): Throw an exception when
21336         marshalling 'object' instead of crashing. Fixes #76696.
21337
21338 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
21339
21340         * class-internals.h: Add prototype for mono_type_get_full_name ().
21341
21342 2005-11-11  Dick Porter  <dick@ximian.com>
21343
21344         * threads.c (mono_thread_manage): Make sure the main thread has
21345         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
21346
21347 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
21348
21349         * loader.c (mono_loader_set_error_type_load): Log a warning to the
21350         console about the missing type.
21351         (mono_loader_set_error_method_load): Ditto.
21352
21353 2005-11-09  Miguel de Icaza  <miguel@novell.com>
21354
21355         * mono-config.c (mono_get_config_dir): Set the system defaults if
21356         none is specified.
21357
21358         * assembly.c (mono_set_dirs): New API entry point to set the
21359         assembly and the config directory in one call
21360
21361 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
21362
21363         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
21364         the ftnptr was created from a delegate in a domain other than the
21365         current domain. Fixes #75377.
21366
21367         * exception.h exception.c: Add mono_get_exception_not_supported ().
21368
21369 2005-11-08  Martin Baulig  <martin@ximian.com>
21370
21371         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
21372
21373 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
21374
21375         * security-manager.h: Added definitions to deal with strongname key 
21376         pairs bigger (and smaller) than 1024 bits.
21377         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
21378         adjust wrt the public key length being used.
21379
21380 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
21381
21382         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
21383           Windows build (r51396-51397).
21384
21385 2005-11-03  Martin Baulig  <martin@ximian.com>
21386
21387         * class.c (mono_class_setup_vtable_general): Also add generic
21388         methods to the vtable; fixes #76581.
21389
21390 2005-11-01  Miguel de Icaza  <miguel@novell.com>
21391
21392         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
21393         sure that we lookup GetString method from the System.Text.Encoding
21394         class, not the derived class or we get an empty method.
21395
21396         Fixed class #76612.
21397
21398 2005-10-25  Miguel de Icaza  <miguel@novell.com>
21399
21400         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
21401         if it has been previously set (embedders). 
21402
21403         Make mono_set_rootdir available also on Unix.
21404
21405 005-10-24  Robert Jordan  <robertj@gmx.net>
21406
21407         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
21408
21409 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
21410
21411         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
21412         only calls which are made to native code use this flag.
21413
21414         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
21415
21416 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
21417
21418         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
21419         Add support for FieldBuilders.
21420
21421 2005-10-29  Martin Baulig  <martin@ximian.com>
21422
21423         * mono-debug.c
21424         (mono_debug_using_mono_debugger): New public method; returns
21425         whether we're running inside the debugger.
21426
21427 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
21428
21429         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
21430         for Method/Constructor/FieldBuilders.
21431
21432 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
21433
21434         * reflection.c (module_add_cattrs): Save custom attributes for global methods
21435         and fields as well.
21436
21437 2005-10-26  Martin Baulig  <martin@ximian.com>
21438
21439         * mono-debug-debugger.c
21440         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
21441
21442 2005-10-24  Raja R Harinath  <harinath@gmail.com>
21443
21444         * icall.c (base64_to_byte_array): Don't pass an out-of-range
21445         integer to isspace.
21446
21447 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
21448
21449         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
21450         when passing valuetypes byref. Fixes #76502.
21451
21452 2005-10-19  Jackson Harper  <jackson@ximian.com>
21453
21454         * profiler.c: Don't put a . in front of types that are not in a
21455         namespace.
21456
21457 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
21458
21459         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
21460
21461 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
21462
21463         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
21464         #76436.
21465         (mono_marshal_get_ldflda_wrapper): Fix a warning.
21466
21467 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21468
21469         * assembly.c metadata-internals.h icall.c: Define an additional
21470         parameter for mono_assembly_name_parse_full, so we can avoid creating
21471         S.R.AssemblyName.Version when no version info wasn't passed.
21472         
21473 2005-10-09  Miguel de Icaza  <miguel@novell.com>
21474
21475         * class.c (mono_type_get_full_name): Reimplement method that was
21476         removed. 
21477
21478         * image.c: Some docs
21479
21480 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
21481
21482         * profiler.c (output_newobj_profile): Fix printing of Total memory
21483         on x86.
21484
21485 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
21486
21487         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
21488
21489 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
21490
21491         * threads.c: remove debug output.
21492
21493 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
21494
21495         * threads.c (mono_thread_manage): Fix crashes if more than 64
21496         threads need to be aborted. Hopefully fixes #75899.
21497
21498         * assembly.c (mono_stringify_assembly_name): New helper function.
21499
21500         * class.c: Use mono_stringify_assembly_name instead of the similar
21501         static function.
21502
21503         * assembly.h assembly.c: Add support for calling a postload search 
21504         hook if an assembly cannot be loaded.
21505
21506         * appdomain.c: Register new search hooks which call the AssemblyResolve
21507         events in AppDomain. Fixes #75231
21508
21509 2005-10-07  Martin Baulig  <martin@ximian.com>
21510
21511         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
21512         methods without debug info.
21513
21514 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
21515
21516         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
21517         wrappers.
21518
21519 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21520
21521         * file-io.c: now that we return symlinks, use lstat and, when the file
21522         is a symbolic link, stat, to get the file attributes. Also avoid the
21523         conversion to/from utf16/external.
21524
21525 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
21526
21527         * class.c (mono_class_layout_fields): Compute klass->has_references
21528         correctly if an embedded valuetype is not yet initialized. Fixes
21529         #76331.
21530
21531 2005-10-04  Martin Baulig  <martin@ximian.com>
21532
21533         * metadata.c
21534         (mono_metadata_load_generic_param_constraints): New public
21535         function; splitted the constraints loading out from
21536         mono_metadata_load_generic_params().
21537
21538         * class.c (mono_class_create_from_typedef): Call
21539         mono_metadata_load_generic_param_constraints() after setting up
21540         the type and creating our parent; fixes #75329.
21541
21542 2005-10-04  Martin Baulig  <martin@ximian.com>
21543
21544         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
21545         non-dynamic parent classes.
21546
21547 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
21548
21549         * file-io.c : win32 build fix (ETXTBSY seems not found).
21550
21551 2005-10-04  Martin Baulig  <martin@ximian.com>
21552
21553         * reflection.c
21554         (mono_image_get_methodspec_token): Make the cache actually work;
21555         fixes #75974.
21556
21557 2005-10-04  Martin Baulig  <martin@ximian.com>
21558
21559         * class.c (mono_class_name_from_token): Removed the unneccessary
21560         `MonoGenericContext *' argument.
21561
21562 2005-10-04  Martin Baulig  <martin@ximian.com>
21563
21564         * loader.c
21565         (method_from_methodspec): Make the caching work again; fixes the
21566         performance regression from #76262.
21567
21568 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21569
21570         * file-io.c:
21571         * file-io.h:
21572         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
21573         GetFileSystemEntries that performs the same work but without going
21574         into io-layer, locking, etc.
21575
21576 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
21577
21578         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
21579         ThreadState_Stopped as well. Fixes #76047.
21580
21581 2005-09-29  Martin Baulig  <martin@ximian.com>
21582
21583         * class.c
21584         (inflate_generic_context): If the new context has a `gmethod', set
21585         its `container' that that gmethod's `container'.
21586
21587         * metadata.c
21588         (mono_metadata_parse_generic_param): Simplify things;
21589         `generic_container = generic_context->container;' is just fine.
21590
21591         * loader.c (method_from_methodspec): Code cleanups.
21592
21593 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
21594
21595         * decimal.c: fix warning (and let gcc generate correct
21596         code on ARM with optimizations).
21597
21598 2005-09-28  Martin Baulig  <martin@ximian.com>
21599
21600         * loader.c
21601         (method_from_memberref): Added `MonoGenericContext *class_context'
21602         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
21603         (method_from_methodspec): If we're a memberref, use the enclosing
21604         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
21605
21606 2005-09-28  Martin Baulig  <martin@ximian.com>
21607
21608         * object.c (mono_runtime_invoke_array): Added support for
21609         MONO_TYPE_GENERICINST; fixes #75917.
21610
21611 2005-09-27  Martin Baulig  <martin@ximian.com>
21612
21613         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
21614         `k->byval_arg.type' to determine the actual type.
21615
21616         * loader.c (method_from_methodspec): Removed some hacks.
21617
21618 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
21619
21620         * class-internals.h (mono_field_is_deleted): Do the test for
21621         rtspecialname before we check the actual name of the field. This
21622         prevents us from dereferencing a pointer into the string table,
21623         saving us from accessing a few pages
21624
21625         * *.c: Replace the use of {Enter,Leave}CriticalSection with
21626         macros. This will allow a deadlock debugger to easily be plugged
21627         in.
21628
21629 2005-09-27  Martin Baulig  <martin@ximian.com>
21630
21631         * loader.c (method_from_methodspec): Create a "signature"
21632         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
21633
21634 2005-09-27  Martin Baulig  <martin@ximian.com>
21635
21636         * class.c
21637         (inflate_generic_class): Correctly set the new context's
21638         container.
21639
21640         * loader.c
21641         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
21642         instead of a `MonoGenericContext *'.
21643         (mono_method_signature_full): Take a `MonoGenericContainer *'
21644         instead of a `MonoGenericContext *'.
21645
21646         * metadata.c
21647         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
21648         instead of a `MonoGenericContext *'.
21649         (mono_metadata_parse_method_signature_full): Likewise.
21650
21651 2005-09-26  Martin Baulig  <martin@ximian.com>
21652
21653         * class.c
21654         (mono_class_from_generic_parameter): Set `klass->generic_container'
21655         (mono_class_from_generic_parameter): Likewise.
21656         (mono_bounded_array_class_get): We inherit the generic container
21657         from the element class.
21658
21659         * loader.c
21660         (find_method, find_method_in_class): Take a `MonoGenericContext *'
21661         argument rather than computing it here.
21662         (method_from_memberref): Correctly set the generic context before
21663         parsing the signature.  Fixes #75681.
21664
21665 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
21666
21667         * object.c (mono_class_has_special_static_fields): Fix warnings.
21668
21669 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21670
21671         * assembly.c: Add parse_public_key function, to
21672         par the public keys. Also added mono_assembly_name_parse_full,
21673         to define it the parsed key should be freed or not.
21674         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
21675         to parse a long format assembly name.
21676         * metadata-internals.h: Keep mono_assembly_name_parse_full as
21677         private, since calling it to preserve the key requires
21678         freeing it manually.
21679         
21680 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
21681
21682         * locales.c : removed HAVE_ICU part.
21683
21684 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
21685
21686         * object.c (mono_class_create_runtime_vtable): Avoid calling 
21687         field_is_special_static if the klass has no special static fields.
21688
21689         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
21690         (MonoCachedClassInfo): Likewise.
21691
21692         * object.c (mono_class_has_special_static_fields): New helper function.
21693
21694 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21695
21696         * class.c (mono_class_create_from_typedef): Don't call 
21697         interfaces_from_typedef_full for enums.
21698         (mono_class_create_from_typedef): Compute the base types of enums directly
21699         without calling mono_class_setup_fields ().
21700         (mono_class_find_enum_basetype): New helper function.
21701
21702         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
21703         one place inside the string heap.
21704         
21705 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
21706
21707         * class.c: locking fixes, code cleanups, some docs added.
21708         Allocate some data structures in the image mempool.
21709
21710 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21711
21712         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
21713         the example code.
21714         
21715 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
21716
21717         * class-internals.h, class.c, reflection.c: reduce memory taken by
21718         MonoClass.
21719
21720 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
21721
21722         * metadata.c, metadata.h, loader.h: documentation updates, code and
21723         API cleanups.
21724
21725 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21726
21727         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
21728         the example code.
21729
21730         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
21731         page faults caused by the runtime while reading metadata.
21732
21733 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21734
21735         * socket-io.c: the field names were changed 3 months ago and no one
21736         realized until bug #76077 got filed!
21737
21738 2005-09-20  Martin Baulig  <martin@ximian.com>
21739
21740         * icall.c (assembly_icalls): Removed some unused debugger icalls.
21741
21742 2005-09-20  Martin Baulig  <martin@ximian.com>
21743
21744         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
21745         write the rank into the class entry.
21746
21747 2005-09-20  Martin Baulig  <martin@ximian.com>
21748
21749         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
21750
21751 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
21752
21753         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21754
21755         * icall.c (custom_attrs_defined_internal): New icall.
21756
21757         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
21758         function.
21759         (mono_custom_attrs_construct_by_type): New helper function.
21760
21761 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
21762
21763         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
21764         terminate the resulting string. Fixes #76123.
21765
21766 2005-09-16  Martin Baulig  <martin@ximian.com>
21767
21768         * mono-debug.c
21769         (mono_debug_add_method): Ignore inflated methods for the moment.
21770
21771 2005-09-14  Martin Baulig  <martin@ximian.com>
21772
21773         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
21774
21775 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
21776
21777         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
21778         return a success/failure indication.
21779         (mono_metadata_interfaces_from_typedef_full): Ditto.
21780         (get_constraints): Ditto.
21781
21782 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
21783
21784         * marshal.c (emit_marshal_array): Fix handling of null arrays.
21785         
21786         * marshal.c (emit_marshal_array): Add support for returning string
21787         arrays from delegates. Fixes #76063.
21788
21789         * marshal.c: Use the emit_ldloc/stloc macros where possible.
21790
21791 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
21792
21793         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
21794         icall.
21795
21796 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
21797
21798         * reflection.c icall.c: Fix after mono_get_exception_type_load
21799         signature change.
21800
21801         * assembly.c (mono_assembly_get_assemblyref): New helper function.
21802         (mono_assembly_load_reference): Use the new helper.
21803
21804         * class-internals.h (MonoLoaderError): New structure containing 
21805         information about type loading errors.
21806
21807         * class-internals.h loader.c: Add APIs to store per-thread loader
21808         error information.
21809
21810         * loader.c class.c: Set the loader error if needed.
21811
21812         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
21813
21814 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
21815
21816         * decimal.c: fixed to handle the broken ARM fp format.
21817
21818 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
21819
21820         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
21821         broken.
21822
21823 2005-09-06  Martin Baulig  <martin@ximian.com>
21824
21825         * domain.c (supported_runtimes): Added v2.0.50727.
21826
21827 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
21828
21829         * culture-info.h: reduce the size of some structures.
21830
21831 2005-09-05  Martin Baulig  <martin@ximian.com>
21832
21833         Reflect latest API changes in the August CTP.
21834
21835         * icall.c
21836         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
21837         ("MonoType.HasGenericArguments"): Removed.
21838         ("MonoMethod.BindGenericParameters"): Renamed to
21839         "MakeGenericMethod".
21840         ("MethodBuilder.BindGenericParameters"): Renamed to
21841         "MakeGenericMethod".    
21842
21843 2005-09-05  Martin Baulig  <martin@ximian.com>
21844
21845         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
21846
21847 2005-09-05  Martin Baulig  <martin@ximian.com>
21848
21849         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21850
21851         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
21852         generic_container is non-NULL.
21853
21854 2005-09-05  Martin Baulig  <martin@ximian.com>
21855
21856         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21857
21858         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
21859
21860 2005-08-29  Michal Moskal  <malekith@nemerle.org>
21861
21862         * reflection.c (encode_locals,
21863         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
21864         for large generic types.
21865
21866 2005-09-05  Martin Baulig  <martin@ximian.com>
21867
21868         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21869
21870         * class.c (mono_dup_array_type): New public method.
21871         (mono_metadata_signature_deep_dup): New public method.
21872         (dup_type): Correctly duplicate array and function types.
21873
21874 2005-09-05  Martin Baulig  <martin@ximian.com>
21875
21876         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21877
21878         * reflection.c (get_default_param_value_blobs): Handle generic types
21879         and generic methods.
21880
21881 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
21882
21883         * class.c: Fixed error reporting (method/class were inversed) for 
21884         inheritance demands.
21885         * security-manager.c|h: Added the AppDomain when calling the managed
21886         System.Security.SecurityManager.InheritanceDemand method.
21887
21888 2005-09-01  Raja R Harinath  <rharinath@novell.com>
21889
21890         * reflection.c (encode_marshal_blob): 'marshaltype' and
21891         'marshaltyperef' are alternate sources for the custom marshaler
21892         name.
21893
21894 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
21895
21896         * class.c: fix creation of array classes with rank == 1
21897         (patch by Ankit Jain <jankit@novell.com>).
21898
21899 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
21900
21901         * object.c: fix check for creating the bound data for arrays vs
21902         szarrays.
21903
21904 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21905
21906         * object.c: configuration file name is now based on the executable name,
21907         not the image name. Fixes bug #75931.
21908
21909 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
21910
21911         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
21912         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
21913
21914 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
21915
21916         * rand.c: Use wincrypt.h instead of WinCrypt.h.
21917
21918 2005-08-24  Ankit Jain  <jankit@novell.com>
21919             Raja R Harinath  <rharinath@novell.com>
21920
21921         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
21922           called by it recursively.
21923           (mono_class_init): Remove special case in pending_init handling, since it's
21924           superseded by the fix to mono_class_from_typeref.
21925
21926 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
21927
21928         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
21929         BROKEN_THREAD_START stuff.
21930
21931 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
21932
21933         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
21934         trampoline.
21935
21936         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
21937         
21938         * object.c (mono_delegate_ctor): Replace the original function address with
21939         a delegate trampoline.
21940
21941 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
21942
21943         * icall.c: add boolean argument to base64_to_byte_array and 
21944         InternalFromBase64String to control whether a whitespace-only string
21945         is allowed (or should casue a FormatException to be thrown). We need
21946         this as the behavior has changed between MS.NET 1.x and 2.0, and we
21947         to match the MS behaviour in both profiles.
21948         * appdomain.c: Bump corlib version.
21949
21950 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21951
21952         This patch implements a big portion of publisher policy
21953         support, used to bind assembly versions and redirect
21954         one assembly from version A to version B.
21955
21956         * assembly.c:
21957         New GSList loaded_assembly_bindings, for storing the cached
21958         assembly bindings.
21959         (assembly_binding_maps_name): New static function for checking if a 
21960         assembly binding information maps an assembly name.
21961         (mono_assembly_binding_info_free): New function for freeing
21962         assembly binding information resources.
21963         (get_publisher_policy_info): New static function for retrieving 
21964         assembly binding information from a MonoImage.
21965         (compare_versions): New static function for comparing an assembly
21966         binding information data and the version of an assembly name.
21967         (check_policy_versions): New static function for checking if an
21968         assembly binding info mapping an assembly name is valid for it.
21969         (mono_assembly_load_publisher_policy): New static function for
21970         loading the 'policy.major.minor.MyAssembly' image for an assembly
21971         with an assembly name 'aname'.
21972         (mono_assembly_bind_version): New static function for updating
21973         assembly redirection.
21974         (mono_assembly_apply_binding): New static function for applying
21975         assembly binding.
21976         (search_binding_loaded): New static function for searching 
21977         loaded assembly binding infos in the cache domain.
21978         (mono_assembly_load_full): Don't apply assembly binding for
21979         reflection only assemblies.
21980
21981         * metadata-internals.h: Add MonoAssemblyBindingInfo,
21982         which contains information about assembly binding. Also
21983         declare signature for mono_config_parse_publisher_policy ()
21984         function, used to retrieve pub policy info.
21985         
21986         * mono-config.c:
21987         (publisher_policy_start): New static function used to parse publisher 
21988         policy config files.
21989         (publisher_policy_parser): New static MonoParseHandler containing 
21990         the functions used when parsing config files.
21991         (mono_config_parse_publisher_policy): New function for parsing
21992         publisher policy files.
21993         
21994 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
21995
21996         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
21997
21998         * marshal.c (mono_delegate_free_ftnptr): Ditto.
21999
22000         * object.c (mono_get_addr_from_ftnptr): New helper function.
22001
22002         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
22003
22004         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
22005
22006 2005-08-19  Dick Porter  <dick@ximian.com>
22007
22008         * threads.c, threads.h, appdomain.c, appdomain.h,
22009         profiler-private.h, monitor.c, object.c, object-internals.h,
22010         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
22011         store the thread ID, so it can hold a 64 bit value if needed.
22012
22013 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
22014
22015         * reflection.c (mono_reflection_create_dynamic_method): Store the
22016         handle class into the method references as well so ldtoken works in
22017         dynamic methods.
22018
22019         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
22020         types.
22021
22022 2005-08-19  Ankit Jain <jankit@novell.com>
22023
22024         Fix #75847.
22025         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
22026           here rather than using the method signature of a arbitrary function
22027           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
22028           two arguments.
22029           Hack done with Harinath.
22030
22031 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22032
22033         * threadpool.c: disable printing stack traces when we get a exception
22034         in a threadpool thread. I need to do more testing to figure out which
22035         cases actually print this. Fixes bug #75828.
22036
22037 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22038
22039         * icall.c: there might be ignored whitespace after the last '='. This
22040         fixes length computation and bug #75840.
22041
22042 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
22043
22044         * assembly.c (mono_assembly_load_full): Consider .exe extension as
22045         well. Fixes #75809.
22046
22047         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
22048         #75784.
22049         
22050         * reflection.c (create_custom_attr_data): Ditto.
22051
22052 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
22053
22054         * locales.c, culture-info.h : removed RegionLCIDMap.
22055         * culture-info-tables.h : regenerated.
22056
22057 2005-08-16  Martin Baulig  <martin@ximian.com>
22058
22059         * class.c (mono_type_get_name_recurse): Small fix.
22060
22061 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
22062
22063         * locales.c : indentation fixie.
22064
22065 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
22066
22067         * object-internals.h,
22068           locales.h,
22069           locales.c,
22070           culture-info.h,
22071           icall.c : added RegionInfo table support.
22072         * culture-info-table.h : regenerated for region support.
22073
22074 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
22075
22076         * reflection.c (resolve_object): handle all kinds of MonoMethod
22077         including generic ones
22078
22079 2005-08-12  Ankit Jain <jankit@novell.com>
22080
22081         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
22082           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
22083
22084 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
22085
22086         * process.c: Don't close a thread handle when it's NULL. This is a
22087         workaround for bug #75733.
22088
22089 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
22090
22091         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
22092
22093 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
22094
22095         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
22096
22097 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22098
22099         * threadpool.c: if a work item in the thread pool has a callback that
22100         catches a exception, don't propagate it after invoking the callback.
22101         Fixes bug #75336.
22102
22103 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
22104
22105         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
22106
22107         * class-internals.h (MonoCachedClassInfo): Add some new fields.
22108
22109         * class.c (mono_class_init): Load field info lazily in the AOT case.    
22110
22111         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
22112
22113 2005-08-03  Ankit Jain  <jankit@novell.com>
22114
22115         Fix #75683.
22116         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
22117           PInvoke calling convention is 0.
22118
22119 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
22120
22121         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
22122         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
22123
22124 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
22125
22126         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
22127         to handle threads not started by the GC (patch by Michael Meeks
22128         <michael.meeks@novell.com>).
22129
22130 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
22131
22132         * reflection.c: Make buffer used in emitting types larger for some
22133         big generic types (patch by Michal Moskal).
22134
22135 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
22136
22137         * mono-debug.c: Fix some (not all) alignment problems.
22138
22139 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22140
22141         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
22142         Invoke mono_image_load_from_data_full passing the refonly
22143         parameter.
22144
22145         * assembly.c
22146         (mono_assembly_open_from_bundle): Add the refonly argument, 
22147         in order to pass it to other methods it calls to.
22148         (do_mono_assembly_open): Add the refonly argument, in order 
22149         to pass it to other methods it calls to.
22150         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
22151         the refonly parameter to it.
22152
22153         * image.c: Add loaded_images_refonly_hash and
22154         loaded_images_refonly_guid_hash to cache the reflection
22155         only loaded images.
22156         (mono_images_init): Initialize the hash tables used for
22157         caching the reflection only images.
22158         (load_modules): Invoke mono_image_open_full passing the refonly
22159         parameter to load the modules the correct way.
22160         (build_guid_table): Add the refonly argument, to re-build the 
22161         correct hash table.
22162         (do_mono_image_open): Added the refonly argument, in order to
22163         define it for the loaded image.
22164         (mono_image_loaded_full): New function, which receives an
22165         additional parameter to look for the image in the refonly or
22166         non-refonly section.
22167         (mono_image_loaded): Updated, using mono_image_loaded_full.
22168         (mono_image_loaded_by_guid_full): The same case that happens
22169         with mono_image_loaded_full.
22170         (mono_image_loaded_by_guid): Likewise.
22171         (register_image): Use the ref_only variable inside MonoImage
22172         to decide in which hash table store the current image.
22173         (mono_image_open_from_data_full): Rename
22174         mono_image_open_from_data to mono_image_open_from_data_full,
22175         adding the refonly argument, to define the ref_only variable 
22176         inside MonoImage.
22177         (mono_image_open_from_data): Return 
22178         mono_image_open_from_data_full.
22179         (mono_image_open_full): Rename mono_image_open to
22180         mono_image_open_full, receiving the new refonly argument,
22181         to pass it to inner methods.
22182         (mono_pe_file_open): Update this function, to open
22183         a MonoImage as a non-refonly image.
22184         (mono_image_close): Use the refonly variable inside
22185         MonoImage to remove the image from the correct caches.
22186
22187         * image.h: Add the signatures of mono_image_open_full,
22188         mono_image_open_from_data_full, mono_image_loaded_full,
22189         mono_image_loaded_by_guid_full.
22190
22191         * metadata-internals.h: Add the ref_only field to 
22192         MonoImage.
22193         
22194 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22195
22196         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
22197         Fix the last behavior, which used to load the assemblies and
22198         extract MonoReflectionAssemblyName information, instead of
22199         extract it from the metadata tables. Needed for Reflection
22200         Only assemblies.
22201         
22202 2005-07-29  Martin Baulig  <martin@ximian.com>
22203
22204         * mono-debug-debugger.c
22205         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
22206         not initialized.
22207
22208         * mono-debug.c
22209         (mono_debug_address_from_il_offset): Check whether we have
22210         debugging support before attempting to take the lock.
22211         (mono_debug_source_location_from_address): Likewise.
22212         (mono_debug_source_location_from_il_offset): Likewise.
22213         (mono_debug_il_offset_from_address): Likewise.
22214         (mono_debug_address_from_il_offset): Likewise.
22215
22216 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
22217
22218         * class.c (mono_class_from_name_case): Add support for dynamic images.
22219         Fixes #75650.
22220
22221         * object.c (mono_class_compute_gc_descriptor): Add a workaround
22222         for #75479.
22223
22224 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
22225         
22226         * reflection.c (mono_method_get_object): Fix warning.
22227
22228 2005-07-28  Martin Baulig  <martin@ximian.com>
22229
22230         * mono-debug.c
22231         (mono_debug_add_wrapper): Also write the wrapper type.
22232
22233 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
22234
22235         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
22236         
22237         * class.c (mono_class_init): Avoid reading nested classes if the AOT
22238         data indicates the class has none.
22239
22240 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
22241
22242         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
22243         loader lock with the debugger lock. Prevents deadlocks for beagle.
22244
22245         Beagle can now run on an smp box for a weekend without any
22246         issues. Woohoo!
22247
22248 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
22249
22250         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
22251         in a module. Fixes #75629.
22252
22253 2005-07-26  Martin Baulig  <martin@ximian.com>
22254
22255         * mono-debug.c (mono_debug_add_wrapper): New static method.
22256         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
22257         interncall or a wrapper.
22258
22259         * mono-debug.h (MonoDebugWrapperData): New public typedef.
22260         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
22261         (MONO_DEBUGGER_VERSION): Bump to 51.
22262
22263         * mono-debug-debugger.c
22264         (mono_debugger_add_type): Removed this empty function.
22265         (mono_debugger_add_method): Likewise.
22266
22267 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
22268
22269         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
22270         before accessing method->slot.
22271
22272 2005-07-21  Jb Evain  <jbevain@gmail.com>
22273
22274         * reflection.c (method_encode_clauses/class): Handle filters clauses.
22275         Fixes #75010.
22276
22277 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
22278
22279         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
22280         #75587.
22281
22282 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
22283
22284         * image.h image.c: Add mono_image_get_guid () API function.
22285
22286 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
22287
22288         There were issues when multiple threads tried to load
22289         assemblies. A deadlock was created between assemblies_mutex and
22290         mono_domain_assemblies_lock. This fixes the issue by making the
22291         assembly ref counting be lock free. See bug 75586.
22292         
22293         * image.c (mono_image_close): The add ref function here was using
22294         Interlocked operations while the unref was using a mutex and a
22295         --. I don't think this was ever a bug that would be exposed in a
22296         non-pendantic way (ie, by an embedder doing a ref on one thread
22297         and an unref on another), but for the sake of correctness, this is
22298         now Interlocked.
22299
22300         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
22301         (mono_assembly_load_reference): Call mono_assembly_addref rather
22302         than touching the refcount ourselves.
22303         (mono_assembly_close): Use InterlockedDecrement to unref the
22304         assembly. Don't acquire the lock unless it is actually needed.
22305
22306 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
22307
22308         * class.c (mono_class_layout_fields): Fix calculation of has_references
22309         for generic types.
22310
22311 2005-07-12  Martin Baulig  <martin@ximian.com>
22312
22313         Applying a patch from Michal Moskal <malekith@nemerle.org>.
22314
22315         * metadata.c
22316         (mono_type_hash): Provide better hashing for generic instances.
22317         (mono_generic_inst_hash): Improve hashing.
22318         (mono_generic_class_hash): Likewise.
22319
22320         * reflection.c (mymono_metadata_type_hash): Improve hashing for
22321         generic instances.
22322
22323 2005-07-12  Martin Baulig  <martin@ximian.com>
22324
22325         * reflection.c (mono_reflection_create_runtime_class): Remove the
22326         hack for generic type definitions and non-`Run' assemblies.
22327         (mono_reflection_bind_generic_parameters): Also use
22328         `klass->wastypebuilder' to check for TypeBuilders.
22329
22330 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
22331
22332         * class.c (mono_class_layout_fields): Fix calculation of has_references
22333         for generic types.
22334
22335         * class.c (inflate_generic_class): Fix a leak.
22336         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
22337         for generic types.
22338
22339 2005-07-11  Martin Baulig  <martin@ximian.com>
22340
22341         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
22342         on error.
22343
22344 2005-07-11  Martin Baulig  <martin@ximian.com>
22345
22346         * loader.c (find_method): Also lookup in
22347         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
22348
22349 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22350
22351         * appdomain.c (mono_domain_unload): Don't free the error message
22352         before passing it to mono_get_exception_...
22353
22354         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
22355         
22356 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
22357
22358         * threads.c: try to better guess an available RT signal (bug #75387).
22359
22360 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22361
22362         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
22363         and CACHE_OBJECT.
22364
22365 2005-07-07  Martin Baulig  <martin@ximian.com>
22366
22367         * class.c (mono_type_get_name_full): Return NULL for
22368         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
22369         fixes #75408.
22370
22371 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22372
22373         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
22374         exit the appdomain as well being aborted.
22375
22376         * threadpool.c: Create all threadpool threads inside the root appdomain, and
22377         change back to the root domain after calling managed code. This enables
22378         appdomains using threadpools to be unloaded.
22379
22380 2005-07-07  Martin Baulig  <martin@ximian.com>
22381
22382         * class-internals.h
22383         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
22384         into `MonoDynamicGenericClass' since we only need it for dynamic
22385         types.
22386
22387         * reflection.c (mono_class_bind_generic_parameters): We don't need
22388         to compute the `parent' here.
22389
22390 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
22391
22392         * culture-info-table.h : regenerated.
22393
22394 2005-07-06  Martin Baulig  <martin@ximian.com>
22395
22396         * icall.c
22397         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
22398
22399         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
22400
22401 2005-07-06  Martin Baulig  <martin@ximian.com>
22402
22403         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
22404         we're doing a signature-only comparision; fixes #74945.
22405
22406 2005-07-06  Martin Baulig  <martin@ximian.com>
22407
22408         * class-internals.h (MonoGenericClass): Moved some things out into
22409         a new `MonoInflatedGenericClass' type.  
22410         (MonoInflatedGenericClass): New type; the `klass' of a
22411         `MonoGenericClass' is now computed lazyly in
22412         mono_get_inflated_generic_class().      
22413
22414         * class.c (mono_get_inflated_generic_class): New public function.
22415         (mono_class_inflate_generic_method): Removed the unused
22416         `MonoClass *' argument.
22417         (setup_generic_vtable): Don't call mono_get_inflated_method() on
22418         all the methods.
22419         (mono_class_create_generic): Make this static and merge it with
22420         mono_class_create_generic_2(); we're now called automatically from
22421         mono_get_inflated_generic_class().
22422
22423         * loader.c (mono_method_signature): Call
22424         mono_get_inflated_method() here.
22425
22426 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
22427
22428         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
22429         type of fields with RVA.
22430
22431         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
22432         for this pseudo class.
22433         (my_mono_class_from_generic_parameter): Likewise.
22434         (mono_class_init): Allow interfaces to have cctors.
22435
22436 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
22437
22438         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
22439         lazily for AOT methods.
22440
22441 2005-07-05  Martin Baulig  <martin@ximian.com>
22442
22443         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
22444         returns FALSE for a successful match, not TRUE.
22445
22446 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
22447
22448         * loader.c (mono_method_get_index): Optimize this a bit.
22449
22450 2005-07-04  Martin Baulig  <martin@ximian.com>
22451
22452         * class.c
22453         (class_compute_field_layout): Move the check for generic type
22454         definitions into mono_class_layout_fields().  Fixes #74684.
22455         (mono_class_from_generic_parameter): Correctly compute
22456         `klass->parent'; fixes #75457.
22457
22458         * reflection.c (register_assembly, register_module): Make sure
22459         `domain->rejobject_hash' is already created.
22460
22461 2005-07-02  Martin Baulig  <martin@ximian.com>
22462
22463         * class-internals.h
22464         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
22465         `MonoDynamicGenericClass'.      
22466
22467 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
22468
22469         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
22470         returned by a field getter is null, since null is a valid value.
22471
22472 2005-07-01  Martin Baulig  <martin@ximian.com>
22473
22474         * reflection.c (mono_reflection_generic_class_initialize): Update
22475         the `dgclass->fields [i].parent' to the correct class.
22476         (mono_image_get_fieldref_token): Use the declaring type, not the
22477         reflected type.
22478
22479 2005-07-01  Martin Baulig  <martin@ximian.com>
22480
22481         * loader.c (find_method): Also look in the interfaces; fixes #75429.
22482
22483 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
22484
22485         * threads.c (thread_cleanup): assert that thread != NULL
22486         (wait_for_tids_or_state_change): We were using the wrong variable
22487         when accessing wait->threads. `i' was always out of the bounds of
22488         the array.
22489
22490 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22491
22492         * loader.c: map user32 and kernel32 to libMonoSupportW
22493
22494 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
22495
22496         * appdomain.c (unload_thread_main): Mark this as WINAPI.
22497
22498 2005-06-28  Martin Baulig  <martin@ximian.com>
22499
22500         * loader.c (method_from_methodspec): Fix #75334.
22501
22502 2005-06-28  Martin Baulig  <martin@ximian.com>
22503
22504         Fix #74953 - Arrays now implement the generic IList<T> interface
22505         on the 2.0 platform.
22506
22507         * class-internals.h (MonoDefaults): Added `generic_array_class'.
22508
22509         * reflection.c (mono_class_bind_generic_parameters): New public
22510         function; similar to mono_reflection_bind_generic_parameters(),
22511         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
22512
22513         * domain.c (mono_init_internal): Try to initialize.
22514         `mono_defaults.generic_array_class' here; this'll only succeed if
22515         we're using the 2.0 corlib.
22516
22517         * icall.c
22518         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
22519         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
22520         (mono_lookup_internal_call): Added support for nested classes.
22521
22522         * loader.c
22523         (mono_get_method_from_token): Set `result->signature->pinvoke' if
22524         we're an interncall and have generic arguments.
22525
22526         * class.c
22527         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
22528         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
22529         instance of System.Array.InternalArray<T> for arrays, so they
22530         implement the generic IList<T> interface.
22531
22532 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
22533
22534         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
22535         (chastamar@yahoo.com). Fixes #75374.    
22536
22537 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
22538
22539         * culture-info-table.h: regenerated.
22540
22541 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22542
22543         * icall.c: handle spaces correctly for base64 strings.
22544
22545 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
22546
22547         * *.c: Kill some warnings.
22548
22549 2005-06-23  Duncan Mak  <duncan@novell.com>
22550
22551         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
22552         that this builds on Solaris 10 (x86).
22553
22554 2005-06-23  Martin Baulig  <martin@ximian.com>
22555
22556         * class.c
22557         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
22558         generic type definitions.
22559
22560 2005-06-23  Martin Baulig  <martin@ximian.com>
22561
22562         Fix #75331.
22563
22564         * metadata.c (mono_class_get_overrides): Renamed to
22565         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
22566         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
22567         pass it to mono_get_method_full().
22568
22569 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
22570
22571         * reflection.c (mono_reflection_create_runtime_class): take the
22572         mono_domain_lock in this method. Prevents deadlocks
22573
22574 2005-06-22  Martin Baulig  <martin@ximian.com>
22575
22576         * loader.c (method_from_methodspec): Fix #75330.
22577
22578 2005-06-22  Martin Baulig  <martin@ximian.com>
22579
22580         * reflection.c (type_get_qualified_name): Use
22581         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
22582         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
22583         argument; use it if we don't have an assembly name.
22584
22585 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
22586
22587         * object.c: In mono_message_init, set "copy out" flag for in
22588         parameters with the [Out] flag.
22589
22590 2005-06-21  Martin Baulig  <martin@ximian.com>
22591
22592         * class.c
22593         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
22594         and MONO_TYPE_PTR.
22595
22596 2005-06-21  Martin Baulig  <martin@ximian.com>
22597
22598         * class.c (mono_class_init): Don't initialize `class->fields' for
22599         generic instances since they're initialized again in
22600         compute_field_layout(). 
22601         (compute_field_layout): Set the field's `generic_info' here; fix
22602         #75320. 
22603
22604 2005-06-21  Martin Baulig  <martin@ximian.com>
22605
22606         * class-internals.h
22607         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
22608
22609         * metadata.c (mono_metadata_generic_method_equal): Also
22610         distinguish the `generic_class'; fixes #75334.
22611
22612 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22613
22614         * domain.c:
22615         * appdomain.c:
22616         * domain-internals.h:
22617         * reflection.c: 'domain_assemblies' field is now protected by its own
22618         lock. Don't call into managed code to run the AssemblyLoad event if we
22619         now there are no registered delegates for it.
22620
22621 2005-06-20  Martin Baulig  <martin@ximian.com>
22622
22623         * class.c (mono_class_is_assignable_from): Use a custom version of
22624         mono_class_has_parent() to make things work for generic instances;
22625         fix #75300.
22626
22627 2005-06-20  Martin Baulig  <martin@ximian.com>
22628
22629         * loader.c (method_from_methodspec): Apply a patch from
22630         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
22631
22632 2005-06-20  Martin Baulig  <martin@ximian.com>
22633
22634         * class.c (mono_class_init): Reverted Zoltan's last change; it
22635         breaks generics.
22636
22637 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
22638
22639         * threads.c (wait_for_tids_or_state_change): Add missing locking.
22640
22641 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22642
22643         * socket-io.c: fix the index in the socket array for writable/error
22644         sockets. Fixes bug #75306.
22645
22646 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
22647
22648         * class.c (mono_class_init): Allow interfaces to have static ctors.
22649
22650 2005-06-17  Martin Baulig  <martin@ximian.com>
22651
22652         * loader.c (method_from_methodspec): Use `context->container' when
22653         parsing the `gmethod->inst'.
22654
22655 2005-06-17  Martin Baulig  <martin@ximian.com>
22656
22657         * class.c (mono_type_get_name_recurse): Don't add the assembly
22658         name for type arguments.
22659
22660 2005-06-15  Martin Baulig  <martin@ximian.com>
22661
22662         * reflection.c (mono_image_get_inflated_method_token): Encode
22663         correct klass; fixes #75260.
22664
22665 2005-06-13 Michal Moskal <malekith@nemerle.org>
22666
22667         * icall.c: Make GetCorrespondingMethod/Constructor take
22668         MonoReflectionMethod method not MonoMethod. Removed
22669         MonoType.GetCorrespondingField, and make
22670         MonoGenericType.GetCorrespondingField take name not
22671         MonoClassField.
22672
22673 2005-06-13  Michal Moskal <malekith@nemerle.org>
22674
22675         * reflection.c (field_encode_signature, encode_locals):
22676          Make sizes of buffers for types larger (for big generic types).
22677          (create_generic_typespec,
22678          mono_reflection_sighelper_get_signature_local,
22679          mono_reflection_sighelper_get_signature_field):
22680          Add asserts for too small buffers.
22681
22682 2005-06-15  Martin Baulig  <martin@ximian.com>
22683
22684         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
22685         if our parent is not a dynamic type.
22686
22687 2005-06-15  Martin Baulig  <martin@ximian.com>
22688
22689         * class-internals.h (MonoTypeNameFormat): New enum.
22690
22691         * class.c
22692         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
22693         (mono_type_get_full_name): Removed.
22694         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
22695         argument instead of the boolean's.
22696
22697         * icall.c (ves_icall_System_MonoType_getFullName):
22698         Added `gboolean assembly_qualified'.    
22699
22700         * reflection.h
22701         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
22702
22703         * reflection.c (mono_reflection_parse_type): Parse the new type
22704         name format.
22705
22706 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22707
22708         * icall.c: no need to convert from utf16 to utf8 and then back again
22709         after the call to GetLogicalDrives.
22710
22711 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22712
22713         * icall.c: frombase64. Fix problems exposed by new tests.
22714
22715 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22716
22717         * icall.c: added internal calls for converting char [] and strings in
22718         base64 into byte [].
22719
22720 2005-06-10  Martin Baulig  <martin@ximian.com>
22721
22722         * class.c (mono_class_create_generic_2): Read the nested classes
22723         from the metadata rather than from `gklass->nested_classes' since
22724         `gklass' might not be initialized yet.
22725
22726 2005-06-09  Duncan Mak  <duncan@novell.com>
22727
22728         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
22729         all public headers. Fixes #74919.
22730
22731 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
22732
22733         * domain.c: The key for proxy_vtable_hash is now a pointer
22734         array. Added new GHashFunc and GCompareFunc functions for this.
22735
22736         * class.h: The list of interfaces in MonoRemoteClass is known in
22737         advance and can't grow (we create a new MonoRemoteClass if needed),
22738         so now the interface array can be allocated together with
22739         MonoRemoteClass.
22740         
22741         * object.c: Added a new method create_remote_class_key.
22742         Fixed mono_remote_class so it does not depend on
22743         mono_upgrade_remote_class.
22744         Removed extend_interface_array.
22745         Added new method clone_remote_class(), which makes a copy of a remote
22746         class and adds a new interface or class to it.
22747         mono_upgrade_remote_class() now creates a new remote class (or gets
22748         it from the cache) if an vtable upgrade is needed. In this way
22749         we make sure that other objects sharing the same remote class
22750         don't get the new vtable with unwanted interfaces.
22751         
22752         * object-internals.h:
22753         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
22754         
22755         * marshal.c: Track changes in mono_upgrade_remote_class().
22756
22757 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
22758         * icall.c: Add runtime methods for obtaining members of inflated
22759         class, which were created from supplied non-inflated members. It
22760         is used in internal Get{Method,Constructor,Field} methods in
22761         System.Type
22762
22763 2005-06-09  Martin Baulig  <martin@ximian.com>
22764
22765         * reflection.c
22766         (mono_reflection_bind_generic_method_parameters): Fix #75169.
22767
22768 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22769         * reflection.c (mono_image_basic_init): Define
22770         Version in MonoDynamicAssembly. 
22771         
22772 2005-06-08  Martin Baulig  <martin@ximian.com>
22773
22774         Fix #75136.
22775
22776         * loader.c
22777         (mono_method_signature_full): New public method; takes a
22778         `MonoGenericContext *'.
22779         (find_method): Use mono_method_signature_full() and pass the
22780         klass'es context to it.
22781
22782         * class.c (mono_class_is_inflated_method): Use
22783         mono_method_signature_full() and pass the context to it.
22784
22785 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
22786
22787         * object.c: add proper locking in mono_remote_class_vtable(),
22788         fixes possible memory corruption.
22789
22790 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
22791
22792         * marshal.c (mono_remoting_marshal_init): set
22793         initialized after initialization.
22794
22795 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
22796
22797         * locales.c : hush.
22798
22799 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
22800
22801         * object.c (extend_interface_array): fix really silly
22802         memory corrupting / comparison bug.
22803
22804 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22805
22806         * reflection.c: Functions added to support the creation
22807         of CustomAttributeData, which includes Attribute data
22808         used by ReflectionOnly methods.
22809
22810         * reflection.h:  mono_reflection_get_custom_attrs_data and
22811          mono_custom_attrs_data_construct added (functions exposed).
22812
22813          * icall.c: Added mono_reflection_get_custom_attrs_data
22814          as icall.
22815         
22816 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
22817
22818         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
22819         lupus's request.
22820
22821 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
22822
22823         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
22824
22825         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
22826         dynamic DllImportAttribute.
22827
22828         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
22829         dynamic DllImportAttribute.
22830
22831         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
22832         Fixes #75162.
22833
22834 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22835
22836         * threads.c: avoid segfault when an unstarted thread is aborted.
22837
22838 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
22839
22840         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
22841         Returns the name and version of the runtime for reporting.
22842
22843 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22844
22845         * appdomain.c: bump corlib version.
22846         * object-internals.h: new field in MonoReflectionAssembly.
22847
22848 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22849
22850         * object-internals.h: Carlos forgot to add this field.
22851
22852 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22853
22854         * icall.c: Added create_version to create instances
22855         of Version of MonoReflectionAssemblyName. This change helps
22856         the AssemblyName tests to keep running fine.
22857         
22858 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
22859   
22860         * object.c (mono_method_return_message_restore): A somehow less
22861         intrusive fix for #75138.
22862
22863 2005-06-03  Raja R Harinath  <rharinath@novell.com>
22864
22865         * object.c (mono_method_return_message_restore): Fix computation
22866         of expected number of out args.
22867
22868 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
22869
22870         * reflection.c (mono_image_get_method_info): Fix the case when the
22871         charset is empty.
22872
22873 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
22874
22875         * object.c: Added missing null check in
22876           mono_method_return_message_restore.
22877
22878 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
22879
22880         * reflection.c (mono_image_get_method_info): Handle the case when
22881         dllentry is empty.
22882
22883 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
22884
22885         * object.c: When creating the vtable for a proxy, take into account
22886         all inherited interfaces, not only the ones registered in
22887         iclass->interfaces. This fixs bug #74996.
22888         Also, in mono_method_return_message_restore, verify that the array
22889         of out args has the expected lengh.
22890
22891 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22892
22893         * socket-io.c: update the timeout in Poll when the call is interrupte.
22894
22895 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22896
22897         * socket-io.c: support abort/suspend in Select_internal after last
22898         change.
22899
22900 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22901
22902         * threadpool.c: remove warning.
22903
22904 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22905
22906         * icall.c:
22907         * socket-io.[ch]: Select_internal uses poll() now when available, thus
22908         removing the 1024 limit from select(). Runtime part of the fix for
22909         bug #71203.
22910
22911 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22912
22913         * socket-io.c: when resolving the addresses for the same
22914         host returned by gethostname(), get the local IPs from the interface
22915         list. Loopback addresses are discarded if the are interfaces up with
22916         non-loopback ones. Fixes bug #63265.
22917
22918 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
22919
22920         * appdomain.c, verify.c, object-internals.h, reflection.c:
22921         bumped corlib number to 36, and added new extra_flags field
22922         to ReflectionMethodBuilder and friends.  Fixes #75060.
22923
22924 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
22925
22926         * gc.c: register a new weak link only if the object is non-null
22927         (fixes bug#75047).
22928
22929 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
22930
22931         * culture-info.h : short time pattern too.
22932
22933 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
22934
22935         * culture-info.h : expand long time pattern string length.
22936
22937 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
22938
22939         * culture-info-table.h : update (more French date format; #72788).
22940
22941 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
22942
22943         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
22944         the method is static. Fixes #75029.
22945
22946 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
22947
22948         * reflection.c: Update the table_idx field of method builders after
22949         saving the module, since it can change. This is a workaround for
22950         bug #74914. 
22951
22952 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
22953
22954         * culture-info-table.h : update (additional French date format).
22955
22956 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
22957
22958         * icall.c (ves_icall_type_Equals): Revert last change.
22959         
22960         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
22961
22962         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
22963
22964 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
22965
22966         * class-internals.h: Added executioncontext_class field to 
22967         MonoDefaults structure.
22968         * domain.c: Cache System.Threading.ExecutionContext class in 
22969         mono_defaults.
22970         * object.c: Capture the ExecutionContext for asynchroneous calls in
22971          mono_async_result_new.
22972         * object-internals.h: Added execution_context and original_context 
22973         fields to MonoAsyncResult. Added execution_context to MonoThread.
22974         * security-manager.c|.h: Added mono_get_context_capture_method to 
22975         return the capture method (if required by the security manager or by
22976         the framework version used).
22977         * threadpool.c: Apply capture (if present) ExecutionContext in 
22978         mono_async_invoke and revert to original context after it completes.
22979
22980 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
22981
22982         * culture-info-table.h : updated (real hacky solution for zh-CHT).
22983
22984 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
22985
22986         * culture-info-table.h : zh-CHT related workaround.
22987
22988 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
22989
22990         * marshal.c (emit_marshal_custom): Add some error checking and call the
22991         methods in the ICustomMarshaler interface. Fixes #74875.
22992         
22993         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
22994         native->managed wrappers.
22995
22996 2005-05-12  Martin Baulig  <martin@ximian.com>
22997
22998         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
22999         here and use the loader lock.
23000
23001         * mono-debug.c: Properly lock when the debugger is not attached.
23002         (mono_debug_init): Release the initial lock if we're not running
23003         in the debugger.
23004
23005 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
23006
23007         * marshal.c (emit_marshal_custom): Pass through NULL values without
23008         calling the custom marshalling routines.
23009
23010         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
23011         conversion in structures. Fixes #74882.
23012
23013 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
23014
23015         * culture-info-table.h : zh-* cultures were missing.
23016
23017 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
23018
23019         * threads.c: Added a new event background_change_event which is signaled
23020         when a thread changes its background mode.
23021         Moved here several checks previously done in managed code. The checks
23022         require the thread lock, and using the thread lock in managed code
23023         can result in deadlocks.
23024         Merged Start_internal and Thread_internal into a single method. Now 
23025         Thread_internal does all work of creating and starting a thread.
23026         Added icalls for setting and getting the state of the object. Moved from
23027         managed code to avoid locking there.
23028         Added wait_for_tids_or_state_change() which is called instad of
23029         wait_for_tids when waiting for non-backround threads to end. This method
23030         will return if one of the threads ends or the background_change_event
23031         is signaled.
23032         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
23033         the background mode. This method signals the background_change_event
23034         event.
23035         * icall.c:
23036         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
23037         removed Start_internal.
23038         
23039 2005-05-11  Martin Baulig  <martin@ximian.com>
23040
23041         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
23042         to order of some fields to get proper alignment on 64-bit machines.
23043
23044 2005-05-11  Martin Baulig  <martin@ximian.com>
23045
23046         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
23047         changes as they're broken and completely fuck up the debugger.
23048
23049         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
23050
23051 2005-05-10  Martin Baulig  <martin@ximian.com>
23052
23053         * reflection.c (mono_reflection_generic_class_initialize): Don't
23054         call mono_class_setup_parent() here.
23055
23056 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23057
23058         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
23059         send/receive timeout use an integer in milliseconds. We were using a
23060         struct timeval.
23061
23062 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23063
23064         * locales.c:
23065         (internal_get_cultures): reserve the first slot of the array for the
23066         InvariantCulture, which will be filled in managed code.
23067
23068 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
23069
23070         * reflection.c (mono_image_fill_module_table): Initialize the
23071         GENERATION field as well.
23072
23073 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23074
23075         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
23076         Monitor.Enter on the object.
23077
23078 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
23079
23080         * threads.c: Enable the wait for running threads when exiting.
23081         * icall.c: Suspend all threads before exiting.
23082
23083 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
23084
23085         * assembly.c (mono_assembly_load_reference): Fix warning.
23086
23087 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23088
23089         * threadpool.c: changed the default number of threads per cpu. From now
23090         on, the default will be 20 + (5 * number of cpus) instead of 50.
23091
23092 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
23093
23094         * loader.c (mono_method_get_signature_full): Add locking here.
23095
23096 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
23097
23098         * appdomain.c: Moved methods for parsing and freeing assembly
23099         names to assembly.c.
23100         * assembly.c, domain-internals.h: Created public methods for parsing
23101         assembly names. Fixed mono_assembly_load_with_partial_name:
23102         it now finds the best match, taking into account the version,
23103         token and culture specified in the partial name. Also return
23104         the latest version if no version information is specified.
23105
23106 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
23107
23108         * threadpool.c: replace check for SocketAsyncCall class.
23109
23110 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23111
23112         * threadpool-internals.h:
23113         * Makefile.am: added threadpool-internals.h
23114
23115         * threadpool.c: call mono_unhandled_exception on exceptions not handled
23116         that happen in threadpool threads (tested on MS).
23117         (mono_thread_pool_remove_socket): new function that dispatch any pending
23118         AIO call on a socket that is closing. By now only epoll really needs it,
23119         as select/poll wake up when the socket closes.
23120
23121
23122         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
23123
23124 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
23125
23126         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
23127
23128 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
23129
23130         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
23131
23132 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
23133
23134         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
23135         has an abort request, convert it into a suspend request.
23136
23137 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
23138
23139         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
23140         warning for the usage of `UnmanagedFunctionPointerAttribute' which
23141         is not supported yet.
23142
23143 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23144
23145         * image.c: register assemblies loaded from data (bundles) in the loaded
23146         assemblies hash. Fixes bug #74772.
23147
23148 2005-04-29  Martin Baulig  <martin@ximian.com>
23149
23150         * class.c (mono_type_get_name_recurse): Update to the new naming
23151         schema from the latest .NET 2.x beta2.
23152         (mono_class_setup_vtable_general): If we're a generic instance,
23153         copy the vtable from our generic type definition and inflate all
23154         the methods in it.
23155
23156         * loader.c (find_method): Update to the new naming schema from the
23157         latest .NET 2.x beta2.
23158
23159 2005-04-29  Raja R Harinath  <harinath@gmail.com>
23160
23161         * class.c (mono_class_init): Add a mono_loader_unlock to the
23162         #74734 fix.
23163
23164 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
23165
23166         * icall.c (ves_icall_System_Environment_Exit): Remove the 
23167         suspend_all_other_threads () call for the time being, since it can hang.
23168
23169         * threads.c (mono_thread_manage): Similarly, disable the waiting for
23170         the background threads to exit, since it can also hang.
23171
23172         * class.c (mono_class_init): Applied patch from Ankit Jain 
23173         (radical@gmail.com). Avoid pending init errors when a field refers
23174         to a nested class using a typeref. Fixes #74734.
23175
23176         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
23177         this for dynamic modules.
23178
23179 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23180
23181         * threads.c: don't wait for threads that are in the process of aborting
23182         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
23183         and waiting for background threads to finish. This makes xsp and
23184         mod-mono-server exit without random length delays and/or hangs.
23185
23186 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23187
23188         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
23189
23190 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
23191
23192         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
23193         dynamic types to prevent infinite loops. Fixes #74727.
23194
23195         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
23196         ..._is_assignable_to.
23197
23198 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
23199
23200         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
23201
23202 2005-04-25  Martin Baulig  <martin@ximian.com>
23203
23204         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
23205
23206         * domain.c
23207         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
23208
23209         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
23210
23211         * reflection.c (build_compressed_metadata): Set metadata header
23212         version to 2.0.
23213
23214 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
23215
23216         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
23217         number into an integral and a decimal part. Fixes #70473.
23218
23219         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
23220
23221 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
23222
23223         * culture-info-table.h : reflected the latest locale-builder output.
23224
23225 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23226
23227         * threadpool.c: check for SuspendRequested too when deciding if
23228         mono_thread_interruption_checkpoint should be called.
23229
23230 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23231
23232         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
23233         * threads.c: remove interruption_mutex and use Interlocked instead. When
23234         suspending all the threads, wait for all the suspended events at once.
23235         If we're shutting down and get an APC that is going to be queued,
23236         call mono_thread_execute_interruption immediately, as the thread might
23237         be sleeping on a pthread condition or mutex.
23238
23239         * icall.c: call mono_runtime_set_shutting_down before suspending the
23240         threads.
23241
23242         Fixes bug #74693. And now xsp is happier when exiting.
23243
23244 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
23245
23246         * loader.c (mono_stack_walk): Fix #74690.
23247
23248 2005-04-22  Martin Baulig  <martin@ximian.com>
23249
23250         * mono-debug.h (MonoDebugMethodJitInfo): Added
23251         `MonoDebugMethodJitInfo *jit'.
23252
23253         * mono-debug.c (mono_debug_read_method): Cache the
23254         MonoDebugMethodJitInfo in `address->jit'.
23255         (mono_debug_free_method_jit_info): New public method.
23256
23257 2005-04-22  Martin Baulig  <martin@ximian.com>
23258
23259         * class.c (mono_class_is_assignable_from): Disallow
23260         type parameter -> interface.
23261
23262 2005-04-21  Dick Porter  <dick@ximian.com>
23263
23264         * threads.c (mono_thread_create): Turn an assertion into an error.
23265
23266 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
23267
23268         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
23269         
23270         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
23271         Fix some gcc 4.0 warnings.
23272
23273 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
23274
23275         * file-io.c: fix alt dir separator char on unix systems
23276         and cleanup (fixes bug #71214).
23277
23278 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
23279
23280         * marshal.c: Use CALLVIRT instead of CALL when dispatching
23281         a call to a remote domain, since the method may be an
23282         interface method in the client domain. This fixes bug #74192.
23283
23284 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23285
23286         * threadpool.c: recv/send are now performed before going back to managed
23287         code to save one transition.
23288
23289 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23290
23291         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
23292
23293         * metadata/threadpool.c: removed hack to workaround the bug above.
23294
23295         Fixes bug #74618.
23296
23297 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
23298
23299         * reflection.c reflection.h: Fix handling of parameter defaults in
23300         dynamic methods. Also fixes handling of parameter attributes.
23301         Fixes #74609.
23302
23303         * mono-debug.c (mono_debug_close_image): Fix warning.
23304
23305 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23306
23307         * socket-io.h: replaced old unused field with new 'blocking'.
23308         * threadpool.c: restore socket blocking state on windows(tm).
23309
23310 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
23311
23312         * icall.c: don't return the codebase in the AssemblyName[] returned by
23313         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
23314         * object-internals.h: Removed FIXME (fields were presents) and fixed
23315         versioncompat declaration.
23316
23317 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23318
23319         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
23320         not closed, so don't cleanup when it happens.
23321
23322 2005-04-13  Chris Toshok  <toshok@ximian.com>
23323
23324         * mono-debug-debugger.h: change prototype for
23325         mono_debugger_lookup_type.
23326
23327         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
23328         this function, although it should probably be named
23329         mono_debugger_init_type.
23330
23331 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23332
23333         * threadpool.c: fix non-AIO case.
23334
23335 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
23336
23337         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
23338         the built-in profiler to measure just JIT compilation times.
23339
23340 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23341
23342         * threadpool.c: the epollfd might be closed by another thread at
23343         any time, so ignore EBADF at treat it as a "we're closing" sign.
23344
23345 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23346
23347         * threadpool.c: release the semaphores with a count equals to the number
23348         of working threads in both IO and regular pools. Fixed typo that messed
23349         up the count of IO pool threads. Don't initialize the pipe handles if
23350         we're using epoll.
23351
23352 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23353
23354         * threadpool.c: some systems don't like a NULL when deleting the socket
23355         from epoll.
23356
23357 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23358
23359         * threadpool.c: fix semaphore allocation.
23360
23361 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23362
23363         * threadpool.c: added epoll() based implementation for asynchronous IO
23364         that is used instead of the default poll() when available.
23365         It can be disabled by setting MONO_DISABLE_AIO.
23366
23367 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23368
23369         * threadpool.c: windows needs 'closesocket' and instead of returning
23370         0 when the stream is closed while in select, it returns -1. Fixes bug
23371         #74573.
23372
23373 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
23374
23375         * class.c (class_compute_field_layout): Fix the regression caused by
23376         the previous try.
23377
23378 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23379
23380         * threadpool.c: separate pool for socket async. IO.
23381         * threadpool.h: mono_max_worker_threads is not a global any more.
23382
23383 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
23384
23385         * class.c (class_compute_field_layout): Fix #74549.
23386
23387 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23388
23389         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
23390         use 2 connected sockets instead.
23391
23392 2005-04-08  Miguel de Icaza  <miguel@novell.com>
23393
23394         * mono-config.c: Add new entry point for mkbundle
23395         mono_config_parse_memory. 
23396
23397 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23398
23399         * threadpool.c: removed another unused function.
23400
23401 2005-04-08  Ankit Jain  <radical@corewars.org>
23402
23403         * reflection.c (get_default_param_value_blobs): Add 'types'
23404         parameter to get the types encoded in the constant table.
23405         (mono_param_get_objects): Use the type from the constant table,
23406         not the type of the parameter, when creating default values.
23407         Handle null default values correctly.
23408
23409 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23410
23411         * file-io.c:
23412         * file-io.h:
23413         * threadpool.c:
23414         * threadpool.h:
23415         * icall.c:
23416         * socket-io.c: removed dead code for async IO.
23417
23418 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23419
23420         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
23421
23422         * threadpool.c: intercept socket async. calls and pass them to a thread
23423         that is polling and dispatching the job items to the threadpool as
23424         socket become ready. Fixes bugs #71217, #71933.
23425
23426         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
23427         between char and short/ushort arrays.
23428
23429         * socket-io.c: remove dead code.
23430
23431 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
23432
23433         * locales.c,
23434           icall.c : removed InternalToUpper_Comp() and
23435           InternalToLower_Comp().
23436
23437 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
23438
23439         * char-conversions.h : The tables were incorrectly generated. Should
23440           be generated against invariant culture.
23441
23442 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
23443
23444         * object.c (mono_runtime_invoke_array): Fix return value when 
23445         passing pre-created valuetype objects to ctors.
23446
23447         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
23448         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
23449         Fixes #74338.
23450
23451 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
23452
23453         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
23454         only used with --security and hides the wrong corlib version error.
23455
23456 2005-03-30  Joshua Tauberer  <tauberer@for.net>
23457
23458         * class.c: Changed mono_class_name_from_token so that types
23459         outside of a namespace don't have an initial period.  Improved
23460         the g_warning message used in _mono_class_get when loading
23461         fails.
23462         * assembly.c: In mono_assembly_load_reference, when an assembly
23463         can't be found, "No such file or directory" is misleading and
23464         unhelpful because a few paths were checked for the presence of
23465         the assembly.  When that happens (ENOENT), display a nicer
23466         message indicating the directories that were searched.  In all
23467         cases, the warning is made easier to read for non-hackers.
23468
23469 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
23470
23471         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
23472         project/solution.
23473         * appdomain.h|domain.c: Removed inline from functions.
23474         * appdomain.c: Reduced warnings when compiling on windows.
23475         * icall.c: Fixed output_debug declaration to gunichar2*.
23476         * mono-config.c: Reduced warnings when compiling on windows.
23477         * rand.c: Added missing "windows.h". Added missing return value.
23478         * rawbuffer.c: Added missing winsock2.h for windows.
23479         * sysmath.h: Added mono-compiler.h header to allow/ease 
23480         compilation with non-GCC compilers.
23481         * threads.c: Fixed declarations to compile with VS.NET C compiler.
23482         Removed cast warnings.
23483
23484         Adapted from the work of J Lothian (for VC6).
23485
23486 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
23487
23488         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
23489         from default_path.
23490
23491 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
23492
23493         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
23494         the 2.0 profile.
23495
23496 2005-03-27  Raja R Harinath  <harinath@gmail.com>
23497
23498         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
23499         has to be in $(exec_prefix).  $(prefix) is for arch-independent
23500         stuff, and it would probably use $(prefix)/share rather than
23501         $(prefix)/lib.
23502
23503 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23504
23505         * console-io.c: added 2 includes that might be missing.
23506
23507 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
23508
23509         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
23510         profile.
23511
23512         * reflection.c (create_custom_attr): Allocate the params array using
23513         alloca so it gets GC tracking.
23514
23515 2005-03-23  Chris Toshok  <toshok@ximian.com>
23516
23517         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
23518         out some spew.
23519
23520 2005-03-24  Raja R Harinath  <rharinath@novell.com>
23521
23522         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
23523         changes to pick up any changes in prefix, etc.
23524
23525 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
23526
23527         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
23528         
23529         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
23530         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
23531
23532 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
23533
23534         * class-internals.h object-internals.h class.c reflection.c: Extend the
23535         mono_lookup_dynamic_token () function to return the class of the
23536         token as well. 
23537
23538         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
23539         well. Fixes #73848.
23540
23541 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
23542
23543         * security-manager.c: Skip inheritance checks for intra-corlib
23544         class inheritance and method overrides. This skips a lot of checks
23545         and (anyway) permissions cannot work until corlib is loaded.
23546
23547 2005-03-23  Martin Baulig  <martin@ximian.com>
23548
23549         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
23550         MONO_TYPE_GENERICINST.  
23551
23552 2005-03-23  Martin Baulig  <martin@ximian.com>
23553
23554         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
23555
23556 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
23557
23558         * class.c: added locking comments to some functions.
23559         Cache the interface offsets arrays (saves about 20 KB
23560         of runtime memory in a typical app).
23561         Reduce the time overhead in mono_class_setup_supertypes ().
23562
23563 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
23564
23565         * icall.c: speedup and fix leaks in GetMethodsByName and
23566         GetPropertiesByName.
23567
23568 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
23569
23570         * reflection.c: some locking fixes.
23571
23572 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
23573
23574         * metadata.c: added missing break in case statement.
23575
23576 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
23577
23578         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
23579         typedbyref return values. Fixes #73941.
23580
23581 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
23582
23583         * security-manager.c|h: Added demandunmanaged method and 
23584         suppressunmanagedcodesecurity class to MonoSecurityManager.
23585         Renamed aptc class to allowpartiallytrustedcallers.
23586
23587 2005-03-17  Martin Baulig  <martin@ximian.com>
23588
23589         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
23590
23591 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23592
23593         * file-io.c: disabled file async. IO using aio_*. It uses the
23594         threadpool now. Workaround for bug #73718.
23595
23596 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
23597
23598         * assembly.h, mono-config.c: added code to deal with bundled configs
23599         for bundled assemblies.
23600
23601 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
23602
23603         * *.c, private.h: cleanup, removing old private.h header file.
23604
23605 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
23606
23607         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
23608         and throw_on_unmappable_char attributes.
23609
23610 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
23611
23612         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
23613         _ProcessName_internal.
23614
23615 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
23616
23617         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
23618         #73631.
23619
23620         * icall.c threads.c threads-types.h: Remove slothash icalls as they
23621         are no longer used.
23622
23623 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
23624
23625         * object.c (compute_class_bitmap): Add support for generics. Fixes
23626         #73527.
23627
23628 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
23629
23630         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
23631
23632 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23633
23634         * filewatcher.c: commented out the code for windows watcher, as we don't
23635         use it (we use the managed implementation instead).
23636
23637 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
23638
23639         * object-internals.h (MonoThread): Remove 'unused1' field.
23640
23641         * appdomain.c: Bump corlib version.
23642
23643         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
23644
23645         * reflection.c (mono_reflection_create_runtime_class): Remove the
23646         AssemblyBuilder.Save optimization since it causes too many problems.
23647
23648 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
23649
23650         * exception.c|h: Added mono_get_exception_reflection_type_load to
23651         create a ReflectionTypeLoadException object.
23652         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
23653         to return NULL is a InheritanceDemand fails during reflection. Updated
23654         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
23655         ReflectionTypeLoadException if an InheritanceDemand fails during 
23656         reflection. Added icall mapping for GetLinkDemandSecurity.
23657         * security-manager.c|h: Added ves_icall_System_Security_
23658         SecurityManager_GetLinkDemandSecurity internal call to return the
23659         class and methods permissions set for a LinkDemand. Removed unused
23660         fields in MonoSecurityManager.
23661
23662 2005-03-10  Martin Baulig  <martin@ximian.com>
23663
23664         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
23665         it's a generic instance.
23666
23667 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
23668
23669         * reflection.c (mono_get_object_from_blob): Applied patch from
23670         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
23671
23672         * class.c (mono_class_is_assignable_from): Another try at fixing 
23673         #73469 without breaking anything.
23674
23675 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
23676
23677         * class.c: (mono_class_is_assignable_from): Revert the last changes
23678         since they don't work with generics.
23679         
23680         * class.c (mono_class_is_assignable_from): Fix build bustage.
23681
23682         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
23683         the managed IsAssignableFrom method. Fixes #73469.
23684
23685         * reflection.c (mono_reflection_call_is_assignable_from): New helper
23686         function.
23687
23688 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
23689
23690         * object.c (mono_load_remote_field_new): Fix returning uninitialized
23691         memory when the remoting callback does not sets the out arguments.
23692         Fixes #73007.
23693
23694         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
23695         by mistake.
23696
23697         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
23698
23699         * object-internals.h (MonoStackFrame): Sync with managed object layout.
23700
23701         * appdomain.c: Bump corlib version.
23702
23703 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
23704
23705         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
23706         function.
23707
23708         * threads.c (mono_thread_attach): Detect threads which are not started
23709         by the GC pthread wrappers.
23710
23711 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
23712
23713         * icall.c: Added new icall for RNG.
23714         * rand.c|h: Added new icall to open the RNG. This allows to share a 
23715         single handle on Linux to access /dev/urandom and fix #73183.
23716
23717 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
23718
23719         * object.c: setting the new vtable in a transparent proxy object must
23720         not change the GC descriptor.
23721
23722 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
23723
23724         * object.c: fixed compilation without GCJ support.
23725         * reflection.c: for runtime-created types ensure klass->has_references
23726         is correct (bug #73215).
23727
23728 2005-03-02  Martin Baulig  <martin@ximian.com>
23729
23730         * class.c (mono_class_is_assignable_from): Make this work if
23731         `oklass' is a generic instance; fixes #72831.
23732
23733 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
23734
23735         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
23736         with hasthis set.
23737         
23738         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
23739
23740         * marshal.c: Reorganize native->managed marshalling code to also use
23741         the emit_marshal_... functions.
23742
23743 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
23744
23745         * object.c: typed allocs have issues with bitmap sizes > 30,
23746         so check for max_set >= 30.
23747
23748 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
23749
23750         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
23751         managed code. Fixes #73012.
23752
23753         * metadata.h (MonoMarshalSpec): Add elem_mult field.
23754
23755         * metadata.c reflection.c: Load/Emit elem_mult as well.
23756         
23757         * metadata.h (MonoMarshalSpec): Add comment.
23758
23759         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
23760
23761         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
23762         num_elem to -1 if not given.
23763
23764         * object-internals.h (MonoReflectionMarshal): Add has_size field.
23765
23766         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
23767         given values.
23768
23769 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
23770
23771         * null-gc.c (mono_gc_free_fixed): Was not compilable.
23772
23773 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
23774
23775         * reflection.c (encode_marshal_blob): Encode param_num field as well.
23776
23777         * object-internals.h (MonoReflectionMarshal): Add param_num field.
23778
23779 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
23780
23781         * object.c: generalized the reference bitmap creation
23782         and added hooks for the new GC.
23783         * class-internals.c: removed the gc_bitmap field from MonoClass.
23784
23785 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
23786
23787         * domain.c: help the compiler to produce better code
23788         in mono_jit_info_table_find ().
23789
23790 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
23791
23792         * object.c: make all allocations look typed.
23793
23794 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
23795
23796         * socket-io.c: load Mono.Posix if it's not loaded already
23797         (fixes bug#73033).
23798
23799 2005-02-24  Martin Baulig  <martin@ximian.com>
23800
23801         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
23802         * reflection.c (dup_type): Likewise.
23803
23804 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
23805
23806         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
23807         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
23808
23809 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
23810
23811         * domain.c, threads.c, object-internals.h: make the critical thread
23812         local vars use the fast access mode (even when we're compiled in
23813         a lib). Provide accessors to be used by the jit during codegen.
23814
23815 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
23816
23817         * appdomain.c: Changed hook functios behavior to include
23818         support for the reflection only assemblies. Some icalls were changed
23819         to support the mentioned assemblies too. Signatures of static methods
23820         try_assembly_resolve and real_load now have an additional parameter:
23821         refonly.
23822
23823         * assembly.c: General changes to mono_assembly_ methods to support
23824         reflection only api. Functions mono_assembly_open, mono_assembly_load,
23825         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
23826         suffix, to support an additional gbool parameter to specify whether
23827         the assembli is reflection only or not. Created some new hook functions 
23828         to add support for reflection only assemblies. Signatures of static 
23829         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
23830         have now an additional parameter: refonly.
23831
23832         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
23833         indicating whether the assembly is reflection only or not.
23834
23835         * exception.c: Add mono_get_exception_invalid_operation.
23836
23837         * icall.c: Throw an InvalidOperationException when trying to invoke
23838         a property/method/event, or trying to set/get the value of a field.
23839         Also add an icall to retrieve the ref_only flag to the
23840         MonoReflectionAssembly.
23841
23842 2005-02-23  Chris Toshok  <toshok@ximian.com>
23843
23844         Part of fix for #72827.
23845         * mono-debug.c (mono_debug_add_method): add lexical block data to
23846         the info we write.  Kind of a hack at the moment - we copy the
23847         lexical block info from the MonoDebugMethodInfo to the
23848         MonoDebugMethodJitInfo here, before writing it.
23849         (mono_debug_read_method): read the lexical block info.
23850
23851         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
23852
23853         * debug-mono-symfile.h: add lexical block support.
23854
23855         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
23856         support.
23857
23858 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
23859
23860         * loader.c (mono_lookup_pinvoke_call): Fix warning.
23861
23862         * object.c (mono_runtime_free_method): Call mono_free_method () and
23863         put the TODOs there.
23864
23865         * loader.c (mono_free_method): Free up most memory allocated for 
23866         dynamic methods.
23867
23868 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
23869
23870         * reflection.c: properly flag a Type argument to a
23871         named custom attr value (bug #72248).
23872
23873 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
23874
23875         * reflection.c: reduce code duplication in named custom
23876         attribute encoding.
23877
23878 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
23879
23880         * reflection.c: properly encode custom attrs of type object
23881         (bug #72649).
23882
23883 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
23884
23885         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
23886
23887 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
23888
23889         * socket-io.c: load System.dll if it's not loaded already
23890         (bug #72850 and #70477).
23891
23892 2005-02-21  Martin Baulig  <martin@ximian.com>
23893
23894         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
23895         generic instances.
23896
23897 2005-02-21  Martin Baulig  <martin@ximian.com>
23898
23899         * reflection.c (mono_image_build_metadata): We also need to
23900         "fixup" the MethodImpl table after we computed the final method
23901         indices.  Call fixup_methodimpl() to do that.
23902         (fixup_methodimpl): New private method.
23903
23904 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
23905
23906         * assembly.c: special case mscorlib.dll (bug#72536),
23907         patch from Carlos Alberto Cortez.
23908
23909 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
23910
23911         * threads-types.h threads.c: Fix build bustage.
23912
23913         * threads.c: Use a union for long<->double conversions.
23914
23915         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
23916         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
23917
23918         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
23919         containing the checkpoint call with NOT_TAKEN.
23920         
23921         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
23922         checkpoint before pushing the arguments, so they won't have to be
23923         spilled to stack.
23924
23925 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
23926
23927         * domain.c, assembly.c, domain-internals.h: make some data
23928         const and relocation-free.
23929
23930 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
23931
23932         * object.c, appdomain.c, class-internals.h: introduce the
23933         MonoClassRuntimeInfo structure to hold the info needed to
23934         use a class at runtime. Made mono_class_vtable() lock-free
23935         for all the appdomains.
23936
23937 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
23938
23939         * metadata-internals.h, image.c: introduce a per-image mempool to
23940         be used for memory that has the same lifetime as the image.
23941
23942 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
23943
23944         * domain.c: In mono_init_internal(), instead of selecting the first
23945         runtime version supported by an executable, get a list of all
23946         supported versions and select the one for which an mscorlib exists
23947         (since even if the runtime supports a given version, it doesn't mean
23948         that the framework for that version is installed).
23949         Modified get_runtimes_from_exe to support this behavior.
23950         In supported_runtimes, added information about additional system
23951         assembly versions.
23952         
23953         * assembly.c: Added support for more than one system assembly version
23954         per runtime version. Updated the assembly list.
23955         In mono_assembly_remap_version, removed the initial version check,
23956         since we don't know to which version we need to compare until we
23957         get the version set on which the assembly is based.
23958         Moved the code for loading corlib into the new method
23959         mono_assembly_load_corlib(), so it can be used by the initialization
23960         code.
23961         
23962         * domain-internals.h: Updated data structures and added declaration
23963         for mono_assembly_load_corlib.
23964
23965 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
23966
23967         * reflection.c (resolve_object): Fix the creation of the signature in 
23968         the SignatureHelper case.
23969
23970         * assembly.c (mono_assembly_remap_version): Fix binary search.
23971         
23972 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
23973  
23974         * class.c: Added inheritance check when a method is overloaded (from a
23975         virtual method or when implementing an interface) and when a class is
23976         inherited. Added functions to set a failure for a class and to 
23977         retreive the exception from a failure.
23978         * class-internals.h: Added fields to MonoClass to keep the exception
23979         information status for inheritance (or other exceptions) to be thrown
23980         later (i.e. not at load time).
23981         * object.c: Throw the inheritance SecurityException when a type is to 
23982         be created with either class or method inheritance violations.
23983         * reflection.c|h: Fix when getting declsec from a class. Removed 
23984         unrequired code for class. Improved sanity in parameter naming.
23985         * security-manager.c|h: Added functions to check for class and method
23986         inheritance.
23987
23988 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
23989
23990         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
23991         and has_finalize in dynamic types as well.
23992
23993 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
23994
23995         * culture-info-table.h : fixed currency format for en-GB (and so on).
23996
23997 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
23998
23999         * gc.c: ensure the GC handles never have 0 as a value.
24000
24001 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
24002
24003         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
24004         a pointer to a struct to unmanaged code. Fixes #72625.
24005
24006 2005-02-16  Martin Baulig  <martin@ximian.com>
24007
24008         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
24009
24010 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
24011
24012         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
24013
24014 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
24015
24016         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
24017
24018         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
24019         UnmanagedFunctionPointerAttribute, use it for determining calling convention
24020         etc. Fixes #71471.
24021
24022         * reflection.c (mono_custom_attrs_get_attr): New helper function.
24023
24024         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
24025
24026 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
24027
24028         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
24029         changes to make the current context a field in MonoThread.
24030
24031 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
24032
24033         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
24034         the last change.
24035         
24036         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
24037         extracted from mono_marshal_get_native_wrapper.
24038
24039         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
24040         to create wrappers around native functions.
24041
24042         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
24043         delegates for arbitrary function pointers. Fixes #71472.
24044
24045 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
24046
24047         * threads.c: cleaned up the code a little.
24048
24049 2005-02-15  Martin Baulig  <martin@ximian.com>
24050
24051         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
24052         the data table.
24053
24054         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
24055         allocate larger chunks if needed.
24056
24057 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
24058
24059         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
24060         in by mistake.
24061
24062 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
24063
24064         * domain.c: keep the domains in an array and ensure the domain ids
24065         are kept small, so they can be used as indexes to domain-specific data
24066         with a small memory overhead.
24067
24068 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
24069
24070         * icall.c: Handle byref types in Type icalls. Fixes #72544.
24071
24072 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
24073
24074         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
24075
24076 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
24077
24078         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
24079
24080         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
24081         values.
24082
24083         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
24084         
24085 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
24086
24087         * domain-internals.h: add the hashtable here.
24088
24089         * class-internals.h: Remove `info' from MonoMethod
24090
24091         * domain.c: Add a new hashtable, jit_trampoline_hash
24092
24093 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
24094
24095         * object.c: don't set the value of static fields
24096         (fixes bug#72494).
24097
24098 2005-02-11  Martin Baulig  <martin@ximian.com>
24099
24100         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
24101         (mono_debug_add_method): Silently ignore the method if it's too big.
24102         (mono_debug_add_type): Likewise.
24103
24104 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
24105
24106         * threads.c, appdomain.c: remove #ifdefs from the code.
24107
24108 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
24109
24110         * metadata-internals.h: Added flags to MonoAssembly to cache the most
24111         common security informations. This allows us to stay in unmanaged code
24112         when doing LinkDemand and it's special cases (except for the first 
24113         time for initialization). The flags a very much used with --security.
24114         * reflection.c|h: Added code to get declarative security attributes 
24115         for LinkDemand and InheritanceDemand. This required to refactor the
24116         existing code for Demand.
24117         * security-manager.c|h: Added new method fields for the special cases
24118         of LinkDemand.
24119
24120 2005-02-10  Martin Baulig  <martin@ximian.com>
24121
24122         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
24123         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
24124
24125 2005-02-10  Martin Baulig  <martin@ximian.com>
24126
24127         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
24128         debugging code; this is almost a complete rewrite.
24129
24130         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
24131
24132 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
24133
24134         * domain.c, object.h: expose mono_string_equal () and 
24135         mono_string_hash ().
24136         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
24137         it's implemented in managed code.
24138
24139 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24140
24141         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
24142         lo leak objects between appdomains.
24143
24144 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24145
24146         * assembly.c: old compilers compilation fix from 
24147         robertj@gmx.net (Robert Jordan).
24148
24149 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
24150
24151         * class-internals.h: Little reminder for the future.
24152
24153         * debug-helpers.c: Fix up wrapper_type_names
24154
24155 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24156
24157         * image.c, metadata-internals.h: when loading an image from a file,
24158         mmap all of it and use the same codepaths as when using a
24159         in-memory image: the code is simpler and we use less memory
24160         (both writable and readonly).
24161
24162 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
24163
24164         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
24165         API to alloc runtime data structures that need to be tracked by the
24166         GC and contain pointers.
24167         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
24168         make the code more readable and eventually use a different GC.
24169
24170 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
24171
24172         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
24173         for out arguments.
24174         
24175 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
24176
24177         * object.c: In release_type_locks(), don't release the cctor lock
24178         if it has already been released. This fixes a crash in the
24179         thread5 test.
24180
24181 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
24182
24183         * gc.c, marshal.c, icall.c: register a delegate for finalization
24184         only when the native function pointer has been allocated for it.
24185
24186 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24187
24188         * object.c: cleaned up some code, allocate objects that are
24189         pointer free with the atomic malloc variant. Allocate memory
24190         for static data from the mempool if it's pointer-free.
24191         Allocate the bounds array at the end of the array data, when needed.
24192         * object-internals.h, object.h: move a private function in a private
24193         header.
24194         * class.c: handle missing case in tracking references in fields.
24195
24196 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
24197
24198         * class.c, class-internals.h: keep track if a type has
24199         reference fields in either the instance or static fields.
24200
24201 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
24202
24203         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
24204         and renamed to MonoRuntimeInfo. Added fields to store the expected
24205         framework assembly version. Changed mono_get_framework_version and
24206         mono_get_runtime_version for a single mono_get_runtime_info method.
24207         
24208         * assembly.c: Added method to remap system assembly versions to the
24209         current executing runtime version. Removed old mapping code.
24210         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
24211         
24212         * icall.c, reflection.c: Track api changes.
24213
24214 2005-02-06  Miguel de Icaza  <miguel@novell.com>
24215
24216         * loader.c (method_from_memberref): Improve error reporting,
24217         produce the class name instead of the typeref/typedef index. 
24218
24219 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
24220
24221         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
24222
24223 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24224
24225         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
24226         stdcall and charset name mangling.  Reorganize the code and add
24227         some tracing stuff.
24228
24229 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
24230
24231         * monodiet.c: More iters!
24232
24233         * marshal.c: Iter usage.
24234
24235         * icall.c: Iter usage.
24236
24237         * object.c: Use iters.
24238
24239         * debug-helpers.c: More iters
24240
24241 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24242
24243         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
24244         under win32.
24245
24246 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
24247
24248         * mono-debug-debugger.c: use iters
24249
24250         * class.c, class-internals.h: mono_class_setup_events is static
24251         now
24252
24253         * All callers: use iters
24254
24255 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24256
24257         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
24258         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
24259
24260 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
24261
24262         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
24263
24264         * marshal.h: Add prototypes for ldfld/stfld_remote.
24265
24266         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
24267         this is called during startup.
24268         
24269 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
24270
24271         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
24272         MonoThreadsSync struct private in monitor.c. Changed the way
24273         MonoThreadsSync is allocated so it's faster and there is no
24274         need to keep track of it with a finalizer and it uses less memory.
24275         This also finally allows us to allocate mono objects as ptrfree when
24276         there are no reference fields.
24277
24278 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
24279
24280         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
24281         disappearing link to the GC interface and use them to simplify
24282         the gchandles code.
24283
24284 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
24285
24286         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
24287         stfld_remote which call mono_load/store_field_new. This allows methods
24288         calling ldfld/stfld wrappers to be AOTed.
24289
24290         * console-io.c: Include sys/filio.h under solaris.
24291         
24292         * console-io.c: Include curses.h if needed correctly.
24293
24294 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
24295         
24296         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
24297         method->klass as well.
24298
24299         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
24300
24301         * class.c (mono_class_init): Switch on lazy initialization of 
24302         methods.
24303
24304         * class.c (mono_class_get_finalizer): Handle the case when the 
24305         finalizer is inherited.
24306
24307 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24308
24309         * console-io.c: <curses.h> is needed by term.h on solaris.
24310
24311 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
24312
24313         * icall.c, class-internals.h, monodiet.c, class.c: Remove
24314         mono_class_setup_properties where possible. Remove this ftn from
24315         the header file, and make it static.
24316
24317 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
24318
24319         * loader.c: Add missing setup_... call.
24320
24321         * class.c: Add missing setup_... calls.
24322
24323         * class.c (mono_class_init): Switch on lazy initialization of 
24324         the generic vtable.
24325         
24326         * class.c (mono_class_init): Fix generics broken by the recent changes.
24327
24328         * monodiet.c (handle_type): Add missing setup_... calls.
24329
24330         * class.c: Back out garbage in previous patch.
24331         
24332         * class.c: Add missing setup_... calls.
24333
24334         * class.c (mono_class_get_method_from_name_flags): Avoid calling
24335         mono_class_setup_methods () if possible.
24336
24337         * class-internals.h (MonoClass): Add 'has_cctor' flag.
24338
24339         * class-internals.h (MonoCachedClassInfo): New structure.
24340
24341         * class.c: Initialize properties and events fields of MonoClass lazily.
24342
24343         * class.c: Add infrastructure for lazily initializing the methods and
24344         vtable fields of MonoClass. Not yet used.
24345
24346         * class.c (mono_class_get_finalizer): New helper function.
24347
24348         * class.c: Add infrastructure for loading some class related data from
24349         an AOT file.
24350
24351         * object.c: Add infrastructure for initializing the vtable from data
24352         in the AOT file.
24353
24354         * gc.c (run_finalize): Use mono_class_get_finalizer ().
24355
24356         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
24357         appropriate initialization function before accessing parts of the
24358         MonoClass structure.
24359
24360         * marshal.c: Fix warnings.
24361         
24362         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
24363
24364         * mono-debug-debugger.c (get_exception_message): Use 
24365         mono_class_get_method_from_name_flags ().
24366
24367 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
24368
24369         * reflection.c, appdomain.c: Replace a few manual searches that
24370         Zoltan missed. (Paolo approved this part of my initial patch).
24371
24372 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
24373
24374         * profiler.c: disable recording statistical events at report time.
24375
24376 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24377
24378         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
24379         to byteswap arrays of enum values, too (bug #72080).
24380
24381 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
24382
24383         * appdomain.c (set_domain_search_path): Allow this to be called if
24384         domain->setup is not yet set.
24385
24386         * loader.c (mono_method_get_index): New helper function.
24387
24388         * loader.c reflection.c: Use mono_method_get_index ().
24389
24390         * class.c (mono_class_get_method_from_name_flags): New helper method.
24391
24392         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
24393         this.
24394
24395         * class.c (mono_class_get_cctor): New helper method.
24396
24397         * string-icalls.c object.c class.c marshal.c reflection.c: Use
24398         mono_class_get_method () to look up methods.
24399
24400 2005-02-01  Miguel de Icaza  <miguel@novell.com>
24401
24402         * console-io.c: Fix the build, this should work on Windows.
24403
24404 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
24405
24406         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
24407         be set to null to keep things valid
24408
24409 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24410
24411         * icall.c: added Console 2.0 icalls.
24412         * Makefile.am: added console-io.[ch]
24413         * console-io.[ch]: internal calls for Console 2.0 API.
24414
24415 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24416
24417         * class.c: make sure we consider all the interfaces
24418         when calculating max_interface_id (bug found by
24419         Jeroen Frijters running ikvm).
24420
24421 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
24422
24423         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
24424         valuetype fields to null.
24425
24426         * object.c (set_value): Ditto. Fixes #71669.    
24427
24428 2005-01-31  Martin Baulig  <martin@ximian.com>
24429
24430         * metadata.c (mono_metadata_has_generic_params): New public
24431         function; checks whether something is a generic method.
24432
24433 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
24434
24435         * appdomain.c: fix infinite recursion when adding assemblies.
24436
24437 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
24438
24439         * object.c: Fix small typo to return all items for Environment.
24440         GetCommandLineArgs.
24441
24442 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
24443
24444         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
24445         reflection.c: more domain and assembly-unload related fixes
24446         and memory leaks plugs.
24447
24448 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
24449
24450         * 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.
24451
24452 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
24453
24454         * loader.c (mono_method_signature): Make this method lazy
24455         (mono_get_method_from_token): Don't computate the signature here.
24456
24457         Doing this saves quite a bit of memory. I got 90 kb on starting up
24458         monodoc. It should also save some disk reads on startup.
24459
24460         * *: MonoMethod->signature might be NULL now. You *MUST* use
24461         mono_method_signature.
24462
24463 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
24464
24465         * object.c (mono_runtime_get_main_args): Return an array from the
24466         current domain here. Fixes #71938.
24467
24468 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
24469
24470         * monitor.c: formatting changes to comply with the
24471         mono coding style and remove #ifdefs from the code.
24472
24473 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
24474
24475         * metadata.c, private.h: remove some unneeded data
24476         and use a more compact representation for table schemas.
24477
24478 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
24479
24480         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
24481         to get a better distribution in hash tables.
24482         * *.c: use mono_aligned_addr_hash() where appropriate.
24483         * assembly.c: make var static.
24484
24485 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
24486
24487         * domain-internals.h: Put MonoJitInfo on a diet.
24488
24489         * domain.c: Fix a warning.
24490
24491 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24492
24493         * gc.c: rework the gc handles code to reuse handles
24494         when freed.
24495
24496 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
24497
24498         * domain.c: fixed long standing bug in mono_string_equal() which
24499         was brought to light with the ldstr changes.
24500
24501 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
24502
24503         * reflection.c: Remove warning by adding missing include for marshal.h
24504
24505 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24506
24507         * domain.c, object.c: change the ldstr_table to hold
24508         MonoString* as keys: makes the runtime isinterned lookup
24509         faster and simplifies memory management.
24510
24511 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
24512  
24513         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
24514         possible to add imperative security checks before calling the icall.
24515         * reflection.c: Return security attributes on the original MonoMethod
24516         (and not the wrapped one). This fix permissions on icalls.
24517
24518 2005-01-25  Dick Porter  <dick@ximian.com>
24519
24520         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
24521         the check for mktime() support actually test the mktime() return
24522         value.  "Fixes" bug 71682, though the output is still different to
24523         MS.
24524
24525 2005-01-25  Martin Baulig  <martin@ximian.com>
24526
24527         * class.c (mono_class_is_assignable_from): Make this work for
24528         generic instances.
24529
24530 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
24531
24532         * marshal.c (mono_string_utf8_to_builder)
24533         (mono_string_builder_to_utf16): We might not have ownership of the
24534         string. In thise case, we need to create a new buffer.
24535
24536         * object-internals.h (mono_stringbuilder_capacity): sb->str might
24537         be null, in which case, use the default capacity.
24538
24539 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24540
24541         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
24542         GC events to the profiler.
24543
24544 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
24545
24546         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
24547         if you don't want the GC to run.
24548
24549 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
24550
24551         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
24552         start providing a GC API and keeping different implementations in
24553         their own file.
24554         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
24555
24556 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
24557
24558         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
24559         mmap rather than allocating a huge buffer.
24560         (mono_debug_close_mono_symbol_file): Free the buffer allocated
24561         above.
24562
24563 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
24564
24565         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
24566         and CheckExecutionRights.
24567         * reflection.c|h: Keep the index of the declarative security to be 
24568         used, instead of the pointer, when AOT compiler is used. Also add 
24569         class initialization when requesting demands.
24570         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
24571         CheckExecutionRights. Both properties are now FALSE by default, and
24572         unmodifiable, unless the --security option is used.
24573
24574 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24575
24576         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
24577         reflection.c: properly refcount images and assemblies, many leaks fixed.
24578
24579 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24580
24581         * threadpool.c: increase the timeout for threads in the thread pool to
24582         10s.  Fixes bug #67159.
24583
24584 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
24585
24586         * class-internals.h: Sun's compiler insists on explicit
24587         signed on bit fields to handle then correctly.
24588
24589 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
24590
24591         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
24592         Make the size of the array fit only the number of invalid path
24593         chars that we have.
24594
24595         * class.c (_mono_class_get): Improve the error reporting when a
24596         class referenced is not found, to assist debugging. 
24597
24598 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
24599
24600         * threads.c: fix off-by-one error.
24601         * domain.c: free data allocated in the domain.
24602
24603 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
24604
24605         * reflection.c (mono_method_body_get_object): Fill out exception info
24606         as well.
24607
24608         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
24609         structure.
24610         
24611 2005-01-19  Martin Baulig  <martin@ximian.com>
24612
24613         * loader.c (mono_get_method_constrained): Make this work again.
24614
24615 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
24616
24617         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
24618         guint16 to match the managed side.
24619
24620         * reflection.c (mono_reflection_body_get_object): Fill out local
24621         variables array.
24622
24623         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
24624         as well.
24625
24626         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
24627         'local_var_sig_token'.
24628
24629 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
24630
24631         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
24632         System.Drawing.
24633
24634         * reflection.c (mono_method_body_get_object): Handle abstract and
24635         runtime methods.
24636
24637 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
24638
24639         * marshal.c, loader.c, class-internals.h, reflection.c:
24640         store the emthod data for a wrapper in an array instead of a list.
24641
24642 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
24643
24644         * marshal.c: change the code to allocate memory more
24645         conservatively for method wrappers.
24646
24647 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
24648
24649         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
24650         fields from MonoClass to the marshal info structure where they belong.
24651
24652 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24653
24654         * class.c, object.c, class-internals.h, marshal.c: rearrange
24655         some fields and tweak some types to lower memory usage.
24656
24657 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
24658
24659         * threads.c (signal_thread_state_change): Handle the case when the
24660         target thread is the current thread.
24661
24662         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
24663
24664         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
24665         emit_ptr_to_object_conv. 
24666
24667         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
24668         marshalling. Fixes #71352.
24669
24670 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
24671
24672         * metadata.h, blob.h: move table enum to blob.h so it can be included
24673         in any header.
24674         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
24675         cut the size of MonoImage/MonoDynamicImage.
24676
24677 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
24678
24679         * profiler.c (mono_profiler_install_simple): Fix default arguments.
24680
24681 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
24682
24683         * reflection.c, reflection.h, icall.c: add a function to check
24684         if an attribute type is defined for a metadata object.
24685
24686 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
24687
24688         * object-internals.h: Added some needed fields from StringBuilder class.
24689         * marshal.c: Set the maxCapacity when creating a StringBuilder.
24690
24691 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
24692
24693         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
24694         threads before shutting down the runtime.
24695
24696         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
24697
24698 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
24699
24700         * object-internal.h, threads.c: implement stacksize and 
24701         parameterized thread start functionality (requires
24702         matching corlib). Marked broken code for later removal.
24703
24704 2005-01-12  Martin Baulig  <martin@ximian.com>
24705
24706         * class-internals.h (MonoGenericClass): Moved the `initialized'
24707         flag to MonoDynamicGenericClass, removed `init_pending'.
24708         (MonoGenericInst): Added `is_reference' flag.
24709
24710 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
24711
24712         * reflection.c (mono_image_create_pefile): Only set the pe_offset
24713         inside the MSDOS header. Fixes #71201.
24714
24715         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
24716         gc thread.
24717         (mono_domain_finalize): Ditto.
24718
24719 2005-01-12  Martin Baulig  <martin@ximian.com>
24720
24721         * class.c (mono_get_shared_generic_class): Use the cache for
24722         non-dynamic generic classes.
24723
24724         * class-internals.h (mono_class_create_generic_2): Removed
24725         function prototype, this function is now static inside class.c.
24726
24727         * class.c (mono_class_create_generic_2): Made this static, only
24728         call it from mono_class_init() and mono_class_setup_parent().
24729         (collect_implemented_interfaces_aux): Call mono_class_init() on
24730         the interfaces we collect.
24731         (mono_class_setup_vtable): Call mono_class_init (class->parent).
24732
24733 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
24734
24735         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
24736         it a real thread handle.
24737
24738         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
24739         MonoJitExceptionInfo, since each catch clause needs its own variable.
24740         
24741 2005-01-11  Dick Porter  <dick@ximian.com>
24742
24743         * image.c (mono_pe_file_open): New variant on mono_image_open()
24744         that does not set up the CLI metadata; used for FileVersionInfo so
24745         it can get the data for windows binaries too.
24746         
24747         * process.c (process_read_string_block): Don't read off the end of
24748         the StringTable block.
24749
24750         These both fix bug 70766.
24751
24752 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
24753
24754         * gc.c: set some fields to NULL at GC cleanup time.
24755         * threads.c: if we quit the main thread, call exit ().
24756
24757 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
24758
24759         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
24760
24761 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
24762
24763         * threads.h, threads.c, object.c: added accessor and settor for
24764         main_thread. Handle it specially when exiting from it: wait
24765         for other foreground threads to exit.
24766
24767 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
24768
24769         * process.c, verify.c: remove some bloat.
24770
24771 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
24772
24773         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
24774         the calling convention to cdecl under win32.
24775
24776 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
24777
24778         * object.c (mono_object_get_size): New function to get the size of
24779         an object instance.
24780
24781         * profiler.c (simple_allocation): Use above.
24782
24783 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
24784
24785         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
24786         ves_icall_System_AppDomain_getRootDomain (as it's not required to
24787         get an appdomain by it's id and we can't assume the root's id is 0).
24788         * domain-internals.h: Change the function prototype to match.
24789         * icall.c: Change the icall table for AppDomain.
24790
24791 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
24792
24793         * locales.c (string_invariant_compare_char): Only compute
24794         GUnicodeTypes in the case where we need them.  Test for ordinality
24795         first and return if so.
24796
24797         From the commit:
24798
24799                 /*
24800                  * FIXME: here we must use the information from c1type and c2type
24801                  * to find out the proper collation, even on the InvariantCulture, the
24802                  * sorting is not done by computing the unicode values, but their
24803                  * actual sort order.
24804                  */
24805
24806 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
24807
24808         * loader.c: for P/Invoke methods, allow the "Internal" shared
24809         library name to refer to the calling process symbol namespace.
24810
24811 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
24812
24813         * Makefile.am: Add the security manager to the build.
24814         * security-manager.c|h: New. Initialization of the security manager.
24815
24816 2005-01-07  Dick Porter  <dick@ximian.com>
24817
24818         * threads.c: 
24819         * monitor.c: Update thread state during Monitor and WaitHandle
24820         waits.  Fixes bug 71031.
24821
24822 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
24823
24824         * reflection.c (property_encode_signature): Correctly handle when the
24825         property has no methods.
24826
24827 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
24828
24829         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
24830         
24831         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
24832         fields from mb, not rmb. Fixes #71017.
24833
24834         * marshal.c (emit_ptr_to_str_conv): Add support for 
24835         ByValTStr -> string conversion. Fixes #71015.
24836
24837         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
24838
24839         * mempool.c (mono_mempool_contains_addr): New helper function.
24840
24841 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
24842
24843         * metadata.c (mono_metadata_compute_size): Fix size calculation of
24844         HasSematics encoded fields.
24845         
24846         * metadata.c (mono_type_to_unmanaged): Improve error message for 
24847         invalid string marshalling.
24848
24849         * metadata.c: Fix warnings.
24850         
24851 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24852
24853         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
24854         profiler support.
24855
24856 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
24857
24858         * domain.c object.c domain-internals.h: Revert part of r38077 since the
24859         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
24860         tests.
24861
24862 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
24863
24864         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
24865         so methods containing these can be AOTed.
24866
24867 2005-01-03  Martin Baulig  <martin@ximian.com>
24868
24869         * loader.c (find_method): Removed the hack for generic instances.
24870         (method_from_memberref): If our parent is a generic instance, pass
24871         its generic type definition to find_method() and then inflate the
24872         method.
24873         (mono_get_method_constrained): Pass the generic type definition to
24874         find_method() and inflate the method later.
24875
24876         * class-internals.h (MonoStats): Added `generic_class_count'.
24877
24878         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
24879         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
24880
24881         * reflection.c (mono_custom_attrs_from_params): Don't ignore
24882         generic type definitions.
24883
24884 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
24885
24886         * loader.c icall.c: Fix warnings.
24887
24888 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
24889
24890         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
24891         blittable types. Fixes #70864.
24892
24893 2004-12-29  Martin Baulig  <martin@ximian.com>
24894
24895         * icall.c
24896         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
24897
24898         * reflection.c (mono_method_get_object): Create a
24899         "System.Reflection.MonoGenericMethod" for inflated methods; don't
24900         call mono_get_inflated_method().
24901
24902         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
24903
24904 2004-12-27  Martin Baulig  <martin@ximian.com>
24905
24906         * class-internals.h (MonoMethod): Added `is_inflated' flag.
24907         (MonoMethodInflated): Added `inflated' field.
24908
24909         * class.c (mono_class_inflate_generic_method): Don't really
24910         inflate the method here; just set the `is_inflated' flag in the
24911         MonoMethod.
24912         (mono_class_get_inflated_method): Actually inflate the method here
24913         if it's not already inflated; we use the MonoMethodInflated's new
24914         `inflated' field as a cache.
24915
24916 2004-12-26  Martin Baulig  <martin@ximian.com>
24917
24918         * class.c
24919         (inflate_generic_class): Moved some code out of inflate_generic_type().
24920         (mono_class_inflate_generic_method): If we're already inflated,
24921         inflate the context and use the declaring method; ie. make sure
24922         the declaring method of an inflated method is always the generic
24923         method definition.
24924         (mono_class_create_from_typedef): Create
24925         `class->generic_container->context->gclass'.
24926
24927 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
24928
24929         * metadata-internals.h, marshal.c, reflection.c: More
24930         MonoGHashTable->GHashTable.
24931
24932         * domain-internals.h, class.c: Change MonoGHashTable's into
24933         GHashTables for some cases where no gc stuff is used
24934
24935         All users: update apis
24936
24937 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
24938
24939         * metadata.c (builtin_types): Make this `const'. Makes this get
24940         put into the shareable section.
24941         (mono_metadata_init): Casts to make gcc happy.
24942
24943 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
24944
24945         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
24946
24947 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
24948
24949         * icall.c: Added an internal call to retrieve the position and length
24950         of assembly-level declarative security attributes (RequestMinimum, 
24951         RequestOptional and RequestRefuse). This is used by the Assembly class
24952         to re-create the corresponding permission sets.
24953
24954 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
24955
24956         * marshal.c: fix the stelemref wrapper to be type correct
24957         (and faster).
24958
24959 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
24960
24961         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
24962         to do key & 0x7fffffff. Hashtable already does this. It just
24963         results in longer code.
24964
24965 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
24966
24967         * appdomain.c: Bump corlib version.
24968         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
24969         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
24970         * reflection.c|h: Add functions to get declarative security infos
24971         (blob position and length) for assemblies, classes and methods.
24972
24973 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
24974
24975         * reflection.c: sort the constant table (bug #70693).
24976
24977 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
24978
24979         * object-internals.h, threads.c, domain.c: add accessors for
24980         the MonoThread and MonoDomain tls keys.
24981
24982 2004-12-18  Martin Baulig  <martin@ximian.com>
24983
24984         * class.c (inflate_generic_type): If we're inflating a generic
24985         instance, set `ngclass->context->container = context->container';
24986         ie. the container we inflated into.
24987
24988         * metadata.c (mono_metadata_parse_generic_param): Reflect above
24989         inflate_generic_type() changes.
24990
24991 2004-12-17  Martin Baulig  <martin@ximian.com>
24992
24993         * class-internals.h
24994         (MonoGenericClass): Replaced `MonoType *generic_type' with
24995         `MonoClass *generic_class'.  Removed `dynamic_info'; if
24996         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
24997         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
24998
24999 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
25000
25001         * exception.c (mono_exception_from_token): New helper function.
25002
25003 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
25004
25005         * assembly.c (mono_assembly_load_with_partial_name): Call 
25006         mono_assembly_loaded before invoking the preload hooks. Fixes
25007         #70564.
25008
25009         * object-internals.h (MonoThread): Change culture_info and 
25010         ui_culture_info into an array.
25011
25012         * threads.c: Cache culture info objects from more than one appdomain.
25013
25014         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
25015         current UI culture.
25016
25017 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
25018
25019         * threads.h threads.c appdomain.c: Clear the culture_info field of
25020         all threads during unloading if they point to an object in the dying
25021         appdomain.
25022
25023 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
25024
25025         * culture-info.h (TextInfoEntry): New struct
25026         * object-internals.h: sync with managed
25027         * locales.c: fill the `text_info_data' field
25028         * culture-info-tables.h: update
25029
25030 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
25031
25032         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
25033         collector.
25034
25035 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
25036
25037         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
25038         (ves_icall_ModuleBuilder_getMethodToken): Ditto
25039
25040 2004-12-12  Martin Baulig  <martin@ximian.com>
25041
25042         * mono-debug-debugger.c (write_type): If we're an enum and the
25043         builtin types have already been initialized, call mono_class_init().
25044
25045 2004-12-11  Martin Baulig  <martin@ximian.com>
25046
25047         * metadata.c (mono_metadata_load_generic_params): Added
25048         `MonoGenericContainer *parent_container' argument; automatically
25049         compute `container->is_method'; pass the correct owner to
25050         get_constraints().      
25051
25052         * reflection.c (compare_genericparam): Sort the GenericParam table
25053         according to increasing owners. 
25054
25055 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
25056
25057         * profiler.c: allow disabling the default profiler.
25058
25059 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
25060
25061         * decimal.c, icall.c: allow disabling System.Decimal support.
25062
25063 2004-12-09  Marek Safar <marek.safar@seznam.cz>
25064
25065         * reflection.c: Add support for null attribute arguments.
25066
25067 2004-12-09  Martin Baulig  <martin@ximian.com>
25068
25069         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
25070         names to get rid of compiler warnings.
25071
25072 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
25073
25074         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
25075         mono_marshal_load_type_info (). Fixes #69625.
25076         (mono_marshal_get_ptr_to_struct): Likewise.
25077
25078 2004-12-08  Martin Baulig  <martin@ximian.com>
25079
25080         * mono-debug.h: Bumped version number to 47.
25081
25082         * mono-debug-debugger.c
25083         (mono_debugger_event_handler, mono_debugger_event): Take two
25084         guint64 arguments insteed of a gpointer and a guint32.  
25085
25086 2004-12-08  Martin Baulig  <martin@ximian.com>
25087
25088         * debug-mono-symfile.h
25089         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
25090         `address' to `native_offset'.
25091
25092 2004-12-08  Martin Baulig  <martin@ximian.com>
25093
25094         * class.c (mono_class_create_from_typespec): Only inflate if we
25095         either have `context->gclass' or `context->gmethod'.
25096
25097 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
25098
25099         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
25100
25101         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
25102
25103         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
25104
25105         * reflection.c (mono_assembly_get_object): Remove the workaround put
25106         in for the release.
25107         
25108         * appdomain.c: Use the corlib_internal field from MonoAssembly.
25109
25110         * appdomain.c: Bump corlib version.
25111
25112         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
25113         be visible in other appdomains.
25114
25115 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
25116
25117         * threads.c: Interlocked inc and dec for longs were messed up,
25118         use a KISS based impl for this. Fixes 70234
25119
25120 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
25121
25122         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
25123
25124 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
25125
25126         * icall.c: fix to follow policy not to allow struct
25127         arguments in icalls.
25128
25129 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25130
25131         * process.c: make the patch that handles spaces in file paths work
25132         on mono/windows too.
25133
25134 2004-12-06  Martin Baulig  <martin@ximian.com>
25135
25136         * class.c (mono_class_create_generic): Call
25137         mono_class_setup_supertypes() if we're dynamic.
25138         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
25139
25140 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
25141
25142         * object-internals.h: Add new fields to MonoThread.
25143
25144         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
25145
25146         * icall.c threads-types.h threads.c: Add new icalls.
25147
25148         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
25149
25150         * object-internals.h (MonoReflectionAssembly): Sync object layout with
25151         managed side.
25152
25153         * appdomain.c: Bump corlib version.
25154
25155         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
25156         internal assemblies. Fixes #69181.
25157
25158 2004-12-05  Martin Baulig  <martin@ximian.com>
25159
25160         * class.c (mono_class_inflate_generic_signature): Make this a
25161         no-op if `context' is NULL or we don't have any type parameters;
25162         also copy `sentinelpos'.        
25163
25164 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
25165
25166         * image.c: Add unbox_wrapper_cache.
25167
25168         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
25169
25170         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
25171         function generator.
25172         
25173         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
25174         Fixes #70173.
25175
25176         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
25177         
25178 2004-12-04  Martin Baulig  <martin@ximian.com>
25179
25180         * loader.c (mono_method_get_signature_full): New public function;
25181         like mono_method_get_signature(), but with an additional
25182         `MonoGenericContext *' argument.
25183
25184         * class.c (mono_class_inflate_generic_signature): Formerly known
25185         as inflate_generic_signature(); make this public.
25186
25187 2004-12-04  Martin Baulig  <martin@ximian.com>
25188
25189         * metadata.c
25190         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
25191         instead of a `MonoGenericContainer *'.  
25192         (mono_metadata_parse_array_full): Likewise.
25193         (mono_metadata_parse_signature_full): Likewise.
25194         (mono_metadata_parse_method_signature_full): Likewise.
25195         (mono_metadata_parse_generic_inst): Likewise.
25196         (mono_metadata_parse_generic_param): Likewise.
25197         (mono_metadata_parse_mh_full): Likewise.
25198         (mono_type_create_from_typespec_full): Likewise.
25199
25200 2004-12-03  Martin Baulig  <martin@ximian.com>
25201
25202         * class-internals.h (MonoGenericContainer): Replaced the
25203         `MonoGenericContext * pointer with a `MonoGenericContext'
25204         structure and made it the first element.
25205
25206 2004-12-03  Martin Baulig  <martin@ximian.com>
25207
25208         * class.c
25209         (inflate_generic_type): Set the `context->container' when creating
25210         a new MonoGenericContext.
25211         (mono_class_inflate_generic_method): Likewise.
25212         (mono_class_create_from_typespec): Just use `context->container'
25213         to get the container.
25214
25215         * loader.c (method_from_methodspec): Set `context->parent' from
25216         `context->container' - and if that's a method container, use its
25217         parent.  Also set the `context->container' when creating a new
25218         MonoGenericContext.
25219         (mono_get_method_from_token): Use just `context->container' to get
25220         the container.
25221
25222         * metadata.c (do_mono_metadata_parse_generic_class): Also set
25223         `gclass->context->container'.
25224
25225         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
25226         the `context->container' when creating a new MonoGenericContext.
25227
25228 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
25229
25230         * reflection.c (compare_genericparam): Sort params with identical
25231         owner by their number. Fixes gen-111 on sparc.
25232
25233 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
25234
25235         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
25236         around the domain changes.
25237
25238         * appdomain.c (mono_domain_unload): Handle the case when the thread
25239         calling Unload is itself being aborted during unloading. Fixes #70022.
25240
25241         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
25242
25243         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
25244         checkpoint_func as an icall so it gets a wrapper.
25245         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
25246         in the cross-appdomain wrappers too.
25247
25248         * threads.c (mono_thread_has_appdomain_ref): Make this public.
25249
25250         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
25251
25252         * reflection.c: Fix some memory leaks.
25253         
25254 2004-12-02  Martin Baulig  <martin@ximian.com>
25255
25256         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
25257
25258         * metadata.c (generic_class_cache): New static hashtable.
25259         (mono_metadata_lookup_generic_class): New public method.
25260
25261 2004-12-02  Martin Baulig  <martin@ximian.com>
25262
25263         * class.c (mono_class_create_from_typedef): Call
25264         mono_class_setup_parent() and mono_class_create_mono_type() before
25265         parsing the interfaces.
25266
25267 2004-12-02  Martin Baulig  <martin@ximian.com>
25268
25269         * metadata.c (generic_inst_cache): New static hashtable.
25270         (mono_metadata_lookup_generic_inst): New public function.
25271         (mono_metadata_inflate_generic_inst): New public function.
25272         (mono_metadata_parse_generic_inst): New public function.
25273         (do_mono_metadata_parse_generic_class): Use the new
25274         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
25275         since this'll also use the cache.
25276
25277         * reflection.c (mono_reflection_bind_generic_method_parameters):
25278         Use mono_metadata_lookup_generic_inst() to use the new cache.
25279
25280         * class.c (inflate_mono_type): Use
25281         mono_metadata_inflate_generic_inst() to inflate a generic
25282         instance; this'll also use the new cache.
25283
25284         * loader.c (method_from_methodspec): Use
25285         mono_metadata_parse_generic_inst() and
25286         mono_metadata_inflate_generic_inst() rather than parsing it
25287         manually, so we can use the new cache.
25288
25289 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
25290
25291         * threads.c (wait_for_tids): Do not incorrectly free threads when 
25292         the wait times out.
25293
25294 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
25295
25296         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
25297         iter->args based on whether parameters are passed in registers (i.e.
25298         MONO_ARCH_REGPARMS is defined)
25299
25300 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
25301
25302         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
25303         the exception message. Fixes #70070.
25304         (method_from_methodspec): Fix warnings.
25305
25306 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25307
25308         * process.c: (complete_path) return the path quoted
25309
25310 2004-12-01  Martin Baulig  <martin@ximian.com>
25311
25312         * class-internals.h (MonoGenericInst): New structure.
25313         (MonoGenericClass): Replaced `type_argc', `type_argv' and
25314         `is_open' with `MonoGenericInst *inst'.
25315         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
25316         `is_open' with `MonoGenericInst *inst'.
25317
25318 2004-11-30  Martin Baulig  <martin@ximian.com>
25319
25320         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
25321
25322         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
25323         to `generic_class_cache'.
25324
25325         * metadata.c
25326         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
25327         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
25328         (mono_generic_inst_is_valuetype): Renamed to
25329         mono_generic_class_is_valuetype().
25330
25331         * class-internals.h
25332         (MonoGenericInst): Renamed to MonoGenericClass.
25333         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
25334         (MonoClass): Renamed `generic_inst' to `generic_class'.
25335         (MonoGenericContext): Renamed `ginst' to `gclass'.
25336
25337         * object-internals.h
25338         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
25339
25340         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
25341         mono_reflection_generic_class_initialize().
25342
25343         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
25344         now known as "System.Reflection.MonoGenericClass".
25345         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
25346
25347 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
25348
25349         * class-internals.h: Added a flag field to MonoClass to cache the
25350         declarative security attributes actions associated with the class.
25351         * domain-internals.h: Added booleans to MonoJitInfo to cache the
25352         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
25353         applicable to the JITted method.
25354         * reflection.c|h: Added functions to extract (as flags) which security
25355         actions are available (declaratively) for a method, class or assembly.
25356         * metadata.c|h: Added functions to search the declarative security
25357         table in the metadata.
25358         
25359 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
25360
25361         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
25362         EXPORTEDTYPES are already in the class name cache, so there is no
25363         need to add extra code here to look at them. Just removes a bit of
25364         cruft.
25365
25366         (ves_icall_System_Environment_get_TickCount): No need for #if
25367         WINDOWS. We already have the code in io-layer.
25368
25369 2004-11-28  Martin Baulig  <martin@ximian.com>
25370
25371         * loader.c
25372         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
25373         Fixes gen-112.cs.
25374
25375 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
25376
25377         * assembly.c (do_mono_assembly_open): Instead of having a
25378         conditional WITH_BUNDLE, incorporate support for bundles here, by
25379         having a global `bundles' variable holding a pointer to the actual
25380         bundles. 
25381
25382         (mono_register_bundled_assemblies): New API call used by the
25383         bundle code. 
25384
25385         See mkbundle.1 for details.
25386         
25387 2004-11-27  Martin Baulig  <martin@ximian.com>
25388
25389         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
25390         the vtable for generic methods.
25391
25392 2004-11-26  Martin Baulig  <martin@ximian.com>
25393
25394         * metadata.c
25395         (mono_metadata_generic_method_hash): New public function.
25396         (mono_metadata_generic_method_equal): Likewise.
25397
25398         * class-internals.h
25399         (MonoGenericContainer): Added `GHashTable *method_hash'.
25400
25401         * reflection.c (ReflectionMethodBuilder): Added
25402         `MonoGenericContainer *generic_container'.
25403         (reflection_methodbuilder_to_mono_method): Don't create a new
25404         MonoGenericContainer each time we're called.
25405         (mono_reflection_bind_generic_method_parameters): Use
25406         `container->method_hash' to cache the results so we don't create a
25407         different method if we're called several times with the same
25408         arguments.
25409
25410         * loader.c (method_from_methodspec): Use the new
25411         `container->method_hash' here, too.
25412
25413 2004-11-26  Martin Baulig  <martin@ximian.com>
25414
25415         * class.c (inflate_generic_signature): Correctly compute
25416         `res->has_type_parameters'.
25417         (mono_class_vtable): Use the `has_type_parameters' flag to
25418         determine whether we're a generic method.
25419
25420         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
25421
25422 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
25423
25424         * object.c (mono_runtime_run_main): Fix a small memory leak.
25425
25426 2004-11-25  Martin Baulig  <martin@ximian.com>
25427
25428         * class.c (set_generic_param_owner): Fixed the loop.
25429
25430 2004-11-25  Martin Baulig  <martin@ximian.com>
25431
25432         * object.c (mono_class_vtable): Don't create any JIT wrappers for
25433         generic methods.
25434
25435 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
25436
25437         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
25438         names. Fixes #69787.
25439
25440 2004-11-24  Martin Baulig  <martin@ximian.com>
25441
25442         * class.c (mono_class_create_generic_2): If we don't have a
25443         `ginst->parent', inflate `gklass->parent' to get our parent.
25444
25445 2004-11-24  Martin Baulig  <martin@ximian.com>
25446
25447         * reflection.c (compare_genericparam): Correctly sort the
25448         GenericParam table; fixes #69779.
25449
25450 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
25451
25452         * reflection.c: When writing a PE file, don't create a huge
25453         buffer in memory. Just write the arrays we have to the file.
25454         This reduces memory usage.
25455
25456         * metadata-internals.h: MonoDynamicStream pefile is no longer used
25457         globally.
25458
25459 2004-11-17  Martin Baulig  <martin@ximian.com>
25460
25461         * class.c (mono_class_init): Don't setup `class->parent' for
25462         dynamic instances; moved this to mono_class_generic_2().
25463         (mono_class_create_generic): Also set `klass->inited' for dynamic
25464         generic instances.
25465         (mono_class_create_generic_2): Don't do anything for dynamic
25466         generic instances.  Set `klass->parent' here and also call
25467         mono_class_setup_parent() here. 
25468
25469         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
25470         `MonoType *parent' argument; set `ginst->parent' before calling
25471         mono_class_create_generic_2(), so we set the correct parent.
25472
25473 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
25474
25475         * reflection.c: allow getting attributes from ModuleBuilder
25476         (used by ikvm).
25477
25478 2004-11-17  Martin Baulig  <martin@ximian.com>
25479
25480         * class.c (mono_class_create_from_typedef): If a type parameter is
25481         inherited from an outer class, set its owner to that class.
25482
25483 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
25484
25485         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
25486           for (int*) written size. This fixes bug #69592.
25487
25488 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
25489
25490         * icall.c: Added IsAuthenticodePresnet internal call.
25491         * image.c|h: New function that check a MonoImage for an Authenticode
25492         signature in the certificate PE data directory.
25493         * security.c|h: New internal call to ask the runtime if an 
25494         Authenticode signature seems referenced in the PE header.
25495
25496 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
25497
25498         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
25499
25500         * reflection.c (mono_image_create_pefile): Free the assembly streams
25501         after writing out the assembly file.
25502
25503         * object.c (mono_runtime_run_main): Fix small memory leak.
25504
25505         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
25506         property access modifiers. Fixes #69389.
25507
25508 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
25509
25510         * domain.c, object.c, object-internals.h, domain-internals.h,
25511         object.h, marshal.c: keep dynamic code info per domain.
25512
25513 2004-11-15  Martin Baulig  <martin@ximian.com>
25514
25515         * class.c (mono_type_get_name_recurse): Put type arguments in
25516         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
25517         see bug #68387.
25518
25519 2004-11-15  Martin Baulig  <martin@ximian.com>
25520
25521         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
25522         (mono_class_setup_vtable): When computing `the_cname' for a
25523         generic instance, don't include the namespace since we'd otherwise
25524         add it twice.
25525
25526 2004-11-15  Martin Baulig  <martin@ximian.com>
25527
25528         * class.c (mono_class_create_generic): Changed return type to void.
25529         (mono_class_create_generic_2): New public function; setup
25530         `class->method', `class->field' and `class->interfaces' here
25531         instead of in mono_class_init().
25532
25533         * class.h (mono_class_create_generic): Moved to class-internals.h.
25534
25535 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
25536
25537         * reflection.c (mono_image_create_pefile): take a file HANDLE.
25538         rather than writing to memory, write to this file. Right now,
25539         we are just writting into a buffer, and copying that. However
25540         we can avoid the buffer later.
25541
25542         (mono_dynamic_stream_reset): new function
25543
25544         * icall.c, object-internals.h: update for the above.
25545
25546 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
25547
25548         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
25549         have been using gc'd memory. First it is slower, unlikely
25550         the comment in the source code said, secondly, it increases
25551         our footprint to do it in the gc.
25552
25553         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
25554         the method so that it does not have to copy to managed code.
25555
25556 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
25557
25558         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
25559
25560 2004-11-12  Martin Baulig  <martin@localhost>
25561
25562         * reflection.c (mono_image_create_token): Allow generic method
25563         definitions here, since they may appear in an `.override'; see
25564         gen-98/gen-99 for an example.
25565
25566 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
25567
25568         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
25569         #69365.
25570
25571         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
25572         descriptive.
25573
25574 2004-11-11  Martin Baulig  <martin@ximian.com>
25575
25576         * class.c (mono_class_setup_vtable): In an explicit interface
25577         implementation, the method name now includes the arity.
25578
25579 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
25580
25581         * object.c (mono_array_full_copy): Fix warning.
25582
25583 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
25584
25585         * appdomain.c: Removed look_for_method_by_name(). Use the new method
25586         mono_class_get_method_from_name() instead.
25587         
25588         * class-internals.h: Added two new types of wrappers. 
25589         Added MonoRemotingTarget enum. Added new trampoline function type, which
25590         takes an additional MonoRemotingTarget value as parameter, so it is
25591         possible to request a trampoline for a specific target.
25592         
25593         * class.c: Added new mono_class_get_method_from_name() method.
25594         
25595         * class.h: In MonoRemoteClass, we can have now to vtables, one for
25596         general remoting sinks and one specific for cross domain calls.
25597         
25598         * debug-helpers.c: Added new wrapper names.
25599         
25600         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
25601         of a remote class.
25602         
25603         * image.c: Porperly delete value objects form the remoting invoke hashtable.
25604         
25605         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
25606         with several other methods (mono_marshal_get_xappdomain_dispatch,
25607         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
25608         and others) can generate a fast remoting wrapper for cross domain calls.
25609         More information can be found in docs/remoting.
25610         Other changes: Removed mono_find_method_by_name, and used
25611         mono_class_get_method_from_name instead.
25612         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
25613         is stored in the remoting invoke hashtable.
25614         
25615         * marshal.h: published the new method for getting the xdomain wrapper,
25616         and also added a method for getting the adequate wrapper for a given
25617         method and target.
25618         
25619         * object-internals.h, object.c: Added a couple of methods for capying and
25620         cloning arrays.
25621         Modified mono_install_remoting_trampoline, which takes the new remoting
25622         trampoline that has a remoting target as parameter.
25623         mono_class_proxy_vtable now also takes a remoting target as parameter, and
25624         will return the most suitable vtable for the target.
25625         Added mono_remote_class_vtable, which returns the vtable of a remote class
25626         (which can be the normal remoting vtable or the xdomain vtable).
25627         
25628         * threads.c: the xdomain invoke and dispatch wrappers must also be
25629         protected against interruptions.
25630
25631 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25632
25633         * icall.c: use memmove in BlockCopyInternal when the source and
25634         destination arrays are the same.
25635
25636 2004-11-09  Martin Baulig  <martin@ximian.com>
25637
25638         * class-internals.h (MonoGenericContainer): Removed `method' and
25639         `signature', replaced them with `is_method' and `is_signature'
25640         flags.  Added `context'.
25641
25642         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
25643         instead of a `MonoGenericContainer *'.
25644
25645         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
25646         for dynamic type parameters.
25647         (mono_metadata_load_generic_params): Setup `container->context'.
25648
25649         * reflection.c (mono_reflection_setup_generic_class): Setup
25650         `tb->generic_container->context'.
25651         (do_mono_reflection_bind_generic_parameters): Use
25652         mono_class_inflate_generic_type() to correctly inflate types,
25653         rather than using our own hack just for MONO_TYPE_VAR.
25654
25655 2004-11-09  Martin Baulig  <martin@ximian.com>
25656
25657         * class.c (mono_class_inflate_generic_method): Small fix; don't
25658         crash here.
25659
25660         * icall.c
25661         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
25662         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
25663         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
25664         (ves_icall_Type_BindGenericParameters): Likewise.
25665         (ves_icall_Type_get_IsGenericInstance): Likewise.
25666         (ves_icall_Type_GetGenericParameterPosition): Likewise.
25667         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
25668         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
25669         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
25670
25671 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
25672
25673         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
25674         assembly versions and public key tokens. Fixes #69113.
25675
25676 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
25677
25678         * metadata.c: fix bug introduced with the type cache changes
25679         on 2004-11-06.
25680
25681 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
25682
25683         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
25684         the MonoClass pointer instead of the token in exception clauses.
25685         * reflection.c: updates for the above and make the code not depend
25686         on the structure of MonoExceptionClause.
25687
25688 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
25689
25690         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
25691         Add support for dynamic assemblies. Fixes #69114.
25692
25693         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
25694
25695 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
25696
25697         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
25698         since most only those methods use it. the code member of
25699         MonoMethodPInvoke was dead, so that can be removed too. Also,
25700         remove inline_count (again, not used), and move slot so that it
25701         can share bits with some other flags. This saves 8 bytes in the
25702         structure and gives us about 50 kb back for mcs helloworld.cs
25703
25704         * *.[ch]: Do naming changes for the above.
25705
25706         * loader.c (mono_method_get_header): Lazily init the header
25707         on first access.
25708         (mono_get_method_from_token): don't init the header here
25709         (mono_free_method): the header may never be allocated
25710
25711         Overall, this saves 150 kb of unmanaged allocations
25712         for mcs helloworld.cs. That accounts for 10% of the unmanaged
25713         memory at runtime.
25714         
25715         * loader.c, loader.h (mono_method_get_header): new accessor.
25716
25717         * *.[ch]: use the above method. Prepares us to lazily load
25718         the header.
25719
25720         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
25721         three warnings, which are actual bugs (see 69206).
25722
25723         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
25724         unused. Saves a cool 4 bytes / method.
25725
25726 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
25727
25728         * metadata.c (builtin_types): Add types for System.Object here.
25729         (mono_metadata_parse_type_full): Cache MonoType*'s that are
25730         for a class or valuetype from klass->this_arg or klass->byval_arg.
25731
25732         On mcs for a hello world, this gets us down from 21836 MonoType's
25733         to 14560.
25734
25735         (mono_metadata_free_type): Account for the above change.
25736
25737 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
25738
25739         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
25740         exception instead of asserting if name is null.
25741         (ves_icall_System_AppDomain_GetData): Ditto.
25742
25743 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
25744
25745         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
25746         EnumBuilder.
25747
25748         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
25749         Return NULL when the domain does not have entry_assembly set.
25750
25751         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
25752         Add a 'resource_modules' argument.
25753         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
25754
25755         * reflection.c (mono_reflection_create_runtime_class): Move setting
25756         of wastypebuilder here, so mono_get_type_object () returns a MonoType
25757         for enums too.
25758
25759         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
25760         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
25761         Throw an ArgumentNullException if 'ptr' is null.
25762
25763         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
25764         assemblies here. Fixes #69020.
25765
25766 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
25767
25768         * reflection.c (build_compressed_metadata): Fix the previous patch for
25769         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
25770         the stack.
25771
25772 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
25773
25774         * assembly.c (mono_assembly_names_equal): Allow a match if one of
25775         the cultures is false. Fixes #69090.
25776
25777         * reflection.c (build_compressed_metadata): Fix invalid memory read 
25778         detected by valgrind.
25779         
25780         * reflection.c (mono_reflection_get_type): Avoid triggering a 
25781         TypeResolve multiple times for the same type. Fixes #65577.
25782
25783 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
25784
25785         * marshal.c: Avoid using ldftn to call managed functions. It is
25786         much slower than just a call.
25787
25788         * reflection.c (mono_module_get_object): free the basename we
25789         allocate here from glib.
25790         
25791         * reflection.c (ensure_runtime_vtable): make sure to free
25792         overrides.  Also, we were allocating an array of MonoMethod not an
25793         array of MonoMethod*.
25794
25795         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
25796
25797         * image.c (mono_image_close): free image->guid here.
25798
25799 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
25800
25801         * reflection.c: Fix some spec conformance issues with the PE file
25802         structures so mcs compiled apps run on the Net 2.0 beta.
25803
25804 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
25805
25806         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
25807         Implement this. Fixes #67264.
25808
25809         * debug-helpers.h debug-helpers.c marshal.c: Move 
25810         mono_find_method_by_name to debug-helpers.c.
25811
25812 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
25813
25814         * object.c (mono_release_type_locks): type_initialization_hash is
25815         a GHashTable.
25816
25817         * reflection.c object.c object-internals.h: Fix warnings.
25818
25819         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
25820         without accessors. Fixes #61561.
25821
25822         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
25823         application base from the root domain if not set. Fixes #65641.
25824         (mono_runtime_init): Fix warning.
25825
25826 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25827
25828         * appdomain.c: call mono_thread_pool_init.
25829         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
25830         of worker threads based on the number of CPUs and the environment
25831         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
25832         for non-windows (windows) systems.
25833
25834 2004-10-27  Chris Toshok  <toshok@ximian.com>
25835
25836         * mono-debug-debugger.c (write_class): don't call mono_class_init
25837         here, as even with the check for (!klass->init_pending), we get
25838         into a situation where we're hitting cycles in class
25839         initialization.  Fixes #68816.
25840
25841 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
25842
25843         * image.c: Avoid overwriting values in the loaded_images_hash when an
25844         assembly is loaded multiple times. Fixes #61152.
25845
25846         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
25847         so multiple satellite assemblies for the same name can be loaded.
25848         Fixes #68259.
25849
25850         * mono_domain_assembly_preload: Actually return the loaded assembly, 
25851         not NULL.
25852
25853         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
25854         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
25855
25856         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
25857         pending finalizers are not invoked after the appdomain has been 
25858         unloaded. Fixes #67862.
25859
25860 2004-10-22  Martin Baulig  <martin@ximian.com>
25861
25862         * mono-debug-debugger.c
25863         (mono_debugger_runtime_invoke): Don't box valuetypes.
25864
25865 2004-10-22  Chris Toshok  <toshok@ximian.com>
25866
25867         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
25868         don't hide private methods.
25869
25870 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
25871
25872         * icall.c: Allows the runtime to "share" (when known) the public key
25873         token of an assembly. This avoid the need to recalculate the token 
25874         (from the public key) in managed code.
25875
25876 2004-10-21  Chris Toshok  <toshok@ximian.com>
25877
25878         * debug-helpers.c (append_class_name): argh, revert last patch.
25879         
25880 2004-10-21  Chris Toshok  <toshok@ximian.com>
25881
25882         * debug-helpers.c (append_class_name): use '+' as the delimiter,
25883         not '/', so that it matches what the debugger uses to look up
25884         methods.
25885
25886 2004-10-21  Martin Baulig  <martin@ximian.com>
25887
25888         * mono-debug-debugger.c (mono_debugger_throw_exception): New
25889         public method; this is called each time an exception is thrown and
25890         allows the debugger to use exception catch points.
25891
25892 2004-10-21  Martin Baulig  <martin@ximian.com>
25893
25894         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
25895         the stack pointer and the exception object in some struct and pass
25896         that to the debugger.
25897
25898 2004-10-21  Chris Toshok  <toshok@ximian.com>
25899
25900         * mono-debug-debugger.c (do_write_class): add instance/static
25901         event support.  We don't expose "raise" or "other" yet.
25902         (event_is_static): new method.
25903
25904 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
25905
25906         * mono-debug-debugger.c
25907         (mono_debugger_handle_exception): Remove
25908         bogus return value for fussy compilers.
25909
25910 2004-10-20  Martin Baulig  <martin@ximian.com>
25911
25912         * mono-debug-debugger.c
25913         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
25914         (mono_debugger_handled_exception): Likewise.
25915
25916 2004-10-20  Martin Baulig  <martin@ximian.com>
25917
25918         * mono-debug-debugger.h (MonoDebuggerEvent): Added
25919         MONO_DEBUGGER_EVENT_EXCEPTION.
25920
25921         * mono-debug-debugger.c (mono_debugger_handle_exception): New
25922         public function to send the debugger a notification for an
25923         exception and inform it about a catch/finally clause.
25924
25925 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
25926
25927         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
25928         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
25929         fix 2.95 build. 
25930
25931         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
25932
25933 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
25934
25935         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
25936         marshalled as [In,Out]. Fixes #58325.
25937
25938 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
25939
25940         * reflection.c (mono_method_body_get_object): Implement some fields.
25941
25942 2004-10-12  Martin Baulig  <martin@ximian.com>
25943
25944         * reflection.c (mono_reflection_bind_generic_parameters): Small
25945         fix, correctly retrieve our parent from a generic instance.
25946
25947 2004-10-12  Martin Baulig  <martin@ximian.com>
25948
25949         * metadata.c (mono_metadata_generic_param_equal): We always have
25950         an owner.
25951
25952         * class.c
25953         (mono_class_from_generic_parameter): We need to have an owner.
25954         (my_mono_class_from_generic_parameter): Likewise.
25955
25956         * reflection.c (mono_reflection_setup_generic_class): Renamed to
25957         mono_reflection_create_generic_class() and added a new
25958         mono_reflection_setup_generic_class().  
25959         (mono_reflection_initialize_generic_param): If we're a nested
25960         generic type and inherited from the containing class, set our
25961         owner to the outer class.
25962
25963 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
25964
25965         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
25966
25967         * reflection.c (mono_method_body_get_object): New function to create
25968         a MethodBody object.
25969
25970         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
25971
25972 2004-10-11  Martin Baulig  <martin@ximian.com>
25973
25974         * metadata.c (_mono_metadata_type_equal): Renamed to
25975         do_mono_metadata_type_equal() and made static.
25976
25977 2004-10-11  Martin Baulig  <martin@ximian.com>
25978
25979         * appdomain.c: Bump corlib version number to 28.
25980
25981 2004-10-10  Martin Baulig  <martin@ximian.com>
25982
25983         * class-internals.h
25984         (MonoGenericInst): Added `MonoGenericContainer *container'.
25985         (MonoGenericMethod): Likewise.
25986         (MonoGenericContext): Likewise.
25987         (MonoGenericParam): Added `MonoGenericContainer *owner'.
25988
25989         * metadata.c
25990         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
25991         (do_mono_metadata_parse_generic_inst): Likewise.
25992         (mono_metadata_parse_type_full): New public method.  This is the actual
25993         mono_metadata_parse_type() implementation - with an additional
25994         `MonoGenericContainer *' argument.
25995         (mono_metadata_parse_array_full): Likewise.
25996         (mono_metadata_parse_signature_full): Likewise.
25997         (mono_metadata_parse_method_signature_full): Likewise.
25998         (mono_metadata_parse_mh_full): Likewise.
25999         (mono_type_create_from_typespec): Likewise.
26000         (mono_metadata_interfaces_from_typedef_full): New public method;
26001         this is similar to the other _full() methods, but we take a
26002         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
26003         (mono_metadata_parse_generic_param): Take an additional
26004         `MonoGenericContainer *' argument and lookup the MonoGenericParam
26005         from that container.
26006         (mono_metadata_generic_param_equal): New static method to compare
26007         two type parameters.
26008         (_mono_metadata_type_equal): New static method; takes an
26009         additional `gboolean signature_only' argument - if true, we don't
26010         compare the owners of generic parameters.
26011         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
26012         with a TRUE argument - do a signature-only comparision.
26013
26014         * loader.c: Use the new _full() methods and pass the
26015         MonoGenericContainer to them.
26016
26017         * object-internals.h (MonoReflectionTypeBuilder): Added
26018         `MonoGenericContainer *generic_container' field.
26019         (MonoReflectionMethodBuilder): Likewise.
26020
26021 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
26022
26023         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
26024         case initial images of dynamic assemblies.
26025
26026         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
26027
26028         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
26029
26030         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
26031         length of event->other array.
26032         (typebuilder_setup_events): Ditto.
26033
26034         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
26035         'assembly_by_name' and add an 'assemblies' list.
26036
26037         * assembly.h assembly.c: Add a new search hook for determining whenever
26038         an assembly is already loaded. Use this instead of searching in the
26039         loaded_assemblies list.
26040
26041         * domain.c appdomain.c: Implement the new search hook so loaded 
26042         assemblies are now scoped by appdomain. Fixes #67727.
26043
26044 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
26045
26046         * threads.c (mono_thread_attach): Initialize synch_lock field so
26047         mono_thread_detach works again.
26048
26049         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
26050         'lib' too. Fixes #63130.
26051
26052 2004-10-06  Jackson Harper  <jackson@ximian.com>
26053
26054         * culture-info-tables.h: regenerated.
26055
26056 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
26057
26058         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
26059         implemented by other interfaces in the result. Fixes #65764.
26060         
26061         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
26062         Handle unloadable modules without crashing.
26063
26064         * image.c (load_modules): Revert the previous patch since modules must
26065         have a fixed index inside the array.
26066         
26067         * image.c (load_modules): Don't include native modules in the modules
26068         array.
26069
26070 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
26071
26072         * reflection.h: Add param_defaults field.
26073
26074         * reflection.c: Add support for parameter defaults in dynamic methods.
26075         Fixes #64595.
26076
26077         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
26078         an empty string when a type has no namespace. Fixes #64230.
26079
26080 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
26081
26082         * tabledefs.h: Added "internal" security actions to support non-CAS
26083         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
26084         Note: they do not seems to be used anymore in 2.0 (new metadata format)
26085
26086 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
26087
26088         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
26089         constructor of abstract class. Fixes #61689.
26090
26091 2004-10-04  Martin Baulig  <martin@ximian.com>
26092
26093         * class-internals.h (MonoGenericContainer): New type.
26094         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
26095         `MonoGenericContainer *generic_container'.
26096         (MonoClass): Replaced `gen_params' and `num_gen_params' with
26097         `MonoGenericContainer *generic_container'.
26098
26099         * metadata.c (mono_metadata_load_generic_params): Return a
26100         `MonoGenericContainer *' instead of a `MonoGenericParam *';
26101         removed the `num' argument.
26102
26103 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
26104
26105         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
26106         for dynamic images.
26107
26108         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
26109         machine fields.
26110
26111         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
26112
26113         * reflection.c: Save pe_kind and machine values into the generated
26114         image file.
26115
26116         * appdomain.c: Bump corlib version number.
26117
26118         * object-internals.h: Reorganize layout of LocalBuilder.
26119
26120         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
26121         New helper function.
26122
26123         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
26124         created MonoType for dynamic types. Fixes #66180.
26125
26126 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
26127
26128         * threadpool.c: the ares hashtable needs a critical section around it.
26129         this prevents some nasty segfaults
26130
26131 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
26132
26133         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
26134         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
26135         bug 67324).
26136         
26137 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
26138
26139         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
26140         
26141 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
26142
26143         * image.c: Always canonicalize image file names, to avoid loading
26144         the same assembly twice when referenced using a relative path.
26145
26146 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
26147
26148         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
26149
26150         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
26151
26152         * marshal.c: Fix warnings.
26153
26154 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
26155
26156         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
26157         attempting to marshal the delegate_trampoline as the method_addr.
26158         This patch has a static hashtable of marshalled delegates so that 
26159         we can map delegate_trampoline addresses back to delegates.  This
26160         allows a delegate passed to managed code to be passed back into native
26161         code.  Fixes #67039
26162
26163 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
26164
26165         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
26166
26167         * reflection.c (method_encode_code): Align method headers properly.
26168         Fixes #66025.
26169
26170 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
26171
26172         * marshal.c: In the runtime invoke wrapper, reset the abort
26173         exception if it is cached. This avoids the automatic rethrowal of 
26174         the exception after the catch of the wrapper. Also check for pending
26175         interruptions before calling the managed method. This is done using
26176         the new method emit_thread_force_interrupt_checkpoint, since the
26177         normal checkpoint method is ignored when running the invoke wrapper.
26178         * object.c: If the abort exception is rethrown, set the abort_exc
26179         field of the thread, so it will be rethrown aftere every catch.
26180         * threadpool.c: Only run an interruption checkpoint if what has been
26181         requested is a stop of the thread (aborts will be ignored).
26182         * threads.c: By default, a thread will now never be interrumped while
26183         running the runtime invoke wrapper (this ensures that runtime_invoke
26184         will always return to the caller if an exception pointer is provided).
26185         There is a new special method mono_thread_force_interruption_checkpoint()
26186         to force an interruption checkpoint even if running a protected
26187         wrapper, which is used by the same runtime invoke wrapper to do a check
26188         at a safe point.
26189
26190 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
26191
26192         * object.c, object-internals.h: Implemented mono_release_type_locks,
26193         which releases the cctor locks held by a thread.
26194         * threads.c, threads.h: In thread_cleanup, release cctor locks held
26195         by a thread. Added mono_thread_exit() method to be used to safely stop
26196         a thread.
26197
26198 2004-09-28  Raja R Harinath  <rharinath@novell.com>
26199
26200         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
26201         Move null check before dereference.  Avoid indexing beyond the end
26202         of the 'modules' array.
26203
26204 2004-09-28  Raja R Harinath  <rharinath@novell.com>
26205
26206         * metadata-internals.h (MonoImage): Add module_count field.
26207         * image.c (load_modules): Set image->module_count.
26208         (mono_image_load_file_for_image): Use image->module_count.
26209         * reflection.c (mono_image_load_module): Append to image->modules array 
26210         of dynamic assembly.
26211         (mono_module_get_object): Fix loop to actually increment index.
26212         Use image->module_count.
26213         * assembly.c (mono_assembly_load_references): Use image->module_count.
26214         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
26215         Likewise.
26216
26217 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
26218
26219         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
26220         Avoid assert on generic types.
26221
26222 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
26223
26224         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
26225
26226         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
26227
26228         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
26229         function to convert a MarshalSpec structure to its managed counterpart.
26230
26231         * reflection.c: Fix warnings.
26232         
26233         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
26234         field.
26235
26236         * icall.c (mono_create_icall_signature): Fix build.
26237
26238 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
26239
26240         * icall.c: Add MakePointType icall.
26241
26242         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
26243         warnings.
26244
26245 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26246
26247         * threadpool.c: reuse allocated slots in the queue.
26248
26249 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
26250
26251         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
26252
26253         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
26254
26255         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
26256         previous change.
26257
26258         * tabledefs.h: Add constants for pinvoke attributes BestFit and
26259         ThrowOnUnmappableChar.
26260
26261         * icall.c (ves_icall_Type_GetPacking): New icall.
26262
26263 2004-09-24  Martin Baulig  <martin@ximian.com>
26264
26265         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
26266
26267 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26268
26269         * appdomain.c:
26270         (mono_domain_set): allow setting a domain that is being unloaded.
26271         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
26272         being unloaded.
26273
26274 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
26275
26276         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
26277         the GetCustomAttributes icall.
26278
26279 2004-09-23  Martin Baulig  <martin@ximian.com>
26280
26281         * object-internals.h (MonoReflectionGenericParam): Replaced
26282         'has_ctor_constraint', `has_reference_type' and `has_value_type'
26283         with `guint32 attrs'.
26284
26285 2004-09-23  Martin Baulig  <martin@ximian.com>
26286
26287         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
26288
26289 2004-09-23  Martin Baulig  <martin@ximian.com>
26290
26291         * object-internals.h (GenericParameterAttributes): New enum.
26292
26293 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
26294
26295         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
26296         
26297         * class.c (init_events): Fill out event->other field.
26298
26299         * class.c: Fix warnings.
26300
26301         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
26302
26303 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
26304
26305         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
26306         walk which doesn't supply the IL offset.
26307
26308 2004-09-22  Martin Baulig  <martin@ximian.com>
26309
26310         * reflection.c (mono_reflection_setup_internal_class): If we're
26311         System.ValueType, System.Object or System.Enum, set
26312         `klass->instance_size' and create the vtable.
26313         (mono_reflection_create_internal_class): If we're an enum type,
26314         get the base class from our current corlib.
26315
26316 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
26317
26318         * reflection.h (MonoResolveTokenError): New type.
26319
26320         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
26321         icall.
26322
26323         * icall.c: Add an 'error' argument to the ResolveToken icalls.
26324
26325 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
26326
26327         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
26328         Support also calling constructors, but only for already allocated objects.
26329
26330 2004-09-17  Geoff Norton <gnorton@customerdna.com>
26331
26332         * reflection.c (type_get_qualified_name): If the klass is null
26333         return the typename to avoid a NullRefEx.
26334         (encode_cattr_value): Get the qualified name of the boxed type,
26335         not the underlying enumtype.  Fixes #62984.
26336
26337 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
26338
26339         * marshal.c: Fix problems with previous checkin.
26340
26341 2004-09-21    <vargaz@freemail.hu>
26342
26343         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
26344         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
26345
26346         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
26347
26348 2004-09-21  Geoff Norton <gnorton@customerdna.com>
26349
26350         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
26351         should only return a type for pointers, arrays, and passbyref types.
26352         Fixes bug #63841.
26353
26354 2004-09-21  Martin Baulig  <martin@ximian.com>
26355
26356         * domain.c (mono_debugger_check_runtime_version): New public
26357         function.
26358
26359         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
26360
26361 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
26362
26363         * reflection.c: Added missing sort to the declarative security 
26364         attributes table. MS implementation stops seeing the attributes if the
26365         token number regress in the table (as shown by ildasm and permview).
26366
26367 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
26368
26369         * object-internals.h (MonoReflectionModule): Add 'token' field.
26370         
26371         * reflection.c (mono_reflection_get_token): Add support for Module
26372         and Assembly.
26373         (mono_module_get_object): Set 'token' field.
26374         (mono_module_file_get_object): Set 'token' field.
26375
26376         * icall.c: Add new Assembly and Module icalls.
26377
26378         * appdomain.c: Bump corlib version.
26379
26380 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
26381
26382         * loader.h loader.c class.h class.c: Add helper functions for obtaining
26383         tokens of metadata objects.
26384
26385         * reflection.h reflection.c (mono_reflection_get_token): New function
26386         to obtain the token of a metadata object.
26387
26388         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
26389
26390 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
26391
26392         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
26393         
26394         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
26395
26396 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
26397
26398         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
26399         * object-internals.h: Added 3 MonoArray* members to MonoReflection
26400         AssemblyBuilder to access the permissions set in the class lib.
26401         * reflection.c: Added security attributes encoding step in 
26402         mono_image_build_metadata.
26403         * tabledefs.h: Added new security actions defined in 2.0:
26404         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
26405
26406 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
26407
26408         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
26409         macro parameter.
26410
26411 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
26412  
26413         * locales.c: nullify the ICU_collator member of CompareInfo when it is
26414           finalized. There where random SIGSEVs at program termination, when
26415           an object being finalized was trying to do a string comparison and
26416           the current culture was already finalized.
26417  
26418 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26419
26420         * threads.c: call thread_cleanup before finishing the thread if we get
26421         there.
26422
26423 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
26424
26425         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
26426         assemblies from the parent. Fixes #65665.
26427
26428 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
26429
26430         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
26431         modifiers.
26432
26433 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
26434
26435         * reflection.h: add prototype for mono_get_dbnull_object
26436         * reflection.c: add prototypes for get_default_param_value_blobs 
26437         and mono_get_object_from_blob for fussier compilers
26438
26439 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
26440  
26441         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
26442         false deadlock checks in class initialization.
26443  
26444 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
26445
26446         * image.c (mono_image_addref): Fix comment.
26447
26448         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
26449         possible.
26450
26451 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
26452
26453         * reflection.c (mono_param_get_objects): Modified to return
26454         ParameterInfo.DefaultValue object.
26455
26456         (get_default_param_value_blobs):
26457         (mono_get_object_from_blob):
26458         (mono_get_dbnull_object): New helper routines. 
26459
26460         * object.c (mono_get_constant_value_from_blob): New helper routine
26461         carved out from get_default_field_value ()
26462
26463         * object-internals.h (mono_get_constant_value_from_blob): Added
26464         function declaration.
26465
26466 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
26467
26468         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
26469         referenced assemblies. Fixes #62135.
26470
26471         * exception.h exception.c (mono_get_exception_file_not_found2): New
26472         helper function.
26473
26474 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
26475
26476         * class.h class.c: Add mono_type_get_underlying_type ().
26477
26478 2004-09-09  Geoff Norton <gnorton@customerndna.com>
26479
26480         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
26481         Fix GetTypes() to support dynamically created assemblies.
26482
26483 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
26484
26485         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
26486         
26487         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
26488         previous patch.
26489
26490         * reflection.h reflection.c loader.c: Allow dynamic construction of
26491         pinvoke methods. Fixes #65571.
26492         
26493         * reflection.c (mono_reflection_get_type): Revert previous change since
26494         it causes regressions.
26495
26496 2004-09-08  Martin Baulig  <martin@ximian.com>
26497
26498         * class.c (class_compute_field_layout): Don't call
26499         mono_class_layout_fields() for open generic instances.
26500
26501 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
26502         * threads.c appdomain.c: fix typo in GC macro
26503
26504 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26505
26506         * threads.c: don't call mono_thread_detach() in start_wrapper(),
26507         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
26508
26509 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
26510
26511         * image.c (mono_image_close): Applied patch from 
26512         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
26513         assembly is loaded multiple times from data.
26514         
26515         * image.c (mono_image_open): Fix warning.
26516
26517 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26518
26519         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
26520         once. Fixes #58334.
26521         
26522         * reflection.c (mono_reflection_create_runtime_class): Initialize
26523         klass->nested_classes. Fixes #61224.
26524
26525 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
26526
26527         * threads.c: sched_yield() on exit, to allow threads to quit.
26528
26529 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26530
26531         * object.c (mono_unhandled_exception): Remove leftover debug code.
26532
26533 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
26534
26535         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
26536
26537 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26538
26539         * marshal.c (emit_marshal_array): Really null terminate string arrays.
26540         
26541         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
26542
26543 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26544
26545         * marshal.c (emit_marshal_array): Null terminate string arrays.
26546         
26547         * marshal.c (raise_auto_layout_exception): Fix warning.
26548
26549         * reflection.c (mono_param_get_objects): Initialize the default value
26550         with DBNull.Value, not null. Fixes #62123.
26551
26552 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
26553
26554         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
26555         throw an exception with a cute explanation.
26556
26557 2004-09-06  Dick Porter  <dick@ximian.com>
26558
26559         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
26560         Close the new process's thread handle, as we don't use it.  The
26561         handle stays around forever otherwise.
26562
26563 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26564
26565         * object.c (arith_overflow): Fix warning.
26566
26567         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
26568         calling conventions in method refs. Fixes #65352.
26569
26570         * reflection.c: Fix warnings.
26571
26572 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
26573
26574         * icall.c: Add a new icall for Array.Clear
26575
26576 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
26577
26578         * object.c: When allocating an array, we have to throw
26579         an overflow exception if any of the lengths are < 0.
26580
26581 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26582
26583         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
26584         properly. Also move implementation of string array marshalling to 
26585         managed code. Fixes #42316.
26586
26587 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26588
26589         * assembly.c: provide more information when loading an assembly fails.
26590
26591 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26592
26593         * filewatcher.c: don't expect the development fam package to be
26594         installed.
26595
26596 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
26597
26598         * marshal.c: Make a copy of the signature cookie since it will be
26599         freed by the caller.
26600         
26601         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
26602
26603         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
26604
26605         * metadata.c (mono_metadata_free_marshal_spec): New function to free
26606         marshal specs.
26607
26608         * marshal.c: More refactoring.
26609         
26610         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
26611         smaller functions.
26612
26613 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
26614
26615         * object.c: In mono_message_invoke, fill the output parameter array after
26616           calling the managed method (it was done before the call). This fixes
26617           bug #59299.
26618
26619 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
26620
26621         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
26622         as well.
26623
26624 2004-09-02  Martin Baulig  <martin@ximian.com>
26625
26626         * class.c (mono_class_instance_size): Don't allow generic type
26627         definitions or open generic instances.
26628         (mono_class_array_element_size): If we're a value type, call
26629         mono_class_instance_size() on the original class.
26630
26631         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
26632         handle generic instances.
26633
26634         * mono-debug-debugger.c (write_type): Handle generic instances
26635         like classes.
26636
26637 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
26638
26639         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
26640         the allocation request fails. Fixes #65089.
26641
26642         * object.c (mono_runtime_free_method): Do not call mono_free_method.
26643         
26644         * object.c (mono_runtime_free_method): New function to free a dynamic
26645         method.
26646
26647         * marshal.c (mono_delegate_free_ftnptr): New function to free the
26648         delegate trampoline.
26649
26650         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
26651         with hasthis as dynamic,
26652
26653         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
26654
26655         * domain.c (mono_jit_info_table_remove): New function to remove an
26656         entry from the jit info table.
26657
26658         * class-internals.h (MonoMethod): Add 'dynamic' field.
26659
26660         * loader.c: Fix warnings.
26661
26662 2004-09-01  Martin Baulig  <martin@ximian.com>
26663
26664         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
26665         instead of mono_debugger_lock() because the latter one is a no-op
26666         unless running in the debugger.
26667
26668 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
26669
26670         * class.c (class_compute_field_layout): Classes with auto-layout or
26671         reference fields are not blittable.
26672         
26673 2004-09-01  Dick Porter  <dick@ximian.com>
26674
26675         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
26676         mono_image_get_filename() to get the assembly location.
26677
26678         * icall.c:
26679         * metadata.h: Fix compile warnings
26680
26681 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
26682
26683         * class.c (class_compute_field_layout): System.Object is blittable.
26684
26685         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
26686         as in/out. Fixes #59909.
26687
26688 2004-09-01  Martin Baulig  <martin@ximian.com>
26689
26690         * metadata.h (MONO_TYPE_ISREFERENCE): Call
26691         mono_metadata_generic_inst_is_valuetype() if we're a generic
26692         instance to check whether our underlying type is a reference type.
26693
26694 2004-09-01  Martin Baulig  <martin@ximian.com>
26695
26696         * metadata.c (mono_type_size): If we're a generic instance, call
26697         mono_class_value_size() for value types.
26698
26699 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
26700
26701         * marshal.c: Implement more custom marshalling functionality. Fixes
26702         #64915.
26703
26704 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
26705
26706         * mono-debug.c, debug-mono-symfile.c: add some locking love.
26707
26708 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
26709
26710         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
26711
26712         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
26713
26714         * icall.c: Fix some warnings.
26715
26716         * threads.c (abort_appdomain_thread): Fix unref errors.
26717         (mono_thread_current): Fix THREAD_DEBUG define.
26718
26719 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
26720
26721         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
26722
26723         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
26724
26725 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
26726
26727         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
26728         string arrays.
26729
26730 2004-08-28  Martin Baulig  <martin@ximian.com>
26731
26732         * metadata.c
26733         (mono_metadata_generic_inst_is_valuetype): New public function.
26734
26735         * metadata.h (MONO_TYPE_ISSTRUCT): Call
26736         mono_metadata_generic_inst_is_valuetype() if we're a generic
26737         instance to check whether our underlying type is a valuetype.
26738
26739 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
26740
26741         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
26742         #63768.
26743
26744 2004-08-25  Martin Baulig  <martin@ximian.com>
26745
26746         * loader.c (mono_get_method_from_token): Abstract methods can also
26747         be generic and thus have type parameters.
26748
26749         * metadata-internals.h
26750         (MonoDynamicImage): Added `GPtrArray *gen_params'.
26751
26752         * reflection.c (mono_image_get_generic_param_info): Don't create a
26753         metadata row, just add an entry to the `gen_params' array.
26754         (build_compressed_metadata): Sort the `gen_params' array and then
26755         actually create the metadata.
26756
26757 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26758
26759         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
26760
26761 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
26762
26763         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
26764
26765 2004-08-24  Martin Baulig  <martin@ximian.com>
26766
26767         * class.cs (mono_class_is_subclass_of): Like an interface, a
26768         generic instance also derives from System.Object.
26769
26770 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
26771
26772         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
26773         custom modifiers to be in any order. Fixes #61990.
26774
26775 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
26776
26777         * object.c: Register mono_object_new_fast icall.
26778         
26779         * object.c (mono_class_get_allocation_ftn): Return to calling
26780         mono_object_new_fast, since it seems faster to compute the object 
26781         size in unmanaged code than passing it as a parameter.
26782
26783         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
26784
26785         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
26786         this function with Boehm as the oom handler, so we don't have to check
26787         the result of GC_malloc.
26788
26789         * object.c: Remove checks for oom.
26790
26791         * object.h object.c (mono_class_get_allocation_ftn): New function to
26792         return the icall which can be used to allocate an instance of a given
26793         class. 
26794
26795         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
26796
26797         * class-internals.h: Add 'enabled' field.
26798
26799 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
26800
26801         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
26802
26803 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
26804         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
26805         value 0x0010.
26806
26807 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
26808
26809         * appdomain.c: use the Tls function for appdomain too,
26810         at Zoltan's request. Actually return in mono_context_get
26811
26812         * appdomain.c, profiler.c, threads.c: use __thread
26813
26814 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
26815
26816         * appdomain.c threads.c: Call GC_CreateThread on windows.
26817
26818         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
26819         multiple libraries since this don't work on windows.
26820
26821 2004-08-18  Martin Baulig  <martin@ximian.com>
26822
26823         * class-internals.h
26824         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
26825         MonoMethodHeader.
26826
26827         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
26828         MonoMethodNormal since we also need it for abstract and interface
26829         methods.
26830
26831         * reflection.c
26832         (build_compressed_metadata): Sort the GenericParam table.
26833         (mono_image_create_token): Added `gboolean create_methodspec'
26834         argument; this is false when generating a MethodImpl token.
26835         (reflection_methodbuilder_to_mono_method): Abstract and interface
26836         methods may also have generic parameters.
26837
26838 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
26839
26840         * appdomain.c: thread local alloc
26841
26842 2004-08-17  Martin Baulig  <martin@ximian.com>
26843
26844         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
26845
26846         * icall.c
26847         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
26848         argument.
26849
26850         * class.c (mono_type_get_full_name): New public function.
26851         (mono_type_get_name): Don't include the type arguments.
26852
26853 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
26854
26855         * Makefile.am: Build static versions of libmetadata and libmonoruntime
26856         for inclusion into the mono executable.
26857
26858 2004-08-16  Martin Baulig  <martin@ximian.com>
26859
26860         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
26861         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
26862
26863 2004-08-14  Martin Baulig  <martin@ximian.com>
26864
26865         * class.c (dup_type): Also copy the `byref' field.
26866
26867 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
26868
26869         * reflection.c (create_dynamic_mono_image): Revert the last change 
26870         since it breaks bootstrap.
26871
26872 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
26873
26874         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
26875
26876         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
26877         not free them with g_free.
26878
26879 2004-08-11  Martin Baulig  <martin@ximian.com>
26880
26881         * reflection.c (mono_reflection_setup_internal_class): Also call
26882         mono_class_setup_mono_type() if we already have a `tb->type.type'.
26883
26884 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
26885
26886         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
26887         called during default (first) AppDomain creation. Keep track of
26888         Evidence when loading assemblies.
26889
26890 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
26891
26892         * opcodes.c, opcodes.h: reduce runtime relocations.
26893
26894 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
26895
26896         * culture-info.h, locales.c: fixes and chages to sue the new
26897         optimized format of the locale data.
26898         * culture-info-tables.h: regenerated.
26899
26900 2004-08-06  Geoff Norton <gnorton@customerdna.com>
26901         
26902         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
26903
26904 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
26905
26906         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
26907         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
26908         * domain-internals.h: icall declaration.
26909         * icall.c: icall registration.
26910         * object-internals.h: New fields in MonoAssembly for CAS.
26911
26912 2004-08-05  Duncan Mak  <duncan@ximian.com>
26913
26914         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
26915         CEE_LDELEM_ANY.
26916
26917 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
26918
26919         * reflection.c: fix to deal with object[] arrays in custom ctors
26920         (bug #62550).
26921
26922 2004-08-05  Martin Baulig  <martin@ximian.com>
26923
26924         * class.c (mono_class_array_element_size): Added support for
26925         generic instances and correctly handle "recursive" types.
26926
26927 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
26928
26929         * assembly.c: Fix warnings.
26930
26931 2004-08-04  Martin Baulig  <martin@ximian.com>
26932
26933         * class.c
26934         (mono_type_get_name_recurse): Added `gboolean include_arity'
26935         argument specifying whether or not we should include the generic
26936         arity in the type name.
26937         (_mono_type_get_name): New static function.
26938         (mono_class_setup_vtable): If we're a generic instance, don't
26939         include the generic arity in the names of explicit method
26940         implementations.        
26941
26942 2004-08-03  Martin Baulig  <martin@ximian.com>
26943
26944         * class.c (mono_type_get_name_recurse): Enclose the generic type
26945         arguments in `<', '>'.
26946
26947 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
26948
26949         * gc.c: make GC warning messages use the trace API, they are just
26950         noise to most of the users.
26951
26952 2004-08-03  Martin Baulig  <martin@ximian.com>
26953
26954         * debug-mono-symfile.c (read_string): Correctly read the string.
26955
26956 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
26957
26958         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
26959         
26960         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
26961         icalls.
26962         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
26963
26964 2004-07-30  Martin Baulig  <martin@ximian.com>
26965
26966         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
26967         Reflect latest symbol writer changes.   
26968
26969 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
26970
26971         * object.c: always create an object if null is passed
26972         to Invoke() where a valuetype is expected.
26973
26974 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
26975
26976         * marshal.c (mono_marshal_init): make managed
26977         signatures match native ones better for 64bits.
26978
26979 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26980
26981         * appdomain.c: hack to build correctly the private bin path on windows.
26982         Fixes bug #61991.
26983
26984 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
26985
26986         * assembly.c: Load mscorlib from the correct framework directory
26987           (mono/<version>/mscorlib.dll).
26988         * appdomain.h: Added prototypes for new functions.
26989         * internals.h: Added some prototypes.
26990         * domain.c: When initializing the runtime, get from the executable and
26991           the configuration files the runtime version that the app supports.
26992           Added support methods for reading app.exe.config. Added list of versions
26993           supported by the JIT. Added two new methods: mono_init_from_assembly,
26994           which initializes the runtime and determines the required version from
26995           the provided exe file, and mono_init_version, which initializes
26996           the runtime using the provided version.
26997         * icall.c: Get machine.config from version-specific directory.
26998         * reflection.c: When generating an image, embed the version number
26999           of the current runtime.
27000
27001 2004-07-28  Dick Porter  <dick@ximian.com>
27002
27003         * socket-io.c
27004         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
27005         returned sockaddr size before creating the remote address object.
27006         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
27007         61608.
27008
27009 2004-07-28  Dick Porter  <dick@ximian.com>
27010
27011         * locales.c (string_invariant_compare_char): Fix invariant char
27012         compares between upper and lower cases.  Fixes bug 61458.
27013
27014 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
27015         
27016         * marshal.c: actually cache stelem.ref wrappers.
27017         
27018 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
27019
27020         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
27021         sections and remove the mono_cli_rva_map () function.
27022
27023 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
27024
27025         * debug-mono-symfile.c: fix one more endianess issue, from a patch
27026         by Geoff Norton (<gnorton@customerdna.com>).
27027
27028 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
27029
27030         * class.c: fix class loads for pointer types (typeof(int) !=
27031         typeof(int*)).
27032
27033 2004-07-27  Martin Baulig  <martin@ximian.com>
27034
27035         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
27036         reading the debugging information from an external ".mdb" file.
27037
27038 2004-07-24  Martin Baulig  <martin@ximian.com>
27039
27040         * reflection.c (mono_image_get_type_info): Only write a class
27041         layout entry if we actually have a size or a packing size.
27042
27043 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
27044
27045         * reflection.c (type_get_fully_qualified_name): 
27046         insert cast to get type checking of ?: with non-gcc compilers
27047
27048 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
27049
27050         * rand.c: use g_getenv for both lookups of
27051         MONO_EGD_SOCKET
27052
27053 2004-07-17  Martin Baulig  <martin@ximian.com>
27054
27055         * reflection.c (mono_reflection_bind_generic_method_parameters):
27056         Set `gmethod->reflection_info'.
27057
27058 2004-07-17  Martin Baulig  <martin@ximian.com>
27059
27060         * class.c (mono_class_create_from_typedef): Insert the newly
27061         created class into the hash table before computing the interfaces
27062         since we could be called recursively.
27063
27064 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
27065
27066         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
27067         function to implement stelem.ref in managed code
27068         * class-internals.h, debug-helpers.c: a new wrapper type
27069         for the above.
27070
27071 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
27072
27073         * gc.c: allow GC handles to work even when no GC is compiled in.
27074         Fix part of bug #61134 (GetAddrOfPinnedObject).
27075
27076 2004-07-13  Peter Williams  <peter@newton.cx>
27077  
27078         * process.c (complete_path): Make sure we don't attempt to execute
27079         directories.
27080  
27081 2004-07-12  Geoff Norton <gnorton@customerdna.com>
27082
27083         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
27084           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
27085           and will add/subtract the hour if needed
27086
27087 2004-07-12  Martin Baulig  <martin@ximian.com>
27088
27089         * reflection.c (mono_field_get_object): If we have
27090         `field->generic_info', take the attributes from
27091         `field->generic_info->generic_type'.    
27092
27093 2004-07-12  Martin Baulig  <martin@ximian.com>
27094
27095         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
27096         This function must be called before initializing the runtime.
27097         (mono_debug_init_1): New function; call this after initializing
27098         the runtime, but before loading the assembly.  It tells the
27099         debugger to load corlib and the builtin types.
27100
27101         * mono-debug-debugger.c: Did some larger changes in the debugging
27102         code; support recursive class declarations, make sure we actually
27103         add all classes.
27104
27105 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27106
27107         * debug-helpers.c: undo my previous patch and fixed the real issue in
27108         ../mini/exceptions-x86.c
27109
27110 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27111
27112         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
27113         when no HOME env. variable was set and a NullRef was thrown in a .cctor
27114         called from other .cctors.
27115
27116 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
27117
27118         * loader.c: Removed the mono_loader_wine_init hack now that we are
27119         doing a managed version of Windows.Forms.
27120
27121 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
27122
27123         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
27124         threadpool.c, threads.c: remove static data from rootset.
27125
27126 2004-07-09  Dick Porter  <dick@ximian.com>
27127
27128         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
27129         Don't do any more processing if the matched length was 0.  It was
27130         increasing the size of the string before.  Fixes bug 61167.
27131
27132 2004-07-09  Dick Porter  <dick@ximian.com>
27133
27134         * socket-io.h:
27135         * socket-io.c
27136         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
27137         Add support for SO_PEERCRED if its available.
27138
27139 2004-07-09  Peter Bartok <pbartok@novell.com>
27140         * loader.c: winelib.exe.so error message is now only displayed if
27141         MONO_DEBUG is set. To help us avoid questions when people are trying
27142         out the new Managed.Windows.Forms.
27143
27144 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
27145
27146         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
27147         for isinst and castclass wrappers.
27148
27149         * class-internals.h icall.c: Move registration and lookup of JIT icalls
27150         to libmetadata from the JIT, so they could be used by the marshalling
27151         code and the interpreter.
27152
27153         * marshal.c: Register marshalling related JIT icalls here instead of
27154         in mini.c. Use CEE_MONO_ICALL instead of the family of 
27155         CEE_MONO_PROC<x> opcodes to call marshalling functions.
27156
27157         * metadata.h: Remove unneeded marshalling conversions.
27158
27159         * opcodes.c: Update for new opcodes.
27160         
27161 2004-07-08  Martin Baulig  <martin@ximian.com>
27162
27163         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
27164         (mono_debug_get_domain_data): Make this function static.
27165
27166 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
27167
27168         * gc.c, object.h: add nice GC handle API for embedders.
27169
27170 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
27171
27172         * reflection.c: more changes for the new api
27173
27174         * object.c: When we reflect on a field w/ a constant value, it
27175         will not have a memory location, so we must access metadata. Also,
27176         allow easier reading of strings so that we can read them from
27177         the constant data.
27178
27179         * class.c (mono_class_layout_fields): no need for literal fields here.
27180
27181         * class-internals.h: api changes for const fields
27182
27183         * icall.c (ves_icall_get_enum_info): use new apis for const fields
27184
27185 2004-07-06  Martin Baulig  <martin@ximian.com>
27186
27187         * mono-debug.h: Increment version number to 44.
27188
27189         * mono-debug.c (mono_debug_add_wrapper): The second argument is
27190         now a gpointer, rewrote this whole method.
27191
27192         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
27193         function.  Add information about the wrapper in a new "misc table".
27194
27195         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
27196         for the new misc table.
27197
27198 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
27199
27200         * metadata-internals.h image.c: Add a cache for helper signatures.
27201
27202         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
27203
27204 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
27205
27206         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
27207         delegates from a delegate. Fixes #61033.
27208         
27209         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
27210         marshalling of stringbuilder arrays. Fixes #59900.
27211
27212 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
27213
27214         * icall.c: Add EnumBuilder:setup_enum_type icall.
27215
27216 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
27217
27218         * icall.c: Added a new icall for the property version of
27219         OffsetOfStringData.
27220
27221 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
27222
27223         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
27224         it has a constant size across platforms.
27225
27226         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
27227         stack trace.
27228
27229 2004-06-29  Martin Baulig  <martin@ximian.com>
27230
27231         * mono-debug.c (mono_debug_add_method): Protect the whole function
27232         in mono_debugger_lock(), not just parts of it.
27233
27234 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
27235
27236         * reflection.c: make sure padding bytes in heaps are zeroed.
27237
27238 2004-06-24  David Waite  <mass@akuma.org>
27239
27240         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
27241         image.c, loader.c, locales.c, marshal.c, metadata.c,
27242         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
27243         string-icalls.c, threads.c: change to C90-style comments from C99 /
27244         C++ -style
27245
27246 2004-06-24  Dick Porter  <dick@ximian.com>
27247
27248         * threads.c
27249         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
27250         return createdNew.  Fixes bug 60412.
27251
27252         * threads-types.h: 
27253         * icall.c: Add createdNew parameter to CreateMutex icall
27254
27255 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
27256
27257         * reflection.c, object-internals.h: save default value in params.
27258
27259 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27260
27261         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
27262         no need to build a new path combining that with the application base.
27263         Fixes bug #60442.
27264
27265 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
27266
27267         * reflection.c: fixed minor standard compliance issues.
27268
27269 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
27270
27271         * reflection.c: fixed issue with encoding some custom attributes
27272         (arrays in properties and fields, bug #60411).
27273
27274 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27275
27276         * reflection.c: fix start address when copying the public key token.
27277
27278 2004-06-23  Martin Baulig  <martin@ximian.com>
27279
27280         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
27281         the `exc' object in a static object to put it into the GC's root set.
27282
27283 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
27284
27285         * reflection.c: make mono_reflection_setup_internal_class ()
27286         callable a second time to setup a new parent class.
27287
27288 2004-06-23  Dick Porter  <dick@ximian.com>
27289
27290         * threads.c: Check for WAIT_IO_COMPLETION return values.
27291
27292 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
27293
27294         * appdomain.c: Removed the g_free on the public key token. Now copy 
27295         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
27296         * assembly.c: Added public key token string value when loading 
27297         assemblies. Fix bug #60439.
27298         * icall.c: Added missing informations (like public key) in 
27299         GetReferencedAssemblies. Fix #60519.
27300         * image.h: Changed definition for public key token from const char*
27301         public_tok_value to guchar public_key_token [17];
27302         * reflection.c: Updated for changes to public key token.
27303
27304 2004-06-22  Lluis Sanchez Gual
27305
27306         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
27307         for the field in base classes.
27308
27309 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
27310
27311         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
27312         mark headers as not supported, they are installed only for use by the
27313         debugger.
27314
27315 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
27316
27317         * *.c, *.h: avoid namespace pollution in public headers.
27318
27319 2004-06-21  Martin Baulig  <martin@ximian.com>
27320
27321         * exception.c (mono_get_exception_security): It's in
27322         "System.Security", not in "System".
27323
27324         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
27325         the exception classes.
27326
27327 2004-06-21  Martin Baulig  <martin@ximian.com>
27328
27329         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
27330         Protect the exception object from being finalized.
27331
27332 2004-06-21  Martin Baulig  <martin@ximian.com>
27333
27334         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
27335         public function.
27336
27337 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
27338
27339         * reflection.c: Load the assembly in mono_reflection_type_from_name,
27340         if it was not loaded before. Fix parts of #60439.
27341
27342 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
27343
27344         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
27345         code that was broken since Ben's change: wrappers are now
27346         dependent on the method signature only again.
27347
27348 2004-06-21  Martin Baulig  <martin@ximian.com>
27349
27350         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
27351         added interface support.
27352
27353 2004-06-21  Martin Baulig  <martin@ximian.com>
27354
27355         * class.c (mono_vtable_get_static_field_data): New public method.
27356
27357 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
27358
27359         * filewatcher.c : Windows build fix to be compliant with API changes.
27360
27361 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
27362
27363         * class.h, class.c: more accessors.
27364         * metadata.h, metadata.c: prepare for hiding MonoType and
27365         MonoMethodSignature: people should use the accessors from now on
27366         outside of the tree.
27367
27368 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
27369
27370         * *.c, *.h: more API cleanups.
27371
27372 2004-06-18  Jackson Harper  <jackson@ximian.com>
27373
27374         * assembly.c: Trace loading assemblies.
27375         * loader.c: Trace loading native libraries.
27376         * mono-config.c: Trace loading config files.
27377         
27378 2004-06-18  Dick Porter  <dick@ximian.com>
27379
27380         * locales.c: Tell ICU the lengths of strings, it can cope with
27381         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
27382
27383 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
27384
27385         * image.c: swapped name/filename;
27386
27387 2004-06-18  Martin Baulig  <martin@ximian.com>
27388
27389         * mono-debug-debugger.c (write_class): Write the parent class at
27390         the end of the header.
27391
27392 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
27393
27394         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
27395
27396 2004-06-17  Raja R Harinath  <rharinath@novell.com>
27397
27398         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
27399         (bundle_obj): New conditional define.
27400         (BUILT_SOURCES): Remove.
27401         ($(bundle_srcs)): Make parallel-make safe.
27402         (libmonoruntime_la_LIBADD): Make unconditional.
27403         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
27404         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
27405
27406 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
27407
27408         * culture-info-tables.h: It was inconsistent with the latest
27409           supp info files.
27410
27411 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
27412
27413         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
27414         be loaded.
27415
27416         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
27417         with gcc 2.95.
27418
27419 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
27420
27421         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
27422         cleaned up public header threads.h.
27423
27424 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
27425
27426         * Makefile.am, *.c, *.h: more API cleanups.
27427
27428 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
27429
27430         * Makefile.am: removed monosn from compilation.
27431         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
27432         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
27433         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
27434         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
27435         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
27436         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
27437
27438 2004-06-15  Jackson Harper  <jackson@ximian.com>
27439
27440         * assembly.c: Make locales lower case when searching the GAC for
27441         assemblies. gacutil will always make locales lowercase when
27442         installing so this effectively makes them case insensitive.
27443         
27444 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
27445
27446         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
27447         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
27448           parameter which allows to choose whether the wait can be interrupted or 
27449           not. Also added the method mono_monitor_enter(), which locks the monitor
27450           using an infinite wait and without allowing interruption.
27451           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
27452           interrupted.
27453         * object.h: Added new fields in MonoThread. suspend_event holds the event
27454           used to susped/resume the thread. synch_lock is the lock object to use for
27455           modifying the thread state.
27456         * threads.c: Use the new synch_lock object for locking, instead of "this",
27457           which can generate deadlocks.
27458           Moved thread state change in Thread.Sleep and Thread.Join from managed
27459           to unmanaged code. This avoids a deadlock when the thread was suspended
27460           just after acquiring the thread lock.
27461           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
27462           Implemented Thread.Suspend using an event instead of ThreadSuspend,
27463           which is not fully implemented in the io-layer.
27464         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
27465
27466 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
27467
27468         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
27469         threads-types.h: more API cleanups.
27470
27471 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
27472
27473         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
27474         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
27475         threadpool.c, threads.c: first pass at the exported API cleanup.
27476
27477 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
27478
27479         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
27480
27481 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27482
27483         * icall.c: added internalGetHome.
27484
27485 2004-06-14  Dick Porter  <dick@ximian.com>
27486
27487         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
27488         possible to return successfully when '.' or '..' were the only
27489         entries in a directory, but were skipped.  The MonoIOStat was not
27490         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
27491         Fixes bug 59574.
27492
27493 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
27494
27495         * reflection.c: make binaries run on .Net 1.1 by default.
27496
27497 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
27498
27499         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
27500
27501 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
27502
27503         * marshal.c: keep track of struct size with explicit layout
27504         (bug #59979).
27505
27506 2004-06-12  Martin Baulig  <martin@ximian.com>
27507
27508         * mono-debug-debugger.c: Comment out a debugging g_message().
27509
27510 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
27511
27512         * reflection.c, reflection.h: do not free custom attrs that are cached.
27513         * icall.c: use braces to make code clearer.
27514
27515 2004-06-11  Martin Baulig  <martin@ximian.com>
27516
27517         * class.h (MonoInflatedField): New type.
27518         (MonoClassField): Replaced `MonoType *generic_type' with
27519         `MonoInflatedField *generic_info'.
27520
27521         * icall.c
27522         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
27523
27524 2004-06-11  Martin Baulig  <martin@ximian.com>
27525
27526         * reflection.c (mono_image_create_method_token): Correctly encode
27527         varargs methods.
27528
27529 2004-06-11  Martin Baulig  <martin@ximian.com>
27530
27531         * metadata.c (mono_metadata_parse_method_signature): When parsing
27532         a MethodDef which has VarArgs, also set sentinelpos if we don't
27533         have any parameters.
27534
27535 2004-06-11  Martin Baulig  <martin@ximian.com>
27536
27537         * verify.c (mono_method_verify): In CEE_CALL, use
27538         mono_method_get_signature() to get the method's signature, unless
27539         we're a PInvoke method.
27540
27541 2004-06-10  Jackson Harper  <jackson@ximian.com>
27542
27543         * assembly.c: Use <path>/lib/mono/gac for the extra paths
27544         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
27545         logical name as the supplied path is just a prefix to the gac not
27546         the direct path to it.
27547         
27548 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
27549
27550         * reflection.c: make the token for a created method match
27551         the token of the MethodBuilder it was created from
27552         (IKVM requires this behaviour now).
27553
27554 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
27555
27556         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
27557         reflection.c, socket-io.c: leak fixes.
27558
27559 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
27560
27561         * icall.c: handle sentinel pos in vararg methods in position different
27562         from 0.
27563
27564 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27565
27566         * culture-info-tables.h: freshly generated.
27567
27568 2004-06-09  Martin Baulig  <martin@ximian.com>
27569
27570         * loader.c (mono_get_method_constrained): Call `mono_class_init
27571         (constrained_class)'.   
27572
27573 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
27574
27575         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
27576         any methods. Fixes #59629.
27577
27578 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27579
27580         * culture-info-tables.h: reflecting locale-builder updates.
27581
27582 2004-06-08  Dick Porter  <dick@ximian.com>
27583
27584         * object.h:
27585         * locales.c: Fixed compile warnings, including a real bug in
27586         CompareInfo_internal_compare.
27587         
27588 2004-06-08  Dick Porter  <dick@ximian.com>
27589
27590         * locales.c
27591         (ves_icall_System_Globalization_CompareInfo_internal_index):
27592         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
27593         Double-check the resuls of usearches, because ICU currently
27594         ignores most of the collator settings here.  Fixes bug 59720.
27595         
27596 2004-06-08  Dick Porter  <dick@ximian.com>
27597
27598         * locales.c
27599         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
27600         Fix memory leak and segfault-causing typo.  No idea how this one
27601         lasted so long without being noticed.
27602
27603 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
27604
27605         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
27606         any methods. Fixes #59629.
27607
27608 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27609
27610         * assembly.c:
27611         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
27612         own the critical section before). Removed dead code (that's done
27613         in the preload hook).
27614
27615         (mono_assembly_load_with_partial_name): call the preload hook.
27616
27617 2004-06-08  Martin Baulig  <martin@ximian.com>
27618
27619         * metadata.c (mono_metadata_signature_alloc): Default
27620         `sentinelpos' to -1.
27621
27622         * reflection.c (mono_image_get_array_token): Likewise.
27623
27624 2004-06-08  Martin Baulig  <martin@ximian.com>
27625
27626         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
27627
27628         * metadata.c (mono_metadata_parse_method_signature): When parsing
27629         a MethodDef which has VarArgs, set sentinelpos.
27630
27631         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
27632         `gint16' since we're using -1 for non-varargs methods.
27633
27634         * reflection.c
27635         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
27636         (method_encode_signature): Added varargs support.
27637         (method_builder_encode_signature): Likewise.
27638         (mono_image_get_varargs_method_token): New static method.
27639         (mono_image_create_method_token): New public method; this is
27640         called via an icall instead of mono_image_create_token() when
27641         calling a varargs method.       
27642
27643 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
27644
27645         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
27646
27647 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27648
27649         * culture-info-tables.h : Reflecting the latest locale-builder that
27650           fixed empty array representation ({} to {0}).
27651
27652 2004-06-07  Jackson Harper  <jackson@ximian.com>
27653
27654         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
27655         looking up extra gac paths. This allows MONO_GAC_PATH to act
27656         exactly like a prefix.
27657         
27658 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
27659
27660         * reflection.c (mono_reflection_type_from_name): Make a copy of the
27661         type name before modifying it. Fixes #59405.
27662
27663 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27664
27665         * culture-info.h: added fields for "all datetime patterns".
27666         * locales.c: (  ves_icall_System_Globalization_CultureInfo
27667           _construct_datetime_format ()): fill xxx_patterns fields.
27668         * object.h: added fields for "all datetime patterns" to
27669           MonoDateTimeFormatInfo.
27670         * culture-info-tables.h: reflecting locale-builder updates.
27671
27672 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
27673
27674         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
27675         the event has no add and remove methods. Fixes #59629.
27676
27677 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
27678
27679         * object.c: Fixed possible integer overflow when allocating large
27680         strings.
27681
27682 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
27683
27684         * culture-info-tables.h: reflecting locale-builder updates.
27685
27686 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
27687
27688         * culture-info-tables.h: reflecting locale-builder updates.
27689
27690 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
27691
27692         * culture-info-tables.h: reflecting locale-builder updates.
27693
27694 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
27695
27696         * threads.c: Made Thread.Sleep abortable.
27697
27698 2004-06-02  Martin Baulig  <martin@ximian.com>
27699
27700         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
27701
27702         * debug-mono-symfile.h: Bumped symbol file version number to 37.
27703
27704 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
27705
27706         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
27707
27708 2004-05-30  Jackson Harper  <jackson@ximian.com>
27709
27710         * reflection.c: Do not hardcode assembly versions or public key
27711         tokens anymore. All of this except the corlib section was dead
27712         code anyways.
27713         
27714 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
27715
27716         * object.c (mono_runtime_invoke_array): Automatically create boxed
27717         objects for byref valuetypes if needed. Fixes #59300.
27718         
27719         * object.c (mono_method_return_message_restore): Handle 
27720         MONO_TYPE_OBJECT as well.
27721
27722 2004-05-28  Jackson Harper  <jackson@ximian.com>
27723
27724         * reflection.c: The modified type encoding was causing build
27725         problems. Reverted for now.
27726         
27727 2004-05-28  Jackson Harper  <jackson@ximian.com>
27728
27729         * reflection.c/h: Take an assembly ref so that we dont create
27730         fully qualified names when encoding types in the same assembly as
27731         the custom attribute being emitted.
27732         * appdomain.c: Increment version number.
27733         
27734 2004-05-26  Duncan Mak  <duncan@ximian.com>
27735
27736         * icall.c
27737         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
27738         Set the full version number (major, minor, build, revision).
27739
27740 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
27741
27742         * marshal.c (emit_struct_conv): increment src/dst after blit
27743         (mono_marshal_get_managed_wrapper,
27744         mono_marshal_get_native_wrapper): make sure we have marshalling
27745         info before marshalling params (info computation affects
27746         blittable)
27747
27748         * class.c (class_compute_field_layout): correctly deal with
27749         blittable
27750         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
27751         value types (as per what windows dows by default)
27752         (mono_class_setup_mono_type): System.ValueType is blittable
27753         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
27754         blittable
27755
27756         * marshal.c (mono_marshal_load_type_info): flag types  as
27757         non-blittable if the native layout doesn't match the managed
27758         layout
27759
27760 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27761
27762         * appdomain.c: don't add stuff in the private search path that is
27763         above the application base. If application base is not set, there's
27764         no private search path.
27765
27766 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
27767
27768         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
27769         byref struct arguments in native->managed marshalling.
27770
27771 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
27772
27773         * marshal.c (mono_marshal_get_runtime_invoke): correctly
27774         cache methods using signature (special case for methods
27775         that are value type or string class)
27776         
27777         * image.c (mono_image_close): clean up allocated GSList's
27778         in runtime_invoke_cache.
27779
27780 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27781
27782         * mono-config.c: set the correct path for mono_cfg_dir on windows when
27783         there's no MONO_CFG_DIR environment variable defined.
27784
27785 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27786
27787         * threads.c: windows version must be >= 0x0500 to include OpenThread.
27788
27789 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
27790
27791         * threadpool.c: Really wait for 500ms after the async call, even if the wait
27792           is interrumped.
27793         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
27794           before waiting for it, and call CloseHandle after the wait to unref it.
27795           This will make sure that handles are not disposed too early.
27796
27797 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27798
27799         * appdomain.c:
27800         * appdomain.h:
27801         * icall.c: removed
27802         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
27803         needed now.
27804
27805         * object.c: se the application_base only for the domain that runs
27806         Main. Fixes bug #59216,
27807
27808 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27809
27810         * appdomain.c:
27811         * object.c: only the domain in which Main is run have
27812         SetupInformation.ConfigurationFile set, so moved a few lines from
27813         appdomain.c to object.c.
27814
27815 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27816
27817         * appdomain.c: we tried to load [name].(dll|exe), but according
27818         to bug #57710, we must also try [culture]/[name].(dll|exe) and
27819         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
27820         There's a test case attached to bug #58922.
27821
27822 2004-05-27  Dick Porter  <dick@ximian.com>
27823
27824         * icall.c:
27825         * file-io.c: Implemented icalls for locking and unlocking regions
27826         in a file.
27827         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
27828         FALSE on error (fixes both compiler warning and real bug.)
27829
27830 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
27831
27832         * culture-info-tables.h: reflecting locale-builder updates.
27833
27834           (Added missing ChangeLog entry for 05/26)
27835
27836 2004-05-27  Jackson Harper  <jackson@ximian.com>
27837
27838         * locales.c: Fix some cut and paste errors.
27839         
27840 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27841
27842         * mono-config.c: set the correct path for config. directory on windows.
27843
27844 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
27845
27846         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
27847           on win32.
27848
27849 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
27850
27851         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
27852         from pinvoke functions.
27853         
27854         * marshal.c (mono_ftnptr_to_delegate): Implement this.
27855
27856 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
27857
27858         * culture-info-tables.h: reflecting locale-builder updates.
27859
27860 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
27861
27862         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
27863         #59086.
27864
27865 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
27866
27867         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
27868         * icall.c: Modified icalls for RNG.
27869         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
27870         Windows (CryptoAPI).
27871
27872 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
27873
27874         * locales.c: Fix build.
27875
27876 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
27877
27878         * culture-info-tables.h: reflecting locale-builder updates.
27879
27880 2004-05-25  Jackson Harper  <jackson@ximian.com>
27881
27882         * locales.c: When creating the current culture use the $LANGs
27883         specific culture. So DateTimeFormat and NumberFormat entries are created.
27884         
27885 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
27886
27887         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
27888         a char array as parameter.
27889
27890 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
27891
27892         * image.c: In mono_image_open(), always use an absolute path name to
27893           look for already loaded images.
27894
27895 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
27896
27897         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
27898         missing in the windows build (like older cygwin include files).
27899
27900 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
27901
27902         * icall.c: Fixed check for possible integer overflow in Buffer_
27903         BlockCopy icall. Replaced comments style // by /* */.
27904
27905 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
27906
27907         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
27908         
27909         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
27910         check after MONO_VTADDR. Fixes pinvoke2.exe.
27911
27912         * marshal.h marshal.c metadata.h: Add beginnings of support for
27913         ftnptr -> delegate marshalling.
27914
27915 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
27916
27917         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
27918         * threads.c: Fix warnings.
27919
27920 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
27921
27922         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
27923         * icall.c: Registered icalls for Suspend and Resume.
27924         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
27925           Thread.Abort.
27926         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
27927         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
27928         * process.c: Use WaitForSingleObjectEx.
27929         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
27930           checkpoints.
27931         * threads.c, threads.h: Make use of new Ex wait methods. Improved
27932           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
27933           for Suspend and Resume. Added new mono_thread_stop, used for stoping
27934           background threads. Added basic support for Abort in Windows.
27935           Start new threads using a managed delegate invoke wrapper. This wrapper
27936           has an interruption checkpoint that is needed since an interruption
27937           can be requested before the thread leaves the unmanaged code that starts 
27938           the thread.
27939         * marshal.c: Added interruption checkpoint after every native call, and
27940           also before managed calls for wrappers called from unmanaged code to
27941           go into managed code.
27942         * object.h: Added new field in MonoThread to keep track of interruption
27943           requests.
27944
27945 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
27946
27947         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
27948         calls.
27949
27950 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27951
27952         * appdomain.c:
27953         * assembly.c:
27954         * gc.c:
27955         * locales.c:
27956         * mono-config.c:
27957         * rand.c: getenv -> g_getenv (windows!)
27958
27959         * process.c: complete_path is also used on non-windows platforms.
27960
27961 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27962
27963         * icall.c: new signature for Process_Start.
27964
27965         * process.[ch]: new signature for Process_Start. If we're on windows
27966         and UseShellExecute is false, we have to search for the program by
27967         ourselves if we don't get a full path.
27968
27969 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
27970
27971         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
27972         marshalling and call CleanUpNativeData if needed. Fixes #58646.
27973
27974 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27975
27976         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
27977         Fixes bug #58373.
27978
27979 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27980
27981         * process.c: use double quotes to quote program name and arguments on
27982         windows. Fixes bug #58575.
27983
27984 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27985
27986         * file-io.c: don't return "." and ".." when using windows Find*File.
27987
27988 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
27989
27990         * marshal.c: Don't pass wrappers to message init because method 
27991         addressed used to lookup metadata. part of remoting[2|3] fix.
27992
27993 2004-05-15  Jackson Harper  <jackson@ximian.com>
27994
27995         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
27996         path is essentially the same as MONO_PATH except that it points to
27997         GACs instead of lib directories.
27998         * loader.h: The user gac is gone so we dont need function to
27999         enable/disable it.
28000         * mono-config.c: user gac option is now gone.
28001         
28002 2004-05-15  Jackson Harper  <jackson@ximian.com>
28003
28004         * culture-info.h: Make defines more consistent, add calendar data
28005         to the culture info table.
28006         * culture-info-tables.h: Add basic calendar data. Basically
28007         everyone gets default gregorian until all the data is
28008         updated.
28009         * locales.c: Use the new consistent defines. Set calendar data for
28010         culture info objects.
28011         * object.h: add a field for calendar data to CultureInfo
28012         
28013 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
28014
28015         * image.c: image->runtime_invoke_cache is keyed on signatures now.
28016         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
28017         a signature.
28018         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
28019         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
28020         an extra param that is the pointer of the method to invoke. The IL for
28021         the invoke method is no longer specific to the method, but to the
28022         signature of the method. Thus, we can share the same code for multiple
28023         methods. This reduces the number of methods that have to be compiled.
28024
28025 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
28026
28027         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
28028
28029         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
28030
28031         * icall.c: Optimize Buffer.BlockCopy.
28032
28033 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28034
28035         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
28036         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
28037         quote). Changed them to "MMMM yyyy".
28038
28039 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
28040
28041         * rand.c
28042         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
28043
28044 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
28045
28046         * reflection.h: Updated after changes to managed structures.
28047
28048         * appdomain.c: Bump corlib version.
28049
28050 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28051
28052         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
28053         windows.
28054
28055 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28056
28057         * Makefile.am: link to ../os/libmonoos.la on windows.
28058
28059         * assembly.c:
28060                 -If MONO_DEBUG, warn about non-existing directories in
28061                 MONO_PATH.
28062                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
28063                 compile time variable.
28064                 -Removed init_default_path and call mono_set_rootdir from
28065                 libmonoos.a instead (windows only).
28066
28067         * assembly.h: declare mono_assembly_getrootdir().
28068
28069         * domain.c:
28070         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
28071
28072         * loader.c: s/getenv/g_getenv/
28073
28074 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
28075
28076         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
28077
28078         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
28079
28080         * metadata.h: Add new marshalling conversions.
28081
28082         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
28083         function.
28084
28085         * reflection.c (mono_reflection_get_type): Lookup the type in all
28086         modules of a multi-module assembly. Fixes #58291.
28087
28088 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
28089
28090         * threads.c: Before aborting a background, set the StopRequested
28091         state.  This avoids throwing the Abort exception.
28092         In mono_thread_manage, don't continue with the shutdown until all
28093         aborted threads have actually stopped.
28094
28095 2004-05-10  Jackson Harper  <jackson@ximian.com>
28096
28097         * locales.c: Remove the modifier from culture names.
28098         
28099 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28100
28101         * Makefile.am: monosn is not installed any more. It has been deprecated
28102         in favor of sn.
28103
28104 2004-05-07  Jackson Harper  <jackson@ximian.com>
28105
28106         * locales.c
28107         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
28108         Fix array construction, add bailout if the length is 0.
28109
28110 2004-05-07  Dick Porter  <dick@ximian.com>
28111
28112         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
28113         machine doesn't have a DNS entry.  Patch by Urs Muff
28114         (umuff@quark.com), fixes bug 57928.
28115
28116 2004-05-06  Jackson Harper  <jackson@ximian.com>
28117
28118         * reflection.c: Handle null PublicTokens properly. alloc mem for
28119         assembly names culture so we dont crash when freeing it.
28120         
28121 2004-05-06  Jackson Harper  <jackson@ximian.com>
28122
28123         * assembly.c: Check the usergac when loading with partial names.
28124         
28125 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
28126
28127         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
28128         does nothing for now (not required for Linux/Windows) but the class
28129         library can call it (and a newer or modified runtime could need it).
28130         * icall.c: Registred icall.
28131
28132 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28133
28134         * loader.c: prints a message on module loading error we set MONO_DEBUG
28135         environment variable.
28136
28137 2004-05-05  Jackson Harper  <jackson@ximian.com>
28138
28139         * appdomain.c: Handle PublicKeyToken=null properly.
28140         
28141 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
28142
28143         * environment.c|h: Added icall ves_icall_System_Environment_
28144         GetOSVersionString to get the current OS version as a string.
28145         * icall.c: Registred icall.
28146
28147 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
28148
28149         * object.c: in mono_object_get_virtual_method(), take into account that
28150         non-virtual methods don't have a slot in the vtable. Check needed when
28151         the object is a proxy.
28152
28153 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
28154
28155         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
28156         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
28157
28158         * object.c (mono_class_compute_gc_descriptor): Fix warning.
28159
28160         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
28161         passed when a valuetype is expected.
28162
28163         * object.c (mono_unhandled_exception): Only set the exit code if the
28164         exception happens in the main thread. Fixes thread5.exe.
28165
28166         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
28167         invalid names. Fixes #58047.
28168
28169 2004-05-03  Jackson Harper  <jackson@ximian.com>
28170
28171         * assembly.c: This line was committed accidently and is unneeded.
28172         
28173 2004-05-03  Jackson Harper  <jackson@ximian.com>
28174
28175         * icall.c: Add new icall for Assembly::LoadWithPartialName
28176         * assembly.c/.h: new function that probes the GAC to load partial
28177         assembly names by Paolo Molaro.
28178         
28179 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28180
28181         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
28182         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
28183         (type_get_fully_qualified_name): Added PublicKeyToken when building a
28184         full type name.
28185
28186 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28187
28188         * appdomain.c: fixed check for 'neutral' culture and removed warning.
28189         * reflection.c: fix bug when parsing a full type name and Version is not
28190         the last thing in the string.
28191
28192 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
28193
28194         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
28195         crashes when it is freed.
28196
28197 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28198
28199         * assembly.c: print the compat warning to stderr.
28200
28201 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
28202
28203         * assembly.c (mono_assembly_load_references): Add a compatibility
28204         hack to run old applications that might be still referencing the
28205         3300-based assemblies, only do this for System.xxx.
28206
28207 2004-05-01  Jackson Harper  <jackson@ximian.com>
28208
28209         * appdomain.c: If the culture is neutral we set it to "".
28210         
28211 2004-04-29  Jackson Harper  <jackson@ximian.com>
28212
28213         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
28214
28215 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
28216  
28217         * string-icalls.c: added low overhead function for copying chars
28218         * icall.c: added needed icall for the above function
28219  
28220 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28221
28222         * icall.c: fix return value of get_global_assembly_cache.  Implemented
28223         Environment.GetLogicalDrives.
28224
28225 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
28226
28227         * rand.c: try and talk to egd or prngd
28228         for random bytes if opening devices fail.
28229
28230 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
28231
28232         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
28233         alignment for the type using the native alignment of its members 
28234         instead of using klass->min_align.
28235
28236         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
28237
28238 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28239
28240         * file-io.c:
28241         * socket-io.c: added check for sys/aio.h.
28242
28243 2004-04-28  Dick Porter  <dick@ximian.com>
28244
28245         * threads.c: Don't abort a thread thats already aborting, when
28246         terminating everything.
28247
28248 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28249
28250         * icall.c: added 2 new async calls for Socket.
28251
28252         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
28253         IO on *nix systems.
28254
28255         * threadpool.c: removed unused variable.
28256
28257 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
28258
28259         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
28260
28261 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
28262
28263         * locales.c: put back string_invariant_tolower () and
28264         string_invariant_toupper ().
28265
28266 2004-04-26 David Waite <mass@akuma.org>
28267
28268         * file-io.h:
28269         * socket-io.h:
28270         * threads.h:
28271         * unicode.h: remove comma from end of enumeration declarations
28272
28273 2004-04-26 David Waite <mass@akuma.org>
28274
28275         * debug-mono-symfile.h:
28276         * decimal.c:
28277         * mono_debug.h:
28278         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
28279
28280
28281 2004-04-26  Jackson Harper  <jackson@ximian.com>
28282
28283         * appdomain.c: Increment version number.
28284         
28285 2004-04-26  Jackson Harper  <jackson@ximian.com>
28286
28287         * appdomain.c: Set assembly references public token value when
28288         PublicKeyToken is specified, not the hash_value. Free public token
28289         values when free assembly name data. Previously the public key
28290         token was hex decoded, however we are using hex encoded public key
28291         tokens, so this is not neccasary.
28292         * assembly.c: Lookup assemblies in the gac if their public token
28293         value is set. Add function to allow enabling user gac
28294         lookups. Specify whether or not the assembly was loaded from the
28295         GAC. Compare full assembly names when checking the cache for
28296         assemblies (Temporarily disabled see comment in code). Remove
28297         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
28298         specifies trace-loader they get extra info to stdout on the
28299         loading of assemblies.
28300         * image.h: Add a field for an assembly references public token
28301         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
28302         whether an assembly has been loaded from the GAC.
28303         * image.c: Remove a corlib -> mscorlib name mapping.
28304         * loader.h: Add function to enable/disable the user gac.
28305         * mono-config.c: Check if the usergac is enabled in the config
28306         file.
28307         * icall.c: New icall to determine whether or not an assembly has
28308         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
28309         * tabldefs.h: Add constant for assemblyref flag that specifies a
28310         full public key is used instead of a public token.
28311         * reflection.c: Remove mscorlib -> corlib mappings. Set
28312         PublicTokenValue instead of hash value. This value is a hex
28313         string so it does not need to be expanded.
28314
28315 2004-04-26  Martin Baulig  <martin@ximian.com>
28316
28317         * mono-debug-debugger.c (mono_debugger_initialize): Set
28318         `mono_debugger_initialized' before calling mono_debug_lock().
28319
28320 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
28321
28322         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
28323           InternalToUpper/InternalToLower.
28324         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
28325           removed invariant culture shortcut.  This is now done in managed code.
28326         * locales.c: (string_invariant_toupper/tolower) removed.
28327
28328 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28329
28330         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
28331         Added Poll internal call.
28332
28333         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
28334         call for Poll. Select was too heavy for polling a single socket.
28335
28336         * threadpool.[ch]: added mono_threadpool_cleanup.
28337         * threads.c: use it. Don't use Thread_Abort on windows.
28338
28339 2004-04-23  Martin Baulig  <martin@ximian.com>
28340
28341         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
28342
28343 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
28344
28345         * icall.c: Registred new icalls for key pair protection and added an
28346         icall for Environment.GetFolderPath on Windows.
28347         * security.c|h: Added new icalls for key pair protection.
28348
28349 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28350
28351         * socket-io.c: don't display the non-supported family warning for known
28352         families. Now this is not displayed on windows when checking support
28353         for IPv4/IPv6.
28354
28355 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28356
28357         * class.c: don't display the layout warning for static fields.
28358
28359 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
28360
28361         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
28362         * locales.c, locales.h: Added new icalls for culture-specific
28363         Char.ToLower and Char.ToUpper.
28364
28365 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28366
28367         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
28368         by David Waite.
28369
28370 2004-04-20  Martin Baulig  <martin@ximian.com>
28371
28372         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
28373         of the type name before passing it to mono_reflection_type_from_name().
28374
28375 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
28376
28377         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
28378         encodings here. Fixes #56965.
28379
28380 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
28381
28382         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
28383         fix test on strstr result not that I can see anything that
28384         relies on the result.
28385
28386 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
28387
28388         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
28389         Fixes #57081.
28390
28391         * marshal.c (mono_marshal_get_string_encoding): New helper function.
28392
28393         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
28394         function to determine which marshalling to use for strings. Fixes
28395         #56965.
28396
28397         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
28398
28399         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
28400
28401 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
28402
28403         * icall.c: #include mono-config.h
28404
28405 2004-04-15  Jackson Harper  <jackson@ximian.com>
28406
28407         * culture-info-tables.h: Fix date formats for en-US culture.
28408         
28409 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
28410
28411         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
28412         ThreadPool.SetMinThreads.
28413         * threadpool.c: Implemented ThreadPool.GetMinThreads and
28414         ThreadPool.SetMinThreads.
28415
28416 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
28417
28418         * mono-config.c: also load the .config file in the directory
28419         where the assembly was found.
28420
28421 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
28422
28423         * assembly.c: load per-assembly config files.
28424         * icall.c: decrapified code to get the config dir and moved to
28425         mono-config.c.
28426         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
28427         per-assembly config files. When doing a dll map lookup give precedence
28428         to the per-assembly data.
28429
28430 2004-04-14  Martin Baulig  <martin@ximian.com>
28431
28432         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
28433         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
28434         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
28435
28436         * mono-debugger-debugger.c: While the debugger is locked, remember
28437         whether the symbol tables have changes and send one single
28438         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
28439
28440 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
28441
28442         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
28443
28444         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
28445         function.
28446
28447         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
28448         account when marshalling string arrays. Fixes #56965.
28449
28450 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
28451
28452         * icall.c: Add new icalls mapping for security.
28453         * security.c|h: Add internal calls for WindowsIdentity,
28454         WindowsImpersonationContext and WindowsPrincipal.
28455
28456 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
28457
28458         * class.c: Added comment to ensure the System.MonoDummy class
28459         is removed when no longer necessary
28460
28461 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
28462
28463         * appdomain.c: Pass arguments to the bootstraping exceptions to
28464         minimize JITed methods at boot
28465
28466         * metadata.c (mono_exception_from_name_two_strings): Allow for the
28467         second string to be null.
28468
28469         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
28470         Change the protocol to minimize the JIT methods at startup.  Now
28471         it Returns the internal codepage, if the value of "int_code_page"
28472         is 1 at entry, and we can not compute a suitable code page
28473         number, returns the code page as a string.
28474
28475 2004-04-13  Jackson Harper  <jackson@ximian.com>
28476
28477         * culture-info-tables.h: Fix number of decimal digits for all
28478         english locales.
28479
28480 2004-04-13  Jackson Harper  <jackson@ximian.com>
28481
28482         * icall.c: Clairfy out of sync error message. It is not always
28483         your corlib that is out of sync.
28484
28485 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
28486
28487         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
28488         properties when only the set accessor is overriden. Fixes #55874.
28489
28490 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
28491
28492         * assembly.c (mono_assembly_load_references): Make this thread safe.
28493         Fixes #56327.
28494
28495 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
28496
28497         * monosn.c: Add missing initialization calls.
28498
28499 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
28500
28501         * locales.c:
28502         ves_icall_System_Globalization_CultureInfo_construct_number_format
28503         Fix g_assert so it compiles on fussier compilers re int/ptr
28504         mismatch
28505
28506 2004-04-08  Dick Porter  <dick@ximian.com>
28507
28508         * socket-io.h:
28509         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
28510         53992.  Also rearrange the code so that the internal calls return
28511         an error value and exceptions are thrown from managed code.
28512
28513         * icall.c: Add type info to the socket icalls.
28514
28515 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28516
28517         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
28518         owes me a beer.
28519
28520 2004-04-07  Martin Baulig  <martin@ximian.com>
28521
28522         * class.c (mono_class_from_generic_parameter): Don't default
28523         `klass->parent' to `mono_defaults.object_type'.
28524
28525 2004-04-07  Martin Baulig  <martin@ximian.com>
28526
28527         * reflection.c (mono_reflection_initialize_generic_parameter): Set
28528         `param->pklass->reflection_info'.       
28529
28530 2004-04-07  Jackson Harper  <jackson@ximian.com>
28531
28532         * culture-info-tables.h: Fix date separator symbol.
28533         
28534 2004-04-07  Martin Baulig  <martin@ximian.com>
28535
28536         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
28537         from System.Type to System.MonoType.
28538
28539 2004-04-07  Martin Baulig  <martin@ximian.com>
28540
28541         * reflection.h
28542         (MonoReflectionGenericParam): Added `has_reference_type' and
28543         `has_value_type' fields.
28544
28545         * reflection.c (mono_image_get_generic_param_info): Encode the
28546         correct flags if we have the `class' or `struct' constraint.
28547
28548 2004-04-07  Martin Baulig  <martin@ximian.com>
28549
28550         * reflection.h
28551         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
28552
28553 2004-04-07  Jackson Harper  <jackson@ximian.com>
28554
28555         * appdomain.c: Revert extra patches, just wanted to bump the
28556         version number.
28557         
28558 2004-04-07  Jackson Harper  <jackson@ximian.com>
28559
28560         * Makefile.am: Add culture-info private headers.
28561         * icall.c: Add new icalls for contructing locales.
28562         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
28563         * locales.h: Declare new culture info construction methods.
28564         * object.h: Add new fields used to avoid the CultureMap to
28565         MonoCultureInfo.
28566         * culture-info.h: Definition of structs used in the culture info
28567         tables.
28568         * culture-info-tables.h: Autogenerated tables that contain culture
28569         info data. This file was generated with the locale-builder tool.
28570         * appdomain.c: Incement corlib version number.
28571         
28572 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
28573
28574         * appdomain.c: (mono_runtime_init) move mono_thread_init
28575         to before mono_object_new calls so critical sections
28576         are initialized before use.
28577
28578 2004-04-07  Martin Baulig  <martin@ximian.com>
28579
28580         * icall.c
28581         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
28582         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
28583         (ves_icall_MonoGenericParam_initialize): Removed.
28584         (monogenericparam_icalls): Removed.
28585         (generictypeparambuilder_icalls): Added new table for
28586         System.Reflection.Emit.GenericTypeParameterBuilder.
28587
28588         * reflection.c
28589         (mono_reflection_define_generic_parameter): Removed.
28590         (mono_reflection_initialize_generic_parameter): This is now called
28591         from GenericTypeParameterBuilder's .ctor.
28592
28593 2004-04-06  Martin Baulig  <martin@ximian.com>
28594
28595         * class.c (mono_class_init): Don't inflate nested classes in a
28596         generic instance.
28597         (mono_type_get_name_recurse): Include the generic arguments for
28598         generic instances and generic type declarations.
28599         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
28600         (_mono_class_get_instantiation_name): Removed.
28601         (mono_class_create_generic): Always use `gklass->name' as our name.
28602
28603         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
28604
28605         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
28606         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
28607         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
28608         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
28609         closed generic methods here.
28610
28611         * reflection.c
28612         (mono_reflection_generic_inst_get_nested_types): Removed.
28613         (inflate_mono_method): Copy the generic parameters from the
28614         MonoMethodHeader into out MonoGenericMethod.
28615
28616 2004-04-06  Martin Baulig  <martin@ximian.com>
28617
28618         * row-indexes.h
28619         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
28620
28621         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
28622
28623         * reflection.c (build_compressed_metadata): If we have any entries
28624         in the GenericParam, MethodSpec or GenericParamConstraint tables,
28625         set the header version to 1.1.
28626
28627 2004-04-06  Martin Baulig  <martin@ximian.com>
28628
28629         * class.c (mono_class_init): If we're a generic instance,
28630         initialize our nested classes, too.
28631         (_mono_class_get_instantiation_name): Deal with the new `!%d'
28632         suffix. 
28633
28634 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28635
28636         * process.c: quote the argument passed to the shell on windows.
28637
28638 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
28639
28640         * threads.c (mono_alloc_special_static_data): Allow this to be
28641         called during startup.
28642
28643 2004-04-02  Martin Baulig  <martin@ximian.com>
28644
28645         * icall.c
28646         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
28647
28648 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
28649
28650         * icall.c: Fix build.
28651
28652 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
28653
28654         * Makefile.am: Added security.c|h.
28655         * icall.c: Added icall for get_UserName;
28656         * security.c: New file for security related icalls. Added function
28657         get_UserName for System.Environment (fix #56144).
28658         * security.h: New. Header file for security.c
28659
28660 2004-04-02  Dick Porter  <dick@ximian.com>
28661
28662         * icall.c: Deleted the icalls that were obsoleted some time ago
28663         by the ICU string code, and which were mixed into the icall
28664         rearranging.  Fixes bug 55969.
28665
28666         * string-icalls.h: 
28667         * string-icalls.c: Deleted the code that those icalls reference.
28668
28669 2004-04-01  Martin Baulig  <martin@ximian.com>
28670
28671         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
28672
28673         * class.c (mono_class_from_generic_parameter): Don't set 
28674         TYPE_ATTRIBUTE_INTERFACE.
28675         (my_mono_class_from_generic_parameter): Likewise.
28676
28677 2004-04-01  Martin Baulig  <martin@ximian.com>
28678
28679         * loader.c (find_method): Added an optional `MonoClass *ic'
28680         argument to search in a specific interface.
28681         (mono_get_method_constrained): New public function.
28682
28683 2004-04-01  Martin Baulig  <martin@ximian.com>
28684
28685         * reflection.c (mono_image_get_generic_field_token): Use the
28686         `handleref' cache here.
28687
28688 2004-04-01  Martin Baulig  <martin@ximian.com>
28689
28690         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
28691
28692         * reflection.c (create_generic_typespec): Use the `typespec' hash
28693         here, not the `typeref' one.    
28694
28695 2004-04-01  Martin Baulig  <martin@ximian.com>
28696
28697         * class.c (mono_class_inflate_generic_type): Moved the
28698         functionality into a new static inflate_generic_type() which
28699         returns NULL if it didn't do anything.  Only increment the
28700         `mono_stats.inflated_type_count' if we actually inflated
28701         something.
28702         (mono_class_get_full): Check the classes type to see whether we
28703         need to inflate it; also inflate MONO_TYPE_(M)VAR.
28704
28705 2004-04-01  Jackson Harper  <jackson@ximian.com>
28706
28707         * reflection.c: Set culture for assembly references.
28708         
28709 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
28710
28711         * reflection.[ch], icall.[ch], Fix support for pinning variables.
28712
28713 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28714
28715         * assembly.c:
28716         (do_mono_assembly_open): the critical section also covers
28717         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
28718
28719 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28720
28721         * threads.c:
28722         (mono_manage_threads): abort the background threads when finishing.
28723         Fixes bug #47232.
28724
28725 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28726
28727         * gc.c: only close the done_event handle if there was no timeout.
28728         C-ified comments.
28729
28730 2004-03-30  Martin Baulig  <martin@ximian.com>
28731
28732         * icall.c (icall_entries): It's called "System.Activator", not
28733         "System.Activation".    
28734
28735 2004-03-30  Martin Baulig  <martin@ximian.com>
28736
28737         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
28738         (mono_class_create_from_typespec): Likewise.
28739
28740 2004-03-30  Martin Baulig  <martin@ximian.com>
28741
28742         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
28743         `has_ctor_constraint' and `initialized'.
28744
28745 2004-03-30  Martin Baulig  <martin@ximian.com>
28746
28747         * reflection.c (encode_new_constraint): New static function to add
28748         the constructor constraint attribute to a type parameter.
28749         (encode_constraints): Call encode_new_constraint() if necessary.
28750
28751         * reflection.h
28752         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
28753
28754         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
28755         
28756 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
28757
28758         * reflection.c, icall.c: add support for pinning variables. 
28759
28760 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
28761
28762         * marshal.c (mono_marshal_get_managed_wrapper):
28763         init bool local with zero rather than null.
28764
28765 2004-03-29  Martin Baulig  <martin@ximian.com>
28766
28767         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
28768         the "official" behavior here.
28769         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
28770
28771 2004-03-29  Martin Baulig  <martin@ximian.com>
28772
28773         * icall.c: Reflect latest API changes.
28774
28775 2004-03-29  Martin Baulig  <martin@ximian.com>
28776
28777         * loader.c (mono_get_method_from_token): Also call
28778         mono_metadata_load_generic_params () for abstract and interface
28779         methods; replace the type arguments in the method signature with
28780         the ones which are loaded from the metadata.
28781
28782 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
28783
28784         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
28785         of the lock is not the current thread. MS.NET don't do it, in spite of
28786         what the documentation says. See bug #56157.
28787
28788 2004-03-28  Martin Baulig  <martin@ximian.com>
28789
28790         * class.c (mono_class_init): Don't call init_properties() and
28791         init_events() for generic instances; set `prop->parent' when
28792         inflating properties.
28793
28794         * reflection.c (mono_generic_inst_get_object): Call
28795         `mono_class_init (ginst->klass)'.
28796         (mono_type_get_object): Only create a MonoGenericInst if your
28797         generic type is a TypeBuilder.
28798         (do_mono_reflection_bind_generic_parameters): Only set
28799         `ginst->is_dynamic' if our generic type is a TypeBuilder.
28800
28801 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
28802
28803         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
28804         Fixes #56091.
28805
28806 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28807
28808         * icall.c: added Kill_internal icall.
28809         * process.[ch]: added Kill_internal icall.
28810
28811 2004-03-25  Martin Baulig  <martin@ximian.com>
28812
28813         * class.h (MonoStats): Added `generic_instance_count',
28814         `inflated_method_count', `inflated_type_count' and
28815         `generics_metadata_size'.       
28816
28817 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28818
28819         * reflection.c: no warnings now.
28820
28821 2004-03-25  Martin Baulig  <martin@ximian.com>
28822
28823         * class.c (mono_class_get_full): New public function; does a
28824         mono_class_get(), but also takes a `MonoGenericContext *'.
28825
28826         * loader.c (mono_field_from_memberref): Renamed to
28827         `field_from_memberref', made static and added `MonoGenericContext *'
28828         argument.
28829         (mono_field_from_token): Added `MonoGenericInst *' argument.
28830         (method_from_memberef): Likewise.
28831         (mono_get_method_from_token): Likewise.
28832         (mono_get_method_full): New public function; does a
28833         mono_get_method(), but also takes a `MonoGenericContext *'.
28834
28835         * verify.c (mono_method_verify): Get the method's generic context
28836         and pass it to mono_field_from_token(), mono_get_method_full() and
28837         mono_class_get_full().
28838
28839 2004-03-25  Martin Baulig  <martin@ximian.com>
28840
28841         * class.c (mono_class_inflate_generic_type): Take a
28842         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
28843         `MonoGenericMethod *'.
28844
28845 2004-03-25  Martin Baulig  <martin@ximian.com>
28846
28847         * loader.h (MonoMethodInflated): Store the MonoGenericContext
28848         instead of the MonoGenericMethod here.
28849
28850 2004-03-25  Martin Baulig  <martin@ximian.com>
28851
28852         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
28853         each time we create a new MonoGenericInst, we also create a new
28854         context which points back to us.
28855
28856         * class.c (inflate_method): Use `ginst->context' instead of
28857         creating a new context.
28858
28859         * loader.c (method_from_memberref): Use
28860         `klass->generic_inst->context' instead of creating a new context.
28861
28862 2004-03-25  Martin Baulig  <martin@ximian.com>
28863
28864         * class.h (MonoGenericContext): New struct.
28865         (MonoGenericMethod): Removed `generic_inst'.
28866
28867         * class.c (mono_class_inflate_generic_method): Take a
28868         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
28869
28870 2004-03-25  Martin Baulig  <martin@ximian.com>
28871
28872         * loader.h (MonoMethodInflated): New typedef.
28873
28874         * metadata.h (MonoMethodSignature): Removed `gen_method', make
28875         `generic_param_count' consume just 30 bits, added `is_inflated'
28876         and `has_type_parameters' flags (one bit each).
28877
28878         * class.c (mono_class_inflate_generic_method): Create a
28879         MonoMethodInflated instead of a MonoMethodNormal and set
28880         `is_inflated' in the method signature.
28881
28882         * class.h (MonoGenericMethod): Removed `generic_method'.
28883
28884 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
28885
28886         * image.c: Make sure the name of a MonoImage is always an absolute path.
28887           This fixes bug #54415.
28888
28889 2004-03-24  Martin Baulig  <martin@ximian.com>
28890
28891         * class.c (mono_class_setup_vtable): If we're a generic instance,
28892         use our generic type's vtable size.
28893
28894 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
28895
28896         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
28897         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
28898         problems.
28899
28900 2004-03-23  Martin Baulig  <martin@ximian.com>
28901
28902         * class.h (MonoDynamicGenericInst): Added `int count_events' and
28903         `MonoEvent *events'.
28904
28905         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
28906         (typebuilder_icalls): Added "get_event_info"; calls
28907         mono_reflection_event_builder_get_event_info(). 
28908
28909         * reflection.c (mono_reflection_generic_inst_initialize): Added
28910         `MonoArray *events'.
28911         (mono_reflection_event_builder_get_event_info): New function.
28912
28913 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
28914
28915         * object.h: add mono_type_initialization_init
28916
28917         * object.c (mono_runtime_class_init): 
28918         implement class constructor synchronization rules
28919         to cope with threading issues.  
28920         add mono_type_initialization_init
28921
28922         * appdomain.c (mono_runtime_init): call 
28923         mono_type_initialization_init
28924
28925         * class.h: removing initializing field from MonoVTable
28926
28927 2004-03-23  Martin Baulig  <martin@ximian.com>
28928
28929         * class.c (my_mono_class_from_generic_parameter): Use
28930         `param->name' if it's not NULL. 
28931
28932 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
28933
28934         * class.c: do not insert non-virtual methods in the vtable.
28935         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
28936         that means the method is non-virtual. This never would have
28937         happened before.
28938
28939 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
28940
28941         * profiler.c: Added lock for accessing coverage_hash.
28942
28943 2004-03-22  Martin Baulig  <martin@ximian.com>
28944
28945         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
28946         `method->method->signature->generic_param_count != 0' to make it
28947         work for interface methods.
28948
28949 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28950
28951         * process.c: quote the string passed to the shell using g_shell_quote.
28952
28953 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28954
28955         * threads.c:
28956         (mono_threads_manage): don't remove the finalizer thread and self
28957         from the threads hash table so that mono_thread_manage can be called
28958         more than once.
28959
28960 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28961
28962         * process.c: quote the arguments when UseShellExecute is true. Fixes
28963         bug #55790.
28964
28965 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28966
28967         * threads.c: set mono_thread_detach as a cleanup routine for every
28968         thread. This way it's always executed upon thread termination, either
28969         aborted or finished normally. No more xsp hangs!
28970
28971 2004-03-17  Martin Baulig  <martin@ximian.com>
28972
28973         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
28974         `int count_nested' and a `MonoType **nested'.
28975
28976         * reflection.c (mono_reflection_bind_generic_parameters): Moved
28977         most of the functionality into a new static
28978         do_mono_reflection_bind_generic_parameters() and don't take a
28979         `MonoType *nested_in' argument any more.  Don't compute nested
28980         types here.
28981         (mono_reflection_generic_inst_get_nested_types): New public method
28982         to get nested types.
28983
28984         * class.c (mono_class_create_generic): Set `klass->nested_in' if
28985         we're a nested class.
28986
28987         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
28988         mono_reflection_generic_inst_get_nested_types() to compute the
28989         nested types.
28990
28991 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
28992
28993         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
28994         descriptive error message under windows.
28995         
28996 2004-03-17  Martin Baulig  <martin@ximian.com>
28997
28998         * class.c (dup_type): Added `const MonoType *original' argument;
28999         copy the attrs from the original type.
29000
29001 2004-03-17  Martin Baulig  <martin@ximian.com>
29002
29003         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
29004         `m->generic_inst_cache' here.
29005
29006 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
29007
29008         * exception.h exception.c: Add stack_overflow_exception.
29009
29010 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29011
29012         * threadpool.c:
29013         (overlapped_callback): call SetEvent *after* invoking the callback.
29014         No need to call CloseHandle.
29015
29016 2004-03-16  Martin Baulig  <martin@ximian.com>
29017
29018         * reflection.c (mono_image_get_fieldref_token): Take a
29019         `MonoReflectionField *' instead of a `MonoClassField *' and a
29020         `MonoClass *'; store the `MonoReflectionField *' in the hash.
29021
29022 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29023
29024         * appdomain.c: don't add the culture to the filename we're looking for
29025         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
29026
29027 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29028
29029         * locales.c: don't ignore symbols when doing case insensitive compares.
29030         Thanks Dick! Fixes bug #54046.
29031
29032         * threads.c: surround 'threads' usage with enter/leave in
29033         mono_thread_manage.
29034
29035 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
29036
29037         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
29038         implicitly marshalled as [Out]. Fixes #55450.
29039
29040         (mono_marshal_get_runtime_invoke): Zero out the result if there is
29041         an exception.
29042
29043 2004-03-16  Martin Baulig  <martin@ximian.com>
29044
29045         * class.c (mono_class_from_generic_parameter): Use the actual
29046         parameter name. 
29047
29048 2004-03-16  Martin Baulig  <martin@ximian.com>
29049
29050         * reflection.c (type_get_signature_size): New static function.
29051         Compues the size of the type in a method signature.
29052         (method_get_signature_size): New static function; calls
29053         type_get_signature_size() to compute the actual size of the
29054         method's signature.
29055         (method_encode_signature): Use method_get_signature_size() to get
29056         the signature's size rather than using `nparams * 10'.
29057
29058 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29059
29060         * file-io.h: define here WapiOverlapped on windows. I don't want the
29061         regular OVERLAPPED one.
29062
29063         * file-io.c:
29064         * threadpool.c: somehow, BindIoCompletionCallback is not found.
29065         Disabling AIO on windows.
29066
29067 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29068
29069         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
29070         bug #55385.
29071
29072 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29073
29074         * appdomain.c: upgraded corlib version.
29075
29076         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
29077         and BeginWrite. Allow opening files for asynchrnous operations.
29078
29079         * file-io.h: new struct that maps FileStreamAsyncResult.
29080         * icall.c: added new icalls.
29081         * process.[ch]: support setting child process environment variables
29082         and use the SHELL or COMSPEC when UseShellExecute is true.
29083
29084         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
29085         callback for async. IO is here and also BindHandle.
29086
29087         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
29088         from here.
29089
29090 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
29091
29092         * reflection.c (create_custom_attr): Allow len == 0.
29093
29094         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
29095         computation on big-endian machines.
29096
29097 2004-03-13  Martin Baulig  <martin@ximian.com>
29098
29099         * class.h (MonoGenericInst): Added `int count_ifaces'.
29100
29101         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
29102         `ginst->count_ifaces' instead `klass->interface_count' since we
29103         may get called before the vtable is created.
29104
29105         * loader.c (mono_method_get_param_names): If we're a generic
29106         instance, return and don't initialize the class.
29107
29108         * reflection.c (mono_reflection_setup_generic_class): Don't call
29109         ensure_runtime_vtable().
29110         (mono_reflection_bind_generic_parameters): Set
29111         `ginst->count_ifaces'.
29112
29113 2004-03-11  Jackson Harper <jackson@ximian.com>
29114
29115         * icall.c:
29116         * unicode.c:
29117         * unicode.h: Remove unused System.Char icalls.
29118         
29119 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
29120
29121         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
29122         code when we P/Invoke the first library in Windows.Forms, instead
29123         of when we first open the assembly.
29124
29125         * assembly.c: Drop the lookup from here.
29126
29127 2004-03-10  Martin Baulig  <martin@ximian.com>
29128
29129         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
29130         class for properties, fields and events.  Finally fixes #54945.
29131
29132 2004-03-10  Martin Baulig  <martin@ximian.com>
29133
29134         * metadata.c (mono_metadata_class_equal): New static function;
29135         checks whether two generic instances or two generic parameters are
29136         equal.
29137         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
29138         compare classes.        
29139
29140 2004-03-10  Martin Baulig  <martin@ximian.com>
29141
29142         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
29143
29144         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
29145         argument and write it into the `reflection_info' field.
29146
29147         * icall.c
29148         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
29149         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
29150
29151 2004-03-09  Jackson Harper  <jackson@ximian.com>
29152
29153         * char-conversions.h: use 8 bits for numeric data its all we need
29154         * icall.c: numeric data is only 8 bits now.
29155
29156 2004-03-09  Martin Baulig  <martin@ximian.com>
29157
29158         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
29159
29160         * class.c (init_properties, init_events): Initialize the new
29161         `parent' field.
29162
29163         * reflection.c (typebuilder_setup_properties): Likewise.
29164         (typebuilder_setup_events): Likewise.
29165
29166         * reflection.h (MonoEventInfo): Replaced `parent with
29167         `declaring_type' and `reflected_type'.
29168
29169         * icall.c (ves_icall_get_property_info): Distinguish between
29170         declaring and reflected type.
29171         (ves_icall_get_event_info): Likewise.
29172
29173 2004-03-09  Martin Baulig  <martin@ximian.com>
29174
29175         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
29176         (ves_icall_Type_GetField): Correctly set field->klass.
29177
29178 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
29179
29180         * loader.h: Fix warning.
29181
29182 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
29183
29184         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
29185         library routine if present.  Notice that it will still continue
29186         executing even if its missing, for those working on the Gtk#
29187         edition of Windows.Forms.
29188
29189         * assembly.c (do_mono_assembly_open): If loading the
29190         System.Windows.Forms call mono_loader_wini_init.
29191
29192 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
29193
29194         * class.h: Added MonoRemoteClass struct.
29195         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
29196         function for MonoStrings.
29197         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
29198         Added internal call for getting the proxy type.
29199         * marshal.c: Get the type of transparent proxies from its remote_class.
29200         Added methods that generate the IL for type checks and casts:
29201         mono_marshal_get_isinst, mono_marshal_get_castclass, 
29202         mono_marshal_get_proxy_cancast.
29203         * marshal.h: Declaration of the previous new methods.
29204         * object.c: Added new moethods for creating and updating MonoRemoteClass
29205         instances: mono_remote_class, mono_upgrade_remote_class, 
29206         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
29207         * verify.c: FIx transparent_proxy_fields layout.
29208         * appdomain.c: Bump corlib version.
29209
29210 2004-03-04  Jackson Harper  <jackson@ximian.com>
29211
29212         * icall.c: Add icall to access char conversion tables.
29213         * char-conversions.h: Character conversion tables.
29214         * Makefile.am: Add char-conversions.h private header file.
29215         
29216 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
29217
29218         * appdomain.c (unload_thread_main): Increase unloading timeout to
29219         10 sec as a temporary workaround for Nant problems.
29220
29221 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
29222
29223         * gc.c: Add checks for GC_enable and GC_disable.
29224
29225         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
29226         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
29227         (bug #54988).
29228         
29229 2004-02-27  Martin Baulig  <martin@ximian.com>
29230
29231         * reflection.c (mono_reflection_bind_generic_parameters): Take a
29232         `MonoReflectionType *' instead of a `MonoType *'.
29233
29234 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
29235
29236         * gc.c (run_finalize): Avoid finalizing the object representing the
29237         finalizer thread.
29238         (finalizer_thread): Fix warning.
29239
29240 2004-02-25  Martin Baulig  <martin@ximian.com>
29241
29242         * class.c (_mono_class_get_instantiation_name): Added `int offset'
29243         argument for nested types.
29244         (mono_class_create_generic): Added support for nested generictypes.
29245
29246         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
29247         `GList *nested'.
29248
29249         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
29250
29251         * reflection.c (method_encode_signature): Increase the minimum
29252         value of `size' from 10 to 11.
29253         (mono_reflection_bind_generic_parameters): Take `int type_argc'
29254         and `MonoType **types' arguments instead of the `MonoArray
29255         *types'; added `MonoType *nested_in'.  Recursively instantiate
29256         nested classes. 
29257
29258 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
29259
29260         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
29261         stack_overflow_ex members which are used by exception handling.
29262
29263         * appdomain.c (mono_runtime_init): Initialize the new members.
29264
29265         * gc.c (mono_gc_enable): New helper function.
29266         * gc.c (mono_gc_disable): New helper function.
29267
29268 2004-02-23  Martin Baulig  <martin@ximian.com>
29269
29270         * icall.c: I must have been really stupid - make it actually work
29271         this time ;-)
29272
29273 2004-02-23  Martin Baulig  <martin@ximian.com>
29274
29275         * loader.c (method_from_memberref): Only inflate the method if
29276         it's in another klass.
29277
29278 2004-02-23  Martin Baulig  <martin@ximian.com>
29279
29280         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
29281         (mono_class_init): If we're a generic instance and an interface,
29282         compute `class->interface_id'; also create `class->interfaces'
29283         here and inflate them.
29284
29285         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
29286         `ginst->is_open'.
29287         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
29288
29289         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
29290
29291 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
29292
29293         * reflection.c (method_encode_code): Improved the error message
29294         generated by the exception.
29295
29296 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29297
29298         * icall.c: Martin did not do what he said in the ChangeLog for
29299         2004-02-18, but put back the changes for properties and events.
29300         Commenting those changes out again and adding comment to bug #54518.
29301         
29302         * process.c: removed warning.
29303
29304 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
29305
29306         * marshal.c (emit_struct_conv): Print an error message instead of
29307         asserting when a type does not have the StructLayout attribute.
29308
29309 2004-02-20  Martin Baulig  <martin@ximian.com>
29310
29311         * reflection.c (mono_type_get_object): Also use the cache for
29312         generic instances.
29313         (mono_reflection_bind_generic_parameters): Always compute
29314         `ginst->ifaces'.        
29315
29316 2004-02-20  Martin Baulig  <martin@ximian.com>
29317
29318         * class.h (MonoGenericMethod): Removed `klass'.
29319
29320         * class.c (mono_class_inflate_generic_method): Added `MonoClass
29321         *klass' argument.
29322
29323 2004-02-20  Martin Baulig  <martin@ximian.com>
29324
29325         * reflection.c (method_encode_methodspec): Actually use the
29326         uninflated signature for the memberref.
29327
29328 2004-02-20  Martin Baulig  <martin@ximian.com>
29329
29330         * class.h (MonoGenericMethod): Removed `declaring'.
29331
29332         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
29333         is NULL, compute it here.
29334
29335 2004-02-20  Martin Baulig  <martin@ximian.com>
29336
29337         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
29338
29339         * metadata.c (mono_metadata_generic_inst_hash): New method.
29340         (mono_metadata_generic_inst_equal): New method.
29341
29342         * reflection.c (mono_reflection_bind_generic_parameters): Use the
29343         `klass->image->generic_inst_cache' cache to avoid creating
29344         duplicate MonoGenericInst's.
29345
29346         * class.c (mono_class_inflate_generic_type): Use the cache.
29347
29348 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
29349
29350         * object.c: fixed gc descriptor calculation for embedded valuetypes.
29351
29352 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29353
29354         * icall.c: added Socket.WSAIoctl icall.
29355
29356         * socket-io.[ch]: implemented
29357         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
29358
29359 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
29360
29361         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
29362
29363 2004-02-18  Urs C Muff  <umuff@quark.com>
29364
29365         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
29366         this work on PPC and other big-endian architectures.
29367
29368         * debug-mono-symfile.h: Prepended the names of all the `guint32'
29369         fields with an underscore to make sure they're only accessed by
29370         the read32() macro.
29371
29372 2004-02-18  Martin Baulig  <martin@ximian.com>
29373
29374         * icall.c: Put the klass->refclass changes back for methods and
29375         fields, but not for properties and events.  We're currently not
29376         distinguishing between DeclaringType and ReflectedType for
29377         properties and events, that's what caused the regressions.
29378
29379 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29380
29381         * object.c:
29382         (mono_async_result_new): the handle can be NULL.
29383
29384         * threadpool.c: Use an event instead of a semaphore, don't initialize
29385         it until needed. This saves quite a few semaphores from being created
29386         when using the threadpool.
29387
29388 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
29389
29390         * object.c (mono_string_is_interned_lookup): Fix interning of long
29391         strings. Fixes #54473.
29392
29393         * domain.c (ldstr_equal): Optimize if the two strings are equal.
29394
29395         * icall.c: Revert the klass->refclass changes since they introduce
29396         regressions (bug #54518).
29397
29398 2004-02-18  Martin Baulig  <martin@ximian.com>
29399
29400         * class.c (mono_class_init): If we're a generic instance and don't
29401         come from a TypeBuilder, inflate our members here.
29402         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
29403         (mono_class_create_generic): New public method.
29404         (mono_class_initialize_generic): Removed.
29405         (get_instantiation_name): Renamed to
29406         _mono_class_get_instantiation_name() and made it public.
29407
29408 2004-02-18  Martin Baulig  <martin@ximian.com>
29409
29410         * class.c (mono_class_inflate_generic_type): Clear the new
29411         instance's `nginst->klass' when inflating a generic instance.
29412         (mono_class_is_subclass_of): Added (basic) support for generic
29413         instances.
29414
29415 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
29416
29417         * appdomain.h, domain.c: use a MonoCodeManager instead of a
29418         MonoMempool to hold compiled native code.
29419
29420 2004-02-17  Martin Baulig  <martin@ximian.com>
29421
29422         * class.h (MonoDynamicGenericInst): Added `count_properties' and
29423         `properties'.
29424
29425         * reflection.c (mono_reflection_generic_inst_initialize): Added
29426         `MonoArray *properties' argument.
29427
29428         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
29429
29430 2004-02-17  Martin Baulig  <martin@ximian.com>
29431
29432         * icall.c (ves_icall_Type_GetFields): Renamed to
29433         ves_icall_Type_GetFields_internal() and added a
29434         `MonoReflectionType *rtype' argument; pass it to
29435         mono_field_get_object() to set the field's "reflected" type.
29436         (ves_icall_Type_GetConstructors): Likewise.
29437         (ves_icall_Type_GetEvents): Likewise.
29438         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
29439         argument; pass it to mono_method_get_object() to set the method's
29440         "reflected" type.       
29441
29442 2004-02-17  Martin Baulig  <martin@ximian.com>
29443
29444         * class.h (MonoDynamicGenericInst): New type.
29445         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
29446
29447         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
29448         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
29449         (ves_icall_MonoGenericInst_GetFields): New interncall.
29450
29451         * class.c (mono_class_from_generic): Don't call
29452         mono_class_initialize_generic() if this is a dynamic instance;
29453         ie. it's being created from a TypeBuilder.
29454         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
29455         `class->byval_arg.type'.
29456
29457         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
29458         to `inflate_method' and made static.
29459         (mono_reflection_inflate_field): Removed.
29460         (mono_reflection_generic_inst_initialize): New public method.
29461
29462         * reflection.h (MonoReflectionGenericInst): Removed `methods',
29463         `ctors' and `fields'; added `initialized'.
29464
29465 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
29466
29467         * debug-helpers.c (mono_method_full_name): Fix output for empty
29468         namespaces.
29469
29470 2004-02-12  Martin Baulig  <martin@ximian.com>
29471
29472         * class.h (MonoClassField): Added `MonoType *generic_type'.
29473
29474         * reflection.c (mono_image_get_fieldref_token): Added support for
29475         instantiated generic types.
29476         (field_encode_inflated_field): Removed.
29477         (mono_image_get_inflated_field_token): Removed.
29478         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
29479
29480         * reflection.h (MonoReflectionInflatedField): Removed.
29481
29482 2004-02-12  Martin Baulig  <martin@ximian.com>
29483
29484         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
29485         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
29486
29487         * reflection.c (mono_image_get_methodspec_token): Take a
29488         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
29489         (mono_image_create_token): Check whether we have a
29490         `method->signature->gen_method' and call
29491         mono_image_get_methodspec_token() if appropriate.
29492         (inflated_method_get_object): Removed.
29493         (mono_reflection_bind_generic_method_parameters): Return a
29494         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
29495         (mono_reflection_inflate_method_or_ctor): Likewise.
29496
29497         * reflection.h (MonoReflectionInflatedMethod): Removed.
29498
29499 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
29500
29501         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
29502         for custom valuetype marshalling.
29503
29504         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
29505
29506 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29507
29508         * icall.c: fixed WSAGetLastError_internal name.
29509
29510 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
29511
29512         * threads.c (mono_thread_attach): Allow this to be called multiple
29513         times for a thread.
29514         
29515         * threads.c (build_wait_tids): Do not wait for ourselves.
29516
29517         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
29518         appdomain list is empty.
29519
29520         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
29521         memory returned by mono_string_builder_to_utf16, since it points into
29522         managed memory. Thanks to Bernie Solomon for noticing this.
29523
29524         * icall.c: Add AppDomainSetup icalls.
29525
29526         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
29527
29528         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
29529         types.
29530
29531         * reflection.c (reflection_methodbuilder_to_mono_method): Save
29532         custom attributes to the method_aux struct. Also fix array indexes etc.
29533
29534         * loader.c (mono_method_get_param_names): Make dynamic case work again.
29535         
29536 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
29537
29538         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
29539         (both static and runtime) and reduce startup time.
29540
29541 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
29542
29543         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
29544         AsAny marshalling conversion instead of crashing.
29545
29546         * marshal.c: Fix warnings.
29547
29548 2004-02-09  Martin Baulig  <martin@ximian.com>
29549
29550         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
29551
29552         * reflection.h (MonoReflectionInflatedMethod): Removed the
29553         `declaring' field, it's now in the unmanaged MonoGenericMethod.
29554
29555         * reflection.c (method_encode_methodspec): Removed the `method'
29556         argument; we get it from `gmethod->declaring'.
29557         (inflated_method_get_object): Removed the `declaring' argument.
29558
29559 2004-02-09  Martin Baulig  <martin@ximian.com>
29560
29561         * class.h (MonoGenericMethod): New type.
29562         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
29563         `generic_method'.
29564
29565         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
29566         a `MonoGenericMethod *gen_method' one.
29567
29568         * class.c (mono_class_inflate_generic_type): Take an additional
29569         `MonoGenericMethod * argument.  This is only non-NULL if we're
29570         inflating types for a generic method.   
29571         (mono_class_inflate_generic_signature): Renamed to
29572         inflate_generic_signature() and made static; take a
29573         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
29574         (inflate_generic_header): Take a `MonoGenericMethod *' argument
29575         instead of a `MonoGenericInst *' one.
29576         (mono_class_inflate_generic_method): Likewise.
29577
29578         * reflection.c (encode_generic_method_sig): Take a
29579         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
29580         (method_encode_methodspec): Likewise.
29581         (inflated_method_get_object): Likewise. 
29582
29583         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
29584         field with a `MonoGenericMethod *gmethod' one.  
29585
29586 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
29587
29588         * class.h (mono_class_has_parent): add parens to expansion
29589         so you can ! this.
29590
29591 2004-02-08  Martin Baulig  <martin@ximian.com>
29592
29593         * image.h (MonoImage): Removed `generics_cache'.
29594
29595         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
29596         instead of a `MonoType *' argument; removed the `inflate_methods'
29597         argument.  Don't inflate methods here.
29598
29599         * loader.c (find_method): If it's a generic instance, call
29600         mono_class_init() on the `sclass->generic_inst->generic_type'.
29601
29602         * metadata.c (mono_type_size): Make this work on uninitialized
29603         generic instances; call it on the `ginst->generic_type's class.
29604
29605         * reflection.c (mono_reflection_bind_generic_parameters): Call
29606         mono_class_from_generic() to create the `ginst->klass'.
29607
29608 2004-02-08  Martin Baulig  <martin@ximian.com>
29609
29610         * class.h (MonoClass): Changed type of `generic_inst' from
29611         `MonoType *' to `MonoGenericInst *'.
29612
29613 2004-02-08  Martin Baulig  <martin@ximian.com>
29614
29615         * icall.c (ves_icall_Type_BindGenericParameters): Just call
29616         mono_type_get_object(), this is now creating a `MonoGenericInst'
29617         for MONO_TYPE_GENERICINST.
29618         (ves_icall_MonoGenericInst_GetParentType): Likewise.
29619         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
29620
29621         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
29622         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
29623         (inflated_method_get_object): Added `MonoClass *refclass' argument.
29624         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
29625         and reflected type.
29626
29627         * reflection.h (MonoReflectionInflatedMethod): Removed
29628         `declaring_type' and `reflected_type'.
29629
29630 2004-02-08  Martin Baulig  <martin@ximian.com>
29631
29632         * class.h (MonoGenericInst): Added `MonoType *parent' and
29633         `MonoType **ifaces'.
29634
29635         * reflection.h (MonoReflectionGenericInst): Removed `klass',
29636         `parent' and `interfaces'.
29637
29638         * reflection.c (mono_reflection_bind_generic_parameters): Take a
29639         `MonoType *' argument and return a `MonoType *'.
29640
29641         * icall.c
29642         (ves_icall_MonoGenericInst_GetParentType): New interncall.
29643         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
29644
29645 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
29646
29647         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
29648         valuetype marshalling.
29649
29650 2004-02-06  Martin Baulig  <martin@ximian.com>
29651
29652         * class.c
29653         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
29654         (my_mono_class_from_generic_parameter): Likewise.
29655
29656 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
29657
29658         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
29659         contents of the symbol files lazily.
29660
29661         * object.h (MonoThread): Add 'name' and 'name_len' fields.
29662
29663         * threads.h threads.c icall.c: New icalls for getting and setting the
29664         threads name.
29665
29666 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
29667
29668         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
29669         Raise an exception when the domain is not found.
29670
29671 2004-02-03  Martin Baulig  <martin@ximian.com>
29672
29673         * reflection.c (mono_image_get_methodspec_token): Use the
29674         uninflated signature; fixes gen-33.
29675
29676 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
29677
29678         * gc.c threads.c: Make the finalizer thread a normal managed thread so
29679         the finalizer code can use thread functionality.
29680
29681         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
29682         the finalizer thread.
29683
29684         * threads.c: Make some functions more robust.
29685
29686         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
29687
29688         * metadata.h: Add new marshalling conventions.
29689
29690         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
29691         stringbuilder marshalling. Fixes #53700.
29692
29693         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
29694
29695         * reflection.c (mono_image_get_type_info): Save declarative security
29696         info.
29697
29698         * reflection.c (mono_image_get_field_info): Handle uninitialized 
29699         unmanaged fields as well.
29700
29701         * appdomain.c: Bump corlib version.
29702
29703 2004-02-01  Martin Baulig  <martin@ximian.com>
29704
29705         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
29706         method type arguments.  
29707
29708 2004-01-30  Duncan Mak  <duncan@ximian.com>
29709
29710         * marshal.h: Add prototype for
29711         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
29712         and
29713         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
29714         fix the build.
29715
29716 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
29717
29718         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
29719         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
29720
29721 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
29722
29723         * marshal.c (mono_marshal_get_native_wrapper): Add support for
29724         custom marshalling of valuetypes.
29725
29726         * marshal.c: Fix some warnings.
29727
29728 2004-01-29  Martin Baulig  <martin@ximian.com>
29729
29730         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
29731         for generic method parameters.
29732
29733         * reflection.c (method_encode_methodspec): Write the uninflated
29734         signature into the methodspec table.
29735         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
29736         is always the uninflated method.
29737         (reflection_methodbuilder_to_mono_method): Copy the generic
29738         parameters from the MethodBuilder into `header->gen_params'.
29739
29740 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
29741
29742         * class.c (mono_class_from_generic_parameter): Fix warning.
29743
29744 2004-01-27  Martin Baulig  <martin@ximian.com>
29745
29746         * class.c (mono_class_from_generic_parameter): Don't create
29747         `klass->methods' here.  
29748
29749 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
29750
29751         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
29752         extension since it does not work with libraries named lib<FOO>.dll.so.
29753
29754 2004-01-25  Martin Baulig  <martin@ximian.com>
29755
29756         * class.c (mono_class_inflate_generic_type): Added support for
29757         MONO_TYPE_GENERICINST.
29758
29759         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
29760         inflate methods on open constructed types.      
29761
29762 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29763
29764         * object.c: fire ProcessExit event in the root AppDomain after running
29765         Main. Fixes bug #53299.
29766
29767 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
29768
29769         * socket-io.c: include the new socket-wrappers.h header.
29770         Use the wrappers instead of the unix socket functions to make the code
29771         more clear.
29772
29773 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
29774
29775         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
29776
29777         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
29778         Fixes #22532.
29779
29780 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
29781
29782         * reflection.c (mono_image_create_pefile): Handle the case when the
29783         entry point is not a MethodBuilder.
29784
29785         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
29786         field to ReflectionMethod since it is not allways a builder.
29787
29788         * reflection.c (type_get_fully_qualified_name): New helper function to
29789         return the fully qualified name of a type.
29790
29791         * reflection.c (encode_marshal_blob): Always emit the fully qualified
29792         type name for custom marshallers.
29793
29794         * reflection.c (mono_marshal_spec_from_builder): Ditto.
29795
29796         * class.c (mono_class_setup_vtable): If a parent class already 
29797         implements an interface, use the implementing methods from that class.
29798         Fixes #53148.
29799
29800 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29801
29802         * threadpool.c: just return instead of ExitThread to allow for thread
29803         clean up earlier.
29804
29805 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
29806
29807         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
29808         when closing resource modules.
29809
29810         * reflection.c (mono_image_create_pefile): Handle the case when the
29811         entry point is not a MethodBuilder.
29812
29813         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
29814         field to ReflectionMethod since it is not allways a builder.
29815
29816 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
29817
29818         * marshal.c (mono_marshal_get_managed_wrapper): 
29819         mono_marshal_alloc takes native int so CONV_I
29820         the arg for 64bits.
29821
29822 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
29823
29824         * reflection.c (fixup_cattrs): New function to fixup the methoddef
29825         tokens in the cattr table. Fixes #53108.
29826
29827 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29828
29829         * loader.c: don't trim ".dll" before looking up in the config file.
29830         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
29831
29832 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
29833
29834         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
29835         Return the module which contains the resource as well.
29836         (ves_icall_System_Reflection_Module_Close): New icall.
29837
29838         * appdomain.c: Bump corlib version number.
29839
29840         * image.c (mono_image_addref): New public function.
29841
29842         * assembly.c: Call mono_image_addref.
29843
29844         * reflection.c (mono_module_get_object): Increase reference count of 
29845         the image.
29846
29847         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
29848         Fixes #22532.
29849
29850         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
29851         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
29852         proper exceptions on DllImport problems.
29853
29854 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
29855
29856         * class.c, metadata.c: eliminate CSIZE macro.
29857
29858 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
29859
29860         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
29861         * object.h: Added async_callback field in MonoAsyncResult.
29862         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
29863         * verify.c: Added async_callback in MonoAsyncResult layout.
29864
29865 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
29866
29867         * reflection.c (mono_reflection_get_custom_attrs): Add support
29868         for Modules.
29869
29870 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
29871
29872         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
29873         marshalling.
29874         (mono_marshal_method_from_wrapper): Add null pointer check.
29875
29876 2004-01-16  Martin Baulig  <martin@ximian.com>
29877
29878         * debug-mono-symfile.h: Set version number to 36 and reflect
29879         latest symbol writer changes.
29880
29881 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
29882
29883         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
29884         multi-dimensional arrays.
29885         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
29886         (mono_class_from_mono_type): Use bounded_array_class_get.
29887         
29888         * class.c (mono_bounded_array_class_get): New function which takes
29889         a 'bounded' bool argument to distinguish vectors from one dimensional
29890         arrays.
29891
29892         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
29893         bounded_array_class_get if the array has bounds.
29894
29895         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
29896         Search modules loaded using AssemblyBuilder:AddModule as well.
29897
29898 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29899
29900         * appdomain.c: increased corlib version.
29901         * filewatcher.c: removed g_print.
29902         * icall.c:
29903         (get_property_info): only allocate what is actually requested.
29904         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
29905
29906 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29907
29908         * Makefile.am: added filewatcher.[ch]
29909         * filewatcher.[ch]: FileSystemWatcher runtime support.
29910         * icall.c: added new FSW icalls.
29911
29912 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
29913
29914         * string-icalls.c: fix stringbuilder regression as suggested by
29915         Iain McCoy <iain@mccoy.id.au>.
29916
29917 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
29918
29919         * process.c (process_read_stringtable_block): Recognize '007f' as
29920         a language neutral stringtable block.
29921
29922 2004-01-12  Patrik Torstensson
29923
29924         * object.h (MonoStringBuilder) : Changed layout to support our
29925         new stringbuilder class.
29926         * marshal.c: Change marshalling to support the new layout of 
29927         string builder.
29928         * appdomain.c: increased version number because new layout of
29929         string builder.
29930
29931 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
29932
29933         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
29934         assembly name as an string instead of an AssemblyName, since it is
29935         easier to extract info from it.
29936
29937         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
29938         the culture subdirectories too. Fixes #52231.
29939
29940 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29941
29942         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
29943         It takes 2 new parameters with an optional name for the method to look
29944         for and case ignoring info.
29945
29946         * threadpool.c: removed unused variable.
29947
29948 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29949
29950         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
29951         It takes 2 new parameters with an optional name for the property to look
29952         for and case ignoring info.
29953         Fixes bug #52753.
29954
29955 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
29956
29957         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
29958         Fix #52451.
29959
29960 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29961
29962         * appdomain.c:
29963         * assembly.c: escape the uri before passing it to g_filename_from_uri.
29964         Fixes bug #52630.
29965
29966 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
29967
29968         * reflection.c: Add support for more than one unmanaged resource.
29969
29970         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
29971         in field->def_value, as done in all other cases.
29972
29973         * reflection.c (mono_reflection_get_custom_attrs): Add support for
29974         TypeBuilders.
29975
29976         * reflection.c (mono_reflection_create_runtime_class): Remove 
29977         errorneous assignment to klass->element_class, since it is already
29978         done in mono_reflection_setup_internal_class.
29979
29980 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29981
29982         * gc.c: added missing LeaveCriticalSection.
29983         * icall.c: indented a couple of lines.
29984         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
29985         if we call EndInvoke inside a callback. Fixes bug #52601.
29986
29987 2004-01-07  Martin Baulig  <martin@ximian.com>
29988
29989         * mono-debug-debugger.h
29990         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
29991
29992 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
29993
29994         * appdomain.c: Use messages in NotImplementedException.
29995
29996         * exception.c (mono_get_exception_not_implemented): Now this takes
29997         a message argument.
29998
29999         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
30000         exception instead of g_asserting an aborting when something is not
30001         implemented.
30002
30003         Add some inline docs.
30004
30005 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
30006
30007         * reflection.h: Update after changes to object layout.
30008
30009         * reflection.c: Implement saving of unmanaged aka win32 resources.
30010
30011         * appdomain.c: Bump version number.
30012
30013         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
30014         Handle missing domains gracefully.
30015
30016 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
30017
30018         * file-io.c : On Windows, there are much more invalid_path_chars.
30019
30020 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
30021
30022         * class.h, object.c: prepare for GetType () speedup.
30023
30024 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
30025
30026         * profiler.c: workaround for --profile null reference exception on
30027           cygwin. Patch by Patrik Torstensson.
30028
30029 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
30030
30031         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
30032         make work for unaligned access.
30033
30034 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
30035
30036         * class.c: small cleanup (class->fields [i] -> field).
30037         * image.c: check address of metadata is valid.
30038
30039 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
30040
30041         * assembly.h assembly.c (mono_assembly_loaded): New public function to
30042         search the list of loaded assemblies.
30043
30044         * reflection.c (mono_reflection_type_from_name): Use 
30045         mono_assembly_loaded instead of mono_image_loaded.
30046
30047         * reflection.c: Fix warnings.
30048
30049 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
30050
30051         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
30052         is dynamic. This is needed since an assembly can contain both dynamic and
30053         non-dynamic images.
30054
30055         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
30056         assembly->dynamic.
30057
30058         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
30059
30060         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
30061         to store modules loaded using AddModule.
30062
30063         * reflection.c (mono_image_fill_file_table): Generalize this so it works
30064         on Modules.
30065
30066         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
30067
30068         * reflection.c (mono_image_fill_export_table_from_module): New function to
30069         fill out the EXPORTEDTYPES table from a module.
30070
30071         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
30072         into a separate function. Also handle loaded non-dynamic modules.
30073
30074         * reflection.c (mono_image_basic_init): Fix memory allocation.
30075
30076         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
30077
30078         * assembly.c (mono_assembly_load_references): Make this public.
30079
30080 2003-12-19  Martin Baulig  <martin@ximian.com>
30081
30082         * class.c (mono_class_initialize_generic): Made this static, take
30083         a `MonoGenericInst *' instead of a `MonoClass *'.
30084         (mono_class_from_generic): Call mono_class_initialize_generic()
30085         unless we're already initialized or being called from
30086         do_mono_metadata_parse_generic_inst().
30087
30088         * class.h (MonoGenericInst): Added `initialized' and
30089         `init_pending' flags.
30090
30091         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
30092         `mono_class_init (gklass)' or mono_class_initialize_generic()
30093         here; set `generic_inst->init_pending' while parsing the
30094         `type_argv'.
30095
30096 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
30097
30098         * locales.c: include string.h for memxxx prototypes
30099
30100 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
30101
30102         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
30103         constructor when accessing literal fields.
30104
30105 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
30106
30107         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
30108
30109         * reflection.c (assembly_add_resource_manifest): New function to fill
30110         the MANIFESTRESOURCE table.
30111
30112         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
30113
30114         * reflection.h: Update to changes in class layout.
30115
30116         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
30117         Reenable call to mono_runtime_is_shutting_down ().
30118
30119         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
30120         determine if the runtime is shutting down.
30121
30122 2003-12-16  Jackson Harper <jackson@ximian.com>
30123
30124         * icall.c: comment out call to mono_runtime_is_shutting_down to
30125         fix build.
30126         
30127 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
30128
30129         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
30130         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
30131
30132 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
30133
30134         * reflection.c: move definition of swap_with_size
30135         to before its first call
30136
30137 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
30138
30139         * appdomain.c (mono_runtime_is_shutting_down): New public function.
30140
30141         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
30142         icall.
30143
30144         * object.c: Fix warnings.
30145
30146         * icall.c (ves_icall_Type_Get...): Only consider inherited static
30147         members if FlattenHierarchy is set.
30148
30149         * reflection.c (mono_image_add_decl_security): New function to emit
30150         declarative security.
30151
30152         * reflection.h reflection.c: Add support for declarative security.
30153
30154         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
30155         
30156 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
30157
30158         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
30159         
30160         * appdomain.c verify.c: Moved corlib version checking into its own
30161         function in appdomain.c since it needs to create vtables etc.
30162
30163 2003-12-13  Patrik Torstensson <p@rxc.se>
30164
30165         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
30166         instead of unwrapped server.
30167
30168 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
30169
30170         * verify.c (check_corlib): Fix field index.
30171
30172 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
30173
30174         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
30175         GetGacPath icall.
30176
30177 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
30178
30179         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
30180         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
30181         cope with sizeof(size_t) != sizeof(guint32).
30182
30183 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30184
30185         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
30186         in case of failure.
30187
30188 2003-12-10  Mark Crichton <crichton@gimp.org>
30189
30190         * icall.c: removed the GetNonZeroBytes.  We now handle this case
30191         in managed code.
30192
30193         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
30194
30195 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
30196
30197         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
30198         marked as deleted.
30199
30200 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
30201
30202         * verify.c (check_corlib): Handle the case when the version field is 
30203         initialized by a static constructor.
30204
30205 2003-12-08  Patrik Torstensson  <p@rxc.se>
30206
30207     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
30208
30209 2003-12-08  Martin Baulig  <martin@ximian.com>
30210
30211         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
30212         a MonoReflectionGenericParameter, also take the parameter index
30213         and name as arguments.
30214         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
30215         (ves_icall_MonoGenericParam_initialize): New interncall.
30216         (ves_icall_Type_make_byref_type): New interncall.
30217
30218         * reflection.h (MonoReflectionGenericParam): Derive from
30219         MonoReflectionType, not just from MonoObject.  Added `refobj' and
30220         `index' fields.
30221
30222         * reflection.c (mono_reflection_define_generic_parameter): Create
30223         and return a new MonoReflectionGenericParam; don't initialize the
30224         constraints here.
30225         (mono_reflection_initialize_generic_parameter): New public method;
30226         initializes the constraints and creates the `param->pklass'.
30227
30228 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
30229
30230         * reflection.h reflection.c: Use the new fields 'num_types', 
30231         'num_fields' and 'num_methods' to track the number of types etc.
30232
30233         * verify.c (check_corlib): Check corlib version number.
30234
30235 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
30236
30237         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
30238         function works on all methods.
30239
30240 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
30241
30242         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
30243         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
30244         the custom_type_info flag of the transparent proxy.
30245         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
30246         objects that supports IRemotingTypeInfo.
30247         * object.h: Added custom_type_info field in transparent proxy.
30248
30249 2003-12-06  Martin Baulig  <martin@ximian.com>
30250
30251         * class.c (mono_class_create_from_generic): Removed.
30252         (mono_class_from_generic): Check `ginst->klass' before doing
30253         anything else.  This is important to fully support "recursive"
30254         generic types.
30255
30256         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
30257         empty `generic_inst->klass' before doing anything else.
30258
30259 2003-12-06  Dick Porter  <dick@ximian.com>
30260
30261         * verify.c: 
30262         * object.h:
30263         * icall.c:
30264         * locales.c: Use C structs to access class fields.  Don't do a
30265         conversion between MonoString and UChar because both are
30266         platform-endian UTF-16.  Compare now takes startindex and count
30267         parameters.  Add a char overload for IndexOf.  Speed up the
30268         invariant string IndexOf.
30269
30270 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
30271
30272         * Makefile.am (monosn_LDADD): Fix parallel build.
30273
30274 2003-12-04  Martin Baulig  <martin@ximian.com>
30275
30276         * icall.c
30277         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
30278         (ves_icall_Type_make_array_type): New interncall.       
30279
30280 2003-12-04  Martin Baulig  <martin@ximian.com>
30281
30282         * locales.c: also change it in the !HAVE_ICU case.
30283
30284 2003-12-04  Dick Porter  <dick@ximian.com>
30285
30286         * icall.c:
30287         * locales.c: construct_compareinfo is now in CompareInfo, not
30288         CultureInfo.
30289
30290 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
30291
30292         * image.c (mono_image_load_file_for_image): Cache loaded images in the
30293         image->files array.
30294
30295         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
30296         table as well.
30297
30298         * assembly.c (mono_assembly_load_references): Only load references
30299         once.
30300
30301         * class.c (mono_class_from_name): Avoid linear search of the 
30302         EXPORTEDTYPE table.
30303
30304         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
30305
30306 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
30307
30308         * image.h (MonoImage): Add 'field_cache' field.
30309
30310         * loader.c (mono_field_from_token): Cache field lookups.
30311         
30312         * reflection.c (mono_module_get_object): Fix name property.
30313
30314         * icall.c (ves_icall_get_enum_info): Update after changes to 
30315         mono_metadata_get_constant_index ().
30316
30317         * icall.c: Get rid of get_type_info icall, use a separate icall for
30318         each type property to avoid needless memory allocations. Fixes #51514.
30319
30320         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
30321         to avoid needless binary searches.
30322
30323         * class.c (class_compute_field_layout): Move the initialization of
30324         field->def_value to mono_class_vtable ().
30325
30326         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
30327         non-corlib types.
30328
30329         * object.c (mono_object_allocate): Make it inline.
30330
30331         * object.c (mono_object_allocate_spec): Make it inline.
30332         
30333 2003-12-02  Dick Porter  <dick@ximian.com>
30334
30335         * locales.c (create_NumberFormat): NumberFormatInfo construction.
30336         Patch by Mohammad DAMT (mdamt@cdl2000.com).
30337
30338 2003-12-01  Dick Porter  <dick@ximian.com>
30339
30340         * threads.c: Fix signature and call in CreateMutex and
30341         CreateEvent.
30342
30343 2003-12-01  Dick Porter  <dick@ximian.com>
30344
30345         * icall.c: 
30346         * locales.c: Implement string compares and searching
30347
30348         * object.h: Add extra Thread field
30349
30350 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
30351
30352         * reflection.c (fixup_method): Add support for MonoCMethod.
30353
30354 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
30355
30356         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
30357
30358         * reflection.c (assembly_name_to_aname): Allow extra characters in
30359         assembly names. Fixes #51468.
30360
30361 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
30362
30363         * exception.c (mono_exception_from_name_domain): New helper function.
30364
30365         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
30366         exception object in the correct domain.
30367
30368         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
30369         formatting + make a copy a the input data.
30370
30371         * loader.c (mono_get_method_from_token): Methods which contain
30372         native code do not have entries in the ImplMap.
30373
30374         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
30375         Thanks to Gonzalo for spotting this.
30376         
30377         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
30378         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
30379
30380         * assembly.h (mono_assembly_load_from): Split the second part of 
30381         assembly loading into a new public function.
30382
30383         * exception.h (mono_get_exception_bad_image_format): New function.
30384
30385 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
30386
30387         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30388         Enumerate all modules inside a dynamic assembly. Fixes #51293.
30389         
30390         * icall.c: Add new icall for creating dynamic methods.
30391
30392         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
30393
30394         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
30395
30396         * reflection.c (mono_reflection_create_dynamic_method): New icall to
30397         create a dynamic method.
30398
30399         * reflection.c (resolve_object): New helper function.
30400
30401         * reflection.c: Generalize ReflectionMethodBuilder and the functions
30402         which manipulate it so they can also work on dynamic methods.
30403
30404         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
30405         creating the MonoReflectionMethodAux structure if it is not needed.
30406         
30407         * reflection.h verify.c: Update after changes to object layout.
30408
30409         * reflection.c (method_builder_encode_signature): Fix compilation on
30410         gcc 2.95.x.
30411
30412 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
30413
30414         * appdomain.h: Added support for context static fields. Added static_data
30415           field to MonoAppContext and renamed thread_static_fields to a more
30416           generic special_static_fields in MonoAppDomain, since it can now contain
30417           context static fields.
30418         * domain.c: Updated hashtable name.
30419         * object.c: Replaced field_is_thread_static() for a more generic
30420           field_is_special_static() which also checks for context static attribute.
30421           In mono_class_vtable(), added support for static context fields.
30422         * threads.c: Changed methods that manage thread static fields to more
30423           generic methods so they can be reused both for thread and context static
30424           data.
30425         * threads.h: Declared some new methods.
30426
30427 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
30428
30429         * reflection.h: Update after changes to the managed types.
30430
30431         * reflection.c (encode_custom_modifiers): New helper function.
30432
30433         * reflection.c (method_encode_signature): Emit custom modifiers.
30434
30435         * reflection.c (field_encode_signature): Emit custom modifiers.
30436
30437 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
30438
30439         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
30440
30441         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
30442         implementation.
30443
30444         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
30445         icall.
30446
30447         * object.c (mono_field_get_value_object): New function.
30448
30449         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
30450         specific.
30451
30452 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
30453
30454         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
30455         return a preallocated out-of-memory exception instance.
30456
30457         * object.c (out_of_memory): Use the new function.
30458
30459         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
30460         flag is before the custom modifiers. Fixes #49802.
30461
30462 2003-11-16  Martin Baulig  <martin@ximian.com>
30463
30464         * class.c (mono_class_is_open_constructed_type): Implemented the
30465         MONO_TYPE_GENERICINST case.
30466
30467 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
30468
30469         * assembly.c (mono_assembly_fill_assembly_name): New function to
30470         fill out the MonoAssemblyName structure.
30471         (mono_assembly_open): Use the new function.
30472
30473         * icall.c (fill_reflection_assembly_name): New helper function.
30474
30475         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
30476         new function.
30477
30478         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
30479
30480 2003-11-15  Martin Baulig  <martin@ximian.com>
30481
30482         * class.c (mono_class_is_open_constructed_type): New public
30483         function; checks whether a type is an open constructed type,
30484         ie. whether it still contains type parameters.
30485         (mono_class_inflate_generic_type): If we're a type parameter and
30486         the inflated type is also a MONO_TYPE_(M)VAR, return the original
30487         type.
30488
30489         * class.h (MonoGenericInst): Added `guint32 is_open'.
30490
30491         * loader.c (method_from_methodspec): Check whether we're an open
30492         or closed constructed type and set `ginst->is_open'.
30493
30494         * reflection.c (mono_reflection_bind_generic_parameters): Check
30495         whether we're an open or closed constructed type and set
30496         `ginst->is_open'.
30497         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
30498         from open constructed types.
30499
30500 2003-11-15  Martin Baulig  <martin@ximian.com>
30501
30502         * reflection.c (mono_reflection_bind_generic_parameters): If we're
30503         a generic instance (instead of a generic type declaration) with
30504         unbound generic parameters, bind them to our actual types.
30505
30506 2003-11-14  Martin Baulig  <martin@ximian.com>
30507
30508         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
30509
30510         * reflection.c (mono_reflection_bind_generic_parameters): If we're
30511         an interface type, populate `res->interfaces' with instantiated
30512         versions of all the interfaces we inherit.
30513
30514 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
30515
30516         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
30517         when MONO_PATH is set but doesn't contain the install dir.
30518
30519 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30520
30521         * icall.c:
30522         (ves_icall_Type_GetInterfaces): don't return an interface twice when
30523         it's also implemented in base classes. Fixes bug #50927.
30524
30525 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
30526
30527         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
30528         if this method is called from a finalizer. Fixes #50913.
30529
30530 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
30531
30532         * threads.c: Implement VolatileRead/VolatileWrite
30533
30534         * icall.c: Add new icalls for VolatileRead/VolatileWrite
30535
30536 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30537
30538         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
30539         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
30540         2.95.3.
30541
30542         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
30543         from Peter Ross (pro@missioncriticalit.com).
30544         
30545 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
30546
30547         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
30548
30549 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30550
30551         * assembly.c (mono_assembly_load_references): Disable check because it
30552         triggers on older corlibs which lots of people have.
30553
30554 2003-11-12  Jackson Harper  <jackson@ximian.com>
30555
30556         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
30557         load corlib.dll if mscorlib.dll is not found.
30558         * assembly.h: Remove corlib name define.
30559         * class.c:
30560         * domain.c:
30561         * image.c: Change corlib name to mscorlib.
30562         
30563 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30564
30565         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
30566
30567 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
30568
30569         * appdomain.h: Added loader_optimization here to sync with the C#
30570         code, and add disallow_binding_redirects field.
30571
30572 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
30573
30574         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
30575
30576         * reflection.c (mono_image_build_metadata): Fix crash on modules
30577         with no types.
30578
30579         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
30580
30581         * icall.c (ves_icall_get_method_info): Return callingConvention as
30582         well.
30583
30584         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
30585         namespaces from the EXPORTEDTYPE table as well.
30586
30587         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
30588         from all modules inside the assembly.
30589         
30590 2003-11-11  Martin Baulig  <martin@ximian.com>
30591
30592         * reflection.c (mono_reflection_bind_generic_parameters): Make
30593         this work for interfaces.
30594
30595 2003-11-11  Martin Baulig  <martin@ximian.com>
30596
30597         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
30598
30599 2003-11-11  Martin Baulig  <martin@ximian.com>
30600
30601         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
30602         "MonoInflatedMethod" and "MonoInflatedCtor".
30603
30604 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
30605
30606         * reflection.c (resolution_scope_from_image): Use the assembly table
30607         from the manifest module, since other modules don't have it.
30608
30609         * debug-helpers.c (mono_type_full_name): New helper function.
30610
30611         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
30612
30613         * image.c (mono_image_load_file_for_image): New public function which
30614         is a replacement for the load_file_for_image in class.c.
30615
30616         * assembly.c (mono_assembly_load_module): A wrapper for the function
30617         above which does assembly association and reference loading too.
30618
30619         * class.c (mono_class_from_name): Call mono_assembly_load_module.
30620
30621 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30622
30623         * appdomain.c: not all of the attributes for the full assembly name
30624         are required and the order doesn't matter. Fixes bug #50787.
30625
30626 2003-11-10  Dick Porter  <dick@ximian.com>
30627
30628         * locales.c: Use platform-endian UTF16
30629
30630 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
30631
30632         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
30633         
30634 2003-11-10  Martin Baulig  <martin@ximian.com>
30635
30636         * metadata.c
30637         (mono_metadata_load_generic_params): Make this actually work.
30638
30639         * reflection.c (mono_reflection_bind_generic_parameters): If our
30640         parent is a generic instance, pass all the `types' to it, no
30641         matter whether it has the same number of type parameters or not.
30642
30643 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
30644
30645         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
30646
30647         * assembly.c (mono_assembly_load_references): Move the image<->assembly
30648         assignment code to this function so it gets called recursively for all
30649         modules.
30650
30651         * image.c (load_modules): Remove the assembly assignment since it is
30652         now done by mono_assembly_load_references.
30653         
30654         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30655         Add 'module' argument.
30656         (mono_module_get_types): New helper function.
30657         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
30658
30659 2003-11-08  Martin Baulig  <martin@ximian.com>
30660
30661         * class.c (mono_class_inflate_generic_method): Interface method
30662         don't have a header.
30663
30664         * reflection.c (mono_image_get_methodspec_token): Take an
30665         additional `MonoGenericInst *' argument instead of reading it from
30666         the header; this is necessary to support interfaces.
30667         (mono_image_create_token): Pass the `MonoGenericInst *' from the
30668         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
30669         (inflated_method_get_object): Take an additional `MonoGenericInst *'
30670         argument.
30671
30672         * reflection.h (MonoReflectionInflatedMethod): Added
30673         `MonoGenericInst *ginst'.
30674
30675 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
30676
30677         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
30678
30679 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
30680
30681         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
30682
30683 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
30684
30685         * reflection.c 
30686         (reflection_methodbuilder_from_method_builder):
30687         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
30688         initialize a ReflectionMethodBuilder structure.
30689         (mono_image_get_methodbuilder_token):
30690         (mono_image_get_ctorbuilder_token): New functions to emit memberref
30691         tokens which point to types in another module inside the same assembly.
30692
30693         * reflection.c: Use the new helper functions.
30694         
30695         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
30696
30697         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
30698         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
30699
30700         * reflection.c (resolution_scope_from_image): Emit a moduleref if
30701         neccesary.
30702
30703         * reflection.c (mono_image_build_metadata): Emit metadata only for the
30704         current module. Emit the manifest only for the main module.
30705
30706         * reflection.c (mono_image_create_token): Add assertion when a 
30707         memberref needs to be created.
30708
30709         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
30710
30711         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
30712         larger buffer for the custom attribute blob. Fixes #50637.
30713         
30714 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30715
30716         * threadpool.c: notify listener on async processing handles after
30717         invoking the async callback. Thanks to Zoltan.
30718
30719 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30720
30721         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
30722         avoid code duplication.
30723
30724         * reflection.h (MonoDynamicImage): New type which is currently unused,
30725         but will be used through the ref.emit code in place of 
30726         MonoDynamicAssembly.
30727
30728         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
30729         object layout.
30730
30731         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
30732         a MonoDynamicImage instead of just a MonoImage.
30733         
30734         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
30735         icalls to ModuleBuilder but keep their semantics, so they will work
30736         with moduleb->assemblyb. This will change later.
30737         
30738 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30739
30740         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
30741         object layout.
30742
30743         * reflection.c (mono_image_build_metadata): Avoid creation of a default
30744         main module, since it is now done by the managed code.
30745
30746 2003-11-03  Martin Baulig  <martin@ximian.com>
30747
30748         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
30749         `ginst->klass' here.
30750         (method_encode_methodspec): Don't use the `ginst->generic_method's
30751         klass if it's a generic instance, use `ginst->klass' in this case.
30752
30753 2003-11-03  Martin Baulig  <martin@ximian.com>
30754
30755         * reflection.c (mono_image_get_generic_method_param_info):
30756         Removed, use mono_image_get_generic_param_info() instead.
30757         (mono_image_get_type_info): Write the GenericParam table before
30758         the Method table.  This is neccessary because in the GenericParam
30759         table, type parameters of the class (ie. '!0' etc.) must come
30760         before the ones from its generic methods (ie. '!!0' etc).
30761
30762 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30763
30764         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
30765
30766 2003-11-02  Martin Baulig  <martin@ximian.com>
30767
30768         * reflection.c (create_generic_typespec): Take a
30769         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
30770         the generic parameters from it.
30771
30772 2003-11-02  Martin Baulig  <martin@ximian.com>
30773
30774         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
30775         instead of a `MonoClassField *' since we just need the type.
30776         (create_generic_typespec): New static function.  Creates a
30777         TypeSpec token for a generic type declaration.
30778         (mono_image_get_generic_field_token): New static function.
30779         (mono_image_create_token): If we're a FieldBuilder in a generic
30780         type declaration, call mono_image_get_generic_field_token() to get
30781         the token.
30782
30783 2003-11-02  Martin Baulig  <martin@ximian.com>
30784
30785         * reflection.h
30786         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
30787         `MonoReflectionGenericInst *declaring_type' and
30788         `MonoReflectionGenericInst *reflected_type' fields.
30789
30790         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
30791         `MonoReflectionGenericInst *declaring_type' and a
30792         `MonoReflectionGenericInst *reflected_type' argument instead of a
30793         single `MonoReflectionGenericInst *type' one.  Set
30794         `res->declaring_type' and `res->reflected_type' from them.
30795         (mono_reflection_inflate_field): Likewise.      
30796
30797 2003-11-02  Martin Baulig  <martin@ximian.com>
30798
30799         * class.c (mono_class_setup_vtable): Don't store generic methods
30800         in the vtable.  
30801
30802 2003-11-02  Martin Baulig  <martin@ximian.com>
30803
30804         * reflection.h (MonoReflectionGenericInst): Added
30805         `MonoReflectionType *declaring_type'.
30806
30807         * reflection.c (mono_reflection_bind_generic_parameters): Use
30808         `if (tb->parent)' instead of `klass->parent'.
30809
30810 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
30811
30812         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
30813         with an empty ASSEMBLY table.
30814
30815         * reflection.c (mono_image_build_metadata): Avoid using the same loop
30816         variable in the inner and outer loops.
30817
30818 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
30819
30820         * metadata.h (mono_metadata_make_token): Put parentheses around macro
30821         argument.
30822
30823         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
30824         
30825         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
30826         icalls. Instead, do everything in managed code. This is needed since
30827         it is hard to restore the original domain etc. in unmanaged code in the
30828         presence of undeniable exceptions.
30829
30830         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
30831         New icalls to push and pop appdomain refs.
30832
30833 2003-10-31  Martin Baulig  <martin@ximian.com>
30834
30835         * class.c (inflate_generic_type): Renamed to
30836         mono_class_inflate_generic_type() and made it public.
30837
30838         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
30839         New interncall.
30840
30841         * loader.c (mono_field_from_memberref): Also set the retklass for
30842         typespecs.
30843
30844         * fielder.c (mono_image_get_inflated_field_token): New static
30845         method; creates a metadata token for an inflated field.
30846         (mono_image_create_token, fixup_method): Added support for
30847         "MonoInflatedField".
30848         (fieldbuilder_to_mono_class_field): New static function.
30849         (mono_reflection_inflate_field): New public function.
30850
30851         * reflection.h
30852         (MonoReflectionGenericInst): Added `MonoArray *fields'.
30853         (MonoReflectionInflatedField): New typedef.     
30854
30855 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
30856
30857         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
30858         for Solaris and other platforms without s6_addr16
30859
30860 2003-10-30  Martin Baulig  <martin@ximian.com>
30861
30862         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
30863         argument instead of two.
30864         (mono_class_inflate_generic_signature): Likewise.
30865         (inflate_generic_header): Likewise.
30866         (mono_class_inflate_generic_method): Likewise.  In addition, if
30867         `ginst->klass' is set, it becomes the new `method->klass'.
30868
30869         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
30870         field.
30871
30872         * reflection.c (encode_generic_method_sig): Write a 0xa as the
30873         first byte. [FIXME]
30874         (method_encode_methodspec): If we have generic parameters, create
30875         a MethodSpec instead of a MethodRef.
30876         (fixup_method): Added support for "MonoInflatedMethod" and
30877         "MonoInflatedCtor".
30878         (mono_image_create_token): Added support for "MonoInflatedMethod"
30879         and "MonoInflatedCtor".
30880         (inflated_method_get_object): New static function; returns a
30881         managed "System.Reflection.MonoInflatedMethod" object.
30882         (mono_reflection_bind_generic_method_parameters): Return a
30883         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
30884         (mono_reflection_inflate_method_or_ctor): Likewise.
30885         (mono_image_get_generic_method_param_info): Initialize unused
30886         fields to zero.
30887         (mono_image_get_generic_param_info): Likewise.
30888
30889         * reflection.h (MonoReflectionInflatedMethod): New public
30890         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
30891         "S.R.MonoInflatedCtor" classes.
30892
30893         * loader.c (method_from_memberref): If we're a TypeSpec and it
30894         resolves to a generic instance, inflate the method.
30895
30896 2003-10-28  Dick Porter  <dick@ximian.com>
30897
30898         * object.c (mono_runtime_run_main): Convert command-line arguments
30899         into utf8, falling back to the user's locale encoding to do so.
30900
30901 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
30902
30903         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
30904         at this time.
30905
30906         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
30907
30908         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
30909         up icalls at method definition time. Partially fixes #33569.
30910
30911 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
30912
30913         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
30914         marshalling of arrays. Fixes #50116.
30915
30916         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
30917
30918         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
30919         points to a vtable in the dying appdomain.
30920
30921         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
30922         listeners into unmanaged code inside the lock.
30923
30924         * object.c (mono_class_vtable): Turn off typed allocation in non-root
30925         domains and add some comments.
30926
30927 2003-10-25  Martin Baulig  <martin@ximian.com>
30928
30929         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
30930
30931         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
30932
30933         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
30934         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
30935         currently parsing.  Create the generic class and store it in
30936         `generic_inst->klass' before parsing the type arguments.  This is
30937         required to support "recursive" definitions; see mcs/tests/gen-23.cs
30938         for an example.
30939         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
30940         to support recursive typespec entries.
30941
30942         * class.c (mono_class_setup_parent): If our parent is a generic
30943         instance, we may get called before it has its name set.
30944         (mono_class_from_generic): Splitted into
30945         mono_class_create_from_generic() and mono_class_initialize_generic().
30946
30947 2003-10-25  Martin Baulig  <martin@ximian.com>
30948
30949         * icall.c (ves_icall_Type_BindGenericParameters): Return a
30950         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
30951         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
30952         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
30953
30954         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
30955         (create_typespec): Likewise.
30956         (mono_reflection_bind_generic_parameters): Return a
30957         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
30958         (mono_reflection_inflate_method_or_ctor): New public function.
30959
30960         * reflection.h (MonoReflectionGenericInst): New typedef.        
30961
30962 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
30963
30964         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
30965         inside the domain lock. Fixes #49993.
30966         
30967         * object.c (mono_class_vtable): When typed allocation is used, 
30968         allocate vtables in the GC heap instead of in the mempool, since the
30969         vtables contain GC descriptors which are used by the collector even
30970         after the domain owning the mempool is unloaded.
30971
30972         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
30973
30974         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
30975         reflect what it does. Also invalidate mempools instead of freeing
30976         them if a define is set.
30977
30978         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
30979         of the appdomain.
30980         
30981         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
30982         hold the finalizable objects in this domain.
30983
30984         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
30985         appdomain.
30986
30987         * appdomain.c (mono_domain_set): New function to set the current
30988         appdomain, but only if it is not being unloaded.
30989
30990         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
30991         appdomain which is being unloaded.
30992         
30993         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
30994         unloading of the root appdomain.
30995
30996         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
30997         icall to execute a method in another appdomain. Intended as a 
30998         replacement for InternalSetDomain, which can confuse the code 
30999         generation in the JIT.
31000
31001         * appdomain.c (mono_domain_is_unloading): New function to determine
31002         whenever an appdomain is unloading.
31003
31004         * appdomain.c (mono_domain_unload): New function to correctly unload
31005         an appdomain.
31006
31007         * assembly.c (mono_assembly_load_references): Check that an assembly
31008         does not references itself.
31009
31010         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
31011         domain manually, it asks the finalizer thread to do it, then waits for
31012         the result. Also added a timeout.
31013
31014         * icall.c: Register the new icalls.
31015
31016         * threads.h threads.c: Export the mono_gc_stop_world and 
31017         mono_gc_start_world functions.
31018         
31019         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
31020         function to fill out the mempool with 0x2a.
31021
31022 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
31023
31024         * reflection.h (MonoReflectionMethodAux): New structure to store
31025         information which is rarely used, thus is not in the MonoMethod
31026         structure.
31027
31028         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
31029         store the aux info.
31030
31031         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
31032         and marshalling info into the aux structure.
31033
31034         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
31035         from the aux structure.
31036
31037         * loader.c (mono_method_get_param_names): Retrieve the param names from
31038         the aux structure.
31039         
31040 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
31041
31042         * exception.h exception.c: Add AppDomainUnloadedException && fix 
31043         warning.
31044
31045 2003-10-21  Dick Porter  <dick@ximian.com>
31046
31047         * socket-io.c
31048         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
31049         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
31050
31051 2003-10-21  Martin Baulig  <martin@ximian.com>
31052
31053         * reflection.c (mono_reflection_bind_generic_parameters):
31054         `klass->parent' is NULL for interfaces.
31055
31056 2003-10-21  Martin Baulig  <martin@ximian.com>
31057
31058         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
31059
31060 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
31061
31062         * exception.c (mono_exception_from_name_msg): New helper function for
31063         creating exceptions and initializing their message field.
31064
31065         * exception.c: Simplify functions using the new helper.
31066
31067         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
31068         New function.
31069
31070         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
31071         mono_raise_exception, since otherwise gcc doesn't generate the function
31072         epilog for raise_exception, confusing the stack unwinding in the JIT.
31073         Fixes #45043.
31074
31075         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
31076         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
31077         Fixes #49499.
31078
31079 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31080
31081         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
31082         utf8.
31083
31084 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
31085
31086         * icall.c: Removed GetUninitializedObject method because
31087           AllocateUninitializedClassInstance does the same.
31088
31089 2003-10-18  Martin Baulig  <martin@ximian.com>
31090
31091         * class.c (inflate_generic_signature): Renamed to
31092         mono_class_inflate_generic_signature() and made it public.
31093         (my_mono_class_from_generic_parameter): New static function; if we
31094         don't already have the generic parameter's MonoClass, create a
31095         very simple one which is just used internally in the runtime and
31096         not passed back to managed code.
31097
31098         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
31099
31100         * metadata.h (MonoMethodSignature): Moved the
31101         `MonoGenericParam *gen_params' to the MonoMethodHeader.
31102         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
31103
31104         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
31105         ves_icall_MonoMethod_GetGenericArguments(); this is now an
31106         interncall on the MonoMethod class, not on MethodInfo.
31107         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
31108         calling mono_reflection_bind_generic_method_parameters() directly.
31109
31110         * loader.c (mono_method_get_signature): If this is a MethodSpec;
31111         return the already computed `method->signature'.
31112         (method_from_methodspec): New static function to load a method
31113         from a MethodSpec entry.
31114         (mono_get_method_from_token): Call the new method_from_methodspec()
31115         for MethodSpec tokens.  
31116         (mono_get_method_from_token): If we're a generic method, load the
31117         type parameters.
31118
31119         * reflection.c (mono_image_get_memberref_token): Allow
31120         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
31121         table.
31122         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
31123         (mono_image_create_token): First check whether it's a generic
31124         method (so we'd need to create a MethodSpec), then do the other
31125         two alternatives.
31126         (mono_reflection_bind_generic_method_parameters): Return a
31127         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
31128         called directly from the interncall.
31129
31130 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
31131
31132         * reflection.c (load_public_key): Move loading of the public key
31133         into managed code.
31134
31135         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
31136
31137         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
31138         fields.
31139
31140         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
31141         culture, hash_alg and public_key. Fixes #49555.
31142
31143 2003-10-17  Martin Baulig  <martin@ximian.com>
31144
31145         * class.h (MonoGenericInst): Moved this declaration here and added
31146         `MonoMethod *generic_method'.
31147
31148         * icall.c
31149         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
31150         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
31151
31152         * metadata.c (mono_metadata_type_equal): Two types of
31153         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
31154         index; ie. don't compare the address of the `MonoGenericParam'
31155         structure.
31156         (mono_metadata_load_generic_params): Removed the `MonoMethod
31157         *method' argument.
31158
31159         * metadata.h (MonoGenericInst): Moved declaration to class.h.
31160         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
31161
31162         * reflection.c (method_encode_signature): Encode the number of
31163         generic parameters.
31164         (encode_generic_method_sig): New static function.
31165         (method_encode_methodspec): New static function; creates an entry
31166         in the MethodSpec table for a generic method.
31167         (mono_image_get_methodspec_token): New static function.
31168         (mono_image_create_token): Call mono_image_get_methodspec_token()
31169         for generic methods.
31170         (mono_reflection_bind_generic_method_parameters): New public
31171         function.  Instantiates a generic method.
31172
31173 2003-10-16  Martin Baulig  <martin@ximian.com>
31174
31175         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
31176         *gen_params' here from MonoMethodHeader.
31177
31178         * metadata.c (mono_metadata_parse_method_signature): If we have
31179         generic parameters, initialize `method->gen_params' and then set
31180         the correct `type->data.generic_param' in all the parameters.
31181
31182 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
31183
31184         * threads.c (mono_threads_get_default_stacksize): New function to 
31185         return the default stacksize.
31186
31187         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
31188         termination of the finalizer thread, since the previous method had
31189         race conditions. Fixes #49628.
31190
31191         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
31192         as for the other managed threads.
31193
31194 2003-10-16  Martin Baulig  <martin@ximian.com>
31195
31196         * class.c (inflate_generic_signature): Copy `generic_param_count'
31197         and `gen_params'.
31198
31199         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
31200         New interncall.
31201
31202         * metadata.c (mono_metadata_parse_method_signature): Actually set
31203         the `method->generic_param_count' here.
31204         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
31205
31206 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
31207
31208         * object.h: Add a new field to TypedRef to simplify the implementation
31209         of the REFANY opcodes in the JIT.
31210
31211         * icall.c: Make use of the new field.
31212
31213         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
31214         dynamically.
31215
31216 2003-10-15  Martin Baulig  <martin@ximian.com>
31217
31218         * class.c (mono_class_from_gen_param): Renamed to
31219         mono_class_from_generic_parameter() and moved most of the
31220         functionality from mono_reflection_define_generic_parameter()
31221         here; ie. we create a "real" class here.
31222         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
31223         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
31224         previously been called.
31225
31226         * class.h (MonoGenericParam): Moved the declaration of this struct
31227         here from metadata.h and added `MonoMethod *method'.
31228
31229         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
31230         interncall.
31231
31232         * loader.c (mono_get_method_from_token): If we have any generic
31233         parameters, call mono_metadata_load_generic_params() to read them
31234         from the MONO_TABLE_GENERICPAR.
31235
31236         * metadata.c (mono_metadata_load_generic_params): Added
31237         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
31238
31239         * metadata.h (MonoMethodSignature): Replaced
31240         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
31241         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
31242
31243         * reflection.c (mono_reflection_define_generic_parameter): Moved
31244         most of the functionality into the new
31245         mono_class_from_generic_parameter(); set the `method' field if
31246         we're a method parameter.       
31247
31248 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
31249
31250         * marshal.c (emit_struct_conv): if native size is 0
31251         emit no code.
31252
31253 2003-10-14  Martin Baulig  <martin@ximian.com>
31254
31255         * icall.c: The generics API has changed in the spec since it was
31256         added to System.Type; these modifications make it match the spec
31257         again.
31258         (ves_icall_Type_GetGenericParameters): Renamed to
31259         `ves_icall_Type_GetGenericArguments'.
31260         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
31261         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
31262         `ves_icall_MonoType_get_HasGenericArguments'.
31263         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
31264         `ves_icall_MonoType_get_IsGenericParameter'.
31265         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
31266         this is no interncall anymore.
31267         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
31268         `ves_icall_TypeBuilder_get_IsGenericParameter'.
31269
31270 2003-10-14  Martin Baulig  <martin@ximian.com>
31271
31272         * reflection.c (mono_reflection_bind_generic_parameters): Also
31273         inflate generic methods if we're reading the class from IL.
31274
31275 2003-10-13  Martin Baulig  <martin@ximian.com>
31276
31277         * reflection.c (mono_reflection_define_generic_parameter): This
31278         method isn't called directly from the icall anymore; take a
31279         `MonoReflectionAssemblyBuilder *' so we can use this for type and
31280         method generic parameters.
31281         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
31282         (method_builder_encode_signature): Encode generic parameters.
31283         (mono_image_get_method_info): Write generic params to the
31284         MONO_TABLE_GENERICPARAM table.
31285
31286         * reflection.h (MonoReflectionMethodBuilder): Added
31287         `MonoArray *generic_params'.
31288
31289         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
31290
31291         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
31292         wrapper for mono_reflection_define_generic_parameter().
31293         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
31294
31295 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
31296
31297         * marshal.h: Add missing function to fix build.
31298
31299         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
31300         the SetLastError pinvoke attribute.
31301
31302         * marshal.c (mono_marshal_set_last_error): New helper function called
31303         by the generated code.
31304         
31305         * marshal.c (mono_mb_emit_branch): New helper function.
31306
31307         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
31308
31309         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
31310         classes as parameters and return values of delegates. Fixes #29256. 
31311
31312 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
31313
31314         * locales.c: use gint32 in non HAVE_ICU case
31315
31316 2003-10-11  Martin Baulig  <martin@ximian.com>
31317
31318         * mono-debug.c (mono_debug_add_method): Added a workaround for
31319         bug #48591.
31320
31321 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
31322
31323         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
31324         delegates passed to native code must use the STDCALL calling 
31325         convention. Fixes #35987.
31326
31327 2003-10-10  Martin Baulig  <martin@ximian.com>
31328
31329         * class.c (inflate_generic_type): If we're inflating for a generic
31330         type instance (and not for a generic method), return
31331         MONO_TYPE_MVAR unchanged.
31332
31333 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31334
31335         * string-icalls.c: Join ignores null strings in the source array.
31336         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
31337         * threads.c: GetAvailableTheads is slightly more accurate.
31338
31339 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
31340
31341         * threads.h threads.c : add mono_threads_set_default_stacksize
31342         and pass default to CreateThread calls.
31343
31344 2003-10-09  Dick Porter  <dick@ximian.com>
31345
31346         * icall.c:
31347         * locales.h:
31348         * locales.c: Internal calls for constructing CultureInfo and
31349         related objects from libicu (if its available.)
31350
31351 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
31352
31353         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
31354
31355 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31356
31357         * threadpool.c: added an argument to async_invoke_thread that is the
31358         item to process, pass the MonoAsyncResult to the thread start function
31359         when creating a new thread. This way we don't need to acquire any lock
31360         when we're creating a new thread. Readded a semaphore for faster
31361         response times (instead of that Sleep i added).
31362
31363 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
31364
31365         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
31366         get daylight change dates better on Windows, fix handling
31367         of platforms without tm_gmtoff.
31368
31369 2003-10-06  Martin Baulig  <martin@ximian.com>
31370
31371         * class.c (inflate_generic_method): Renamed to
31372         mono_class_inflate_generic_method() and made public.
31373         (mono_class_init): Don't inflate the generic methods here.
31374         (mono_class_from_generic): Added `gboolean inflate_methods'
31375         argument.  Inflate the methods here.
31376
31377         * loader.c (mono_method_get_param_names): Ignore instances of
31378         generic types for the moment.
31379
31380         * reflection.c (fixup_method): Added support for inflated methods.
31381         (mono_image_create_token): Use mono_image_get_methodref_token()
31382         for inflated methods.
31383         (mono_custom_attrs_from_param): Ignore instances of generic types
31384         for the moment.
31385         (mono_reflection_bind_generic_parameters): New public function.
31386         Moved all the functionality from
31387         ves_icall_Type_BindGenericParameters() here and added support for
31388         dynamic types.
31389         (mono_reflection_define_generic_parameter): Initialize
31390         `klass->methods' here.
31391
31392         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
31393         functionality into mono_reflection_define_generic_parameter().
31394         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
31395         TypeBuilder, return that TypeBuilder.
31396
31397 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31398
31399         * appdomain.c: removed mono_delegate_semaphore.
31400
31401         * threadpool.c:
31402         (mono_thread_pool_add): moved hash table creation inside and the thread 
31403         creation outside of the critical region.
31404         (mono_thread_pool_finish): removed obsolete code.
31405         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
31406         continue or exit the thread depending on the queue.
31407
31408 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
31409
31410         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
31411         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
31412         handle more bool marshalling options
31413
31414 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
31415
31416         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
31417         arrays of structs. Also add a more descriptive error message when
31418         a structure member is marshalled as LPArray.
31419
31420 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
31421
31422         * marshal.c (mono_marshal_get_native_wrapper): Add support for
31423         marshalling arrays of complex types. Fixes #29098. Also remove an
31424         usused and incomplete function.
31425
31426 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
31427
31428         * gc.c: report heap_size - free_bytes as total memory allocated
31429         (bug#49362).
31430
31431 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
31432
31433         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
31434         fix timezone handling problems on Windows.
31435         
31436         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
31437         asserts when the year is outside the range handled by ms the functions.
31438
31439         * class.c (setup_interface_offsets): If the class is an interface,
31440         fill out its interface_offsets slot.
31441
31442 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31443
31444         * threadpool.c: mark threadpool threads as background.
31445
31446 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
31447
31448         * decimal.c - define DECINLINE to nothing if not using GCC
31449
31450 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
31451
31452         * assembly.c: More refcount fixes.
31453
31454 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31455
31456         * string-icalls.c: if we're not trimming, return the same string.
31457         When not splitting, don't create a new string.
31458
31459 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31460
31461         * image.c:
31462         (mono_image_open): increment the ref_count inside the critical section.
31463
31464 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
31465
31466         * image.c (mono_image_open): Fix reference counting bug.
31467
31468 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
31469
31470         * marshal.c (mono_marshal_type_size) struct alignment changed for 
31471         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
31472         64bits. Avoid leak in mono_marshal_get_native_wrapper when
31473         mono_lookup_pinvoke_call throws.        
31474
31475 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
31476
31477         * reflection.c (mono_reflection_parse_type): Fix #49114.
31478
31479         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
31480         temporary workaround for cygwin header problem.
31481
31482         * object.c (mono_object_isinst): Synchronize this with the code
31483         generated by the JIT for casts.
31484
31485 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
31486
31487         * reflection.c (encode_type): Fix #38332.
31488
31489 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
31490
31491         * marshal.c (mono_marshal_method_from_wrapper): New function to return
31492         the original method from the wrapper method.
31493
31494 2003-09-25  Martin Baulig  <martin@ximian.com>
31495
31496         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
31497         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
31498         (ves_icall_Type_get_IsGenericInstance): New interncall.
31499
31500 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
31501
31502         * object.c: fix cast warning in big endian code.
31503
31504 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
31505
31506         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
31507         
31508 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31509
31510         * assembly.c: don't call check_env from mono_assembly_load. It's
31511         already done once in mono_assemblies_init and may cause headaches when
31512         multiple threads are loading assemblies.
31513
31514 2003-09-19  Martin Baulig  <martin@ximian.com>
31515
31516         * reflection.c (mono_reflection_define_generic_parameter): Don't
31517         allocate `klass->methods', set `klass->flags' to
31518         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
31519
31520 2003-09-18  Martin Baulig  <martin@ximian.com>
31521
31522         * class.c (mono_class_init): Don't create `class->methods' if it's
31523         already initialized.
31524
31525         * metadata.c (mono_metadata_load_generic_params): Make this
31526         actually work.
31527
31528         * reflection.c (mono_reflection_define_generic_parameter): Set
31529         parent class and interfaces from the constraints.
31530
31531         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
31532         to keep this struct in sync with the declaration in TypeBuilder.cs.
31533
31534 2003-09-17  Martin Baulig  <martin@ximian.com>
31535
31536         * metadata.h (MonoType): Replaced the data's `int type_param'
31537         field with `MonoGenericParam *generic_param'.
31538         (MonoGenericParam): Added `MonoClass *klass'.
31539
31540         * class.c (mono_class_from_gen_param): Removed the
31541         `MonoImage *image' and `int type_num' arguments.
31542
31543         * metadata.c (mono_metadata_parse_generic_param): New static
31544         method; creates a MonoGenericParam which just contains the index.
31545         (do_mono_metadata_parse_type): Call
31546         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
31547         MONO_TYPE_MVAR.
31548
31549         * reflection.c (mono_image_typedef_or_ref): Generic type
31550         parameters may be in the same assembly, but never use a typedef
31551         for them.
31552         (mono_reflection_define_generic_parameter): We're now creating a
31553         "real" class for the type parameter; it's now safe to call
31554         mono_class_from_mono_type() on the class'es type, it'll do the
31555         right thing.
31556
31557 2003-09-16  Martin Baulig  <martin@ximian.com>
31558
31559         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
31560         `symfile->range_entry_size' and `symfile->class_entry_size' here;
31561         the `symfile' data structure must be fully initialized before it
31562         gets added to the table.
31563
31564 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
31565
31566         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
31567
31568         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
31569         class init trampolines.
31570
31571 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
31572
31573         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
31574         to the built-in profiler to turn off time and allocation profiling
31575         respectively.
31576
31577 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
31578
31579         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
31580         g_direct_equal.
31581
31582         * debug-helpers.c (mono_method_full_name): Print the wrapper type
31583         in human readable form.
31584
31585 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
31586
31587         * reflection.c icall.c: Fixed warnings.
31588
31589         * image.c (load_class_names): Use a temporary hash table to hold the
31590         namespaces in order to avoid doing many string comparisons.
31591
31592         * image.h: Fix typo.
31593
31594         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
31595         Pass NULL instead of g_direct_equal to the GHashTable constructor 
31596         since the NULL case is short-circuited inside g_hash_table_lookup, 
31597         leading to better performance.  
31598
31599         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
31600         obtain the first custom attribute for a given index. Depends on the
31601         CustomAttribute table being sorted by the parent field.
31602
31603         * reflection.c (mono_custom_attrs_from_index): Use the new function 
31604         for better performance.
31605
31606 2003-09-07  Martin Baulig  <martin@ximian.com>
31607
31608         * class.c (mono_class_init): If we're a generic instance, inflate
31609         all our methods instead of loading them from the image.
31610         (mono_class_from_generic): Set `class->methods = gklass->methods'.
31611
31612 2003-09-07  Martin Baulig  <martin@ximian.com>
31613
31614         * mono-debug-debugger.c: Added support for constructors.
31615
31616 2003-09-06  Martin Baulig  <martin@ximian.com>
31617
31618         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
31619         New interncall.
31620
31621         * reflection.c (mono_reflection_setup_generic_class): Call
31622         ensure_runtime_vtable() to create the vtable.
31623
31624 2003-09-05  Martin Baulig  <martin@ximian.com>
31625
31626         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
31627         MONO_TYPE_MVAR.
31628
31629 2003-09-04  Martin Baulig  <martin@ximian.com>
31630
31631         * reflection.c (mono_reflection_define_generic_parameter): Generic
31632         parameters start with zero.
31633
31634 2003-09-04  Martin Baulig  <martin@ximian.com>
31635
31636         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
31637
31638         * reflection.h (MonoReflectionGenericParam): New typedef.
31639         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
31640         the generic parameters from the managed TypeBuilder.
31641
31642         * reflection.c (mono_reflection_define_generic_parameter): New function.
31643         (mono_reflection_create_runtime_class): Encode generic parameters.
31644         (mono_reflection_setup_generic_class): New function; this is
31645         called after adding adding all generic params to the TypeBuilder.
31646         (encode_type): Added MONO_TYPE_VAR.
31647
31648 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
31649
31650         * class.h class.c (mono_class_needs_cctor_run): Moved this method
31651         here from the JIT.
31652
31653         * assembly.h assembly.c: Moved the AOT loading code into an assembly
31654         load hook.
31655
31656 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
31657
31658         * reflection.h reflection.c class.h class.c: Delete duplicate 
31659         definition of mono_type_get_name () from reflection.c and export the
31660         one in class.c.
31661
31662         * class.c: Class loading fixes from Bernie Solomon 
31663         (bernard@ugsolutions.com).
31664
31665         * reflection.c: Endianness fixes from Bernie Solomon 
31666         (bernard@ugsolutions.com).
31667         
31668 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
31669
31670         * assembly.h assembly.c: Define a file format version for AOT
31671         libraries.
31672         
31673         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
31674
31675         * appdomain.h (MonoJitInfo): New field to determine whenever the
31676         code is domain neutral.
31677         
31678 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
31679
31680         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
31681
31682 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
31683
31684         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
31685         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
31686         Avoid caching the result since strings must be domain specific. Fixes
31687         #48050.
31688
31689 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
31690
31691         * marshal.c (mono_marshal_init): Make this callable multiple times
31692         since it is hard to find a correct place to call it.
31693
31694         * object.c (mono_runtime_class_init): Execute static constructors in
31695         the correct appdomain.
31696
31697         * image.c (build_guid_table): Handle the case when multiple images have
31698         the same GUID.
31699
31700 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31701
31702         * icall.c: added a couple of icalls for System.Web.
31703
31704 2003-08-28  Martin Baulig  <martin@ximian.com>
31705
31706         * icall.c (ves_icall_Type_BindGenericParameters): Use
31707         `klass->generic_inst' instead of `&klass->byval_arg' in the
31708         mono_type_get_object() call.  The returned type must be
31709         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
31710
31711 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
31712
31713         * NOTES: New file.
31714
31715         * object.c (mono_class_proxy_vtable): Make it thread safe.
31716
31717         * pedump.c: Fix warning.
31718
31719         * object.c appdomain.h: Get rid of metadata_section. 
31720         It is no longer needed and it was causing deadlocks with domain->lock.
31721
31722         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
31723
31724 2003-08-26  Martin Baulig  <martin@ximian.com>
31725
31726         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
31727
31728 2003-08-26  Martin Baulig  <martin@ximian.com>
31729
31730         * pedump.c (main): Call mono_metadata_init(),
31731         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
31732         and mono_loader_init().
31733
31734 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
31735
31736         * loader.h: Add missing include to fix build.
31737
31738         * image.h: mono_image_load_references is no more.
31739
31740         * assembly.c: Reworked assembly loading to make it really thread safe.
31741         After these changes, the assembly returned by mono_assembly_open is
31742         fully initialized, i.e. all its references assemblies are loaded.
31743
31744         * assembly.c (mono_image_load_references): Renamed to 
31745         mono_assembly_load_references, and made private, since clients no
31746         longer need to call it.
31747
31748         * class.c: Removed calls to mono_assembly_load_references, since it was
31749         a source of deadlocks.
31750
31751         * loader.h loader.c class.h class.c: Protect data structures using a 
31752         new lock, the loader lock.
31753
31754         * class.c (mono_class_setup_vtable): Create temporary hash tables and
31755         GPtrArrays only when needed.
31756
31757         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
31758         into empty structures by mcs. Fixes pinvoke7.cs.
31759         
31760         * domain.c (mono_init): Call a new initialization function.
31761
31762         * appdomain.c (mono_runtime_init): Call the new initializer function
31763         of the marshal module.
31764
31765         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
31766         inserted into empty structures by mcs. Fixes pinvoke7.cs.
31767
31768         * marshal.h marshal.c: Added locks around the wrapper caches to make
31769         this module thread safe.
31770
31771         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
31772         this argument. Fixes pinvoke1.exe.
31773
31774 2003-08-25  Lluis Sanchez <lluis@ximian.com>
31775
31776         * object.h: Added call_type field to MonoMethodMessage and the corresponding
31777         enumeration of values. Removed fields to store remote call output values in
31778         MonoAsyncResult. Not needed any more.
31779         * object.c: Initialize call_type and async_result fields in mono_message_init.
31780         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
31781         dispatching the message.
31782         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
31783         async call to finish. To do it use a message with EndInvoke call type.
31784
31785 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
31786
31787         * loader.h loader.c (mono_method_hash_marhal_info): New function which
31788         determines whenever a method has marshalling info.
31789
31790 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31791
31792         * assembly.c: fix the build on windows.
31793
31794 2003-08-22 Lluis Sanchez <lluis@ximian.com>
31795
31796         * object.cs: Fixed bug #47785.
31797
31798 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
31799
31800         * string-icalls.c (StringReplace): If their are no occurances of
31801         the old string found return a reference to the supplied
31802         string. This saves some memory and matches MS behavoir.
31803         
31804 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31805
31806         * socket-io.c: fixed compilation for systems that define AF_INET6
31807         and don't define SOL_IP/SOL_IPV6.
31808
31809 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
31810
31811         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
31812         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
31813
31814         * rawbuffer.c rawbuffer.h: Make this module thread safe.
31815
31816         * domain.c: Make this module thread safe.
31817
31818         * domain.c (mono_init): Call new initialization function.
31819
31820         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
31821         reference types too. Fixes #38812.
31822
31823         * image.c (mono_image_init): Fixed warnings.
31824
31825         * class.c (mono_class_from_typeref): Handle assembly load failure
31826         correctly.
31827
31828         * appdomain.c (add_assemblies_to_domain): Handle the case when
31829         the references of an assembly are not yet loaded.
31830
31831         * metadata.c image.c assembly.c: Moved initialization of global
31832         variables to a separate function called at startup since lazy 
31833         initialization of these variables is not thread safe.
31834         
31835         * image.c assembly.c: Made this module thread safe by adding locks in 
31836         the appropriate places.
31837
31838         * domain.c (mono_init): Call the new initialization functions of the
31839         three modules.
31840
31841 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
31842
31843         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
31844           make a direct call. It is proxy's work to make the call asynchronous.
31845           mono_delegate_end_invoke(): If the targe is a proxy, just collect
31846           the return values.
31847         * object.cs: mono_method_call_message_new(): read AsyncResult and
31848           state object from parameters list, if this info is requested.
31849         * object.h: Added fields to store remote call output values in
31850           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
31851
31852 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
31853
31854         * object.h: add needed fields to MonoThread.
31855         * threads.c, threads.h: allow registering a function to cleanup data
31856         allocated per thread by the JIT.
31857
31858 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
31859
31860         * loader.h: portability fix by Bernie Solomon
31861         * <bernard@ugsolutions.com>.
31862
31863 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
31864
31865         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
31866         return a MonoArray. This simplifies the code and also ensures that
31867         the cache allways contains an object reference as a value.
31868
31869         * icall.c (ves_icall_get_parameter_info): Simplified using the new
31870         function.
31871
31872 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31873
31874         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
31875         fixes a problem with byte ordering when getting the address family for
31876         a socket.
31877
31878 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
31879
31880         * .cvsignore: Added monosn.
31881
31882         * reflection.h reflection.c loader.c: Added support for parameter
31883         marshalling to dynamically created types. Fixes #47295.
31884
31885 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
31886
31887         * rand.c: remove useless warnings.
31888
31889 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
31890
31891         * class.c: implemented ldtoken for methods and fieldrefs.
31892
31893 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31894
31895         * threadpool.c: when mono_async_invoke was called, no one took care of
31896         monitoring the queue. So if the method invoked took some time and we
31897         got new async invoke requests after 500 ms (the thread created waited
31898         that long in WaitForSingleObject), the new async invoke was not called
31899         until the previous one finished.
31900
31901         This is fixed now. Thanks to Totte for helping with it.
31902
31903 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31904
31905         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
31906
31907 2003-08-11  Martin Baulig  <martin@ximian.com>
31908
31909         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
31910
31911 2003-08-06  Martin Baulig  <martin@ximian.com>
31912
31913         * mono-debug-debugger.c: Added support for static fields,
31914         properties and methods.
31915
31916 2003-08-06  Martin Baulig  <martin@ximian.com>
31917
31918         * mono-debug-debugger.c: Don't store the MonoString's vtable to
31919         make this work for applications with multiple application domains.
31920
31921 2003-08-04  Martin Baulig  <martin@ximian.com>
31922
31923         * mono-debug-debugger.c: Completely reworked the type support; the
31924         most important thing is that we're now just using one single
31925         `MonoType' instance per type.
31926
31927 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
31928
31929         * mono-endian.h, mono-endian.c, icall.c: Added icall
31930         ves_icall_System_Double_AssertEndianity to assert double word endianity
31931         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
31932
31933 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
31934
31935         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
31936         support, icalls and fixes.
31937
31938 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
31939
31940         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
31941         classes that are a punctuation character in .NET is not the same a
31942         g_unichar_ispunct.
31943
31944 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
31945
31946         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
31947
31948 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
31949
31950         * icall.c: Add new MemCopy internalcall.
31951         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
31952         Simplified code; It is not necessary to handle all the cases here,
31953         as the C# code takes care of it.  Only handle the case of the name
31954         resource embedded into the assembly.
31955
31956         Changed signature to return the data pointer and the size of the
31957         data. 
31958
31959 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
31960
31961         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
31962         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
31963
31964 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
31965
31966         * socket-io.c: ignore EINTR error in select.
31967
31968 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
31969
31970         * class.h, class.c: removed unused subclasses field in MonoClass.
31971
31972 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
31973
31974         * icall.c: improve fix of get_base_definition(). If the parent class
31975           doesn't have the mehod, look at the parent of the parent.
31976         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
31977           to check if a parameter is an in or out parameter
31978           (PARAM_ATTRIBUTE_IN is not set by default).
31979           mono_method_return_message_restore(): Use mono_class_value_size to
31980           get the size of a value type. mono_type_stack_size (parameterType)
31981           does not return the correct value if parameterType is byRef.
31982           mono_load_remote_field(), mono_load_remote_field_new(),
31983           mono_store_remote_field(), mono_store_remote_field_new():
31984           raise exception if the remote call returns an exception.
31985
31986 2003-07-28  Martin Baulig  <martin@ximian.com>
31987
31988         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
31989         method.  This is a wrapper around mono_runtime_invoke() which
31990         boxes the instance object if neccessary.
31991
31992 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
31993
31994         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
31995         metadata.h, row-indexes.h, verify.c: first cut of generics support.
31996
31997 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
31998
31999         * icall.c: disable mcs bug workaround.
32000
32001 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
32002
32003         * object.c (mono_runtime_class_init): Take the metadata_section
32004         mutex before obtaining the domain mutex.
32005
32006         * appdomain.h: Added definition of metadata_section mutex here. 
32007
32008         * object.c: define metadata_mutex here.
32009
32010 2003-07-24  Ravi Pratap  <ravi@ximian.com>
32011
32012         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
32013         fixed.
32014
32015 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
32016
32017         * reflection.c: Fix bug #46669
32018
32019 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32020
32021         * exception.c:
32022         * exception.h:
32023         * icall.c:
32024         * object.h: fill in the type name for TypeLoadException.
32025
32026 2003-07-23  Ravi Pratap  <ravi@ximian.com>
32027
32028         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
32029         relationship between TypeBuilders while compiling corlib) and bug
32030         45993 (Array types returned from the runtime while compiling
32031         corlib were from the loaded corlib).
32032
32033 2003-07-22  Martin Baulig  <martin@ximian.com>
32034
32035         * mono-debug-debugger.c: Reworked the type support a bit more;
32036         distinguish between types and classes.
32037
32038 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
32039
32040         * icall.c: add IsArrayImpl icall.
32041
32042 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
32043
32044         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
32045         initializing real_size only once. Also fix bug #46602.
32046
32047 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
32048
32049         * object.c: Renamed mono_metadata_section to metadata_section.
32050
32051 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
32052
32053         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
32054           empty array if the type is an array. Fixed.
32055           ves_icall_MonoMethod_get_base_definition: if the base method
32056           is abstract, get the MethodInfo from the list of methods of
32057           the class.
32058         * reflection.c: ParameterInfo.PositionImpl should be zero-based
32059           and it was 1-based. Fixed in mono_param_get_objects.
32060
32061 2003-07-20  Martin Baulig  <martin@ximian.com>
32062
32063         * mono-debug.h: Set version number to 31.
32064         (mono_debug_init): Added `MonoDomain *' argument.
32065
32066         * mono-debug-debugger.c: Reworked the type support; explicitly
32067         tell the debugger about builtin types; pass the `klass' address to
32068         the debugger.
32069
32070 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
32071
32072         * image.c: Allow new metadata tables to be loaded without a
32073         warning. Also update the warning message to give the new constant value.
32074                 
32075 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
32076
32077         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
32078         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
32079         array type representation changes.
32080
32081 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
32082
32083         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
32084         on Environment.Exit () call.
32085
32086 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
32087
32088         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
32089         requires a matching corlib.
32090
32091 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
32092
32093         * Changelog: My editor decided to add a CR to each line. Sorry about that.
32094           Committed again without the CRs.
32095         
32096 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
32097
32098         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
32099           getting it from the "this" socket instance. Did not work
32100           if the socket is a subclass of Socket.
32101           Also fixed bug #35371.
32102
32103 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
32104
32105         * metadata.c: fixed size for TypedByRef.
32106         * loader.c: when searching for a method, consider the vararg amrker.
32107         * unicode.c, decimal.c: constify some arrays.
32108
32109 2003-07-15  Dick Porter  <dick@ximian.com>
32110
32111         * socket-io.c: Fixed compilation for gcc < 3.2.
32112
32113         Fixed compilation for machines that don't have AF_INET6 (thanks to
32114         Bernie Solomon <bernard@ugsolutions.com> for that part.)
32115
32116         Fixed compile warnings.
32117         
32118         Fixed formatting and line endings.
32119
32120 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
32121
32122         * socket-io.h:
32123         * socket-io.c: Added IPv6 support.
32124
32125 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
32126
32127         * class.c (mono_class_is_assignable_from): New function to implement
32128         the is_assignable_from logic. Used by mono_object_isinst, 
32129         Type::IsAssignableFrom () and the interpreter.
32130
32131         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
32132         Object, even interfaces.
32133         
32134         * object.c (mono_object_isinst): Implement in terms of 
32135         is_assignable_from.
32136
32137         * icall.c (ves_icall_type_is_assignable_from): New icall.
32138
32139 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
32140
32141         * domain.c (foreach_domain): fix compiler warning.
32142
32143 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
32144
32145         * image.c (load_metadata_ptrs): use g_strndup because strndup is
32146         not available on all plattforms
32147
32148 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
32149
32150         * image.h image.c: Store the metadata version string in MonoImage.
32151         * icall.c: New icall to retrieve the image version.
32152         * reflection.c (create_dynamic_image): Fill in the image version field
32153         * reflection.c (build_compressed_metadata): Use the image version
32154         from the image structure.
32155
32156 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32157
32158         * appdomain.c: modified comment.
32159         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
32160         That will be its last iteration when mono_gc_cleanup is called from
32161         mono_runtime_cleanup and before the domain is unloaded.
32162
32163         Fixes bug #45962.
32164
32165 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
32166
32167         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
32168         attributes.
32169
32170 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32171
32172         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
32173         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
32174         Bernie Solomon <bernard@ugsolutions.com>.
32175
32176 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
32177
32178         * object.c, object.h: provide mono_object_new_fast() for faster
32179         allocation in some special cases.
32180
32181 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
32182
32183         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
32184         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
32185
32186 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
32187
32188         * threadpool.c: fix leaks.
32189
32190 2003-07-01  Dick Porter  <dick@ximian.com>
32191
32192         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
32193         using MonoGHashTables.  Fixes threadpool bug posted to list.
32194
32195 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
32196
32197         * image.h, image.c: added support to load an assembly from a byte array.
32198         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
32199         assembly bundle support.
32200
32201 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
32202
32203         * threadpool.c (mono_thread_pool_add): keep a reference to the
32204         AsyncResult to prevent GC
32205
32206 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
32207
32208         * class.c: leak fix.
32209
32210 2003-06-25  Dick Porter  <dick@ximian.com>
32211
32212         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
32213         for the async object, the WaitHandle object will close the handle.
32214         Fixes bug 45321.
32215
32216 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
32217
32218         * class.c: in mono_array_class_get (), lookup from the hash with the
32219         same type we insert: this works around a bug in
32220         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
32221         lluis. The real fix will have to wait for after the release.
32222
32223 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
32224
32225         * icall.c: fix memory leak when getting type members.
32226
32227 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
32228
32229         * reflection.c: added more pubtoken special cases.
32230
32231 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
32232
32233         * class.c: handle field offset correctly when class size
32234         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
32235
32236 2003-06-20  Martin Baulig  <martin@ximian.com>
32237
32238         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
32239         *image' field.
32240
32241 2003-06-20  Martin Baulig  <martin@ximian.com>
32242
32243         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
32244
32245 2003-06-20  Martin Baulig  <martin@ximian.com>
32246
32247         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
32248         just distinguish between variables in registers and variables at
32249         an offset relative to a register.
32250
32251 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32252
32253         * icall.c: #ifdef out latest changes until mcs is fixed.
32254
32255 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
32256
32257         * icall.c: return members in metadata order.
32258
32259 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
32260
32261         * icall.c: avoid infinite loop in GetTimeZoneData.
32262
32263 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
32264
32265         * icall.c: added Marshal.Prelink/All icalls.
32266
32267 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
32268
32269         * object.c, object.h: fix warnings and do some overflow checking
32270         when creating arrays.
32271
32272 2003-06-17  Dick Porter  <dick@ximian.com>
32273
32274         * file-io.h:
32275         * file-io.c: File attributes need to be tweaked slightly when
32276         passed from the managed to the w32 world.
32277
32278 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
32279         * profiler.h profiler-private.h profiler.c: Rework last patch
32280         based on suggestion by Paolo.
32281         
32282 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
32283
32284         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
32285         instruction level coverage data collection.
32286         * profiler.h profiler.c (: Added new callback function which can be
32287         used by the profiler to limit which functions should have coverage
32288         instrumentation.
32289         * profiler.c (mono_profiler_load): Call g_module_build_path to
32290         generate the file name of the profiler library.
32291
32292 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
32293
32294         * profiler.c, profiler.h, profiler-private.h: added basic block 
32295         coverage profiling API.
32296
32297 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
32298
32299         * reflection.c (mono_reflection_create_runtime_class): Add support
32300         for events in dynamically generated code.
32301
32302         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
32303         not allocated.
32304
32305 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
32306
32307         * icall.c: when getting timezone info, return reasonable values if we
32308         can't get the actual data.
32309
32310 2003-06-14  Dick Porter  <dick@ximian.com>
32311
32312         * threads.c (start_wrapper): Remove the reference to the thread
32313         object in the TLS data, so the thread object can be finalized.
32314         This won't be reached if the thread threw an uncaught exception,
32315         so those thread handles will stay referenced :-( (This is due to
32316         missing support for scanning thread-specific data in the Boehm GC
32317         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
32318
32319 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
32320
32321         * reflection.c: ensure streams and tables are first allocated with
32322         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
32323
32324 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32325
32326         * icall.c: fixed GetElementType for byrefs (bug# 44792).
32327
32328 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
32329
32330         * reflection.c (mono_reflection_create_runtime_class): Add support for
32331         properties to dynamically created classes.
32332         * reflection.c: Fix a few places where non-MonoObjects were inserted
32333         into the tokens hashtable.
32334
32335 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32336
32337         * object.c: some support to handle out of memory exceptions.
32338
32339 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
32340
32341         * marshal.c (mono_marshal_get_native_wrapper): support reference
32342         return types
32343
32344 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
32345
32346         * object.h, object.c: more portability stuff from Bernie Solomon.
32347         Unexport mono_object_allocate(). Added mono_object_unbox ().
32348         Set exitcode when an unhandled exception is thrown.
32349
32350 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
32351
32352         * marshal.c (mono_marshal_get_native_wrapper): use custom
32353         marshaler for return types.
32354
32355 2003-06-10  Dick Porter  <dick@ximian.com>
32356
32357         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
32358         ip_mreq is available
32359
32360 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
32361
32362         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
32363         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
32364         by Bernie Solomon <bernard@ugsolutions.com>.
32365
32366 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
32367
32368         * gc.c (mono_gc_init): Avoid error message on shutdown when
32369         GC_DONT_GC=1 is used.
32370
32371         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
32372         New icall to return the GUID of a module.
32373
32374 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
32375
32376         * class.c: ensure instance size always includes the parent's size
32377         even whem class size is set explicitly (fixes bug#44294).
32378
32379 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
32380
32381         * profiler.h, profiler.c: made the simple profiler thread-safe,
32382         get more accurate timing info. Allow the loading of an
32383         externally-developed profiler module.
32384
32385 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
32386
32387         * marshal.c (mono_marshal_get_native_wrapper): improved
32388         class/byref arguments.
32389         (mono_marshal_get_native_wrapper): better string marshaling support.
32390
32391 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
32392
32393         * class.c: ensure .pack and .size are handled correctly and
32394         simplified layout of static fields.
32395
32396 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
32397
32398         * appdomain.c
32399         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
32400
32401         * loader.c (mono_lookup_pinvoke_call): look for modules in the
32402         current directory (fix bug 44008)
32403
32404 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
32405
32406         * marshal.c (mono_marshal_get_native_wrapper): started support for
32407         custom marshalers.
32408         (mono_delegate_to_ftnptr): consider marshalling specifications
32409
32410 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
32411
32412         * reflection.c, reflection.h: emit custom marshal info.
32413
32414 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32415
32416         * object.c: free the GError.
32417         * icall.c: added CloseEvent_internal.
32418         * threads.[ch]:
32419         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
32420         call.
32421
32422 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
32423
32424         * loader.c (mono_method_get_signature): Add support for dynamic
32425         assemblies.
32426
32427 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
32428
32429         * reflection.c: fixed bug #43905.
32430
32431 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
32432
32433         * class.c, domain.c, icall.c, metadata.h, object.h: support for
32434         handling TypedReference and ArgIterator.
32435         * loader.c, loader.h: added function to get signature at call site.
32436
32437 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32438
32439         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
32440         data readonly. Buglets and warning fixes. Some MethodSpec support.
32441
32442 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
32443
32444         * class.h, class.c, object.c: remove relative numbering support.
32445
32446 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
32447
32448         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
32449         free the string, until we get a chance to fix Gtk#
32450
32451 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32452
32453         * marshal.c: revert last patch.
32454
32455 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
32456
32457         * icall.c: updates for new mono_class_vtable() not calling
32458         the type constructor anymore.
32459
32460 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
32461
32462         * object.h, object.c: separate vtable creation from type
32463         initialization. Make running the .cctor thread safe.
32464
32465 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
32466
32467         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
32468
32469 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
32470
32471         * loader.c (mono_get_method): consider calling convention
32472
32473 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
32474
32475         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
32476         to return the invisible global type for a module.
32477
32478         * reflection.c (mono_image_build_metadata): Emit global fields too.
32479
32480 2003-05-20  Peter Williams  <peterw@ximian.com>
32481
32482         * loader.c (mono_lookup_internal_call): Add a few newlines.
32483
32484 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
32485
32486         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
32487         literal strings.
32488
32489         * appdomain.c (set_domain_search_path): Recalculate search path when
32490         AppDomainSetup.PrivateBinPath changes.
32491
32492         * object.c (mono_class_compute_gc_descriptor): It turns out some
32493         parts of the class libs (like System.Thread) holds pointers to
32494         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
32495         to treat native int a pointer type here.
32496         
32497 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
32498
32499         * appdomain.h, domain.c: add hashtable for jump target resolution.
32500
32501 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
32502
32503         * reflection.h reflection.c icall.c: Added new icalls 
32504         GetManifestResourceInfoInternal, GetModulesInternal and support
32505         infrastructure.
32506
32507 2003-05-16  Dick Porter  <dick@ximian.com>
32508
32509         * icall.c:
32510         * file-io.h:
32511         * file-io.c: Implement System.IO.MonoIO::GetTempPath
32512
32513 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
32514
32515         * object.c: mono_store_remote_field: little fix to previous patch.
32516
32517 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
32518
32519         * class.c: add constructors to array classes.
32520         * icall.c: special case array construction for InternalInvoke (),
32521
32522 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
32523
32524         * class.h class.c reflection.c object.c: Added support for field
32525         defaults in dynamically generated classes.
32526
32527 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
32528
32529         * reflection.c: properly encode charset for ddlimport.
32530
32531 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
32532
32533         * threads.c: allow compiling without GC.
32534
32535 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
32536
32537         * appdomain.h, object.c, object.h, threads.c, threads.h: added
32538         handling of thread static data.
32539
32540 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
32541
32542         * reflection.h, reflection.c: added mono_custom_attrs_free ().
32543
32544 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
32545
32546         * class.c (mono_array_class_get): always set the serializable flags
32547         (mono_array_class_get): always set the SEALED attribute for array types
32548
32549 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
32550
32551         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
32552         attributes (fix for bug 42021).
32553
32554 2003-05-12  Dick Porter  <dick@ximian.com>
32555
32556         * gc.c: Don't run finalizers when the finalizer thread is
32557         finishing up, because the default domain has already been
32558         destroyed.
32559
32560 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
32561
32562         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
32563         value is null, we should throw an exception.   This is slightly
32564         different than the other conventions used for the constructor.
32565
32566 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32567
32568         * socket-io.c: fixed windows build.
32569
32570 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32571
32572         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
32573
32574 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
32575
32576         * object.c (mono_string_new_wrapper): Compatibility fix for MS
32577         compilers.
32578
32579 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
32580
32581         * class.c (mono_class_layout_fields): Add experimental GC aware
32582         auto layout facility. Requires class library changes to work correctly.
32583
32584         (mono_class_setup_vtable): Avoid overriding explicit interface
32585         method implementations. Fixes iface3.exe test.
32586
32587         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
32588         object reference.
32589         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
32590         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
32591
32592         * metadata.h: Add new type classification macro which determines
32593         whenever the type holds an object reference.
32594
32595 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
32596
32597         * marshal.c (mono_marshal_get_native_wrapper): cleanups
32598
32599 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
32600
32601         * gc.c (finalizer_thread): Work around a GC bug.
32602
32603 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
32604
32605         * marshal.c (emit_struct_conv): allow unions
32606
32607         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
32608
32609 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
32610
32611         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
32612
32613 2003-05-06  Martin Baulig  <martin@ximian.com>
32614
32615         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
32616
32617 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32618
32619         * socket-io.c:
32620         (Select_internal): allow NULLs, don't create arrays if not needed.
32621         Coupled with Socket.cs changes.
32622
32623         * threadpool.c:
32624         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
32625         register a finalizer for it that will close the semaphore handle. This
32626         fixes the leak and make Lupus' test run with > 4080 loops.
32627
32628 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
32629
32630         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
32631         Jerome Laban (bug #42287)
32632
32633 2003-05-02  Martin Baulig  <martin@ximian.com>
32634
32635         * debug-mono-symfile.h
32636         (MonoSymbolFile): Moved declaration into mono-debug.h.
32637         (MonoDebugMethodJitInfo): Likewise.
32638         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
32639         argument.
32640         (_mono_debug_address_from_il_offset): Take a
32641         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
32642
32643         * mono-debug.h
32644         (MonoDebugDomainData): New struct.
32645         (mono_debug_get_domain_data): New function.
32646         (mono_debug_add_method): Take an additional `MonoDomain *'
32647         argument.
32648         (mono_debug_source_location_from_address): Likewise.
32649         (mono_debug_il_offset_from_address): Likewise.
32650         (mono_debug_address_from_il_offset): Likewise.
32651
32652 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
32653
32654         * reflection.c: one more check for null type in custom attrs.
32655
32656 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32657
32658         * reflection.c: avoid warning (comparison is always false due to limited
32659         range of data type).
32660
32661 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32662
32663         * icall.c: throw an exception in Type.GetField if the argument 'name'
32664         is NULL.
32665
32666 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
32667
32668         * reflection.c: fixed handling of enums in named arguments to custom
32669         attributes (bug #42123).
32670
32671 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
32672
32673         * reflection.c: use the right array element type and handle
32674         a null for a Type argument, too.
32675
32676 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
32677
32678         * reflection.c: handle arrays as arguments to custom attributes.
32679
32680 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
32681
32682         * reflection.c: handle a string value in a custom attr
32683         ctor that takes an object.
32684
32685 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
32686
32687         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
32688         (fix bug #42063)
32689
32690 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
32691
32692         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
32693
32694 2003-04-27  Martin Baulig  <martin@ximian.com>
32695
32696         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
32697         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
32698         MONO_DEBUGGER_EVENT_BREAKPOINT.
32699         (mono_breakpoint_trampoline_code): Removed.
32700         (mono_debugger_event_handler): The last argument is now a
32701         `guint32'.
32702         (mono_debugger_insert_breakpoint_full): Removed the
32703         `use_trampoline' argument.
32704         (mono_debugger_method_has_breakpoint): Likewise.
32705         (mono_debugger_trampoline_breakpoint_callback): Renamed to
32706         mono_debugger_breakpoint_callback(); take the method and
32707         breakpoint number as arguments.
32708
32709 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
32710
32711         * metadata.c: fix off by one when loading parameters attributes.
32712
32713 2003-04-24  Martin Baulig  <martin@ximian.com>
32714
32715         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
32716
32717 2003-04-24  Martin Baulig  <martin@ximian.com>
32718
32719         * mono-debug-debugger.c: Moved all code which interacts with the
32720         Mono Debugger here.
32721
32722         * debug-mono-symfile.c: This code now just deals with the symbol
32723         file itself, the debugger code is now in mono-debug-debugger.c.
32724
32725 2003-04-23  Martin Baulig  <martin@ximian.com>
32726
32727         * mono-debug.c (mono_debug_source_location_from_il_offset):
32728         New method; like mono_debug_source_location_from_address(), but
32729         takes an IL offset instead of a machine address.
32730
32731 2003-04-23  Martin Baulig  <martin@ximian.com>
32732
32733         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
32734         `line' field; this is now computed by the debugger.
32735
32736 2003-04-23  Martin Baulig  <martin@ximian.com>
32737
32738         * mono-debug.[ch]: New files.  This is the new debugging interface.
32739
32740         * mono-debug-debugger.[ch]: New files.  Moved all code which
32741         interacts with the Mono Debugger here.
32742
32743 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
32744
32745         * domain.c (mono_init): initialize mono_defaults.monitor_class
32746
32747 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
32748
32749         * reflection.c (method_encode_code): Add a spicy exception to help
32750         future compiler authors.
32751
32752 2003-04-21  Martin Baulig  <martin@ximian.com>
32753
32754         * icall.c
32755         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
32756         Make this work with relative pathnames; g_filename_to_uri() needs
32757         an absolute filename.
32758
32759 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
32760
32761         * icall.c: Track name changes in Object and ValueType.
32762
32763 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
32764
32765         * metadata.c (mono_type_stack_size): size should be a multiple of
32766         sizeof (gpointer)
32767
32768 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32769
32770         * gc.c:
32771         (internal_domain_finalize): moved into mono_domain_finalize. No need
32772         to create another thread because the finalizers will be run in the
32773         finalizer thread.
32774         
32775         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
32776         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
32777         to be run (MS does this too).
32778
32779 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
32780
32781         * object.c (mono_class_compute_gc_descriptor): Update comment.
32782
32783         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
32784
32785         * image.h: Add synchronized wrapper cache.
32786
32787         * image.c (do_mono_image_open): Initialize cache.
32788
32789         * reflection.c (create_dynamic_mono_image): Initialize cache.
32790
32791 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32792
32793         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
32794         ves_icall_System_Buffer_ByteLengthInternal.
32795
32796 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32797
32798         * reflection.c: setup klass->nested_in earlier. Allow
32799         a dash in the assembly name.
32800
32801 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
32802
32803         * metadata.c (mono_type_to_unmanaged): dont access
32804         type->data.klass for MONO_TYPE_OBJECT
32805         (mono_type_to_unmanaged): consider System.Delegate class
32806
32807 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
32808
32809         * class.c: just setup supertypes in the proper place instead of
32810         initializing the full element class for arrays.
32811
32812 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
32813
32814         * class.c: ensure the element class of arrays is initialized.
32815         Setup the supertype info for array classes, too.
32816
32817 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
32818
32819         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
32820
32821 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32822
32823         * Makefile.am: re-added -m option when running cygpath. This way,
32824         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
32825         separator.
32826         * mono-config.c: same codepath for locating mono config file for WIN32
32827         and the rest.
32828         * assembly.c: if mono_assembly_setrootdir is called, don't override
32829         the value set.
32830
32831 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32832
32833         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
32834         MONO_ASSEMBLIES variable.
32835
32836 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
32837
32838         * icall.c: added Assembly::GetNamespaces() icall.
32839
32840 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32841
32842         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
32843
32844 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
32845
32846         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
32847         * object.c: fixed bug in the construction of vtable for proxies
32848
32849 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
32850
32851         * object.c (mono_array_new): Mark mono_array_new as an icall.
32852
32853 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32854
32855         * class.c: fixed test for public method when overriding interfaces.
32856         Closes bug #40970.
32857
32858 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
32859
32860         * appdomain.h, domain.c: added mono_domain_foreach() to
32861         be able to access the currently loaded appdomains.
32862         * object.c: make string interning work across sppdomains.
32863         Mark some functions for use as icalls.
32864
32865 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
32866
32867         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
32868
32869         * reflection.h reflection.c: Allocate long living data using 
32870         GC_MALLOC_ATOMIC so the collector does not need to scan it.
32871
32872         * reflection.c: Double the allocation size in streams instead of
32873         increasing it, to prevent unneccesary copying on large assemblies.
32874         
32875         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
32876         creation if the assembly does not have the Run flag set.
32877
32878 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
32879
32880         * class.h: avoid the C++ keywords in header files (Jerome Laban
32881         spotted and fixed this).
32882
32883 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32884
32885         * object.c:
32886         (mono_unhandled_exception): fill in the arguments for the
32887         UnhandledException event. Only trigger that event for the default
32888         domain (as MS does).
32889
32890 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
32891
32892         * object.c: Improve typed allocation stuff based on suggestions from
32893         Paolo. Also turn it on if the GC library supports it.
32894
32895 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
32896
32897         * object.c object.h class.h: Added experimental typed allocation
32898         facility using the interfaces in gc_gcj.h.
32899
32900         * os/gc_wrapper.h: Added new include files.
32901         
32902 2003-04-03  Martin Baulig  <martin@ximian.com>
32903
32904         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
32905         which is not yet enabled by default.
32906
32907         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
32908         functions.
32909         (mono_gc_lock, mono_gc_unlock): New static functions.
32910
32911         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
32912         functions; stop/start the world for the garbage collector.  This
32913         is using the windows API; we need to complete the SuspendThread()/
32914         ResumeThread() implementation in the io-layer to make this work on Unix.
32915         (mono_gc_push_all_stacks): New public function; tells the garbage
32916         collector about the stack pointers from all managed threads.
32917
32918 2003-04-03  Martin Baulig  <martin@ximian.com>
32919
32920         * object.h (MonoThread): Added `gpointer stack_ptr'.
32921
32922         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
32923
32924 2003-04-03  Martin Baulig  <martin@ximian.com>
32925
32926         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
32927
32928 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
32929
32930         * reflection.c (typebuilder_setup_fields): Initialize field.first and
32931         field.last.
32932
32933 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
32934
32935         * loader.c (mono_lookup_internal_call): Report the corlib that is
32936         out of sync.
32937
32938 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
32939
32940         * icall.c (ves_icall_type_GetTypeCode): fixed check for
32941         System.DBNull (it's class not valuetype).
32942
32943 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
32944
32945         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
32946         if the array method was already assigned a token (fixes bug#40646).
32947
32948 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
32949
32950         * reflection.c (mono_reflection_get_type): Attempt type resolve even
32951         if no assembly is given.
32952
32953 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
32954
32955         * metadata.h: Added the new tables.
32956
32957         * row-indexes.h: Added definitions for new tables.
32958
32959         * metadata.c: Add schemas for new tables, and add support for
32960         computing the sizes of them.
32961
32962         * class.c: Update for handling the new type cases.
32963
32964 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
32965
32966         * metadata.h (MONO_TYPE_IS_VOID): new macro
32967
32968 2003-03-31  Martin Baulig  <martin@ximian.com>
32969
32970         * threads.h (MonoThreadCallbacks): Added `thread_created'.
32971
32972         * threads.c (mono_thread_new_init): Call `thread_created' in the
32973         mono_thread_callbacks.
32974
32975 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
32976
32977         * loader.h: added marshalbyrefobject_class to mono_defaults
32978         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
32979         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
32980           generation of output parameters.
32981           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
32982         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
32983           contextbound and the target object belongs to the context of the caller.
32984         * object.h: added context and unwrapped_server variables in MonoRealProxy.
32985         * object.c: Implemented support for interfaces and abstract classes
32986           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
32987           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
32988
32989 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
32990
32991         * class.h class.c (mono_class_is_subclass_of): New function.
32992         
32993         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
32994         routines for most common case (calls from ArrayList::ToArray).
32995
32996         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
32997         routine so programs which call Environment::Exit() can be profiled.
32998
32999         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
33000         Added MONO_ARCH_SAVE_REGS.
33001
33002         * icall.c (ves_icall_type_is_subtype_of): Use new function.
33003
33004 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
33005
33006         * blob.h: Add a couple of new MonoType types definitions.
33007
33008         * tabledefs.h: Add a couple of new call convs.
33009
33010 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
33011
33012         * reflection.h (MonoReflectionDynamicAssembly): track changes in
33013         the layout of the class.
33014
33015         * reflection.c (alloc_table): double the size on overflow to avoid
33016         unnecessary copying.
33017
33018         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
33019         avoid filling out metadata tables and blobs. Also set mb->ilgen to
33020         null so it can be garbage collected.
33021         
33022 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
33023
33024         * reflection.c (mono_reflection_get_type): Return the resolved type
33025         only if it is in the assembly we searched.
33026
33027         * reflection.c (ensure_runtime_vtable): Initialize method slots.
33028
33029         * class.c (mono_class_setup_vtable): Set the slot of the overriding
33030         method.
33031
33032 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33033
33034         * appdomain.c:
33035         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
33036         the right one is 'file:///blah', but MS allows it.
33037         * assembly.c:
33038         (mono_assembly_open): allow 'file://blah'
33039
33040         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
33041
33042 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
33043
33044         * socket-io.c: fixes bug #40310.
33045
33046 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
33047
33048         * reflection.c (mono_reflection_parse_type): handle deeply nested
33049         types correctly.
33050
33051         * reflection.c (mono_image_create_token): Use unique token values
33052         since they will be put into a hash table.
33053
33054         * class.c (mono_class_setup_vtable): If a method occurs in more than
33055         one place in the vtable, and it gets overriden, then change the
33056         other occurances too.
33057
33058         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
33059         object as return type.
33060
33061 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33062
33063         * icall.c: Deleted "ToString" implementation for double and float
33064         because they are full implemented in managed code.
33065
33066 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33067
33068         * reflection.c, reflection.h: implemented and exported functions
33069         to retrieve info about custom attributes.
33070
33071 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33072
33073         * appdomain.c: moved Uri handling to assembly.c
33074         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
33075         work when using a file Uri in *nix and windows.
33076
33077         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
33078         GetReferencedAssemblies.
33079
33080 2003-03-18  Dick Porter  <dick@ximian.com>
33081
33082         * icall.c: Rename a couple of internal calls
33083
33084         * threads.c: Set the thread state to Stopped when a thread exits.
33085         Fixes bug 39377.
33086
33087 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
33088
33089         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
33090         New icall.
33091
33092         * object.c (mono_class_vtable): fix warning.
33093
33094 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
33095
33096         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
33097
33098         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
33099         memory.
33100         (method_encode_clauses): Create exception info structures in the right
33101         order.
33102         (mono_reflection_setup_internal_class): Initialize supertypes field.
33103
33104         * class.c object.c: Handle interfaces which implement other interfaces 
33105         correctly.
33106
33107         * class.h class.c: Move the supertypes array initialization code into 
33108         a separate function so it can be used for dynamic types too. Also call
33109         it earlier, in mono_class_init(), since it can be used before the
33110         type is initialized.
33111
33112 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33113
33114         * Makefile.am:
33115         * assembly.c:
33116         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
33117
33118         * appdomain.c:
33119         * appdomain.h:
33120         * marshal.c:
33121         * object.c: remove warnings.
33122
33123 2003-03-13  Martin Baulig  <martin@ximian.com>
33124
33125         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
33126         (MonoDebugLexicalBlockEntry): New types.
33127
33128         * debug-mono-symfile.c
33129         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
33130
33131 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33132
33133         * process.c: ret can be any non-zero value accroding to MS doc.
33134
33135 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
33136
33137         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
33138         fixing a warning for a miss-used prototype, would have cause
33139         random memory corruption.
33140
33141 2003-03-07  Martin Baulig  <martin@ximian.com>
33142
33143         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
33144         getting really annoying ....
33145
33146 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
33147
33148         * reflection.c (fixup_method): added support for array methods.
33149
33150 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
33151
33152         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
33153         (pointed out by Michael Adams).
33154
33155 2003-03-04  Dick Porter  <dick@ximian.com>
33156
33157         * icall.c: Temporarily reverted the Double and Single ToString()
33158         change, because it broke nunit.
33159
33160 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
33161
33162         * object.h, threads.h: make include files compatible with C++
33163         (patch by Jerome Laban <jlaban@wanadoo.fr>).
33164
33165 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33166
33167         * icall.c: Erased ToString helper functions for Double and Single.
33168         Now, that implementations ar all in managed code (Double and Single
33169         Formatters).
33170
33171 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
33172
33173         * appdomain.c: Added method for initializing the default context of
33174         a domain. Added internal call for getting the default context.
33175         * appdomain.h: Added context variable in MonoDomain struct.
33176         * domain.c: mono_domain_set also sets the default context of the domain
33177         * icall.c: Mapped internal method InternalGetDefaultContext.
33178         * object.c: mono_object_get_virtual_method returns always a remoting
33179         wrapper if the object is a transparent proxy.
33180         mono_runtime_invoke_array: when creating an object by calling the
33181         constructor, if the created object is a proxy, then the constructor should
33182         be called using the a remoting wrapper.
33183
33184 2003-03-03  Dick Porter  <dick@ximian.com>
33185
33186         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
33187         variable so it compiles on solaris.  Problem spotted by
33188         Christopher Taylor <ct@cs.clemson.edu>
33189
33190 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33191
33192         * appdomain.c:
33193         (get_info_from_assembly_name): don't leak value.
33194
33195         * icall.c:
33196         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
33197         result.
33198
33199 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
33200
33201         * assembly.c: export mono_image_load_references ().
33202         * class.c: handle function pointers. mono_class_from_name() now
33203         supports nested type names directly.
33204
33205 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
33206
33207         * reflection.h reflection.c: Encode already created dynamic methods 
33208         and fields correctly as a DEF instead of a REF.
33209
33210         * reflection.c: Get rid of the force_ref argument to 
33211         mono_image_typedef_or_ref since it was wrong in the first place.
33212
33213         * string-icalls.c: add error checking to string constructors according
33214         to the MSDN docs.
33215
33216         * reflection.c: Emit types in the order their TypeBuilders were 
33217         created. Previously, a new table index was assigned to each type before
33218         the tables were emitted. This was wrong because the signature blob
33219         might already refer to a type by its original table index.
33220
33221 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
33222
33223         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
33224         change.
33225         
33226 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33227
33228         * Makefile.am: make assemblies dir have \ instead of / on windows.
33229
33230 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
33231
33232         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
33233         iterate over the NESTEDCLASS table using a linear search since the
33234         table is not guaranteed to be sorted by the secondary key.
33235
33236         * class.c (mono_class_create_from_typedef): fixed up call to
33237         mono_metadata_nesting_typedef.
33238         
33239 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
33240
33241         * marshal.c (mono_string_to_byvalstr): clear the memory as
33242         suggested by Jerome Laban <jlaban@wanadoo.fr>
33243
33244 2003-02-26  Dick Porter  <dick@ximian.com>
33245
33246         * process.c: Cope with padding in .rsrc blocks
33247
33248 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
33249
33250         * metadata.h: reverted the filter_len change, it breaks reflection
33251         
33252 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
33253
33254         * metadata.h: added a new field to store the filter_len
33255         
33256
33257 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
33258
33259         * reflection.c: handle custom attributes for types and members
33260         created with Reflection.Emit (bug#38422).
33261
33262 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
33263
33264         * reflection.c: define RTSpecialName automatically for constructors for
33265         compatibility with MS.NET.
33266
33267         * reflection.c (mono_reflection_create_runtime_class): initialize
33268         nested_in field of dynamically created classes.
33269
33270 2003-02-22  Martin Baulig  <martin@ximian.com>
33271
33272         * debug-mono-symfile.h: Incremented version number.
33273
33274 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
33275
33276         * object.h icall.c process.c: fix warnings.
33277
33278 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
33279
33280         * appdomain.h appdomain.c:
33281         (mono_domain_try_type_resolve): split the 
33282         name_or_tb argument into a name and a tb argument.
33283         (mono_domain_has_type_resolve): new function to check whenever the
33284         application has registered a TypeResolve event handler.
33285         
33286         * icall.c reflection.h reflection.c: move the type resolve logic into
33287         mono_reflection_get_type () so it will be invoked when 
33288         Assembly::GetType () is called.
33289
33290         * reflection.c:
33291         (mono_reflection_get_type): renamed to get_type_internal.
33292         (mono_reflection_get_type): fixed type name generation so it works 
33293         for nested types too.
33294         (mono_reflection_get_type): call has_type_resolve () to avoid the 
33295         costly type name generation if there is no resolve event handler.
33296
33297 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33298
33299         * class.c, image.c: load exported types from file references.
33300
33301 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
33302
33303         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
33304           used to cache the managed methods used to create proxies and make 
33305           remote invocation of methods.
33306         * class.h: Added in MonoVTable a flag to indicate that a class needs 
33307           to be remotely created.
33308         * object.c: Modified the method mono_class_vtable(). It now initializes 
33309           the remote flag of the vtable. Modified mono_object_new_specific(), 
33310           so now it checks the remote flag.
33311         * icall.c: Added a couple of internal methods, one for enabling instance 
33312           creation interception for a type, and one for creating objects bypassing
33313           the remote check.
33314
33315 2003-02-18  Martin Baulig  <martin@ximian.com>
33316
33317         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
33318         New interncall to get a method's metadata token.
33319
33320         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
33321         New interncall for the debugger.
33322
33323 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
33324
33325         * class.c (mono_class_setup_vtable): allocate supertype array
33326
33327 2003-02-18  Martin Baulig  <martin@ximian.com>
33328
33329         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
33330
33331 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33332
33333         * reflection.c:
33334         (assembly_name_to_aname): jump over unknown properties (i've found
33335         something like: 'type, assembly, version=xxx, custom=null, public...',
33336         so now will ignore custom=null and still get the rest of the values).
33337
33338 2003-02-17  Dick Porter  <dick@ximian.com>
33339
33340         * threads.c: Have Thread.Start() wait for a semaphore to signal
33341         that the thread has set up all its local data.  This fixes bug
33342         34323, where Abort() raced the new thread's TLS data.
33343
33344         Also removes the handle_store() call from start_wrapper, because
33345         threads are now always created suspended and there is no longer a
33346         race between the parent and child threads to store the info.
33347
33348 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
33349
33350         * image.c: explain the #- heap issue in a message, hopefully
33351         avoiding FAQs on mono-list.
33352
33353 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33354
33355         * icall.c:
33356         (GetEntryAssembly): if the domain has not invoked
33357         AppDomain.ExecuteAssembly yet, return the assembly of the default
33358         AppDomain.
33359
33360 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
33361
33362         * class.c (mono_ldtoken): make it work in dynamic assemblies.
33363
33364 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
33365
33366         * metadata.c, reflection.c: simple speedup to type hash
33367         and equals code.
33368
33369 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
33370
33371         * image.c, image.h, class.c, assembly.c: move module loading
33372         to MonoImage. When loading metadata, consider alignemnet from
33373         the start of metadata, not from the metadata address in memory.
33374
33375 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
33376
33377         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
33378         AssemblyBuilder objects. Factored out custom attribute creation into
33379         a separate function.
33380         (create_custom_attr): new function to create custom attributes.
33381
33382 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
33383
33384         * Makefile.am: Got tired of typing the full pathname to pedump.
33385         Until there is another option, am installing this.
33386
33387 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
33388
33389         * class.c (class_compute_field_layout): always set field->parent 
33390         (mono_ldtoken): use mono_defaults.fieldhandle_class;
33391
33392 2003-02-11  Dick Porter  <dick@ximian.com>
33393
33394         * threads-types.h:
33395         * monitor.c: Rewrote Monitor, making lock much faster and
33396         Pulse/Wait work as specified.  Also uses much fewer handles, and only
33397         creates them as needed.
33398
33399         * exception.c: Added SynchronizationLockException
33400
33401         * threads.c: Deleted old Monitor implementation.  The new one is
33402         in a new file.
33403
33404 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
33405
33406         * class.c: handled TypedReference type code. Set the correct size for
33407         class data. Setup interface_offsets for interface classes, too.
33408
33409 2003-02-09  Martin Baulig  <martin@ximian.com>
33410
33411         * debug-mono-symfile.h: Reflect latest symbol writer changes.
33412
33413 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
33414
33415         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
33416         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
33417         * object.c: fixed mono_object_get_virtual_method () for interfaces.
33418         * verify.c: check for code that runs after the end of the method.
33419
33420 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33421
33422         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
33423         "System.Math::Round2".
33424         * sysmath.h: Added Floor, Round and Round2 definitions.
33425         * sysmath.c: Modified certain functions that were not 100% compliant
33426         with MS.NET (math precision) and added the implementation of Floor,
33427         Round and Round2.
33428
33429 2003-02-07  Martin Baulig  <martin@ximian.com>
33430
33431         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
33432
33433 2003-02-07  Martin Baulig  <martin@ximian.com>
33434
33435         * debug-mono-symfile.c: Reflected latest symwriter changes.
33436         (mono_debug_create_mono_symbol_file): Removed.
33437         (mono_debug_open_mono_symbol_file): Take an argument which
33438         specifies whether to create a dynamic symbol file.
33439
33440 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
33441
33442         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
33443
33444 2003-02-05  Martin Baulig  <martin@ximian.com>
33445
33446         * reflection.c (mono_image_build_metadata): Make this public,
33447         protect it against being called multiple times, don't create
33448         resources and don't build the compressed metadata here.
33449         (mono_image_create_pefile): Do this here.
33450
33451         * icall.c
33452         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
33453
33454 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33455
33456         * socket-io.c: fixed bug #36322.
33457
33458 2003-02-06  Piers Haken <piersh@friskit.com>
33459
33460         * appdomain.[ch]:
33461         * class.h:
33462         * debug-mono-symfile.c:
33463         * icall.c:
33464         * loader.c:
33465         * mono-config.c:
33466         * monosn.c:
33467         * reflection.c:
33468         * socket-io.c: warning cleanups
33469
33470 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
33471
33472         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
33473         function. works like remoting invoke, but does a check for the Proxy first.
33474
33475 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
33476
33477         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
33478
33479 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
33480
33481         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
33482         array of pointers.
33483         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
33484         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
33485
33486         * object.c (mono_store_remote_field_new): used by the new jit
33487         instead of mono_store_remote_field
33488         (mono_load_remote_field_new): used by the new jit
33489         instead of mono_load_remote_field
33490
33491 2003-02-05  Patrik Torstensson
33492
33493         * appdomain.c: changed unload to take the domain id instead
33494         of domain
33495         
33496         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
33497
33498
33499 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33500
33501         * appdomain.c: don't look for assemblies in ApplicationBase if
33502         PrivateBinPathProbe is set.
33503
33504 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33505
33506         * object.c: make the first argument in main_args contain the absolute
33507         path to the assembly. Fixes bug #37511.
33508
33509 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33510
33511         * icall.c: get correct UTC offset for countries not using daylight
33512         time saving. Fixes bug #30030.
33513
33514 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33515
33516         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
33517         and 1 are the family).
33518
33519 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
33520
33521         * icall.c (ves_icall_InternalExecute): removed wrong assertion
33522
33523         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
33524
33525 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
33526
33527         * reflection.c: added support for SignatureHelper tokens, which is
33528         needed by the Calli opcode.
33529
33530         * reflection.h: track changes to SignatureHelper class.
33531
33532         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
33533
33534 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33535
33536         * appdomain.c: fixed loading assemblies from PrivateBinPath.
33537
33538 2003-02-03  Patrik Torstensson
33539         * appdomain.[c|h], domain.c : 
33540          - Added support for getting a domain via domain id
33541          - Support for setting and getting domain from System.AppDomain 
33542            (used in cross appdomain channel)
33543          - Added support for get/set for a MonoAppContext on a thread 
33544            (Context class in System.Runtime.Remoting.Contexts),
33545          - Removed hack in Get/SetData and ExecuteAssembly.
33546         
33547         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
33548         the managed world to get control when a proxy is created.
33549
33550         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
33551         
33552 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
33553
33554         * icall.c
33555         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
33556         Populate the codebase field as well.
33557
33558 2003-02-02  Martin Baulig  <martin@ximian.com>
33559
33560         * debug-mono-symfile.c
33561         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
33562         (mono_debug_symfile_add_method): Allow interncalls.
33563
33564 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33565
33566         * icall.c: throw parse exception if strtod fails or the string is empty.
33567
33568 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
33569
33570         * marshal.c: handle object type separately from defined
33571         class types.
33572
33573 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
33574
33575         * marshal.c: handle NATIVE_LPSTR for strings when it's
33576         explicitly specified.
33577
33578 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
33579
33580         * reflection.c, reflection.h, icall.c: setup the reflection
33581         handle cache for ModuleBuilders and AssemblyBuilders.
33582
33583 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
33584
33585         * reflection.c (reflection_methodbuilder_to_mono_method): set
33586         pinvoke flag
33587
33588 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33589
33590         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
33591
33592 2003-01-29  Dick Porter  <dick@ximian.com>
33593
33594         * threads.c: No need for the fake_thread kludge now that Thread
33595         doesn't run a class constructor
33596         
33597 2003-01-29  Dick Porter  <dick@ximian.com>
33598
33599         * threads.c: Use g_direct_hash instead of the rather bogus
33600         g_int_hash
33601
33602 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
33603
33604         * marshal.c (mono_marshal_get_native_wrapper): add check for null
33605         (fix pinvoke12.exe)
33606         (mono_marshal_get_struct_to_ptr): generate valid IL code
33607         (mono_marshal_get_ptr_to_struct): generate valid IL code
33608         (*): correctly set sig->pinvoke, we need to memdup the signature
33609         to do that
33610
33611 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33612
33613         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
33614         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
33615
33616 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
33617
33618         * profiler.c: provide more callers information.
33619
33620 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
33621
33622         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
33623
33624         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
33625
33626         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
33627
33628 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33629
33630         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
33631         exception instead of going into an infinite loop on dates which it 
33632         can't yet handle.
33633
33634         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
33635         out-of-range exception if needed.
33636
33637         * class.c (mono_class_setup_vtable): allow a virtual method to provide
33638         an implementation for an interface method and to override an inherited
33639         method at the same time. 
33640         Imagine a scenario when a virtual method is used to override a
33641         virtual abstract method in a parent class, and this same method 
33642         provides an implementation for an method inherited from an interface. 
33643         In this case, the interface resolution code will set im->slot, which 
33644         means that the virtual method override pass will skip this method 
33645         which means a pointer to the abstract method inherited from the parent
33646         will remain in the vtable of this non-abstract class.
33647
33648         * class.c: (mono_class_setup_vtable): continue search for a real 
33649         method if only an abstract method is found.     
33650
33651 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
33652
33653         * reflection.c: add size to encoding for ByValStr and ByValArray
33654         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
33655
33656 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33657
33658         * class.c (mono_class_setup_vtable): pass the override info as an
33659         argument.
33660
33661         * class.c (mono_class_setup_vtable): set the slot of overriding methods
33662         correctly.
33663         
33664         * reflection.c (ensure_runtime_vtable); add support for method 
33665         overrides.
33666         
33667 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33668
33669         * reflection.c (resolution_scope_from_image): Hack to work to work with
33670         dynamic assemblies.
33671
33672         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
33673         added a 'force_ref' argument to force this function to allways return 
33674         a TypeRef. This is needed by mono_image_get_memberref_token ().
33675         
33676 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33677
33678         * reflection.c (mono_image_get_type_info): interfaces really don't have
33679         a parent.
33680
33681         * reflection.c (mono_image_basic_init): fill out missing fields of
33682         image structure.
33683
33684         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
33685         dynamic assemblies. This is required so dynamic assemblies show up in
33686         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
33687         Type::GetType() etc. This is consistent with MS behaviour.
33688
33689         * image.c image.h reflection.c: add newly created classes to the name 
33690         cache so mono_class_get () will find them.      
33691
33692 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33693
33694         First part of changes to get IKVM.NET running under mono.
33695         
33696         * appdomain.h, appdomain.c: added new function 
33697         mono_domain_try_type_resolve() which will emit TypeResolve events. 
33698         This function will call AppDomain::DoTypeResolve to do the actual work.
33699
33700         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
33701         moved existing code dealing with dynamic tokens to a new function 
33702         called mono_reflection_lookup_dynamic_token (). This function will 
33703         raise TypeResolve events when appropriate. Since reflection.c is not 
33704         part of libmetadata, a new hook function called 
33705         mono_lookup_dynamic_token() is added to class.c which will call this.
33706
33707         * assembly.h assembly.c: make the invoke_load_hook function public,
33708         so it can be called for dynamic assemblies.
33709
33710         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
33711
33712         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
33713         type isn't found.
33714
33715         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
33716         MonoGHashTable, since it contains pointers to objects which the GC 
33717         needs to track.
33718
33719         * assembly.c (search_loaded): remove unused variable.
33720         
33721 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
33722
33723         * object.c: fixed issue exposed by gcc-generated IL programs
33724         that use RVA data for pointers.
33725
33726 2003-01-25  Martin Baulig  <martin@ximian.com>
33727
33728         * threads.c (start_wrapper): Moved the initialization of
33729         `start_func' above the mono_new_thread_init() call to which we
33730         pass it as argument.
33731
33732 2003-01-24  Martin Baulig  <martin@ximian.com>
33733
33734         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
33735         the MonoThread pointer.
33736
33737 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
33738
33739         * icall.c: Rename `PowImpl' to Pow.
33740
33741 2003-01-23  Dick Porter  <dick@ximian.com>
33742
33743         * threads.c (start_wrapper): Create a Thread object if needed, so
33744         the Main() thread can do the class initialisation in a subthread
33745         that has been set up to allow managed code execution.
33746
33747         Pass the thread ID instead of the MonoThread pointer to the thread
33748         start and attach callbacks.  This change is required, because the
33749         jit thread start callback must be called _before_ the Thread
33750         object can be created.
33751         
33752         (mono_thread_init): Removed much object creation code that is no
33753         longer needed.  No managed code is called from here now.
33754
33755         * object.c (mono_runtime_exec_managed_code): Create a subthread
33756         for Main, and call back to the runtime to use it.
33757         Set the exit code when Main exits.
33758
33759         * gc.c: Make sure domain finalisation happens in a subthread.
33760         Re-enable threaded GC, fixing bug 31333 (again).
33761
33762         * environment.c: System.Environment internall calls (so far just
33763         ExitCode is here, the others are still in icall.c)
33764
33765         * appdomain.c (mono_runtime_cleanup): All threads running managed
33766         code should have finished before mono_runtime_cleanup() is
33767         reached, so no need to clean up threads.
33768
33769 2003-01-22  Martin Baulig  <martin@ximian.com>
33770
33771         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
33772         `gpointer func' arguments.      
33773         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
33774         but added `MonoThread *thread' argument.
33775         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
33776
33777         * threads.c (mono_new_thread_init): Added `gpointer func' argument
33778         and pass it to the mono_thread_start_cb callback.
33779         (mono_install_thread_callbacks): New public function to install a
33780         set of callbacks which are set by the debugger.
33781         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
33782
33783 2003-01-22  Martin Baulig  <martin@ximian.com>
33784
33785         * Makefile.am: Install debug-mono-symfile.h.
33786
33787 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
33788
33789         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
33790
33791 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
33792
33793         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
33794         * class.c (mono_ptr_class_get): correctly set access levels of pointers
33795         (mono_array_class_get): correctly set access levels of arrays
33796
33797 2003-01-20      Patrik Torstensson
33798         * image.h (MonoAssemblyName): changed major, minor, build, revision
33799         from signed to unsigned.
33800
33801 2003-01-20  sean kasun <skasun@azstarnet.com>
33802
33803         * reflection.c (load_cattr_value): Now this handles
33804         MONO_TYPE_SZARRAY.  Fixes bug #35629
33805
33806 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
33807
33808         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
33809         integer value
33810
33811 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33812
33813         * decimal.c: fixed bug #26056.
33814
33815 2003-01-17  Martin Baulig  <martin@ximian.com>
33816
33817         * gc.c: Raise an ExecutionEngineException instead of using g_error().
33818
33819 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33820
33821         * exception.[ch]:
33822         (mono_get_exception_type_initialization): new function.
33823
33824         * object.c: throw a TypeInitializationException when an exception is
33825         thrown invoking the class constructor.
33826
33827 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33828
33829         * reflection.c: fixed attribute reading.
33830
33831 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33832
33833         * icall.c:
33834         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
33835         provided, look for the type in the calling assembly and then in
33836         mscorlib; if the assembly name is provided, only try that one.
33837
33838 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
33839
33840         * object.c: register the vtable before there is a chance it's
33841         queried again recursively.
33842
33843 2003-01-13  Duncan Mak  <duncan@ximian.com>
33844
33845         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
33846         gc-internal.h. 
33847         
33848 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
33849
33850         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
33851
33852 2003-01-11  Martin Baulig  <martin@ximian.com>
33853
33854         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
33855         this to 20 for the release.
33856
33857 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
33858
33859         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
33860
33861         * loader.c (mono_method_get_marshal_info): bug fix
33862
33863         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
33864         structures with explicit layout
33865
33866 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
33867
33868         * profiler.c: made the output more readable (and sorted). 
33869         Added caller information for the allocation profiler.
33870
33871 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
33872
33873         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
33874
33875 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33876
33877         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
33878         to get value types.
33879         
33880 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
33881
33882         * object.c, profiler.h, profiler.c, profiler-private.h:
33883         Added object allocation profiler.
33884
33885 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
33886
33887         * reflection.h, reflection.c: handle global methods.
33888         Compress blob entries.
33889
33890 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
33891
33892         * marshal.c: fix compilation.
33893
33894 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
33895
33896         * loader.c (mono_method_get_marshal_info): impl.
33897
33898         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
33899
33900 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33901
33902         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
33903         for reference types.
33904
33905 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
33906
33907         * loader.c: fixed off by one error in loaded parameter names.
33908
33909 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
33910
33911         * marshal.c (mono_marshal_get_icall_wrapper): like
33912         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
33913         instead of a MonoMethod.
33914
33915 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33916
33917         * decimal.c: fixed bug #36537.
33918
33919 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
33920
33921         * marshal.c: throw a missing method exception if a
33922         P/Invoke method is not found.
33923
33924 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
33925
33926         * icall.c: allow a null this for constructors.
33927
33928 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
33929
33930         * icall.c: raise the proper exceptions if the arguments to the
33931         internal Invoke are incorrect.
33932
33933 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
33934
33935         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
33936
33937 2003-01-03  Martin Baulig  <martin@ximian.com>
33938
33939         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
33940
33941 2002-12-31  Martin Baulig  <martin@ximian.com>
33942
33943         * debug-mono-symfile.c: Completely rewrote the type section.
33944         Instead of using individual malloc()ed fields, we use one big
33945         continuous memory area and offsets into this area.
33946         See the comments in the source code for details.
33947
33948 2002-12-30  Martin Baulig  <martin@ximian.com>
33949
33950         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
33951
33952 2002-12-30  Martin Baulig  <martin@ximian.com>
33953
33954         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
33955         line number table in this data blob instead of using an external
33956         pointer.
33957
33958 2002-12-28  Martin Baulig  <martin@ximian.com>
33959
33960         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
33961
33962 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
33963
33964         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
33965         as a boxed return type.
33966
33967 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
33968
33969         * appdomain.c
33970         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
33971         g_build_filename to properly get separators on the filename created.
33972
33973         * object.h: Small change, introduce MonoMarshalByRefObject to
33974         track the layout of that structure in the C# universe as we make
33975         changes there.
33976
33977 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
33978
33979         * object.c: removed assert to allow static fields on interfaces.
33980         * loader.c: a TypeSpec may be used for any type, not just arrays.
33981
33982 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
33983
33984         * class.c, class.h: added mono_class_array_element_size ().
33985         Ignore static methods in interfaces.
33986
33987 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33988
33989         * threads.c: fixed the build under cygwin.
33990
33991 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
33992
33993         * reflection.c: handle nullref constants. Allocate keys for
33994         reflection handles with the GC.
33995
33996 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
33997
33998         * threads.c, threads.h: added mono_thread_get_abort_signal()
33999         to get a suitable signal for thread abort.
34000
34001 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
34002
34003         * metadata.c: fix handling of ExportedType table.
34004
34005 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34006
34007         * icall.c: added WriteWindowsDebugString internal call.
34008
34009 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34010
34011         * reflection.h: added fields to match C# implementation.
34012
34013 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34014
34015         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
34016
34017 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
34018
34019         * gc.h, gc-internal.h: Rename header for GC internal calls to
34020         gc-internal.h from gc.h as to not clash with Boehm GC having its
34021         header installed as <gc.h> in outside include paths.
34022         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
34023         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
34024
34025 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34026
34027         * icall.c: assign minor, build and revision in FillName.
34028
34029 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
34030
34031         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
34032         Added support for running code generated by Reflection.Emit.
34033
34034 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34035
34036         * appdomain.c: check for NULL argument in LoadFrom.
34037
34038 2002-12-10  Dick Porter  <dick@ximian.com>
34039
34040         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
34041
34042 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34043
34044         * appdomain.c: fix buglet when building exe file name.  Handle full
34045         assembly name (needed after latest changes to AssemblyName).
34046         * image.c:
34047         (mono_image_close): free some hashtables.
34048
34049 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
34050
34051         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
34052         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
34053         on some systems (redhat 7.3) 
34054
34055 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
34056
34057         * threads.c: delete the critical section of a sync block,
34058         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
34059
34060 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
34061
34062         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
34063
34064 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34065
34066         * appdomain.[ch]: handle the assembly preload event to try loading the
34067         assemblies using the paths we have in the current domain.
34068
34069         * assembly.[ch]: created an assembly preload hook that is called to try
34070         loading the assembly by other means that the ones provided here.
34071
34072         * domain.c: initialize the domain search path.
34073
34074         From now on, assemblies (TODO: except corlib and System) are loaded
34075         according to these rules when using mono_assembly_load ():
34076
34077                 1. It tries to load the assembly from the ApplicationBase
34078                 of the current domain appending .dll and .exe (TODO: have to
34079                 try loading from name/name.dll and name/name.exe).
34080
34081                 2. It tries the search path specified in PrivateBinPath for the
34082                 current domain (if any).
34083
34084                 3. Previous behavior.
34085
34086 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
34087
34088         * icall.c: implemented GetInterfaceMap() related icall.
34089         * domain.c, loader.h: load MethodInfo in mono_defaults.
34090
34091 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
34092
34093         * gc.c: disable the finalizer thread for now, untill all the issues
34094         with it are resolved.
34095
34096 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
34097
34098         * string-icalls.c: handle embedded nulls in string ctor when the
34099         length is specified.
34100
34101 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
34102
34103         * class.c: look for explicit interface implementation in parent
34104         classes, too.
34105
34106 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
34107
34108         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
34109
34110 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
34111
34112         * gc.c: protect handles with a critical section.
34113
34114 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34115
34116         * icall.c:
34117         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
34118         parameters. If no assembly specified, try getting the type from all
34119         the assemblies in the current domain, else, load the assembly and get
34120         the type from it.
34121
34122 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34123
34124         * marshal.c: applied patch from Aleksey Demakov that fixes
34125         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
34126
34127 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34128
34129         * icall.c: fixed get_location.
34130
34131 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
34132
34133         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
34134         declarations to make it work with older gcc. 
34135
34136         * loader.c (mono_get_method): set signature->pinvoke for native calls
34137
34138 2002-11-20  Dick Porter  <dick@ximian.com>
34139
34140         * threads.c (mono_thread_init): Set the main thread's handle
34141
34142 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
34143
34144         * gc.c: allow compilation without GC support. Changed to match the
34145         mono coding style.
34146
34147 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
34148
34149         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
34150
34151 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
34152
34153         * reflection.c: set a public key token on the core assemblies.
34154
34155 2002-11-18  Dick Porter  <dick@ximian.com>
34156
34157         * threads.c: Split out some thread initialisation so that other
34158         files can set the start callback function.
34159
34160         * gc.c: Run finalisers in a separate thread, to avoid stack
34161         overflow.  Fixes bug 31333.
34162
34163         * appdomain.c: Set up GC finalisation thread.
34164
34165         * reflection.c: 
34166         * object.c: 
34167         * domain.c: Use gc.h macros for GC_malloc
34168         
34169 2002-11-15  Dick Porter  <dick@ximian.com>
34170
34171         * threadpool.c: 
34172         * threads.c:
34173         * appdomain.c: Removed mono_runtime_init_with_attach(),
34174         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
34175         merging the extra parameter with the existing function.  Removed
34176         unneeded code in mono_thread_attach().
34177
34178 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
34179
34180         * image.c (mono_image_loaded_by_guid): a method to get loaded
34181         images by guid. 
34182         (load_metadata_ptrs): we store the guid as string.
34183
34184 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
34185
34186         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
34187
34188         * metadata.c (mono_guid_to_string): imported method form Zoltan
34189         Varga (slightly modified)
34190
34191         * assembly.c (mono_assembly_open): load precompiled code
34192
34193         * loader.h (MonoMethod): we store the method token for use in the
34194         aot compiler. 
34195
34196 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34197
34198         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
34199         the hook function called when an assembly is loaded.
34200         
34201         * domain.c: Modified file.
34202         (mono_domain_assembly_load): removed hash table insertion of assemblies.
34203
34204         Fixes bug #33196.
34205
34206 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
34207
34208         * reflection.c: Map PEFileKind to the value expected by the WinNT
34209         image loader. 
34210
34211 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34212
34213         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
34214         Read until the buffer is filled completely.
34215
34216 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34217
34218         * icall.c: implemented MonoType.InternalGetEvent ().
34219
34220 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34221
34222         * appdomain.c: implemented InitAppDomainSetup. Delayed
34223         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
34224         the entry_assembly.
34225
34226         * assembly.c: base_dir is now an absolute path ending with
34227         G_DIR_SEPARATOR.
34228
34229         * icall.c: modified get_location according to the above changes.
34230
34231         * object.c: init AppDomain.SetupInformation for the default domain after
34232         we have the entry assembly.
34233
34234         * domain.c: when unloading a domain, setup = NULL.
34235
34236 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
34237
34238         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
34239
34240 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
34241
34242         * object.h, object.c: introduced mono_object_get_virtual_method ()
34243         to lookup the method invoked on an object when a callvirt is done on
34244         a method.
34245         * icall.c: make MethodInfo::Invoke() always do a virtual call.
34246
34247 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34248
34249         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
34250         current domain when loaded an assembly and failed to load it.
34251
34252         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
34253
34254 2002-10-31  Dick Porter  <dick@ximian.com>
34255
34256         * icall.c: 
34257         * file-io.h: 
34258         * file-io.c: Return the error status in a parameter, as the
34259         GetLastError() value has long since been blown away if we try and
34260         look it up in a subsequent internal call invocation.  Delete the
34261         GetLastError() internal call, because it's useless.
34262
34263 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
34264
34265         * class.[ch]: added cast_class to fix bug 29517
34266
34267 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
34268
34269         * marshal.c: create valid IL code in the filter clause:
34270         the new JIT is less forgiving:-)
34271
34272 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34273
34274         * icall.c: removed get_property internal call.
34275
34276 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
34277
34278         * appdomain.h domain.c: Added an ID to appdomains.
34279         
34280         * threads.c threads.h icall.c: Implement icall
34281         Thread:GetDomainID(), and remove unused icall 
34282         CurrentThreadDomain_internal.
34283
34284 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34285
34286         * icall.c: Don't recurse through the base types in GetConstructor.
34287         Fixes bug #32063. 
34288
34289 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
34290
34291         * mempool.h, mempool.c: added mono_mempool_empty() and
34292         mono_mempool_stats().
34293
34294 2002-10-23  Dick Porter  <dick@ximian.com>
34295
34296         * file-io.c: 
34297         * file-io.h: 
34298         * icall.c: Added MonoIO.GetFileType internal call
34299
34300 2002-10-17  Dick Porter  <dick@ximian.com>
34301
34302         * appdomain.c (mono_runtime_cleanup): Don't signal the async
34303         delegate semaphore before waiting for all threads to finish,
34304         because new threads can also call async delegates.  Fixes bug
34305         32004.
34306
34307         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
34308         of 3 seconds, in case another async job is queued.  (This part is
34309         needed because the bug fix reintroduced the 3s exit lag.)  This
34310         makes the mono_runtime_shutdown flag superfluous.
34311
34312 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
34313
34314         * reflection.c: include ehader size in method section headers.
34315         Really check for suplicated modules entries.
34316
34317 2002-10-17  Martin Baulig  <martin@gnome.org>
34318
34319         * debug-mono-symfile.c: Added back support for locals.
34320
34321 2002-10-14  Martin Baulig  <martin@gnome.org>
34322
34323         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
34324         MONO_TYPE_VOID.
34325
34326 2002-10-14  Martin Baulig  <martin@gnome.org>
34327
34328         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
34329         mono_class_get() instead of looking in the class cache. 
34330
34331 2002-10-13  Martin Baulig  <martin@gnome.org>
34332
34333         * debug-mono-symfile.c: Set version number to 28, include the
34334         signature in method names.
34335
34336 2002-10-13  Martin Baulig  <martin@gnome.org>
34337
34338         * debug-mono-symfile.h: Set version number to 27.
34339
34340 2002-10-11  Martin Baulig  <martin@gnome.org>
34341
34342         * gc.c: Don't register/unregister NULL pointers as disappearing links.
34343
34344 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
34345
34346         * metadata.c, metadata.h: added helper function to allocate signatures.
34347
34348 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34349
34350         * icall.c: added internal call to get the location of machine.config.
34351
34352 2002-10-08  Martin Baulig  <martin@gnome.org>
34353
34354         * debug-mono-symfile.c: Ignore classes with a pending init for the
34355         moment.
34356
34357 2002-10-03  Dick Porter  <dick@ximian.com>
34358
34359         * threads.c: Freebsd pthread_t is a pointer
34360
34361 2002-10-03  Dick Porter  <dick@ximian.com>
34362
34363         * socket-io.c: Implemented GetHostName_internal
34364
34365 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34366
34367         * mono-config.c:
34368         (mono_config_parse_file): don't leak the text.
34369
34370 2002-10-02  Martin Baulig  <martin@gnome.org>
34371
34372         * debug-mono-symfile.c: Added support for methods.
34373
34374 2002-10-01  Martin Baulig  <martin@gnome.org>
34375
34376         * debug-mono-symfile.c: Don't emit methods and line numbers for
34377         the dynamic symbol file, just write the type table.  We can easily
34378         have an external helper program which creates a symbol file for an
34379         IL file.        
34380
34381 2002-10-01  Dick Porter  <dick@ximian.com>
34382
34383         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
34384         Only add the handle to the cleanup array when we're about to
34385         launch the thread.  Bug 31425 deadlocked when the test was run on
34386         mono under w32.
34387
34388 2002-10-01  Martin Baulig  <martin@gnome.org>
34389
34390         * debug-mono-symfile.c: Added support for properties.
34391
34392 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
34393
34394         * reflection.c: unaligned store fix from Mark Crichton
34395         <crichton@gimp.org>.
34396
34397 2002-09-27  Martin Baulig  <martin@gnome.org>
34398
34399         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
34400         New interncall.
34401
34402 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
34403
34404         * assembly.h, assembly.c: use a sane API to hook into the assembly
34405         loading process instead of a useless special-purpouse hack
34406         (ngen needs a hook, too, for example).
34407
34408 2002-09-27  Dick Porter  <dick@ximian.com>
34409
34410         * threads.c (mono_thread_init): Call GetCurrentProcess() so
34411         io-layer can set up some process handle info.  Not needed on w32,
34412         but doesn't hurt either.
34413
34414         * process.c: Pass the program name in the second parameter to
34415         CreateProcess, so the path is searched.  Include the working
34416         directory. Implemented process name, process enumeration, and some
34417         process detail internal calls.
34418         
34419         * icall.c: Added internal calls for process lookup, and some
34420         process details
34421
34422 2002-09-26  Martin Baulig  <martin@gnome.org>
34423
34424         * assembly.c (mono_install_open_assembly_hook): New global
34425         function to install a function to be invoked each time a new
34426         assembly is loaded.
34427         (mono_assembly_open): Run this callback function if set.
34428
34429         * debug-mono-symfile.c: Put back line numbers for the dynamic
34430         symbol file and also record the .il file as source file.  This
34431         allows us to install the temporary symbol file as `file.dbg' just
34432         like a compiler-generated one.
34433
34434 2002-09-26  Nick Zigarovich <nick@chemlab.org>
34435
34436         * Corrected typo in gc.c (BOHEM vs BOEHM).
34437
34438 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34439
34440         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
34441         GetProperties. Also avoid calling g_slist_length in GetProperties and
34442         GetMethods.
34443
34444 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
34445
34446         * reflection.c: avoid unaligned stores (bug spotted by
34447         Mark Crichton  <crichton@gimp.org>).
34448
34449 2002-09-25  Martin Baulig  <martin@gnome.org>
34450
34451         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
34452         instead of guint64 for addresses and added prologue/epilogue info.
34453
34454 2002-09-25  Martin Baulig  <martin@gnome.org>
34455
34456         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
34457         store line number info.  For the dynamic symbol file, we only need
34458         to provide the JIT generated dynamic line number info for the dynamic
34459         symbol file.
34460
34461 2002-09-25  Martin Baulig  <martin@gnome.org>
34462
34463         * debug-mono-symfile.h: Incremented version number.
34464
34465 2002-09-24  Martin Baulig  <martin@gnome.org>
34466
34467         * class.c (mono_debugger_class_init_func): New global function
34468         pointer variable.
34469         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
34470         call it.
34471
34472         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
34473         function.  This is called via the mono_debugger_class_init_func
34474         hook to add all types to the dynamic type table.
34475         (ves_icall_MonoDebugger_GetType): New interncall to get a class
34476         from its metadata token.
34477
34478         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
34479         New interncall for the debugger.
34480
34481 2002-09-24  Nick Drochak <ndrochak@gol.com>
34482
34483         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
34484         before using it in case it is null.
34485         
34486 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
34487
34488         * metadata.c: allow custom modifiers in local var signatures
34489         (bug spotted by Zoltan Varga).
34490
34491 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
34492
34493         * class.c: deal with the <Module> class that may have a NULL vtable.
34494         Eliminate warnings.
34495
34496 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34497
34498         * image.c, image.h: more strong name helpers.
34499         * monosn.c: more work: convert pem keys to cryptoapi format.
34500
34501 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
34502
34503         * string-icalls.c: speedup IndexOf.
34504
34505 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34506
34507         * icall.c: updates from Zoltan.2.Varga@nokia.com.
34508
34509 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
34510
34511         * icall.c: cleanup: use mono_object_domain ().
34512
34513 2002-09-23  Martin Baulig  <martin@gnome.org>
34514
34515         * debug-mono-symfile.c: Improved type support.
34516
34517 2002-09-22  Martin Baulig  <martin@gnome.org>
34518
34519         * debug-mono-symfile.c: Added support for reference types and strings.
34520
34521 2002-09-22  Martin Baulig  <martin@gnome.org>
34522
34523         * debug-mono-symfile.c: Started to work on the type table.
34524
34525 2002-09-21  Martin Baulig  <martin@gnome.org>
34526
34527         * debug-mono-symfile.c: Largely reworked the symbol table format.
34528         The symbol table is now incrementally updated each time a new
34529         method is added.  We're now also using our own magic and version
34530         so that you don't need to recompile all your classes if the
34531         dynamic table changes.
34532         (mono_debug_update_mono_symbol_file): Removed.
34533         (mono_debug_symfile_add_method): New function to add a method.
34534
34535 2002-09-21  Martin Baulig  <martin@gnome.org>
34536
34537         * icall.c
34538         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
34539         New interncall.
34540
34541         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
34542         New interncall to get a method from its metadata token.
34543
34544 2002-09-21  Martin Baulig  <martin@gnome.org>
34545
34546         * debug-mono-symfile.c: Create type table.
34547
34548 2002-09-20  Martin Baulig  <martin@gnome.org>
34549
34550         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
34551
34552 2002-09-20  Martin Baulig  <martin@gnome.org>
34553
34554         * debug-mono-symfile.c: Provide information about params and locals.
34555
34556 2002-09-20  Martin Baulig  <martin@gnome.org>
34557
34558         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
34559         New interncall.
34560
34561         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
34562         interncall to get a method from its metadata token.
34563
34564 2002-09-20  Martin Baulig  <martin@gnome.org>
34565
34566         * debug-mono-symfile.c: Added a few checks for method->header
34567         being non-NULL.  This should never happen, but for the moment
34568         let's use a g_warning() rather than a g_assert().
34569
34570 2002-09-19  Mark Crichton  <crichton@gimp.org>
34571
34572         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
34573         even if support for it isn't present.  Added an #ifdef to fix this.
34574
34575         * socket-io.c: Added checks back for Solaris support.
34576
34577 2002-09-19  Martin Baulig  <martin@gnome.org>
34578
34579         * debug-mono-symfile.c (read_string, write_string): Reflect latest
34580         changes in the symbol file format.
34581
34582 2002-09-18  Martin Baulig  <martin@gnome.org>
34583
34584         * debug-mono-symfile.c: Set version number to 21.
34585
34586 2002-09-18  Dick Porter  <dick@ximian.com>
34587
34588         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
34589         on netbsd.  Fixes bug 30051.
34590
34591 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34592
34593         * reflection.c:
34594         (set_version_from_string): little fix.
34595
34596 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34597
34598         * monosn.c, Makefile.am: added strong name utility.
34599         * reflection.h, reflection.c: implemented delayed signing,
34600         locale, version and hash id assembly attributes.
34601
34602 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
34603
34604         * loader.c, metadata.c: load param attributes in signatures.
34605
34606 2002-09-16  Martin Baulig  <martin@gnome.org>
34607
34608         * debug-mono-symfile.c: Added string table with all method names.
34609
34610 2002-09-14  Martin Baulig  <martin@gnome.org>
34611
34612         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
34613         fast method lookup.
34614
34615 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
34616
34617         * reflection.c: record the public key token of referenced assemblies.
34618
34619 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
34620
34621         * image.c, image.h: added functions to get the strong name and the
34622         public key of an assembly.
34623         * pedump.c: use them.
34624
34625 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
34626
34627         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
34628
34629 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
34630
34631         * marshal.c (mono_marshal_get_managed_wrapper): Added
34632         MONO_TYPE_BOOLEAN 
34633
34634 2002-09-11  Martin Baulig  <martin@gnome.org>
34635
34636         * gc.c: Call GC_unregister_disappearing_link() on all links when
34637         finalizing them, this is necessary to aviod a crash in boehm's
34638         finalize handler.
34639
34640 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34641
34642         * gc.c: handle GetTarget for finalized objects spotted and fixed by
34643         nick@chemlab.org.
34644
34645 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
34646
34647         * icall.c: implemented MonoType::Module.
34648         * reflection.c, reflection.h: mono_module_get_object () from
34649         Tomi Pakarinen <tomi.pakarinen@welho.com>.
34650
34651 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
34652
34653         * icall.c: ignore overridden methods in GetMethods ().
34654         Fix for FieldInfo::SetValue().
34655         * object.c: handle float/double in runtime invoke.
34656
34657 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
34658
34659         * object.c: allow a constructor to be called again on an object.
34660
34661 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34662
34663         * class.h, class.c: move field layout code to it's own function and
34664         export it. Get an interface id earlier. Move fields in MonoClass
34665         so they are more cache friendly and align the bitfields.
34666         * loader.c: temporary handle get_param_names() for a runtime method.
34667         * reflection.c, reflection.h: more code to handle runtime creation of
34668         types.
34669
34670 2002-09-09  Martin Baulig  <martin@gnome.org>
34671
34672         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
34673         signature with the pinvoke field being set for the actual call.
34674
34675 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
34676
34677         * icall.c: removed some unused icalls. Start of map of glib charsets
34678         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
34679
34680 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
34681
34682         * debug-helpers.c: break infinite loop (found and fixed by
34683         Holger Arnold <harnold@gmx.de>).
34684
34685 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
34686
34687         * icall.c: target may be null in create_delegate.
34688
34689 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34690
34691         * marshal.c: handle a boolean return type.
34692
34693 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34694
34695         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
34696
34697 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
34698
34699         * gc.c: fix weakreferences.
34700
34701 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
34702
34703         * icall.c: added icall to get default codepage.
34704
34705 2002-09-03  Dick Porter  <dick@ximian.com>
34706
34707         * threads.h: 
34708         * threads.c: Use MonoThread instead of MonoObject where
34709         apropriate.
34710
34711         Store running thread objects in a hash table, so that we have all
34712         the info to hand when waiting for them to finish
34713         (means we don't need OpenThread() any more, so mingw builds should
34714         be fully functional again.)
34715
34716         * verify.c:
34717         * object.h: Added thread ID to MonoThread
34718
34719 2002-09-03  Martin Baulig  <martin@gnome.org>
34720
34721         * icall.c (System.Reflection.Assembly::get_location): New interncall.
34722
34723 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34724
34725         * icall.c: fixed leak in get_temp_path. Thanks lupus.
34726
34727 2002-09-03  Martin Baulig  <martin@gnome.org>
34728
34729         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
34730         argument to store the end address of the disassembled instruction.
34731
34732         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
34733         here from debug-symfile.h.
34734         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
34735         JIT into this struct.
34736         (MonoSymbolFile): Added `char *image_file' field.
34737         (MonoDebugGetMethodFunc): Removed.
34738         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
34739         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
34740         (mono_debug_find_method): New method.
34741
34742         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
34743         create a full symbol file.
34744         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
34745         and static symbol files.
34746         (mono_debug_find_method): The symbol file keeps an internal method hash,
34747         call this to get a MonoDebugMethodInfo from a MonoMethod.
34748
34749         * debug-symfile.[ch]: Removed.
34750
34751 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
34752
34753         * image.c (do_mono_image_open): Remove linker version check.
34754
34755 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
34756
34757         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
34758         wrappers for instance methods.
34759         
34760 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34761
34762         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
34763
34764 2002-08-28  Dick Porter  <dick@ximian.com>
34765
34766         * Makefile.am: Export HOST_CC for w32 builds
34767
34768 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
34769
34770         * file-io.c process.c: MonoString are null terminated, no
34771         need for mono_string_to_utf16() anymore.
34772
34773 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
34774
34775         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
34776
34777 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
34778
34779         * icall.c, reflection.h: speedup System.MonoType.
34780
34781 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
34782
34783         * reflection.c: allow null as the value of a string argument in
34784         custom attributes constructors.
34785
34786 2002-08-27  Martin Baulig  <martin@gnome.org>
34787
34788         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
34789         `trampoline_address' field.
34790
34791 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
34792
34793         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
34794         check (fixes bug #29486) 
34795
34796 2002-08-27  Martin Baulig  <martin@gnome.org>
34797
34798         * debug-mono-symfile.c: Changed the file format in a way that allows us
34799         open it read-only and to use a specially malloced area for all the
34800         dynamic data.  We can now also generate a symbol file on-the-fly if we're
34801         debugging IL code and there is no MCS generated symbol file for it.
34802
34803 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
34804
34805         * object.c: added a define for a good string and array
34806         creation speedup (not enabled by default because we need to deal with
34807         the synch stuff).
34808
34809 2002-08-26  Martin Baulig  <martin@gnome.org>
34810
34811         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
34812         function to create a dynamic symbol file.  This is used by the
34813         debugger to create a symbol file for IL code on-the-fly.
34814
34815 2002-08-26  Martin Baulig  <martin@gnome.org>
34816
34817         * loader.c (mono_lookup_pinvoke_call): Include the error message
34818         from g_module_error() in the error message.
34819
34820 2002-08-24  Martin Baulig  <martin@gnome.org>
34821
34822         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
34823         function to update the symbol file.  The symbol file is mmap()ed
34824         writable, but private.  This allows us to install the symbol file
34825         together with the assembly.
34826
34827 2002-08-24  Martin Baulig  <martin@gnome.org>
34828
34829         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
34830         but they can read the new symbol file format which mcs is now creating.
34831
34832         * debug-symfile.c (mono_debug_find_source_location): Moved to
34833         debug-mono-symfile.c; this is now operating on the new symbol file.
34834
34835 2002-08-23  Martin Baulig  <martin@gnome.org>
34836
34837         * debug-helpers.c (mono_method_desc_from_method): New function to get
34838         a MonoMethodDesc from a MonoMethod.
34839
34840 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
34841
34842         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
34843         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
34844
34845 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
34846
34847         * string-icalls.[ch]: make helper methods static.
34848
34849 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34850
34851         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
34852         types to it and to SetValueInternal.
34853
34854         * object.c: Moved handle_enum label to its proper place. This was the
34855         f... bug! ;-)
34856
34857         This time i compiled mcs and gtk-sharp and they both work.
34858
34859 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34860
34861         * icall.c: reverted partially my previous patch until 
34862         object.c:set_value handles enums correcly.
34863
34864 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34865
34866         * icall.c:
34867         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
34868         (ves_icall_System_Environment_get_MachineName): removed warning when
34869         compiling under cygwin.
34870
34871 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
34872
34873         * object.c: fixed field_get_value() for reference types.
34874
34875 2002-08-22  Dick Porter  <dick@ximian.com>
34876
34877         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
34878         Don't free a buffer while it's still needed.  Patch from Jonathan
34879         Liger <Jonathan.liger@wanadoo.fr>
34880
34881 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
34882
34883         * icall.c (ves_icall_System_Environment_get_Platform): Add new
34884         internal call.
34885
34886 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
34887
34888         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
34889         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
34890
34891         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
34892         we call unmanaged code which throws exceptions.
34893
34894 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34895
34896         * appdomain.h: added per-domain entry_assembly.
34897         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
34898         arguments.
34899         * icall.c: Assembly::GetEntryAssembly icall.
34900         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
34901         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
34902
34903 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
34904
34905         * appdomain.h, gc.c: added mono_domain_finalize ().
34906
34907 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34908
34909         * object.c:
34910         (mono_print_unhandled_exception): changed g_warning by g_printerr
34911         because g_log has a 1024 characters limit (yeah, i got a big stack
34912         trace). Don't print exception name, that should be in ToString 
34913         returned string.
34914
34915 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34916
34917         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
34918         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
34919
34920 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34921
34922         * object.c:
34923         (mono_print_unhandled_exception): after previous commit, i realized
34924         that MS calls ToString on the exception. I changed this function to
34925         do that. This way we get stack_trace for free.
34926
34927 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34928
34929         * object.c:
34930         (mono_print_unhandled_exception): invoke Message property instead of
34931         getting 'message' field from Exception. Don't allocate memory for
34932         'trace' and 'message' if not needed.
34933
34934 2002-08-18  Dick Porter  <dick@ximian.com>
34935
34936         * unicode.c: Fix asserts to match Encoder.cs checks
34937
34938 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
34939
34940         * marshal.c: fix unaligned store issue and a few wrong
34941         opcode argument types.
34942
34943 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34944
34945         * icall.c: added GetUninitializedObjectInternal internal call.
34946
34947 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
34948
34949         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
34950         to the right domain.
34951
34952 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
34953
34954         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
34955
34956         * class.c (class_compute_field_layout): set blittable to false for Strings
34957
34958         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
34959
34960 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
34961
34962         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
34963         first chunk of code to create types at runtime. Code to
34964         handle ReflectedType/DeclaringType. Make reflection handles
34965         domain specific.
34966
34967 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
34968
34969         * class.c: set correct name in arrays.
34970
34971 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
34972
34973         * appdomain.c (mono_domain_transfer_object): make it work with
34974         valuetypes. bug fixes.
34975
34976 2002-08-12  Dick Porter  <dick@ximian.com>
34977
34978         * object.h: Rename some parameters to avoid c++ keywords (Patch
34979         from Joseph Wenninger <kde@jowenn.at>)
34980
34981 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
34982
34983         * icall.c: added icall to implement Assembly.GetFile*.
34984
34985 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
34986
34987         * reflection.h, reflection.c: code to embed managed resources.
34988
34989 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
34990
34991         * class.c: move all the type size stuff into
34992         class_compute_field_layout().
34993
34994 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34995
34996         * class.c: ensure enums have always the correct instance size.
34997         * unicode.c: remove wrong assert.
34998
34999 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
35000
35001         * assembly.c: fix mem corruption issue.
35002         * image.h, image.c: added mono_image_get_resource () to access
35003         managed resources.
35004         * icall.c: implemented Assembly.EntryPoint property and some
35005         Managed Resources related internalcalls.
35006
35007
35008 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
35009
35010         * image.c, image.h: impemented mono_image_get_entry_point ().
35011         * appdomain.c: use mono_image_get_entry_point.
35012
35013 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
35014
35015         * reflection.c: support the object type argument when loading
35016         custom attributes.
35017
35018 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
35019
35020         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
35021         String as return type.
35022
35023 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
35024
35025         * reflection.c: fix encoding of named args for custom attrs to match
35026         the ms implementation. Read them back when instantiating custom
35027         attributes.
35028
35029 2002-08-02  Radek Doulik  <rodo@ximian.com>
35030
35031         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
35032         by Dietmar as quick fix
35033         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
35034         16 as stack size, used on more places as quick fix before Dietmar
35035         will fix it properly
35036
35037 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
35038
35039         * object.h, object.c: added accessors for fields and properties.
35040
35041 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
35042
35043         * class.c, class.h: made mono_class_get_field_from_name ()
35044         loop on parent types.
35045         Added mono_class_get_property_from_name ().
35046
35047 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35048
35049         * class.c, class.h: move the code to setup the type vtable in its own
35050         function so that it can be reused also for types created at runtime.
35051         Eliminate the "class" identifier from the header file.
35052         * reflection.c: setup the vtable for enums so that we can create
35053         objects for use in SetConstant ().
35054
35055 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
35056
35057         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
35058         instead of the delegate itself as this pointer (bug #28383)
35059
35060 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
35061
35062         * marshal.c (mono_marshal_get_managed_wrapper): added return type
35063         conversions.
35064
35065 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35066
35067         * loader.c: don't set the pinvoke bit on icalls.
35068
35069 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
35070
35071         * debug-helpers.c (mono_method_full_name): only print a number to
35072         indicate wrapper type (so that the output is more readable in traces).
35073
35074 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
35075
35076         * class.c (mono_class_init): include method override patch from Paolo
35077
35078 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
35079
35080         * icall.c: fixed GetTypeCode().
35081
35082 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
35083
35084         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
35085         use real delegate invoke function to make it work with multicast
35086         delegates (fix bug# 28291).
35087
35088 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35089
35090         * object.c: load constant strings.
35091
35092 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35093
35094         * reflection.c: no magic numbers.
35095         * tabledefs.h: security action enum.
35096
35097 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35098
35099         * assembly.c: fix possible memory corruption.
35100
35101 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
35102
35103         * reflection.h, reflection.c: added support for linking resources.
35104         * verify.c: check we have an updated corlib.
35105
35106 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
35107
35108         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
35109         string arrays.
35110         (mono_marshal_string_array): null terminate unmanaged string arrays.
35111         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
35112
35113 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35114
35115         * icall.c: Type.GetType () can now return also types from the
35116         calling assembly.
35117
35118 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
35119
35120         * loader.h, loader.c: stack walking support.
35121         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
35122         GetCallingAssembly.
35123
35124 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
35125
35126         * marshal.c: added optimisations for blittable types 
35127
35128         * class.c (mono_array_class_get): do not set blittable attribute on arrays
35129         (mono_class_setup_mono_type): set blittable attribute for single
35130         and double.
35131
35132         * marshal.c (mono_string_utf8_to_builder): impl.
35133         (mono_string_builder_to_utf8): impl.
35134         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
35135
35136 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
35137
35138         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
35139         (mono_marshal_get_managed_wrapper): impl. byref types
35140
35141 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35142
35143         * icall.c:
35144         (search_method): don't display debug message. 
35145
35146 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
35147
35148         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
35149
35150 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
35151
35152         * appdomain.c: set the missing filename when throwing exception.
35153
35154 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
35155
35156         * metadata.c (mono_type_size): code cleanup
35157         (mono_type_stack_size): removed some test code
35158
35159 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
35160
35161         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
35162         mono_get_exception_file_not_found now.
35163
35164         * exception.c (mono_exception_from_name_two_strings): New version
35165         that will call a constructor with two string arguments. 
35166         (mono_get_exception_file_not_found): New helper routine, used to
35167         report file-not-found errors.
35168
35169 2002-07-20  Dick Porter  <dick@ximian.com>
35170
35171         * process.h:
35172         * process.c: Pass file handles to CreateProcess
35173         
35174         * icall.c:
35175         * file-io.h:
35176         * file-io.c: Implemented CreatePipe
35177
35178 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
35179
35180         * metadata.c (mono_get_param_info): set alignment for value types
35181
35182 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35183
35184         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
35185         Constify mono_domain_assembly_open().
35186         * loader.c: handle null namespace in icalls.
35187
35188 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
35189
35190         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
35191         (emit_str_to_ptr_conv): marshal object as structs
35192
35193         * metadata.c (mono_type_to_unmanaged): marshal object as structs
35194
35195         * marshal.c (mono_marshal_get_runtime_invoke): support value types
35196
35197 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
35198
35199         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
35200         (mono_marshal_get_native_wrapper): we an now return value types
35201
35202 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35203
35204         * verify.c: more checks implemented.
35205
35206 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
35207
35208         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
35209         (fix bug #27695)
35210         (mono_marshal_get_native_wrapper): allow byref arguments
35211         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
35212         impl. PtrToStringXXX methods
35213         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
35214         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
35215         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
35216         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
35217         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
35218
35219 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35220
35221         * reflection.c: fix buglet in parsing an assembly name.
35222
35223 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
35224
35225         * marshal.c (emit_ptr_to_str_conv): first impl.
35226
35227 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
35228
35229         * object.c, class.h: cache the vtable in the class as suggested by
35230         vargaz@freemail.hu (Zoltan Varga).
35231
35232 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35233
35234         * class.h, loader.c: added mono_field_from_token().
35235         * verify.c: first cut of type checking code.
35236
35237 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
35238
35239         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
35240
35241 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
35242
35243         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
35244         (fix bug #27782)
35245         (mono_marshal_get_remoting_invoke): impl.
35246         (mono_delegate_begin_invoke): impl.
35247         (mono_mb_emit_save_args): impl.
35248         (mono_delegate_end_invoke): impl.
35249         (mono_marshal_get_delegate_begin_invoke):
35250         (mono_marshal_get_delegate_end_invoke):
35251         (mono_marshal_get_delegate_invoke): generate a special name for
35252         those methods (including the signature) and associate them whith
35253         the delegate class. 
35254
35255 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
35256
35257         * reflection.[ch]: 
35258         (mono_reflection_type_from_name): now it has a MonoImage parameter
35259         which is used as the default image to search the type in. If the image
35260         is NULL or getting the type from it fails, it defaults to corlib.
35261
35262         * icall.c: changed 1 call to mono_reflection_type_from_name to match
35263         new parameter.
35264
35265 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35266
35267         * reflection.c: update the parameter table index.
35268
35269 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35270
35271         * domain.c: don't include the mark byte in the string hash.
35272
35273 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35274
35275         * icall.cs: icall for Type.GetTypeCode ().
35276         * verify: a couple of fixes and disabled local initialization checks.
35277
35278 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
35279
35280         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
35281
35282         * debug-helpers.c (mono_method_full_name): print the type of the
35283         runtime wrapper
35284
35285         * metadata.c (mono_signature_hash): a hash function for signatures
35286         (mono_signature_hash): better hash algorithm
35287
35288         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
35289
35290         * debug-helpers.c (mono_method_full_name): this can now generate
35291         method names with signatures
35292
35293         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
35294         method dont have this pointers.
35295
35296 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
35297
35298         * reflection.c: fixup typebuilder tokens.
35299         * image.c: fix buglet.
35300         * marshal.h: remove whitespace.
35301         * metadata.h, metadata.c: reinstate code that was removed.
35302         * verify.c: handle catch directives and fix another couple of bugs.
35303
35304 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
35305
35306         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
35307         (mono_marshal_get_native_wrapper): make it comp. with the old code
35308         (mono_marshal_get_native_wrapper): support boolean
35309         (mono_marshal_get_managed_wrapper): support more types
35310
35311 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
35312
35313         * class.c (class_compute_field_layout): compute class->blittable attribute.
35314
35315 2002-07-09  Dick Porter  <dick@ximian.com>
35316
35317         * threads.c: Make the thread cleaning up cope with threads that
35318         call ExitThread()
35319
35320 2002-07-08  Radek Doulik  <rodo@ximian.com>
35321
35322         * reflection.c (method_encode_code): use non-translated values to
35323         compute finally_start, this fixes exception handling on ppc, yay!
35324
35325         * decimal.h (struct signscale): fix endianess
35326
35327 2002-07-07  Radek Doulik  <rodo@ximian.com>
35328
35329         * reflection.c: swap box_val and not val
35330
35331 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
35332
35333         * reflection.c, reflection.h: handle full assembly info in type name.
35334         Handle Type arguments when loading custom attributes.
35335         * icall.c: updated to use new mono_reflection_type_from_name () method.
35336
35337 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35338
35339         * loader.c:
35340         (method_from_memberref): also print assembly name when method not found.
35341
35342 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35343
35344         * icall.c:
35345         (ves_icall_TypeGetProperties): fixed bug #27473. 
35346
35347 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35348
35349         * reflection.c: display image name and token when cannot find the
35350         .ctor for an attribute.
35351
35352 2002-07-05  Martin Baulig  <martin@gnome.org>
35353
35354         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
35355
35356 2002-07-04  Dick Porter  <dick@ximian.com>
35357
35358         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
35359         compile on mingw.  This will cause mingw builds to not wait for
35360         subthreads to terminate after the main thread does.  I've lodged a
35361         bug with the mingw developers for them to wrap OpenThread().
35362
35363 2002-07-03  Dick Porter  <dick@ximian.com>
35364
35365         * threads.c: Store thread IDs instead of handles, because
35366         GetCurrentThread() returns a pseudohandle and therefore stores
35367         useless values.  mono_thread_cleanup() continues checking the
35368         array of threads until it is empty, to cope with subthreads
35369         spawning new threads after the main thread has finished.
35370
35371         * profiler.h:
35372         * profiler.c:
35373         * profiler-private.h: Pass the thread ID to thread profiler
35374         functions, instead of a handle
35375
35376 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35377
35378         * verify.c: fixes to make it more usable.
35379         * pedump.c: added --verify code to verify IL code in an assembly.
35380
35381 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35382
35383         * reflection.c: turn errors into warnings to allow compiling corlib.
35384
35385 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
35386
35387         * reflection.c: add special cases to compile corlib.
35388
35389 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35390
35391         * reflection.c: handle properties with only a set method.
35392
35393 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35394
35395         * opcodes.h: add enum with opcodes in opval order.
35396
35397 2002-07-01  Dick Porter  <dick@ximian.com>
35398         
35399         * object.h:
35400         * object.c (mono_runtime_run_main): Removed unneeded argument
35401
35402 2002-06-28  Martin Baulig  <martin@gnome.org>
35403
35404         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
35405
35406 2002-06-27  Dick Porter  <dick@ximian.com>
35407
35408         * threads.c: Store the handle in both the parent thread and in the
35409         subthread, to minimise the time between starting a new thread and
35410         storing its ID.
35411
35412 2002-06-26  Dick Porter  <dick@ximian.com>
35413
35414         * appdomain.c (mono_runtime_cleanup): Close the socket library
35415         after all the threads have finished, not before
35416
35417 2002-06-26  Martin Baulig  <martin@gnome.org>
35418
35419         * debug-symfile.c (mono_debug_find_source_location): Added
35420         `guint32 *line_number' argument.  If it's not NULL, store the line number
35421         there and return the file name without the line number.
35422
35423 2002-06-25  Dick Porter  <dick@ximian.com>
35424
35425         * icall.c:
35426         * process.h:
35427         * process.c: Process forking and other support functions
35428
35429 2002-06-25  Dick Porter  <dick@ximian.com>
35430
35431         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
35432         things dont happen when the image is closed.
35433         (mono_image_lookup_resource): Walk the resource section looking
35434         for a particular entry
35435
35436         * cil-coff.h: PE resource section decoding
35437
35438 2002-06-25  Dick Porter  <dick@ximian.com>
35439         
35440         * assembly.h:
35441         * assembly.c: 
35442         (mono_assembly_foreach): Accessor functions to walk the list of
35443         loaded assemblies
35444         (mono_assembly_set_main):
35445         (mono_assembly_get_main): Process methods need to know which
35446         assembly is the "main" one
35447
35448         * object.c (mono_runtime_run_main): Record the main assembly
35449
35450         * debug-helpers.c: Fix typo
35451
35452 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
35453
35454         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
35455         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
35456
35457 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35458
35459         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
35460
35461 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
35462
35463         * image.c (do_mono_image_open): Initialize reference count,
35464         otherwise we leak the MonoImage.
35465
35466 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
35467
35468         * reflection.c: small tweak to handle self-hosting.
35469
35470 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
35471
35472         * reflection.c: fix type name parse code.
35473
35474 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35475
35476         * reflection.c: break out of the loop.
35477         * image.c: special case corlib.
35478
35479 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35480
35481         * reflection.c: add all the custom attrs at the end to ensure the
35482         ctors have been properly initialized when the attributes are defined
35483         in the current assembly.
35484
35485 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35486
35487         * reflection.c: handle correctly multiple-nested types.
35488
35489 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
35490
35491         * row-indexes.h: fix typos.
35492         * reflection.c: adjust for typos and fix method_def_or_ref
35493         encoding in MethodImpl table.
35494
35495 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35496
35497         * reflection.c: fix entry point patching (thanks Serge!).
35498
35499 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
35500
35501         * verify.c: add check for System.Exception
35502
35503 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35504
35505         * image.c, class.c: minifix for code just c&p'ed.
35506         * reflection.c: warning fix.
35507         * object.h, loader.h, domain.c: load also StringBuilder.
35508
35509 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35510
35511         * marshal.h, marshal.c: some support code to handle complex marshaling.
35512
35513 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35514
35515         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
35516         Better signatures with vtable error dump.
35517
35518 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
35519
35520         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
35521
35522 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
35523
35524         * icall.c (ves_icall_Type_GetField): impl.
35525
35526 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35527
35528         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
35529         to retrieve a marshal description blob for a field or param.
35530
35531 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
35532
35533         * reflection.h, reflection.c: change order of nested type emission
35534         to avoid table corruption. The NestedTypes table is sorted.
35535         * icall.c: change order of GetConstructor results to workaround mcs bug.
35536
35537 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35538
35539         * reflection.h, reflection.c: handle field and param marshal
35540         information.
35541
35542 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35543
35544         * icall.c, marshal.c marshal.h: more Marshal class implementation.
35545
35546 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35547
35548         * reflection.c: fix call convention.
35549
35550 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35551
35552         * reflection.h, reflection.c: mono_image_get_memberref_token()
35553         takes a type instead of a class, now. Added
35554         mono_image_get_array_token() to create tokens for the special
35555         multi-dim array methods.
35556
35557 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
35558
35559         * assembly.c: handle modules (no assembly table). Split
35560         loading references in its own function.
35561         * class.c: handle moduleref resolution scope.
35562         * image.c, image.h: cache module name in image.
35563
35564 2002-06-07  Martin Baulig  <martin@gnome.org>
35565
35566         * reflection.c (mono_image_get_type_info): Only add a class layout entry
35567         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
35568
35569 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35570
35571         * icall.c: more signature fixes that used uint instead of int.
35572
35573 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35574
35575         * reflection.c: fixed signature of field refs.
35576
35577 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35578
35579         * class.c, reflection.c: handle typerefs of nested types
35580         (both on read and when writing files).
35581
35582 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
35583
35584         * icall.c: fix method signatures that tried to workaround the previous
35585         typo, d'oh!
35586
35587 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
35588
35589         * debug-helpers.c: fix typo.
35590
35591 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
35592
35593         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
35594         rewrote the PE/COFF writing code (our programs are understood by the
35595         ms runtime, now).
35596
35597 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
35598
35599         * gc.c, gc.h, icall.c: weakreference support.
35600
35601 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35602
35603         * Makefile.am, mono-config.c: use $(sysconfdir).
35604
35605 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35606
35607         * icall.c: changed default precision of Double.ToString() to 15.
35608         Fixed memory leak. Unified with Single.ToString.
35609
35610 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
35611
35612         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
35613
35614 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
35615
35616         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
35617         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
35618         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
35619         and myself.
35620
35621 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35622
35623         * debug-symfile.c, sysmath.c: yet more compilation fixes.
35624
35625 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35626
35627         * reflection.c, socket-io.c: more compilation fixes.
35628
35629 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35630
35631         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
35632         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
35633         unicode.c: warning and compiler compatibility fixes.
35634
35635 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
35636
35637         * class.h, metadata.c: fixed warnings/compilation errors.
35638
35639 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35640
35641         * Makefile.am, mono-config.c, mono-config.h: configuration file
35642         support routines.
35643         * loader.c, loader.h: make Dll mapping configurable at runtime in the
35644         config file. Export methods to insert and lookup mappings.
35645
35646 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
35647
35648         * reflection.c: handle types and boxed objects in custom attr
35649         constructors.
35650
35651 2002-05-30  Martin Baulig  <martin@gnome.org>
35652
35653         * debug-symfile.c
35654         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
35655
35656 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
35657
35658         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
35659         to lookup the implmap row for a P/Invoke method.
35660         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
35661         P/Invoke method from the runtime on an as needed basis.
35662
35663 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
35664
35665         * metadata.c (mono_metadata_parse_signature): impl.
35666
35667 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35668
35669         * class.c: handle .pack directive.
35670
35671 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
35672
35673         * object.c: initialize static fields with RVA data.
35674
35675 2002-05-25  Martin Baulig  <martin@gnome.org>
35676
35677         * debug-symfile.c
35678         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
35679
35680 2002-05-24  Martin Baulig  <martin@gnome.org>
35681
35682         * debug-symfile.c
35683         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
35684         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
35685         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
35686
35687 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
35688
35689         * object.c: special case string ctros in invoke.
35690         * gc.c: silly whitespace changes.
35691
35692 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
35693
35694         * threadpool.[ch]: impl. a threadpool that can
35695         be used by mint and mono.
35696
35697 2002-05-22  Martin Baulig  <martin@gnome.org>
35698
35699         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
35700         The first argument is now a `MonoReflectionModuleBuilder *', the return
35701         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
35702         `methods' field to get the method builder.  The `token' argument is the
35703         unfixed token.
35704
35705         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
35706         invalid characters instead of g_assert_not_reached()ing.  This seems
35707         to be the behaviour of mscorlib.
35708
35709 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
35710
35711         * object.c (mono_runtime_invoke_array): applied patch from Rachel
35712         Hestilow to fix bug #25104
35713
35714 2002-05-21  Martin Baulig  <martin@gnome.org>
35715
35716         * debug-symfile.c (mono_debug_find_source_location): New function.
35717         Looks up an IL offset in the line number table and returns the source
35718         location as a string.
35719
35720 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35721
35722         * icall.c:
35723         (mono_double_ToStringImpl): changed %f by %g until we have something
35724         better.
35725
35726 2002-05-21  Nick Drochak  <ndrochak@gol.com>
35727
35728         * icall.c : Use different name for Math.Pow's icall.  Needed to check
35729         parameters first in C#.
35730
35731 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35732
35733         * icall.c, reflection.h: added icall to get info about an event.
35734
35735 2002-05-20  Radek Doulik  <rodo@ximian.com>
35736
35737         * object.c (mono_value_box): don't use memcpy for boxing on BIG
35738         endian
35739         (mono_value_box): don't use memcpy for small sizes on
35740         architectures with unaligned access
35741
35742 2002-05-20  Martin Baulig  <martin@gnome.org>
35743
35744         * reflection.c (mono_reflection_setup_internal_class): Don't crash
35745         if `tb->parent == NULL'.
35746         (mono_reflection_create_internal_class): New function.  This is
35747         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
35748         for enum types.
35749
35750         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
35751         New interncall.
35752
35753 2002-05-19  Martin Baulig  <martin@gnome.org>
35754
35755         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
35756         argument to get the length, don't default to the array length.
35757
35758 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
35759
35760         * assembly.c (mono_assembly_setrootdir): New function used to
35761         override the MONO_ASSEMBLIES directory.
35762
35763 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
35764
35765         * icall.c: ValueType_GetHashCode() initialize local var.
35766
35767 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35768
35769         * reflection.c: sort custom attributes table.
35770
35771 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
35772
35773         * reflection.c: support named args in custom attributes (write support).
35774
35775 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
35776
35777         * reflection.c: fix finally position calculation.
35778
35779 2002-05-15  Radek Doulik  <rodo@ximian.com>
35780
35781         * reflection.c: fixed endianess at many places
35782
35783         * icall.c (ves_icall_InitializeArray): comment out debug msg
35784
35785 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
35786
35787         * object.c (mono_unhandled_exception): new function to handle
35788         unhandled exceptions.
35789         (mono_unhandled_exception): call the UnhandledException event.
35790         (mono_runtime_delegate_invoke): impl.
35791
35792 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
35793
35794         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
35795         returns the RVA, not the direct pointer to the data. Handle the case
35796         when the class size is fixed.
35797
35798 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
35799
35800         * reflection.c: fix some endianess issues.
35801
35802 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
35803
35804         * object.c (mono_runtime_invoke): is now able to catch exceptions.
35805
35806         * threads.c (mono_thread_init): added a callback which is invoked
35807         at thread start.
35808
35809 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
35810         
35811         * icall.c: make GetHashCode return non-negative values.
35812
35813 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
35814
35815         * object.c, icall.c, gc.c: revert to address-based hashcode.
35816
35817 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
35818
35819         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
35820
35821 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35822
35823         * icall.c, class.c: special case <Module>.
35824
35825 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
35826
35827         * icall.c: fix bug in GetNow().
35828
35829 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
35830
35831         * object.c (mono_runtime_class_init): make sure that we call all
35832         static class constructors.
35833
35834 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
35835
35836         * reflection.c: sort methodsemantics table.
35837
35838 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
35839
35840         * reflection.h, reflection.c: honour init locals setting.
35841
35842 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
35843
35844         * icall.c: copied Double ToStringImpl for Single ToStringImpl
35845
35846 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
35847
35848         * reflection.c: support ContructorBuilders in attribute blob creation.
35849
35850 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35851
35852         * reflection.c: some changes to build a binary that can be run
35853         directly in windows.
35854
35855 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
35856
35857         * loader.c: print a big message when an icall can't be found.
35858
35859 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35860
35861         * string-icalls.c: fix bug 24248.
35862
35863 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
35864
35865         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
35866         icall.c, reflection.h: separate assembly loading by pathname and by
35867         assembly name. Use the MONO_PATH env var to search for assemblies.
35868
35869 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35870
35871         * assembly.c, image.h: add some support for assemblies
35872         with multiple modules.
35873         * class.c, class.h: export mono_class_from_typeref().
35874         * loader.c: remove duplicated code and use mono_class_from_typeref(),
35875         instead.
35876
35877 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35878
35879         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
35880         documentation says (the ECMA one is correct).
35881
35882 2002-05-02  Dick Porter  <dick@ximian.com>
35883
35884         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
35885         Don't name the synchronisation mutex.
35886
35887 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
35888
35889         * rand.c
35890         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
35891         Make the prototypes match.
35892         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
35893         Same.
35894
35895         * icall.c
35896         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
35897         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
35898         all systems have tm.tm_zone, so use strftime() with %Z to print
35899         the timezone abreviation into a temp string.
35900
35901         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
35902         rather than mono_array_addr() on a MonoString on Big Endian
35903         machines.
35904
35905 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
35906
35907         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
35908         fix bug 24041
35909
35910 2002-04-30  Dick Porter  <dick@ximian.com>
35911
35912         * socket-io.c: Cope with SOCKET being an integer rather than a
35913         pointer now.
35914
35915         * threads.c: Added Thread_free_internal, to deal with thread
35916         handle cleanup.  Moved calls to handle_store() and handle_remove()
35917         to start_wrapper(), so each can only be called once.  Allocate
35918         synchronisation blocks with GC_malloc(), and use GC finalisation
35919         to close the handles.
35920
35921         * icall.c: added System.Threading.Thread::Thread_free_internal
35922
35923 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35924
35925         * icall.c: support Environment.Exit, CommandLineArgs().
35926
35927 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35928
35929         * object.c, object.h: added mono_runtime_run_main () and
35930         mono_runtime_get_main_args () for use in System.Environment.
35931
35932 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35933
35934         * gc.c: fix thinko, enable actual finalization since the jit is now
35935         fixed.
35936
35937 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35938
35939         * gc.c, object.c: take into account that an object may be offset wrt the address
35940         returned by GC_malloc().
35941
35942 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
35943
35944         * image.c: handle files without entries in the assembly table (modules).
35945
35946 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
35947
35948         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
35949         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
35950         allowed to be null when it's System.Object class setup.
35951
35952 2002-04-27  Martin Baulig  <martin@gnome.org>
35953
35954         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
35955         if `tb->parent == NULL' rather than crashing.
35956
35957 2002-04-28  Nick Drochak  <ndrochak@gol.com>
35958
35959         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
35960         calling acos() where asin() should have been called.
35961
35962 2002-04-26  Martin Baulig  <martin@gnome.org>
35963
35964         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
35965         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
35966         there's a subdirectory called `System', but we don't want to read that
35967         subdirectory as an assembly.
35968
35969 2002-04-25  Martin Baulig  <martin@gnome.org>
35970
35971         * debug-symfile.c: Reflect latest MonoString changes.
35972
35973 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
35974
35975         * rand.c, rand.h: instance method icalls need to have an explicit
35976         this pointer as first argument in the C implementation.
35977
35978 2002-04-25  Nick Drochak <ndrochak@gol.com>
35979
35980         * icall.c: Fix typo in map for GetNonZeroBytes
35981
35982 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
35983
35984         * string-icalls.c : String does now passes unit tests without any 
35985         errors, the following changes has been made:
35986         
35987         Implemented replace methods.
35988         Renaming of methods to (try) follow the standard.
35989         Fixed compare ordinal
35990         Made all memory allocated directly to function instead of via icall function.
35991         Small performance fix in is_in_array function
35992                         
35993  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
35994
35995         c (mono_string_Internal_ctor_charp_int_int):
35996         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
35997         sindex < 0, throw ArgumentOutOfRangeException instead of
35998         ArgumentNullException.
35999
36000         Added new check for length == 0, however
36001         I need to make it return String.Empty from the C code.
36002         
36003         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
36004         that calculate the length for us here.
36005         
36006         (mono_string_Internal_ctor_sbytep_int_int): Replaced
36007         mono_string_new_utf16 with mono_string_new, since value is utf8.
36008
36009 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
36010
36011         * object.c: register the object for finalization if needed.
36012         Allocate one more char in the string for the terminating 0 char.
36013
36014 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
36015
36016         * class.c, class.h, image.c: check if a type implemenst a destructor.
36017         Use the proper key for array class lookups.
36018         * icall.c: register the icalls in the System.GC class.
36019         * gc.c, gc.h: GC-related functions and icalls.
36020
36021 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36022
36023         * icall.c:
36024         * socket-io.c:
36025         * unicode.c: free some strings gotten from mono_string_to_utf8 and
36026         changed a couple of free () by g_free ().
36027
36028         * decimal.c: one-liner in the comments for decimal2string ().
36029
36030 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
36031
36032         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
36033
36034 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
36035
36036         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
36037         * object.c (mono_runtime_invoke_array) : handle null in params
36038
36039 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
36040
36041         * string-icalls.c: fixed bug in split (one off bug)
36042
36043 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
36044
36045         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
36046         * icalls.c: added String::Equals as internal method
36047
36048 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
36049
36050         * threads.c: fixed bug in the double interlocked functions
36051
36052 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
36053
36054         * threads.c: implemented all of the new interlocked icalls.
36055         * string-icalls.c: fix a bug in insert.
36056         * icalls.c: added the icalls for interlocked, removed old string functions.
36057         
36058 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
36059
36060         * loader.c: fix off-by-one error when reading argument names.
36061
36062 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36063
36064         * profiler.c: win32 counter implementation (untested).
36065         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
36066         (the latter needs testing and more complete impl. from win32 folks).
36067
36068 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
36069
36070         * object.c: mono_array_new_full workaround mono_array_class_get
36071         problem.
36072
36073 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36074
36075         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
36076         * object.h (mono_string_chars): Changed casting type.
36077
36078 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36079
36080         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
36081                            method signatures to use gunichar2 instead of gint16.
36082
36083 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
36084
36085         * object.h, object.c: domain-specific versions of mono_object_new and
36086         mono_array_new.
36087
36088 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
36089
36090         * object.c: changed String layout
36091
36092         * string-icalls.c (mono_string_Internal_ctor_chara): added
36093         internal string constructors.
36094
36095 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
36096
36097         * threads.c: pass 'this' to the thread start routine.
36098
36099 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36100
36101         * string-icalls.c: fix IndexOf and LastIndexOf. Now
36102         InternalCompareStr don't call twice mono_string_cmp_char for the last
36103         character. Improved performance in mono_string_cmp_char.
36104
36105 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
36106
36107         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
36108         code into its own library: libmonoruntime.
36109
36110 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
36111
36112         * object.h, object.c: changed array format so that szarrays do not
36113         require a bounds structure.
36114         * icall.c, appdomain.c: support for new szarray format.
36115
36116 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
36117
36118         * metadata.c: compare also the retuns type when comparing signatures:
36119         we didn't do this as an optimization since really overloaded methods
36120         must differ also in the arguments, but this doesn't work with
36121         low-level IL code (or when using explicit conversion operators: see
36122         bug#23498 for an example).
36123
36124 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
36125
36126         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
36127
36128 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
36129
36130         * icall.c: make MonoType::GetElementType its own icall.
36131
36132 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
36133
36134         * icall.c: remove MonoMethod_get_Name().
36135         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
36136         object.
36137
36138 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36139
36140         * string-icalls.c: optimized a few methods.
36141
36142 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36143
36144         * icall.c: added all new string internal calls
36145         * string-icalls.c: added, new string internal call implementation.
36146         * object.c: added mono_string_new_size for allocating a string a size
36147
36148 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
36149
36150         * object.c (mono_object_isinst): use the same code as in the
36151         optimized x86 version.
36152
36153 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
36154
36155         * profiler.c: TSC-based timer code (faster and more accurate).
36156         Not hooked up in configure, yet (set USE_X86TSC to 1).
36157
36158 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
36159
36160         * profiler.c, profiler.h: track time spent compiling methods.
36161         * threads.c: track thread creation/destruction.
36162
36163 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
36164
36165         * profiler.c, profiler.h, profiler-private.h: profiling interface
36166         and sample implementation. Moved here so that it can be used also by
36167         the jit.
36168
36169 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
36170
36171         * reflection.c, reflection.h: keep types and other handles separate in
36172         the hash tables for referred tokens. Add guid for modules.
36173
36174 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
36175
36176         * assembly.c: fix bugs found with valgrind.
36177         * metadata.h, metadata.c: added mono_metadata_guid_heap().
36178
36179 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
36180
36181         * threads: added icall support for getting current domain for
36182                    the thread.
36183  
36184 2002-04-13  Martin Baulig  <martin@gnome.org>
36185
36186         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
36187         (MonoDebugVarInfo): Added `index' field for register based addresses.
36188         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
36189         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
36190         `MonoDebugVarInfo *params' and `guint32 this_offset' with
36191         `MonoDebugVarInfo *this_var'.
36192
36193         * debug-symfile.c (relocate_variable): New static function to write
36194         a location description for a local variable or method parameter.
36195
36196 2002-04-12  Martin Baulig  <martin@gnome.org>
36197
36198         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
36199         stack offset and begin/end scope address of a local variable.
36200         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
36201         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
36202         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
36203
36204         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
36205         Added new relocation types for start/end scope of a local variable.
36206
36207 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
36208
36209         * object.h: add mono_object_domain() macro.
36210         * reflection.c: handle typespecs.
36211         * icall.c: MonoMethod::get_Name() implementation.
36212
36213 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36214
36215         * icall.c: String::GetHashCode() icall implementation.
36216
36217 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
36218
36219         * icall.c: String::IndexOfAny icall.
36220         * object.c, object.h: make array->max_length more useful.
36221         Intrduced mono_object_class() and mono_string_length() macros.
36222
36223 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36224
36225         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
36226         instead of g_unichar_isdigit.
36227
36228 2002-04-11  Nick Drochak  <ndrochak@gol.com>
36229
36230         * icall.c: Implement a simple Double.ToString().
36231
36232 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
36233
36234         * appdomain.h: only io-layer.h is supposed to be included.
36235         * icall.c: explicitly import environ. Fix warning.
36236
36237 2002-04-10  Nick Drochak  <ndrochak@gol.com>
36238
36239         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
36240                 return true even if it's not Daylight Savings time.
36241                 Only return false for the case where the function isn't
36242                 implemented for a plaform (read Windows).
36243
36244 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
36245
36246         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
36247         data with a mutex.
36248
36249 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
36250
36251         * mempool.c (mono_mempool_alloc): only use g_malloc when
36252         absolutely necessary.
36253
36254 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
36255
36256         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
36257
36258         * class.c (mono_class_vtable): use domain mempool to allocate vtable
36259         (mono_class_proxy_vtable): use domain mempool
36260
36261 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
36262
36263         * appdomain.h, appdomain.c: split initialization that requires the
36264         execution engine support into mono_runtime_init().
36265
36266 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
36267
36268         * class.c (mono_class_init): don't include vtable inside MonoClass
36269         to save some memory, gather some statistics.
36270         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
36271
36272 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
36273
36274         * icall.c: internalcall implementation for ValueType.Equals().
36275
36276 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
36277
36278         * object.c (mono_message_init): moved 
36279         (mono_runtime_exec_main): new arch. independent impl.
36280         (mono_runtime_invoke_array): new method - like
36281         mono_runtime_invoke, but you can pass an array of objects.
36282         (mono_remoting_invoke): new arch. independent impl.
36283         (mono_message_invoke): new arch. independent impl.
36284         (mono_runtime_class_init): new arch. independent impl.
36285         (mono_runtime_object_init): new arch. independent impl.
36286
36287 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36288
36289         * metadata.c, object.c, reflection.c: documented the exported
36290         functions.
36291
36292 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
36293
36294         * icall.c: simpler code to pass the assembly builder data to corlib.
36295         Implement GetNestedTypes() internalcall.
36296
36297 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
36298
36299         * class.c: warn if a type can't be loaded.
36300
36301 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
36302
36303         * image.h: typedef MonoImageOpenStatus
36304         * types.h: removed unused file
36305         
36306 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
36307
36308         * icall.c: Enum_ToObject accepts enum value arguments.
36309
36310 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
36311
36312         * class.c: move initialization of properties, events and nested
36313         classes, so that they happen for interfaces, too.
36314
36315 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
36316
36317         * icall.c: cleanup some ugly casts in Array_SetValue*.
36318
36319 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
36320
36321         * icall.c: the values array fro enums is of the correct type, now.
36322         Implement (correctly) getFullName instead of assQualifiedName for
36323         MonoType.
36324         * reflection.h, reflection.c: added mono_type_get_name ().
36325
36326 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
36327
36328         * assembly.c, image.h: for each MonoImage, record from wich assembly
36329         it was loaded.
36330         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
36331         Make Type.Assembly work.
36332
36333 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
36334
36335         * debug-symfile.h: use char* instead of gpointer to avoid
36336         unnecessary casts.
36337
36338         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
36339
36340         * icall.c (ves_icall_InternalExecute): impl. FielSetter
36341         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
36342
36343 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
36344
36345         * icall.c (mono_message_init): impl. (code cleanup)
36346         (ves_icall_InternalExecute): impl. FieldGetter
36347
36348         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
36349         defined we call all (non-static)methods through the vtable. 
36350
36351 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
36352
36353         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
36354         finalizer even though the memory is still referenced (and the chunk of
36355         memory is not freed).
36356
36357 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
36358
36359         * assembly.c: fix brokeness.
36360
36361 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
36362
36363         * class.c: kill some warnings. Check explicit interface method
36364         implementation also without considering the namespace.
36365         Load also literal strings in static class data.
36366
36367 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
36368
36369         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
36370         (default_assembly_name_resolver): Make the resolver take the
36371         "base" directory where the assembly was originally defined, so we
36372         can load DLLs that are in the same directory as the assembly that
36373         is being referenced.
36374
36375 2002-03-28  Dick Porter  <dick@ximian.com>
36376
36377         * file-io.h: 
36378         * file-io.c:
36379         * socket-io.c: 
36380         * unicode.h: 
36381         * unicode.c: Warning cleanups
36382
36383 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
36384
36385         * object.h, reflection.h: use the correct type instead of MonoObject.
36386
36387 2002-03-28  Martin Baulig  <martin@gnome.org>
36388
36389         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
36390         (mono_debug_update_symbol_file): Initialize classes if necessary.
36391
36392 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
36393
36394         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
36395         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
36396
36397 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
36398
36399         * assembly.h: fix function prototype.
36400         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
36401         * mono-endian.h: use const cast.
36402
36403 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
36404
36405         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
36406
36407 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
36408
36409         * loader.c: don't assert when a typeref can't be loaded, give
36410         a chance to the runtime to trow an exception instead.
36411         * loader.h: fix warning.
36412
36413 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
36414
36415         * class.c (mono_class_proxy_vtable): added proxy support
36416
36417 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
36418
36419         * icall.c: removed last of PAL calls, added System.Environment
36420         * file-io.h, file-io.c: MonoIO implementation
36421         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
36422
36423 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
36424
36425         * appdomain.c: do not use the byte marker in ldstr table lookup.
36426         * debug-helpers.c: allow two ':' to separate class and method name.
36427         * object.c: allocate arrays bounds with the GC, too.
36428         * verify: add a few more checks.
36429
36430 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
36431
36432         * reflection.c: output also literal strings. Allocate parameter data
36433         with GC_malloc() (thanks, Martin, for catching this!).
36434
36435 2002-03-26  Martin Baulig  <martin@gnome.org>
36436
36437         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
36438         include the `this' offset in the `param_offsets'.
36439
36440 2002-03-25  Martin Baulig  <martin@gnome.org>
36441
36442         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
36443         mono_debug_get_class() function to get the classes. Added new
36444         relocation types for arrays and strings.
36445         (mono_debug_get_class): New static function to search in all
36446         referenced assemblies for a metadata token.
36447
36448         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
36449
36450 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
36451
36452         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
36453         hold gc-allocated objects. Make the string heap a stream like the
36454         others. Removed duplicated code when writing stream info.
36455         Added asserts to catch possible buffer overflows. Set the sorted map
36456         for tables that need sorting. Added some documentation.
36457
36458 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
36459
36460         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
36461         for interned strings and vtables.
36462
36463 2002-03-24  Martin Baulig  <martin@gnome.org>
36464
36465         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
36466         it in the array since it was created with g_slist_prepend().
36467
36468 2002-03-24  Martin Baulig  <martin@gnome.org>
36469
36470         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
36471         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
36472         (mono_debug_method_from_token): Renamed to
36473         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
36474         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
36475
36476         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
36477         relocation types.
36478
36479         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
36480
36481 2002-03-24  Martin Baulig  <martin@gnome.org>
36482
36483         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
36484         (mono_debug_method_from_token): New func.
36485
36486         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
36487         New interncall, calls mono_debug_local_type_from_signature().
36488         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
36489         calls mono_debug_method_from_token().
36490
36491 2002-03-23  Martin Baulig  <martin@gnome.org>
36492
36493         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
36494         specifies the number of bytes to be converted, not the array size.
36495         Return the number of chars, not the number of bytes.
36496         (ves_icall_iconv_get_chars): The `byteCount' argument
36497         specifies the number of bytes to be converted, not the array size.
36498
36499 2002-03-23  Martin Baulig  <martin@gnome.org>
36500
36501         * reflection.h (MonoReflectionSigHelper): New type.
36502
36503         * reflection.c (mono_reflection_sighelper_get_signature_local),
36504         (mono_reflection_sighelper_get_signature_local): New functions.
36505
36506         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
36507         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
36508         interncalls.
36509
36510 2002-03-23  Martin Baulig  <martin@gnome.org>
36511
36512         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
36513         is_writeable is set.
36514         (mono_raw_buffer_update): New function to write the modified map
36515         back to disk.
36516
36517         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
36518
36519         * debug-symfile.c (mono_debug_update_symbol_file): Call
36520         mono_raw_buffer_update() when done writing.
36521
36522 2002-03-23  Martin Baulig  <martin@gnome.org>
36523
36524         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
36525
36526         * debug-symfile.c: Added support for arguments and local variables.
36527
36528 2002-03-23  Dick Porter  <dick@ximian.com>
36529
36530         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
36531         protected by ifdefs, hence breaking the w32 build.
36532
36533 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36534
36535         * object.c: implement is_interned() the right way.
36536
36537 2002-03-21  Martin Baulig  <martin@gnome.org>
36538
36539         * debug-symfile.[ch]: New files to handle debugging information
36540         files. There's also support to dynamically update these symbol
36541         files to include machine dependent information.
36542
36543 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
36544
36545         * threads.c (mono_thread_create): new function to create thread
36546         from C
36547
36548 2002-03-20  Martin Baulig  <martin@gnome.org>
36549
36550         * icall.c (ves_icall_InternalInvoke): Create a new object if the
36551         method is a constructor.
36552         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
36553         points to ves_icall_InternalInvoke().
36554
36555 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
36556
36557         * file-io.c: Flush shouldn't throw exceptions.
36558
36559 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
36560
36561         * file-io.c: FileStream flush support; FileSetLength now
36562         restores file pointer.
36563
36564 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
36565
36566         * class.c: set image for pointer classes.
36567
36568 2002/03/19  Nick Drochak <ndrochak@gol.com>
36569
36570         * sysmath.c: Forgot one.
36571
36572 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
36573
36574         * sysmath.c: Avoid redefining existing names.
36575
36576 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
36577
36578         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
36579         handled by runtime as icall rather than dllimport from libm.so
36580         * file-io.c, file-io.h: fixed handle argument type.
36581
36582 2002-03-18  Dick Porter  <dick@ximian.com>
36583
36584         * reflection.c (mono_image_get_type_info): rename interface to
36585         iface, because of "#define interface struct" on windows.
36586
36587 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
36588
36589         * class.c, class.h: rename and export mono_ptr_class_get().
36590         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
36591         * reflection.c, reflection.h, icall.c: better/saner type name
36592         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
36593         method signatures.
36594
36595 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
36596
36597         * class.c (mono_class_init): removed hardcoded GHC_SLOT
36598
36599         * icall.c (ves_icall_InternalInvoke): impl.
36600
36601 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
36602
36603         * reflection.c: output the interface map table, too.
36604
36605 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
36606
36607         * class.c (class_compute_field_layout): separate computation of 
36608         static field layout
36609
36610 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
36611
36612         * icall.c: added System.Buffer support.
36613         * file-io.c: moved file icalls from PAL to FileStream.
36614
36615 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
36616
36617         * icall.c (ves_icall_System_Object_GetHashCode): impl.
36618
36619 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
36620
36621         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
36622
36623 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
36624
36625         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
36626
36627 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
36628
36629         * debug-helpers.{c,h}: moved here from monograph some useful functions
36630         to locate a method by name/signature in a class or image. Included
36631         also a small and flexible IL disassembler.
36632
36633 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36634
36635         * reflection.c: fixup tokens in methods with small header size, too.
36636
36637 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
36638
36639         * object.c (mono_string_to_utf8): remove assert(!error), instead
36640         print a warning. 
36641
36642 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
36643
36644         * icall.c: update to the new mono_Array_class_get interface.
36645
36646 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
36647
36648         * appdomain.c, object.c: Boehm-GC enable.
36649         * icall.c: make get_data_chunk() support split data requests.
36650         Ensure a class is initialized in more cases. Return only the first
36651         property found in GetProperties() or the compiler gets confused. 
36652         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
36653         * reflection.h, reflection.c: add fixup mechanism for field and method
36654         tokens. Initialize assembly->typeref in a single place. Output
36655         properties after events. Support custom attributes for events, too.
36656         Typo fix for paramter custom attrs.
36657
36658 2002-03-07  Martin Baulig  <martin@gnome.org>
36659
36660         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
36661
36662 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
36663
36664         * class.c (mono_array_class_get): fix. for multi. dim. arrays
36665
36666 2002-03-06  Martin Baulig  <martin@gnome.org>
36667
36668         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
36669         non-zero lower bounds. See testcases #F10-#F13.
36670
36671 2002-03-05  Martin Baulig  <martin@gnome.org>
36672
36673         * exception.c (mono_get_exception_argument_out_of_range): New exception.
36674
36675         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
36676         ves_icall_System_Array_GetValue(), only calculate the absolute array position
36677         here.
36678         (ves_icall_System_Array_SetValue): Likewise.
36679         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
36680         as argument and does the actual work. This function is used when copying a
36681         multi-dimensional array.
36682         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
36683         now do all the widening conversions of value types.
36684         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
36685
36686 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36687
36688         * class.c: remove some magic numbers and use the smbolic names,
36689         instead. Added init_events() to load event info at class init time.
36690         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
36691         and mono_metadata_methods_from_event().
36692         * reflection.h, reflection.c: added support for writing out the evnets
36693         related information.
36694
36695 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
36696
36697         * reflection.h, icall.c: use a different method (GetInterfaces)
36698         to gather interface info and add isbyref, isprimitive and
36699         ispointer to the ves_icall_get_type_info() return value.
36700
36701 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
36702
36703         * class.h: stared adding support for events.
36704         * icall.c: split find_members implementation. Added debug icall to get
36705         the address of an object.
36706         * reflection.c: handle TypeBuilders in mono_type_get_object().
36707
36708 2002-03-01  Martin Baulig  <martin@gnome.org>
36709
36710         * icall.c (ves_icall_System_Array_GetLength): This must throw an
36711         ArgumentOutOfRangeException(), not an ArgumentException().
36712         (ves_icall_System_Array_GetLowerBound): Likewise.
36713         (ves_icall_System_Array_GetValue): Improved argument checking.
36714         (ves_icall_System_Array_SetValue): Improved argument checking.
36715
36716 2002-03-01  Martin Baulig  <martin@gnome.org>
36717
36718         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
36719         called with invalid arguments rather than just dying with g_assert().
36720         (ves_icall_System_Array_SetValue): Likewise.
36721         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
36722         raise a NotImplementedException instead.
36723         (ves_icall_System_Array_GetLength): Added argument checking.
36724         (ves_icall_System_Array_GetLowerBound): Added argument checking.
36725
36726 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
36727
36728         * object.h (mono_assert): new macros mono_assert and
36729         mono_assert_not_reached
36730
36731 2002-02-28  Martin Baulig  <martin@gnome.org>
36732
36733         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
36734         and "System::String::IsInterned" to "System::String::_IsInterned".
36735
36736 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
36737
36738         * icall.c: remove hacks for typebuilder. Added icall to create a
36739         modified type from a tybebuilder.
36740         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
36741         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
36742         to create a backing MonoClass for a TypeBuilder.
36743
36744 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36745
36746         * class.c, class.h: more refactoring of class init.
36747         Export mono_class_setup_mono_type() and mono_class_setup_parent().
36748
36749 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
36750
36751         * marshal.c, marshal.h: start of marshaling interface.
36752
36753 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
36754
36755         * icall.c: fix order in assembly qualified name icall.
36756
36757 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
36758
36759         * class.c: do not free str, since we store it in the hash table.
36760         * reflection.h: add label field to MonoILExceptionInfo.
36761         * reflection.c: handle references to more than one assembly. Handle
36762         case when there isn't a module created in the assembly.
36763
36764 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
36765
36766         * class.c: Fix typo. Start refactoring of class init code.
36767
36768 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
36769
36770         * appdomain.c: exit with 1 on error.
36771         * class.c: we already have the name in MonoClassField.
36772         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
36773         MonoStreamHeader instead of an offset of image->raw_metadata.
36774
36775 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
36776
36777         * appdomain.c (mono_init): Be even more descriptive about the error.
36778
36779 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
36780
36781         * appdomain.c: give the user an informative message when corlib can't
36782         be loaded.
36783
36784 2002-02-26  Martin Baulig  <martin@gnome.org>
36785
36786         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
36787         New icall to get the time zone data.
36788
36789 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36790
36791         * reflection.c: set virtual and raw size of section correctly.
36792         * threads.c: transfer domain information to newly created threads.
36793
36794 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
36795
36796         * class.c: when instancing a class in a domain, load the default
36797         vaules for static fields from the constant table. Fix System.Enum to
36798         not be an enum.
36799         * icall.c: implement Object::GetType() internalcall. Implemented
36800         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
36801         Fixed checking of binding flags in find_members().
36802         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
36803         * reflection.c: handle enumerations when writing to the constant
36804         table. Use a different object cache for types.
36805
36806
36807 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
36808
36809         * object.c (mono_object_isinst): fix for arrays
36810
36811         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
36812
36813 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
36814
36815         * object.c: don't use mprotect ()  and fix intern pool hash table
36816         lookup for big endian systems.
36817
36818 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36819
36820         * icall.c: change type_is_subtype_of () signature.
36821
36822 2002-02-21  Mark Crichton  <crichton@gimp.org>
36823
36824         * rand.c, rand.h: Added random number generator for
36825         System.Security.Cryptography classes.
36826
36827         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
36828
36829         * icall.c: Added System.Security.Cryptography calls.
36830
36831 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
36832
36833         * class.c, icall.c, metadata.c: better support for pointer types.
36834         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
36835         * reflection.c: Add support for getting custom attrs for properties
36836         and simplify some code.
36837
36838 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36839
36840         * icall.c: change getToken () and add custom attribute GetBlob()helper
36841         method.
36842         * reflection.h: add custom attrs array to the reflection builder structures.
36843         * reflection.c: encode and emit custom attributes for all the relevant
36844         reflection objects. Cache fieldref and methodref tokens. Change
36845         mono_image_create_token() interface to take a MonoDynamicAssembly.
36846         More complete custom attributes decoder. Load custom attributes for
36847         Assembly, Field, Method and Constructor objects, too. Make the
36848         returned array an Attribute[] one, not object[]. Added
36849         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
36850         custom attribute constructor.
36851
36852 2002-02-20  Dick Porter  <dick@ximian.com>
36853
36854         * icall.c:
36855         * rawbuffer.c:
36856         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
36857         problem code out for now).
36858
36859 2002-02-19  Radek Doulik  <rodo@ximian.com>
36860
36861         * object.c (mono_ldstr): use hash table to avoid multiple swapping
36862
36863 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
36864
36865         * icall.c: register the GetCustomAttributes method.
36866         * object.c, object.h: add mono_string_new_len ().
36867         * reflection.h, reflection.c: added mono_runtime_invoke(),
36868         mono_install_runtime_invoke(). Added
36869         mono_reflection_get_custom_attrs () to load custom attributes and
36870         create the attribute objects.
36871
36872 2002-02-19  Dick Porter  <dick@ximian.com>
36873         * threads-dummy-types.c:
36874         * threads-dummy-types.h:
36875         * threads-dummy.c:
36876         * threads-dummy.h:
36877         * threads-pthread-types.c:
36878         * threads-pthread-types.h:
36879         * threads-pthread.c:
36880         * threads-pthread.h:  Deleted obsolete files
36881
36882 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
36883
36884         * class.c (mono_class_vtable): runtime init the class when we
36885         allocate static class data.
36886
36887         * icall.c (ves_icall_System_Array_SetValue): check for null values.
36888
36889         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
36890         and String - but we will need generic marshalling support in the
36891         future. 
36892         (mono_init): set the domain name in a ms compatible way
36893
36894         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
36895         String[].
36896
36897 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
36898
36899         * object.c (mono_array_clone): use alloca() instead of g_malloc  
36900         for sizes
36901
36902         * appdomain.c (mono_domain_unload): impl.
36903
36904 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
36905
36906         * appdomain.c, object.c: fix intern pool implementation.
36907         * class.c: fix alignment code.
36908
36909 2002-02-16  Radek Doulik  <rodo@ximian.com>
36910
36911         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
36912         and s2 > s1, just copy lower bytes to be compatible with little
36913         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
36914         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
36915
36916         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
36917         force big_endian to be 1 for big endian machines 
36918         (ves_icall_iconv_new_decoder): ditto
36919
36920 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
36921
36922         * socket-io.c (convert_sockopt_level_and_name): If the system
36923         doesn't define SOL_IP or SOL_TCP, get them by hand using
36924         getprotobyname() and caching the values (because this could be a
36925         slow operation).
36926         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
36927         Use the appropriate struct when the system does support it. Ie,
36928         not all systems have struct ip_mreqn so use struct ip_mreq when
36929         appropriate.
36930
36931 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
36932
36933         * reflection.c: handle finally clauses.
36934
36935 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
36936
36937         * socket-io.c: use g_snprintf() instead of snprintf.
36938
36939 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
36940
36941         * reflection.c (mono_param_get_objects): Cast second argument to
36942         mono_method_get_param_names to a const char** to silence the
36943         compiler warning.
36944
36945         * appdomain.c (mono_domain_assembly_open): Put parens around the
36946         truth statement in the for-loop.
36947
36948         * unicode.c (iconv_convert): Got rid of a compiler warning about
36949         int i being unused when the system has a new iconv.
36950         (iconv_get_length): Same.
36951
36952         * image.c (load_class_names): Cast the second argument to
36953         g_hash_table_insert() to char* to hush compiler warnings about the
36954         arg being a const.
36955         (mono_image_open): Same here.
36956
36957         * socket-io.c: Don't conditionally include sys/filio.h or
36958         sys/sockio.h here anymore since we now get them from
36959         io-layer/io-layer.h
36960         (inet_pton): If the system doesn't support inet_aton, implement
36961         using inet_addr and also #define INADDR_NONE if it isn't defined
36962         by the system.
36963
36964 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
36965
36966         * metadata.c, metadata.h: added function to get packing and size info
36967         of a typedef.
36968         * reflection.h, reflection.c: handle field RVA data. Save info about
36969         the table layout if needed. Assign typedef indexes to all the types
36970         before dumping the info about them to avoid forward reference problems.
36971
36972 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
36973
36974         * socket-io.c (convert_sockopt_level_and_name): ifdef
36975         SO_ACCEPTCONN because it is not defined on my system (old debian)
36976
36977 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
36978
36979         * opcode.c: use stddef.h to get NULL.
36980
36981 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
36982
36983         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
36984         for FIONBIO, FIONREAD and SIOCATMARK.
36985         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
36986         define INADDR_NONE and besides, inet_addr() is deprecated and
36987         should not be used. Use inet_pton() instead - it also has the
36988         added bonus that it can easily handle IPv6 addresses as well.
36989         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
36990
36991 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
36992
36993         * decimal.c: remove _MSC_VER conditional.
36994
36995 2002-02-13  Dick Porter  <dick@ximian.com>
36996
36997         * socket-io.c: 
36998         * icall.c: Internal calls for Blocking, Select, Shutdown,
36999         GetSocketOption and SetSocketOption
37000
37001 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
37002
37003         * assembly.cs: better resolver: use it instead of some kludgy
37004         code.
37005
37006 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
37007
37008         * reflection.c: the best way to speed-up the compiler is to avoid
37009         infinite loops.
37010
37011 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
37012
37013         * class.c (mono_class_vtable): changed the object layout
37014         (obj->vtable->class). 
37015         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
37016
37017 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
37018
37019         * assembly.c: look for assemblies in the assembly dir, too.
37020
37021 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
37022
37023         * class.c: fix thinko in mono_class_from_type().
37024
37025 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
37026
37027         * exception.h, exception.c: added TypeLoadException.
37028         * object.h, object.c: added mono_array_clone ().
37029         * icall.c: handle throwOnError in AssemblyGetType().
37030         Added Array.Clone().
37031         * opcode.h, opcode.c: use a single value for the opcode val.
37032         Compile fix for non-gcc compilers.
37033
37034 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
37035
37036         * opcodes.c, opcodes.h: export interesting info about opcodes.
37037
37038 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
37039
37040         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
37041         icalls. 
37042
37043         * class.c (class_compute_field_layout): set element_class for enums
37044         (mono_class_create_from_typedef): set element_class for normal classes
37045
37046         * icall.c (ves_icall_System_Enum_get_value): impl.
37047
37048         * class.c (mono_class_create_from_typedef): do not set valuetype
37049         flag for System.ValueType and System.Enum
37050
37051 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
37052
37053         * unicode.c (iconv_convert): fix big endian problem.
37054
37055 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
37056
37057         * class.c: add asserts if we are ever going to scribble over memory.
37058         * socket-io.c: not all systems have AF_IRDA defined.
37059
37060 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
37061
37062         * class.c (class_compute_field_layout): do not consider static
37063         fields to compute alignment
37064
37065 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
37066
37067         * appdomain.c (mono_appdomain_get): impl.
37068         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
37069
37070 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
37071
37072         * icall.c: ignore "file://" prefix when loading an assembly.
37073
37074 2002-01-23  Dick Porter  <dick@ximian.com>
37075
37076         * socket-io.c:
37077         * icall.c:
37078         * Makefile.am: Added socket support
37079
37080 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
37081
37082         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
37083         code back.  This should return the assemblies that are loaded by
37084         the runtime on behalf of an application domain. 
37085
37086         The current implementation is still broken, it just returns every
37087         assembly loaded, but until we get real applications domain this
37088         will do.
37089
37090 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
37091
37092         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
37093         AppDomain object.
37094
37095 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
37096
37097         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
37098         the mono_class_from_name lookup.
37099         (ves_icall_get_parameter_info): ditto.
37100         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
37101         method.
37102         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
37103
37104 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
37105
37106         * class.c: load also nested classes on class init.
37107         System.ValueType instance methods gets passed boxed
37108         values, unless methods in derived classed that get a pointer to the
37109         data.
37110         * icall.c: use better name parsing code in GetType().
37111         * image.c, image.h: add mono_image_loaded ().
37112         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
37113         * reflection.c, reflection.h: added mono_reflection_parse_type().
37114
37115 2002-01-22  Veronica De Santis <veron78@interfree.it>
37116
37117         * icall.c : Added mapping of internal calls for Manual and Auto reset events
37118         * threads.c : Added the implementation of internal calls for events
37119         * threads.h : Added prototypes of internal calls for events
37120         
37121 2002-01-21  Radek Doulik  <rodo@ximian.com>
37122
37123         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
37124
37125 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
37126
37127         * class.c (mono_class_init): set min_align to 1 (instead of 0)
37128         (mono_class_value_size): use min_align
37129
37130 2002-01-20  Dick Porter  <dick@ximian.com>
37131
37132         * threads.h:
37133         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
37134         so it compiles on w32.
37135
37136 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
37137
37138         * metadata.c (mono_type_stack_size): impl.
37139
37140         * class.c (mono_class_get_field): impl. memberref token
37141
37142 2002-01-16 Veronica De Santis <veron78@@interfree.it>
37143
37144         * icall.h : Added the internal calls mapping for CreateMutex_internal
37145                     and ReleaseMutex_internal.
37146         * threads.h : Added the prototype of mutexes internal calls.
37147         * threads.c : Added the implementations of mutexes internal calls.
37148
37149 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
37150
37151         * metaparse.h: removed unused file.
37152         * reflection.c, reflection.h: added stream_data_align () function 
37153         to align data in streams and keep stream aligned. Add support for
37154         exception support in method headers.
37155
37156 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
37157
37158         * unicode.c: make iconv_convert () return the number of bytess written
37159         in the output buffer.
37160
37161 2002-01-15  Dick Porter  <dick@ximian.com>
37162         * threads.c: Make the runtime's idea of infinite timeouts coincide
37163         with the class library's
37164
37165         Fix a particularly egregious bug in mono_thread_cleanup(). That
37166         code was so utterly bogus it must have been written on a Monday.
37167
37168 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
37169
37170         * reflection.h: add subtypes field to TypeBuilder.
37171         * reflection.c: encode constants for literal fields.
37172         Handle subtypes. Fix user string token (and add a zero byte)
37173         at the end.
37174         
37175 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
37176
37177         * class.c (mono_class_init): bug fix: assign slot numbers for
37178         abstract methods.
37179
37180 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
37181
37182         * reflection.c: don't try to output a code RVA for abstract methods.
37183         Small fixes for method header format. Output parameter info to the
37184         ParamDef table. Save method overriding info to MethodImpl table.
37185         Fix property support. Allow typedef.extends to be a type in the
37186         building assembly.
37187         * verify.c: fix off-by-one error.
37188
37189 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
37190
37191         * class.c: fix mono_class_from_mono_type () for szarray types.
37192         Remove unused cache check in mono_class_from_type_spec().
37193         * icall.c: *type_from_name () functions handle simple arrays and byref.
37194         * reflection.c: handle byref and szarray types. Handle methods without
37195         body (gets P/Invoke compilation working). Handle types and fields in
37196         get_token ().
37197         * reflection.h: add rank to MonoTypeInfo.
37198
37199 2002-01-10  Dick Porter  <dick@ximian.com>
37200
37201         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
37202         internal calls
37203
37204 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
37205
37206         * icall.c: initialize class in type_from_handle ().
37207         Loop also in parent classes for get_method ().
37208         * reflection.c: properly encode class and valuetype types.
37209         Start on encoding TypeBuilder types. Handle fieldrefs.
37210         Use correct length when registering a user string.
37211         Handle ConstructorBuilder and MonoMethod in get_token ().
37212         Make mono_type_get_object () aware of cached types.
37213         * object.c: back out change to mono_string_new ().
37214
37215 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
37216         * object.c: mono_string_new should return a NULL when the string 
37217         passed in is NULL -- not try to deference it.
37218         
37219 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
37220
37221         * icall.c: hack to make IsSubType work for TypeBuilders.
37222         * reflection.c: emit constructors before methods.
37223         Retrieve param names in mono_param_get_objects().
37224
37225 2002/01/05  Nick Drochak  <ndrochak@gol.com>
37226
37227         * Makefile.am: fix list of headers and sources so automake 1.5
37228         doesn't complain. Removed \# at end of list.
37229
37230 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
37231
37232         * reflection.c: get token for a method ref. Set return type of
37233         constructor to void.
37234         * loader.c: debug message.
37235         * class.c: typo fix.
37236
37237 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
37238
37239         * icall.c: fix array init with rank > 1. FindMembers
37240         loops in parent class as well.
37241         * image.c: do not insert nested types in name cache.
37242         * reflection.c: warning fix.
37243         * reflection.h: add override method (for interface impl).
37244
37245 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
37246
37247         * metadata.c: fix customattr decoding.
37248
37249 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
37250
37251         * rawbuffer.cs: Added native Win32 implementation, avoids using
37252         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
37253
37254 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
37255
37256         * class.c: make the low-level routines handle the cache.
37257
37258 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
37259
37260         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
37261
37262 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
37263
37264         * class.c: fix mono_array_element_size() for objects.
37265         * class.h, class.c: add properties to MonoClass and load them
37266         at init time.
37267         * icall.c: check with isinst() when assigning a value to an array
37268         instead of requiring the classes to match exactly.
37269         Implemented icall for System.Type::GetType().
37270         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
37271         enums. Handle bindingflags when looking for methods and fields.
37272         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
37273         and mono_metadata_methods_from_property().
37274         * reflection.h, reflection.c: added structures for propreties,
37275         parameters and enums. Implemented mono_property_get_object() and
37276         mono_param_get_objects().
37277
37278 2001-12-18  Dick Porter  <dick@ximian.com>
37279
37280         * file-io.c: Use mono_string_to_utf16() instead of
37281         mono_string_chars()
37282
37283         * object.c: Added mono_string_to_utf16(), which copies the non
37284         NULL-terminated MonoString into a new double-null-terminated
37285         buffer.
37286
37287 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
37288
37289         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
37290
37291 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
37292
37293         * file-io.c: raise exceptions if handle is invalid.
37294
37295 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
37296
37297         * assembly.c: yet another check for mscorlib.
37298         * class.c, class.h: load nesting info for classes.
37299         * icall.c: many new functions to support the Reflection classes.
37300         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
37301         * reflection.h, reflection.c: mono_image_create_token(),
37302         mono_assembly_get_object(), mono_type_get_object(),
37303         mono_method_get_object(), mono_field_get_object(): methods to return
37304         objects that parallel the C representation of assemblies, types,
37305         methods, fields.
37306
37307 2001-12-11  Dick Porter  <dick@ximian.com>
37308
37309         * icall.c:
37310         * file-io.c: Internal calls for file IO.
37311
37312 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
37313
37314         * tabledefs.h: missing FileAttributes.
37315         * verify.h, verify.c: use is_valid_string () to simplify and check for
37316         valid strings more correctly. Fix warnings and speeling.
37317         Check more tables: Filed, File, ModuleRef, StandAloneSig.
37318         Check code: branches, maxstack, method calls.
37319
37320 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
37321
37322         * object.c (mono_object_allocate): removed static, so that the jit
37323         can allocate value types.
37324
37325         * icall.c (ves_icall_System_DateTime_GetNow): impl.
37326
37327 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37328
37329         * class.c: init enum types right away and register the
37330         token->MonoClass map in mono_class_create_from_typedef ().
37331         * verify.h, verify.c: first cut of the verifier.
37332         * pedump.c: add --verify switch to verify metadata tables.
37333         * tabledefs.h: add some missing enums.
37334
37335 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
37336
37337         * class.c (mono_install_runtime_class_init): impl.
37338         (mono_class_init): renamed mono_class_metadata_init to
37339         mono_class_init, also removed the metadata_inited flag
37340
37341         * object.c (mono_object_isinst): use faster algorithm
37342
37343 2001-11-30  Radek Doulik  <rodo@ximian.com>
37344
37345         * mono-endian.h: reverted last change
37346         added function prototypes
37347
37348         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
37349         add mono-endian.c back
37350
37351         * mono-endian.c: returned back, as Paolo pointed out, it's needed
37352         for unaligned access, I've mistaked it with endianess. I am
37353         sorry.
37354         (mono_read16): fix reverted endianess
37355         (mono_read64): ditto
37356         (mono_read32): ditto
37357
37358 2001-11-30  Dick Porter  <dick@ximian.com>
37359
37360         * exception.c: Implement mono_exception_from_name()
37361
37362 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
37363
37364         * metadata.h, metadata.c: remove params_size and locals_size and their
37365         calculation from the metadata code: they are only usefult to the
37366         interp.
37367
37368 2001-11-29  Radek Doulik  <rodo@ximian.com>
37369
37370         * object.c (mono_ldstr): swap bytes here, it's probably not the
37371         best place, but works for me now, I'll redo it once I know mono
37372         better, also note that I add PROT_WRITE and don't reset back, also
37373         note that it's only affects big endians, so x86 should be OK
37374
37375         * mono-endian.h (read16): use just glib macros for both endians
37376
37377         * mono-endian.c: removed as glib macros are used in in
37378         mono-endian.h so we don't need to care about endianess for read
37379         macros as glib does that for us already
37380
37381 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
37382
37383         * class.h, class.h: take minimum alignment into consideration so
37384         that the fields of a class remain aligned also when in an array.
37385
37386 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37387
37388         * loader.h, loader.c: add mono_method_get_param_names().
37389         * class.c: 0-init class fields.
37390
37391 2001-11-26  Dick Porter  <dick@ximian.com>
37392
37393         * icall.c:
37394         * threads-types.h:
37395         * threads.c: New file that handles System.Threading on all platforms
37396
37397         * object.c: 
37398         * object.h: Remove the synchronisation struct from MonoObject,
37399         replace it with a pointer that gets initialised on demand
37400
37401         * Makefile.am: Replace all the system-specific threading code with
37402         a single file that uses the new wrapper library
37403
37404 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
37405
37406         * class.c, class.h: add mono_install_trampoline() so that the runtime
37407         can register a function to create a trampoline: removes the ugly
37408         requirement that a runtime needed to export arch_create_jit_trampoline.
37409         * object.h, object.c: added mono_install_handler() so that the runtime
37410         can install an handler for exceptions generated in C code (with
37411         mono_raise_exception()). Added C struct for System.Delegate.
37412         * pedump.c: removed arch_create_jit_trampoline.
37413         * reflection.c: some cleanups to allow registering user strings and
37414         later getting a token for methodrefs and fieldrefs before the assembly
37415         is built.
37416         * row-indexes.h: updates and fixes from the new ECMA specs.
37417
37418 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
37419
37420         * class.h, class.c: add enum_basetype field to MonoClass.
37421         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
37422         to get index in the constant table reated to a field, param or
37423         property.
37424         * reflection.h, reflection.c: handle constructors. Set public-key and
37425         version number of the built assembly to 0.
37426         * row-indexes.h: update from new ECMA spec.
37427
37428 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
37429
37430         * class.h, class.c: add a max_interface_id to MonoClass.
37431         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
37432         since it's used to do that. Added mono_type_type_from_obj().
37433         Make GetType() return NULL instead of segfaulting if the type was not
37434         found. Handle simple arrays in assQualifiedName.
37435         * object.h: add a struct to represent an Exception.
37436         * reflection.c: output call convention in method signature.
37437         Add code to support P/Invoke methods and fixed offsets for fields.
37438
37439 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
37440
37441         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
37442         the value.
37443         * icall.c: use mono_array_addr instead of array->vector: fixes the
37444         reflection image writing.
37445         * reflection.c: init call convention byte to 0 in method signature.
37446         Encode the property signature. Don't output property-related methods
37447         twice. Really process the properties for a type (don't cast a field to
37448         a property, my mom always told me that).
37449         Fix 64 bit issues in pointer alignment in a different and more
37450         readable way.
37451
37452 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
37453
37454         * loader.h: Removed type class from MonoDefaults, added monotype
37455
37456         * loader.c: Loaded MonoType, removed loading of Type
37457
37458         * icall.c (my_mono_new_object): Now returns a System.MonoType,
37459         and fills in System.Type._impl with a RuntimeTypeHandle rather
37460         than the actual MonoClass *
37461
37462         (ves_icall_type_from_handle): change from type_class to
37463         monotype_class
37464
37465         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
37466         implemented
37467
37468         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
37469         implemented
37470
37471         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
37472
37473         (ves_icall_System_Reflection_Assembly_GetType): implemented
37474
37475         (ves_icall_System_MonoType_assQualifiedName): implemented
37476
37477         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
37478
37479 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
37480
37481         * assembly.c (mono_assembly_open): Implement a cache for the
37482         assemblies. 
37483
37484         (mono_assembly_close): only destroy the assembly when the last
37485         reference is gone.
37486         
37487 2001-11-09  Dick Porter  <dick@ximian.com>
37488
37489         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
37490
37491 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
37492
37493         * class.c (mono_class_metadata_init): bug fix: compute the right slot
37494
37495 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
37496
37497         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
37498         from Martin Weindel.
37499         * object.h: add mono_string_chars ().
37500
37501 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
37502
37503         * reflection.c (build_compressed_metadata): Eliminates warnings
37504         and uses 64-bit clean code.
37505
37506         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
37507         (mono_type_equal): Change signature to eliminate warnings.
37508
37509 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37510
37511         * icall.c, loader.c: remove the internalcall array constructors.
37512         Changes to match the new MonoArray structure.
37513         * object.h, object.c: an array object doesn't allocate an extra
37514         vector. Add mono_array_new_full () to create jagged arrays easily.
37515
37516 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
37517
37518         * metadata.h, metadata.c: add mono_metadata_field_info () to
37519         retreive all the info about a field from vairous tables.
37520         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
37521         * class.h, class.c: augment MonoClassField with more info.
37522         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
37523         policy and load a field's RVA if needed.
37524
37525 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
37526
37527         * class.c (mono_class_metadata_init): create a trampoline for all
37528         virtual functions instead of actually compiling them.
37529
37530 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
37531
37532         * class.h, class.c: include name in MonoClassField.
37533         * class.c: fix fundamental type of System.Object and System.String.
37534         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
37535         tokens in ldtoken.
37536         * icall.c: remove internalcalls for the Reflection stuff that is now
37537         done in C# code.
37538         * loader.c: mono_field_from_memberref () implementation.
37539         * mono-endian.c: thinko (s/struct/union/g).
37540         * object.c, object.h: make the mono_string_* prototypes actually use
37541         MonoString instead of MonoObject.
37542         * reflection.c, reflection.h: updates for changes in the reflection
37543         code in corlib: we use C structures that map to the actual C# classes.
37544         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
37545         fat method header if needed and use the info from the ILGenerator for
37546         methods. Handle fields in types. Misc fixes.
37547
37548 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
37549
37550         * class.c (mono_class_metadata_init): bug fix: always allocate
37551         space for static class data
37552
37553 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
37554
37555         * class.c (mono_compute_relative_numbering): use relative
37556         numbering to support fast runtime type checks.
37557
37558 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
37559
37560         * class.c (mono_class_create_from_typeref): added debugging output
37561         to print class name when MonoDummy is returned instead of real class
37562
37563 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
37564
37565         * class.c (mono_class_metadata_init): interface offset table now
37566         contains pointers into the vtable - this is more efficient for the jit
37567
37568 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
37569
37570         * class.c (mono_class_metadata_init): use a temporary vtable (the
37571         old algorithm only worked for the interpreter, but not for the jit)
37572
37573 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
37574
37575         * loader.c (method_from_memberref): use mono_class_get to get the
37576         class of an array instead of using System.Array directly.
37577         (mono_get_method): also add MEMBERREF methods to the method cache
37578         which usefull for arrays.
37579
37580 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
37581
37582         * pedump.c (arch_compile_method): added to compute vtable entry
37583
37584         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
37585         number of interfaces.
37586         
37587         * class.h: merged MonoArrayClass into MonoClass
37588
37589         * class.c (mono_class_create_from_typedef): compute the vtable size and
37590         allocate space to include the vtable inside MonoClass
37591         (mono_class_metadata_init): initialize the vtable
37592
37593 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
37594
37595         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
37596         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
37597         * image.c: endian fixes by Laurent Rioux.
37598         * object.h, object.c: rename MonoStringObject to MonoString and
37599         MonoArrayObject to MonoArray. Change some function names to conform to
37600         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
37601         guint16* as first argument, so don't use char*.
37602         Provide macros to do the interesting things on arrays in a portable way.
37603         * threads-pthread.c: updates for the API changes and #include <sched.h>
37604         (required for sched_yield()).
37605         * icall.c: updates for the API changes above.
37606         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
37607         platforms that need them.
37608
37609 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
37610
37611         * class.c: set the correct type for all the fundamental
37612         type when loading the class.
37613
37614 2001-10-05  Dick Porter  <dick@ximian.com>
37615
37616         * threads-pthread.c (pthread_mutex_timedlock): Simple
37617         compatibility version for C libraries that lack this call.
37618
37619 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37620
37621         * class.c: MonoTypes stored in MonoClass are stored as
37622         fundamental MonoTypes when the class represents a
37623         fundamental type (System.Int32, ...).
37624         The TypeHandle return by ldtoken is a MonoType*.
37625         * icall.c: ves_icall_get_data_chunk () write out all the
37626         PE/COFF stuff. Implement ves_icall_define_method (),
37627         ves_icall_set_method_body (), ves_icall_type_from_handle ().
37628         * image.c: properly skip unknown streams.
37629         * loader.h, loader.c: add type_class to mono_defaults.
37630         * metadata.c, metadata.h: export compute_size () as
37631         mono_metadata_compute_size () with a better interface.
37632         Typo and C&P fixes.
37633         * pedump.c: don't try to print the entry point RVA if there is no entry point.
37634         * reflection.c, reflection.h: many cleanups, fixes, output method
37635         signatures and headers, typedef and typeref info, compress the metadata
37636         tables, output all the heap streams, cli header etc.
37637         * row-indexes.h: typo fixes.
37638
37639 2001-10-04  Dick Porter  <dick@ximian.com>
37640
37641         * object.h: Add a synchronisation mutex struct to MonoObject
37642
37643         * object.c (mono_new_object): Initialise the object
37644         synchronisation mutexes
37645
37646         * icall.c: System.Threading.Monitor internal calls
37647         
37648         * threads-pthread.h:
37649         * threads-pthread.c: System.Threading.Monitor internal calls
37650
37651         * threads-types.h: New file, includes the system-specific thread
37652         structures
37653         
37654         * threads-pthread-types.h:
37655         * threads-pthread-types.c: New files, handle pthread-specific
37656         synchronisation types
37657
37658         * threads-dummy-types.h: 
37659         * threads-dummy-types.c: New files of dummy support for
37660         thread-specific types
37661
37662         * metadata.c:
37663         * image.c:
37664         * pedump.c: include mono-endian.h not endian.h
37665         
37666         * Makefile.am: More threads files.
37667         Name mono-endian.h not endian.h
37668
37669 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
37670
37671         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
37672         stuff and implement a few more bits.
37673         * icall.c: a field needs to be dereferenced twice. Do not use the same
37674         name for two variables in the same scope.
37675         * image.c, image.h: cleanups.
37676
37677 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
37678
37679         * class.c (mono_class_metadata_init): bug fix: compute the right size
37680
37681 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
37682
37683         * icall.c: implemented some of the Reflection internalcalls.
37684         * image.c, image.h: start writing out the PE/COFF image.
37685         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
37686         that does the reverse than decode_blob_size ().
37687         * object.c: use mono_metadata_encode_value (). Move here
37688         temporary implementation of mono_string_to_utf8 ().
37689         * rawbuffer.c: make malloc_map static.
37690
37691 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37692
37693         * metadata.c: fix type comparison for arrays.
37694         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
37695         Added a couple of new classes to monodefaults.
37696         * icall.c: added a couple of Reflection-related internalcalls.
37697         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
37698         Added a byval_arg MonoType to MonoClass.
37699
37700 2001-09-28  Dick Porter  <dick@ximian.com>
37701
37702         * icall.c:
37703         * threads-pthread.h: 
37704         * threads-pthread.c: Implemented internal calls for
37705         LocalDataStoreSlot operations.  Applied mutexes around all shared
37706         data.  Reworked the thread creation and Start() operations to
37707         avoid a race condition.
37708         
37709         * threads-dummy.h:
37710         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
37711
37712 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
37713
37714         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
37715
37716 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
37717
37718         * class.c, loader.c: warn and return NULL instead of erroring out.
37719         * icall.c: added System.AppDomain::getCurDomain().
37720         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
37721
37722 2001-09-25  Dick Porter  <dick@ximian.com>
37723
37724         * threads-pthread.h:
37725         * threads-pthread.c: Implemented timed thread joining and added
37726         System.Threading.Thread::Join_internal internal call
37727
37728         * icall.c: Added System.Threading.Thread::Join_internal internal call
37729
37730         * threads-dummy.h:
37731         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
37732
37733 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
37734
37735         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
37736         mono_string_intern () to implement the semantics of the ldstr opcode
37737         and the interning of System.Strings.
37738         * icall.c: provide hooks to make String::IsIntern and String::Intern
37739         internalcalls.
37740
37741 2001-09-23  Dick Porter  <dick@ximian.com>
37742
37743         * threads-dummy.c: 
37744         * threads-dummy.h: New files of dummy threading routines
37745
37746         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
37747         support code based on system specifics
37748
37749         Rename PTHREAD_LIBS to THREAD_LIBS
37750         
37751 2001-09-23  Dick Porter  <dick@ximian.com>
37752
37753         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
37754         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
37755         internal calls.
37756         (mono_thread_init): Set up a Thread object instance to return when
37757         the main thread calls Thread.CurrentThread
37758         (mono_thread_cleanup): Wait for all subthreads to exit
37759
37760         * icall.c: New internal calls for System.Threading.Thread::Sleep
37761         (including Schedule) and CurrentThread
37762
37763         * threads.h: New file, to insulate thread-specific stuff from the
37764         rest of the code
37765
37766 2001-09-21  Dick Porter  <dick@ximian.com>
37767
37768         * threads-pthread.h: 
37769         * threads-pthread.c: New file, for handling pthreads-style
37770         threading support.  Start() now starts a new thread and executes
37771         the ThreadStart delegate instance.
37772
37773         * icall.c: Added the internalcall for
37774         System.Threading.Thread::Start_internal
37775
37776         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
37777
37778 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
37779
37780         * loader.c: work around the different signatures for delegates
37781         constructors csc generates in compiled code vs the ones compiled in mscorlib.
37782
37783 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
37784
37785         * class.h, class.c: add mono_class_get_field_from_name ().
37786         * *: Fix C comments and other ANSI C issues.
37787
37788 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
37789
37790         * endian.h, assembly.c: fix some endianness issues.
37791
37792 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
37793
37794         * loader.h, load.c: add delegate_class to mono_defaults.
37795         Handle runtime provided methods in mono_get_method ().
37796
37797 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
37798
37799         * loader.c (mono_get_method): use pinvoke for internal call
37800
37801         * icall.c: use pinvoke for internal call
37802
37803         * loader.c (method_from_memberref): set the method name
37804
37805 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
37806
37807         * metadata.c: help the compiler generate better code for
37808         mono_class_from_mono_type ().
37809
37810 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
37811
37812         * class.c (mono_class_metadata_init): delayed computing of the
37813         class size to mono_class_metadata_init ()
37814
37815 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
37816
37817         * class.c, class.h: add an interfaces member to MonoClass.
37818         * image.c, image.h: add assembly_name field to MonoImage
37819         from the assembly table.
37820         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
37821
37822 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
37823
37824         * class.c: Handle Array in mono_class_from_mono_type ().
37825         * metadata.c, pedump.c: some endian fixes.
37826
37827 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
37828
37829         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
37830         * metadata.c: fix small problem introduced with the latest commit.
37831
37832 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
37833
37834         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
37835         We don't need a MonoMetadata pointer anymore to compare signatures in
37836         mono_metadata_signature_equal (), update callers.
37837         Reduced memory usage an number of allocations for MonoMethodHeader and
37838         MonoMethodSignature.
37839
37840 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
37841
37842         * metadata.c: added compare for szarray.
37843
37844 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
37845
37846         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
37847         and add a couple more types to it and mono_defaults. Give an hint on
37848         classes that need implementing in our corlib and are referenced
37849         in mscorlib.
37850
37851 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
37852
37853         * class.h, class.c: keep track if a class is also an Enum.
37854         * loader.c: Implement a couple more types for use in libffi
37855         marshalling. Gives better diagnostics when failing to dlopen
37856         a library. Set method->klass for P/Invoke methods, too.
37857
37858 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
37859
37860         * class.c, class.h: add a MonoType this_arg to MonoClass that
37861         represents a pointer to an object of the class' type that
37862         can be used by the interpreter and later the type cache.
37863         Add best guess alignment info for valuetype objects.
37864
37865 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
37866
37867         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
37868         into MonoType: one less level of indirection and allocation and
37869         simplifies quite a bit of code. Added cache for MonoTypes that are
37870         used frequently, so that we don't need to allocate them all the time.
37871
37872 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
37873
37874         * class.c (mono_class_create_from_typedef): System.Enum is also a
37875         value type, although it does not derive from System.ValueType
37876         (maybe a bug in the ms compiler?)
37877
37878         * metadata.c (mono_type_size): return the right size for value types
37879
37880         * loader.c (mono_get_method): only initialize method header if not abstract
37881
37882         * class.c (mono_class_from_mono_type): use mono_default values. 
37883
37884 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
37885
37886         * *: use MonoClass pointers instead of <type_tokens>
37887         
37888         * class.h: new flag: metadata_inited.
37889
37890         * class.c (mono_class_metadata_init): impl.
37891         (mono_class_instance_size): impl.
37892         (mono_class_data_size): impl.
37893
37894 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37895
37896         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
37897         MonoClass now has the name and name_space fields. 
37898         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
37899         mono_get_method () takes and optional MonoClass as argument.
37900         Removed mono_typedef_from_name() and added mono_class_token_from_name()
37901         instead that takes advantage of a map from class names to typedef
37902         tokens in MonoImage.
37903
37904 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
37905
37906         * metadata.c: zero is not a valid alignment boundary.
37907         Merge MONO_TYPE_VOID in default decoding code.
37908
37909 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
37910
37911         * image.h: merged MonoMetadata into MonoImage
37912
37913         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
37914         identify the type of elements.
37915
37916 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
37917
37918         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
37919         * cil-coff.h: split MonoMSDOSHeader and add size info.
37920         * image.c: add some consistency checks.
37921         * metadata.c: fix row size computation: one programmer
37922         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
37923         add explanation for the locator routine.
37924         Fix decoding of size in method header.
37925         
37926 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
37927
37928         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
37929         (g_concat_dir_and_file): Bring g_concat_dir_and_file
37930         function from gnome-libs.  This uses the right path separator
37931         based on the OS, and also works around a bug in some systems where
37932         a double slash is not allowed. 
37933         (default_assembly_name_resolver): Use g_concat_dir_and_file
37934         (mono_assembly_open): ditto.
37935
37936 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
37937
37938         * metadata.c (mono_metadata_signature_equal): impl.
37939
37940         * *: void is now a realy MonoType (instead of using NULL)
37941         
37942         * metadata.c (do_mono_metadata_parse_type): use
37943         mono_metadata_parse_type to parse void value.
37944
37945 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
37946
37947         * metadata.c, metadata.h: in the signature and method header store
37948         only the space required for holding the loca vars and incoming arguments.
37949
37950 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
37951
37952         * metadata.c (do_mono_metadata_parse_type): treat void like any
37953         other type (instead of assigning NULL);
37954
37955 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
37956
37957         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
37958
37959 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
37960
37961         * image.c (do_mono_image_open): added a cache for arrays.
37962
37963 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
37964
37965         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
37966         decode a single column from a row in a metadata table and changes
37967         to take advantage of it in the typedef locator (gives a nice speed up).
37968         Store offset info for function params.
37969
37970 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
37971
37972         * image.h (MONO_IMAGE_IS_CORLIB): removed 
37973
37974 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
37975
37976         * assembly.c: how could mono_assembly_close () had ever worked?
37977         * metadata.c, metadata.h: provide offset info for local vars.
37978         Implement mono_type_size () to take care of alignment as well
37979         as size (it was mono_field_type_size in cli/class.c before).
37980
37981 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
37982
37983         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
37984
37985         * assembly.h (CORLIB_NAME): set to corlib.dll
37986
37987         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
37988
37989 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
37990
37991         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
37992         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
37993         tokentype.h: massive namespace cleanup.
37994
37995 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
37996
37997         * metadata.h, metadata.c: decode exception clauses when parsing method header.
37998
37999 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
38000
38001         * metadata.c (mono_metadata_free_type): added check for type !=
38002         NULL (void) before calling mono_metadata_free_type()
38003
38004 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
38005
38006         * metadata.h, row_indexes.h: added header with enumerations to use
38007         to index in the columns from tables in metadata and to decode coded
38008         tokens: we should start using this instead of embedding magic numbers
38009         all over the code.
38010
38011 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
38012
38013         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
38014         Move metadata_t info from cli_image_info_t to MonoImage, where
38015         it's easily accessible. Changed all the uses accordingly.
38016         Added the method and class caches to MonoImage.
38017         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
38018         and mono_metadata_decode_value () signature to be more consistent
38019         with the other parse functions (and simplify code). Taken advantage
38020         of zero-length array allocation with GCC. Removed reduntant (and
38021         wrong) MonoFieldType struct and use MonoParam instead. Changed
38022         mono_metadata_parse_field_type () to use common code for parsing.
38023         Added mono_metadata_typedef_from_field () and
38024         mono_metadata_typedef_from_method () to lookup a typedef index from a
38025         field or method token.
38026         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
38027
38028 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
38029
38030         * metadata.c (mono_metadata_parse_field_type): Implement. 
38031         (do_mono_metadata_parse_type): Split engine from
38032         mono_metadata_parse_type, so that we can create smaller structures
38033         for things that just have one pointer to the MonoType (look at
38034         the MonoFieldType)
38035
38036 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
38037
38038         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
38039         as Jan Gray found out, it is incorrect. 
38040
38041 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
38042
38043         * assembly.c: Implement asssembly loading.  This loads an image
38044         and loads all the referenced assemblies.  Come to think of it, we
38045         could always do lazy loading of the assemblies. 
38046
38047         * image.c (mono_image_open): Keep loaded images in a hashtable.
38048
38049         * image.h (MonoImage): Add reference count.
38050
38051 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
38052
38053         * assembly.c (mono_assembly_open): Keep track of the file name in
38054         case the assembly has no ASSEMBLY table.
38055
38056         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
38057         from get.c here.
38058
38059 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
38060
38061         * metadata.c, metadata.h: decode local vars in method header
38062         parse function. Change callers accordingly.
38063
38064 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
38065
38066         * metadata.h, cil-coff.h: protect against multiple inclusion.
38067         Added some new structures to hold information decoded from metadata:
38068         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
38069         and relevant decoding/free functions.
38070         * metadata.c: implement decoding functions. Add warning for out of bounds
38071         index in mono_metadata_locate(). Implement mono_get_method () to retreive
38072         all the info about a method signature and invocation. Remove check on
38073         uninitialized local var in parse_mh() and fix memory leak.
38074
38075 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
38076
38077         * metadata.h: More macros.
38078
38079         * tokentype.h: New file.
38080
38081 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
38082
38083         * assembly.c: added a consistency check and initialize
38084         some structures with g_new0().
38085         * metadata.c: fixed a couple more bugs in table size computation
38086         and add other checks for out-of bound access to metadata.
38087
38088 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
38089
38090         * metatada.c: fix bugs computing table sizes. Spew a
38091         warning when index in string heap is out of bounds.
38092
38093 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
38094
38095         * metadata.h: Add a couple of macros to manipulate tokens. 
38096
38097 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
38098
38099         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
38100         cli_section_tables).
38101
38102 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
38103
38104         * metadata.c (mono_metadata_user_string): New function, provides
38105         access to the UserString heap. 
38106
38107 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
38108
38109         * metadata.c: Add inline documentation.
38110
38111 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
38112
38113         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
38114         files. 
38115
38116 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
38117
38118         * typeattr.h: New file, TypeAttribute flags. 
38119
38120 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
38121
38122         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
38123         mono_assembly_ensure_section): Section loading code.
38124         (load_section_tables): Load the sections.
38125
38126         * mono/metadata/metadata.c (mono_metadata_locate_token,
38127         mono_metadata_locate): Functions to locate the information
38128         definition given a token or a table and an index.
38129         (mono_metadata_compute_table_bases): New.
38130         (compute_size): New function to compute the sizes of the various
38131         tables.
38132
38133         * mono/metadata/metadata.h: Finish listing the different index
38134         types. 
38135
38136         * mono/metadata/pedump.c: Improve to dump new information.
38137
38138 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
38139
38140         * mono/metadata/metadata.c: Entered all the tables matching
38141         Beta2. 
38142
38143         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2