2010-07-12 Rodrigo Kumpera <rkumpera@novell.com>
[mono.git] / mono / metadata / ChangeLog
1 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
2
3         * icall.c (ves_icall_MonoMethod_get_base_method): If
4         the method slot is bigger than the class vtable, return
5         the original method. Makes booc work again.
6
7 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
8
9         * verify.c (mono_generic_param_is_constraint_compatible):
10         The candidate type itself might satisty the required
11         constraints.
12
13         Fixes #621599.
14
15 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
16
17         * reflection.c (fix_partial_generic_class): Inflate the
18         generic instance parent in case it was changed after
19         MonoGenericClass was instantiated.
20
21         Fixes one of the issues from #389886.
22
23 2010-07-10  Mark Probst  <mark.probst@gmail.com>
24
25         * sgen-gray.c: Store only a pointer to one end of the gray queue.
26
27 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
28
29         * loader.c (mono_method_signature_checked): Release the domain
30         lock on failure.
31
32 2010-07-10  Mark Probst  <mark.probst@gmail.com>
33
34         * sgen-gc.c: Store the forwarding address in the first word of an
35         object, where the forwarding bit is stored.
36
37 2010-07-10  Mark Probst  <mark.probst@gmail.com>
38
39         * gc.c, gc-internal.h, sgen-gc.c, sgen-gc.h, sgen-os-mach.c: An
40         interface to register our Mach exception thread which will not be
41         suspended by stop-the-world.
42
43 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
44
45         * loader.c (mono_get_method_constrained): Properly unlock the
46         domain lock on failure. Use checked variant of
47         inflate_generic_signature.
48
49 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
50
51         * loader.c (mono_method_signature_checked): Use checked
52         variant of inflate_generic_signature.
53
54         Fixes #606353.
55
56 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
57
58         * metadata.c (mono_metadata_parse_type_internal): Don't use
59         cannonical types when a transient type was requested.
60
61         Fixes #608626.
62
63 2010-07-10  Mark Probst  <mark.probst@gmail.com>
64
65         * sgen-gray.c, sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c:
66         All functions that touch the gray queue directly or indirectly now
67         take it as an argument.
68
69 2010-07-10  Mark Probst  <mark.probst@gmail.com>
70
71         * sgen-gray.c, sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c:
72         Put the gray queue data into a struct and pass it around.
73
74 2010-07-09 Rodrigo Kumpera  <rkumpera@novell.com>
75
76         * class.c (mono_method_can_access_method_full): Handle type
77         accessibility with very deep nested types.
78
79         * class.c (mono_method_can_access_field_full): Ditto.
80
81         Fixes #619300.
82
83 2010-07-10  Mark Probst  <mark.probst@gmail.com>
84
85         * sgen-gc.c, sgen-los.c, sgen-major-copying.c, sgen-marksweep.c,
86         sgen-scan-object.h: Use a macro for rounding up sizes and
87         addresses to ALLOC_ALIGN.
88
89 2010-07-09 Gonzalo Paniagua Javier <gonzalo@novell.com>
90
91         * file-io.c: fix GetFileSystemEntries for patterns containing
92         directories.
93
94 2010-07-09  Mark Probst  <mark.probst@gmail.com>
95
96         * sgen-marksweep.c (major_finish_major_collection): Don't free
97         major heap blocks on 32 bit platforms because it can lead to
98         address space fragmentation.  We'll figure this out later.
99
100 2010-07-09  Mark Probst  <mark.probst@gmail.com>
101
102         * sgen-marksweep.c, sgen-gc.c, sgen-major-copying.c: Free major
103         heap blocks for mark&sweep eventually.
104
105 2010-07-09  Mark Probst  <mark.probst@gmail.com>
106
107         * sgen-protocol.c: Fix build when binary protocol is disabled.
108
109 2010-07-09  Mark Probst  <mark.probst@gmail.com>
110
111         * sgen-protocol.c, sgen-gc.c: Make binary protocol lock-freely
112         thread-safe.
113
114 2010-07-08 Neale Ferguson <neale@sinenomine.net>
115
116         * sgen-archdep.h: Add support for s390x
117         * domain.c: Use gsize so that 64-bit big endian systems produce 
118         bitmap.
119
120 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
121
122         * pedump.c (verify_image_file): Initialize the vtable as well.
123
124 2010-07-07  Geoff Norton  <gnorton@novell.com>
125
126         * sgen-gc.h:  Not every system has sys/signal.h.  Prefer the posix
127         header.
128
129 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
130
131         * assembly.c (mono_assembly_load_reference): Replace a g_warning
132         with a mono_trace calls. This makes compiling MD a lot less scary.
133
134 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
135
136         * verify.c (do_stobj): Improve error message.
137
138 2010-07-08  Mark Probst  <mark.probst@gmail.com>
139
140         * sgen-gc.c (OBJ_COMPLEX_ARR_FOREACH_PTR): Don't load the vtable
141         from the object because it might have pinned/forwarding bits set.
142
143 2010-07-06  Zoltan Varga  <vargaz@gmail.com>
144
145         * Makefile.am (sgen_sources): Add missing sgen files.
146
147 2010-06-07  Martin Baulig  <martin@ximian.com>
148
149         * mono-debug-debugger.c (mono_debugger_get_thread_abort_signal):
150         New helper function since mono_thread_get_abort_signal() is now
151         internal.
152
153 2010-06-07  Martin Baulig  <martin@ximian.com>
154
155         * mono-debug.h, debug-mono-symfile.h: Kill glib dependencies.
156
157 2010-07-02  Michael Hutchinson  <mhutchinson@novell.com>
158
159         * object-internals.h, object.h: Make mono_string_to_utf_8_checked 
160         public, as mono_string_to_utf_8 is deprecated.
161
162         * object.(c|h): Added mono_object_to_string, a public helper function 
163         that calls ToString on a MonoObject and returns a MonoString.
164
165         * object.c (mono_print_unhandled_exception): Use mono_object_to_string.
166
167 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
168
169         * filewatcher.h filewatcher.h decimal.c threads-types.h: Applied patch
170         from Elijah Taylor (elijahtaylor@google.com). Fix some definitions to
171         match their declarations and vice-versa.
172
173
174 Wed Jun 30 12:08:36 CEST 2010 Paolo Molaro <lupus@ximian.com>
175
176         * class-internals.h, domain-internals.h: mark functions that are
177         needed by the llvm module.
178
179 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
180
181         * assembly.c (framework_assemblies): Add 3.5 assemblies.
182
183         * domain-internals.h (MonoRuntimeInfo): Increase version_sets
184         by one to have room to remap 3.5 assemblies.
185
186         * domain.c (supported_runtimes): Add 3.5 remapping information.
187
188 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
189
190         * reflection.c (mono_image_create_token): Handle a
191         FieldBuilder from a different assembly.
192
193         Fixes #611836.
194
195 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
196
197         * verify.c (do_store_static_field): Improve error
198         message.
199
200 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
201
202         * assembly.c: Revert r159692 since it breaks loading 3.5
203         assemblies under 2.0.
204
205 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
206
207         * icall.c (ves_icall_Type_make_array_type): Raise a TLE if a
208         TypedByRef is passed.
209
210         * icall.c (ves_icall_Type_make_byref_type): Ditto.
211
212         * icall.c (ves_icall_Type_MakePointerType): Ditto.
213
214         Fixes #612780.
215
216 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
217
218         * assembly.c: Add a few more assemblies to the list of framework
219         assemblies.
220
221         Fixes #617714.
222
223 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
224
225         * class.c (mono_class_get_vtable_entry): Avoid a crash if mono_class_setup_vtable ()
226         fails.
227
228 2010-06-25  Mark Probst  <mark.probst@gmail.com>
229
230         * class.c (mono_class_inflate_generic_method_full_checked): Added
231         a comment regarding a hack in mini-trampolines.c.
232
233 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
234
235         * sgen-gc.c (mono_gc_wbarrier_value_copy_bitmap): Use SIZEOF_VOID_P instead of
236         sizeof(SIZEOF_VOID_P) which is 4.
237
238         * gc.c (mono_gc_init): Move the GC disabled check to *-gc.c.
239
240 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
241
242         * null-gc.c boehm-gc.c: Define the mono_gc_ pthread wrapper functions for these
243         GCs too.
244
245         * *-gc.c (mono_gc_wbarrier_value_copy_bitmap): Implement this for all GCs.
246
247         * sgen-gc.c (mono_gc_is_moving): New function returning whenever this GC can move
248         objects.
249
250         * *-gc.c (mono_gc_set_desktop_mode): New function setting up the GC to work in
251         desktop mode.
252
253 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
254
255         * *-gc.c (mono_gc_get_description): New function returning a human readable
256         description of the current GC.
257
258 2010-06-24  Miguel de Icaza  <miguel@novell.com>
259
260         * mono-hash.c: Moved here from mono/utils as this file is
261         GC-aware, and the utils directory is not.
262
263 2010-06-23  Miguel de Icaza  <miguel@novell.com>
264
265         * Makefile.am: Add support for building a sgen-aware versions of
266         the libraries: libmonoruntimesgen.la libmonoruntimesgen-static.la,
267         they share all the components of the default, but use a differen
268         set of CFLAGS to enable SGEN instead.
269
270         Put the BOEHM defines in the CFLAGS definition. 
271
272         * domain-internals.h (MonoJitInfo): this structure used to have
273         different sizes depending on the GC that was configured (Boehm vs
274         SGen).   I have removed this difference for the sake of avoiding
275         the complexity of dealing with the mono/arch directory requiring
276         GC-specific changes to their Makefiles.
277
278 2010-06-23  Mark Probst  <mark.probst@gmail.com>
279
280         * sgen-gc.c, sgen-los.c, sgen-marksweep.c: Fix warnings.
281
282 2010-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
283
284         * metadata.c (mono_metadata_type_hash): Don't hash
285         the type kind for dynamic types since it can change.
286
287 2010-06-22 Geoff Norton  <gnorton@novell.com>
288
289         * sgen-os-mach.c: We cannot call malloc from the gc, so we need to use
290         alloca instead to prevent a deadlock.
291
292 2010-06-22  Geoff Norton  <gnorton@novell.com>
293
294         * domain.c: Allow gettings the tls key, since we need it for
295         cross thread tls poking in sgen-mach
296         * sgen-gc.(c|h), gc-internal.h: Rework sgen into having some functions
297         in external files for platform specific STW support.
298         * sgen-os-mach.c: Add a new mach kernel backend implementation of STW.
299         * sgen-os-posix.c: Move the existing posix signal based STW here.
300
301 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
302
303         * marshal.c (mono_array_to_lparray): Allow MONO_TYPE_PTR. Fixes #615952.
304
305 2010-06-21 Rodrigo Kumpera  <rkumpera@novell.com>
306
307         * object-internals.h: Map new PropertyBuilder fields.
308
309         * reflection.c (property_encode_signature): Emit an instance
310         signature if property's callconv is hasthis.
311
312         * appdomain.c: Bump corlib version.
313
314 2010-06-20  Jb Evain  <jbevain@novell.com>
315
316         * metadata-verify.c: do not consider the assembly invalid if it
317         doesn't have a #Blob stream as resource assemblies don't
318         necessarily have one.
319
320 2010-06-17  Geoff Norton  <gnorton@novell.com>
321
322         * sgen-archdep.h: sgen support for arm linux and darwin.
323
324 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
325
326         * loader.c (mono_method_get_header): Avoid a crash if the declaring method
327         has a faulty header.
328
329 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
330
331         * sgen-gc.c (mono_gc_wbarrier_value_copy_bitmap): Work in a similar
332         way to mono_gc_wbarrier_value_copy but takes a bitmap that
333         indicates which slots need a write barrier.
334
335 2010-06-14  Jonathan Pryor <jpryor@novell.com>
336
337         * Makefile.am (EXTRA_DIST): Add runtime.h.
338
339 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
340
341         * object.c (build_imt_slots): Don't crash if callbacks.get_imt_trampoline is not set.
342
343 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
344
345         * object.c (mono_method_add_generic_virtual_invocation): Fix the computation of the
346         IMT slot which is passed to callbacks.get_imt_trampoline.
347
348 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
349
350         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
351         imt trampoline per imt slot when using LLVM.
352
353 2010-06-10  Jonathan Pryor <jpryor@novell.com>
354
355         * object.c (mono_runtime_run_main): Move fire_process_exit_event() into
356           runtime.c:mono_runtime_shutdown().
357         * runtime.c: Added; adds mono_runtime_shutdown(), which invokes the
358           AppDomain.ProcessExit event in all AppDomains.
359
360 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
361
362         * marshal.c (mono_marshal_get_runtime_invoke): Don't set *exc to NULL, it is now
363         done by the caller.
364
365 2010-06-05  Mark Probst  <mark.probst@gmail.com>
366
367         * sgen-los.c: Keep bitmaps on chunk usage in LOS sections to speed
368         up freeing.
369
370 2010-06-05  Mark Probst  <mark.probst@gmail.com>
371
372         * sgen-gc.c, sgen-los.c: New LOS allocator that allocates large
373         segments of memory at once, to reduce the number of mmap/munmap
374         calls.
375
376 2010-06-05  Mark Probst  <mark.probst@gmail.com>
377
378         * sgen-gc.c, sgen-protocol.c, sgen-protocol.h: Protocol degraded
379         allocations and distinguish between normal, degraded and pinned
380         allocations.
381
382 2010-06-05  Mark Probst  <mark.probst@gmail.com>
383
384         * sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c: Make degraded
385         allocations count toward major collections and trigger major
386         collections from degraded allocations if appropriate.
387
388 2010-06-05  Mark Probst  <mark.probst@gmail.com>
389
390         * sgen-marksweep.c (ms_get_empty_block): Update heap boundaries.
391
392 2010-06-05  Mark Probst  <mark.probst@gmail.com>
393
394         * sgen-gc.c: Enable mark&sweep again.
395
396 2010-06-05  Mark Probst  <mark.probst@gmail.com>
397
398         * sgen-gc.c: Increase the maximum small object size to 8000 bytes.
399
400 2010-06-05  Mark Probst  <mark.probst@gmail.com>
401
402         * sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c: Have only one
403         major heap allowance for minor collections, instead of two
404         separate ones for small and large objects.  This reduces the
405         number of major collections.
406
407 2010-06-04  Marek Habersack  <mhabersack@novell.com>
408
409         * icall.c (ves_icall_MonoType_GetEvent): be case insensitive is
410         the BFLAGS_IgnoreCase is raised
411
412 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
413
414         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Rewrite this so it returns
415         all information in a single structure. Return information about scopes as well.
416
417         * mono-debug.c (mono_debug_lookup_locals): Ditto.
418
419 2010-06-02  Geoff Norton  <gnorton@novell.com>
420
421         * appdomain.c: If we are running with IOMAP we might
422         have been provided a string that isn't case-aware for our file-
423         system, so we need to use io-portability to check if the file 
424         exists, rather than a simple glib test.
425
426         Fixes #608849
427
428 2010-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
429
430         * verify.c (verify_generic_parameters): Verify if
431         there are not loops in constraints.
432
433 2010-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
434
435         * verify.c (is_compatible_boxed_valuetype): Constaints
436         must be recursively checked if one generic argument
437         has a constraint on another.
438
439         Fixes #610625.
440
441 2010-05-31  Miguel de Icaza  <miguel@novell.com>
442
443         * console-unix.c (terminal_get_dimensions): Fix my previous
444         botched commit and return the actual value obtained from the ioctl.
445
446 2010-05-29  Mark Probst  <mark.probst@gmail.com>
447
448         * sgen-gc.c: Always use DESC_TYPE_RUN_LENGTH for objects without
449         references so that we don't have to do the cache-cold fetch of the
450         class in copy_object_no_checks().
451
452 2010-05-29  Robert Jordan  <robertj@gmx.net>
453
454         * marshal.c (mono_marshal_asany): marshal LPWSTRs using
455         mono_marshal_string_to_utf16_copy () to avoid memory allocation
456         mismatches under Windows. Fixes pinvoke2:test_0_asany.
457
458 2010-05-28  Mark Probst  <mark.probst@gmail.com>
459
460         * sgen-gc.c: Change default nursery size to 4MB, because it
461         improves performance on many applications and benchmarks.
462
463 2010-05-28  Mark Probst  <mark.probst@gmail.com>
464
465         * sgen-gc.c, sgen-scan-object.h: Value types in arrays are not
466         always aligned to ALLOC_ALIGN.  To handle this, shift the size in
467         the GC descriptor by one bit, and don't encode the size for value
468         types not containing references.  Also get rid of
469         DESC_TYPE_STRING.
470
471 2010-05-28  Mark Probst  <mark.probst@gmail.com>
472
473         * sgen-gc.c: Don't depend on the size encoded in a GC descriptor
474         other than for remset processing.
475
476 2010-05-28  Mark Probst  <mark.probst@gmail.com>
477
478         * sgen-gc.c: More and better remset consistency checks.
479
480 2010-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
481
482         * sgen-gc.c: Add a note about the int[] trick to avoid some
483         memset.
484
485 2010-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
486
487         * sgen-gc.c (sort_addresses): Use heap sort since it has better
488         performance.
489
490         This helps programs with lots of threads or thread with big stacks
491         since the bottleneck the pin queue can get quite big.
492
493 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
494
495         * sgen-gc.c (search_fragment_for_size): Move fragment setup into
496         a separate function called setup_fragment.
497
498         * sgen-gc.c (search_fragment_for_size_range): Variant of
499         search_fragment_for_size that does search for a secondary smaller
500         size.
501
502         * sgen-gc.c (mono_gc_alloc_obj_nolock): Use search_fragment_for_size_range
503         for tlab allocation so small fragments are used.
504
505         This patch uses small fragments for tlab allocation when possible in order
506         to improve nursery utilization. With a fixed size tlab this patch is not very
507         usefull but once size gets dynamically adjusted, this will be invaluable.
508
509         Performance under pystone 500k is unchanged. Nursery utilization improves by
510         3.5% and 18 more fragments are used per minor GC.
511
512         Performance under modified binary-tree is unchanged. Nursery utilization
513         improves by 0.5% and 3 more fragments are used per minor GC.
514
515         These numbers make sense since as more pinning happens, more fragments are
516         created and so are the chances of having a bunch of small ones.
517
518 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
519         * sgen-gc.c (mono_gc_alloc_obj_nolock): Avoid wasting space     from
520         the current fragment when allocating a TLAB.
521
522         Reduces number of pystone 500k minor collections by 7%.
523
524 2010-05-25  Martin Baulig  <martin@ximian.com>
525
526         Applying a patch from Lucas Meijer <lucas@lucasmeijer.com>.
527
528         * debug-mono-symfile.c: Release memory from symfiles that were
529         loaded from memory.
530
531 2010-05-24  Zoltan Varga  <vargaz@gmail.com>
532
533         * marshal.c (mono_marshal_free_dynamic_wrappers): Avoid an assert when this is called
534         during shutdown.
535
536 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
537
538         * marshal.c (mono_marshal_get_runtime_invoke): Simplify the code computing the
539         target class and remove some dead code.
540
541 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
542
543         * metadata.c: Add a 'transient' argument to the MonoType creation functions, so
544         the MonoTypes inside method headers can be freed when the header is freed.
545
546 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
547
548         * threadpool.c: Fix the DISABLE_SOCKETS build.
549
550 2010-05-19 Martin Baulig  <martin@novell.com>
551
552         Fix #604911.
553
554         * threads.c (wait_for_tids_or_state_change): Use an
555         alertable WaitForMultipleObjectsEx().
556         (wait_for_tids): Likewise.
557
558 2010-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
559
560         * marshal.c (mono_marshal_init): Register mono_gchandle_get_target
561         icall.
562
563         * marshal.c (mono_delegate_to_ftnptr): Use a gchandle instead of
564         gc tracked memory.
565
566         * marshal.c (mono_marshal_emit_managed_wrapper): Retrieve the first
567         argument from a gchandle.
568
569         * marshal.c: Get rid of the delegate_target_locations hash table.
570
571         Fixes #605295.
572
573 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
574
575         * sgen-gc.c: Use _fast variants for string and array length.
576
577 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
578
579         * sgen-gc.c: Fix counters to be 64 bits.
580
581         * sgen-gc.c (dump_heap): Fix formating strings.
582
583 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
584
585         * sgen-gc.c (global_remset_location_was_not_added): New
586         function that implements a 2 element LRU cache for just
587         added remsets. It is used to avoid adding duplicate ones.
588
589         * sgen-gc.c (add_to_global_remset): Check cache before
590         adding new entry.
591
592         * sgen-gc.c (scan_from_remsets): Don't process global remsets
593         that fail the cache test.
594
595         * sgen-gc.c (scan_from_remsets): Simplify the global remset
596         loop removing one condtion that is not possible.
597
598         A 2 element LRU cache was chosen by profiling IronPython 2.6
599         pytones with 1M passes and corlib compilation.
600
601         For the ipy test duplication was originally 940.92, measured
602         by "Store remsets" divided by "Unique store remsets".
603
604         With a 2-element LRU, duplication went to 1.007. Without the
605         check in scan_from_remsets 1.438.
606
607         With a 16-elements LRU, duplication reduction was negligibe.
608         A single element cache was basically of no use.
609
610         With corlib compilation duplication went from  1.4 to 1.02.
611
612         Performance results is a 20% time decrease for ipy and 2%
613         with corlib.
614 2010-05-16  Zoltan Varga  <vargaz@gmail.com>
615
616         * mono-debug.c (mono_debug_cleanup): Fix a crash in the previous change.
617
618 2010-05-15  Geoff Norton  <gnorton@novell.com>
619
620         * mono-debug.c: Fix a leak of the global table on shutdown.
621
622 2010-05-15  Geoff Norton  <gnorton@novell.com>
623
624         * debug-mono-symfile.(c|h): Add mono_debug_symfile_free_location
625         to clean up MonoDebugSourceLocation's.
626
627 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
628
629         * class.c (mono_class_create_from_typedef): Fail a class
630         if there is a loop with its parent.
631
632         Fixes #598239.
633
634 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
635
636         * loader.c (mono_loader_set_error_type_load): Convert
637         a g_warninig to mono_trace_warning.
638
639 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
640
641         * class.c (mono_class_get_full): Release strings on failure
642         to avoid leaking them.
643
644 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
645
646         * class.c (mono_class_create_from_typedef): Only return
647         the class if no exceptions were detected.
648
649         * class.c (mono_class_create_from_typedef): Don't remove
650         broken classes from class_cache. Just set failure and
651         bail out.
652
653         This fixes a memory a memory leak where resolving the same
654         broken class multiple times resulted in a memory leak.
655
656         The right behavior would be to actually return the class
657         a let the caller figure it out.
658
659 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
660
661         * mono-ptr-array.h: Add mono_ptr_array_sort.
662
663         * reflection.c (mono_image_build_metadata): Replace that ugly
664         qsort call with mono_ptr_array_sort.
665
666 2010-05-13  Mark Probst  <mark.probst@gmail.com>
667
668         * sgen-gc.c: Switch to the copying major collector, because
669         Mark&Sweep is still buggy.
670
671 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
672
673         * reflection.c (mono_image_build_metadata): Don't put managed
674         references on non-tracked memory.
675
676 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
677
678         * sgen-archdep.h (ARCH_COPY_SIGCTX_REGS): Fix this for amd64.
679
680 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
681
682         * icall.c: Switch to mono-ptr-array.h.
683
684 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
685
686         * Makefile.am: Add mono-ptr-array.h.
687
688         * mono-ptr-array.h: New header that implements
689         a GC tracked equivalent of g_ptr_array. 
690
691 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
692
693         * icall.c (ves_icall_Type_GetInterfaces): Rewrite this
694         method to avoid initializing the class.
695
696         Fixes #605115.
697
698 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
699
700         * icall.c (ves_icall_System_MonoType_getFullName): It
701         doesn't require to init the class.
702
703 2010-05-11  Miguel de Icaza  <miguel@novell.com>
704
705         * console-unix.c: Signal handlers now save and restore errno.   We
706         have never had a bug report about this, ioctl does change errno. 
707
708         Hide the unused method.   
709
710         Remove internal declarations from public headers.
711
712         Document what the signal handler is doing
713
714 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
715
716         * sgen-gc.c (clear_unreachable_ephemerons): Clear
717         unreachable keys with a tombstone.
718
719         * sgen-gc.c (mark_ephemerons_in_range): Ignore
720         tombstone keys.
721
722 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
723
724         * icall-def.h:
725         * gc-internals.h:
726         * gc.c: New GC:get_ephemeron_tombstone.
727
728 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
729
730         * appdomain.c (create_exceptions): Rename to
731         create_domain_objects. Create the ephemeron tombstone object.
732
733         * domains-internals.h (MonoDomain): Add new field for the
734         ephemeron tombstone.
735
736         * domain.c (mono_domain_free): Set ephemeron_tombstone to
737         NULL.
738
739 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
740
741         * sgen-gc.c (mono_gc_clear_domain): Both ephemerons
742         and dislinks must be processed before LOS since they
743         could end up with pointers to memory returned to the
744         OS.
745
746 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
747
748         * class.c (mono_class_alloc): New helper function to centralize memory allocation
749         for classes, allocates either from the image mempool or from the heap.
750
751         * class.c: Use mono_class_alloc to allocate memory owned by classes.
752
753         * metadata.c (free_generic_class_dependents): Free more items belonging to
754         generic classes.
755
756 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
757
758         * reflection.c (mono_reflection_method_get_handle): Handle MonoGenericMethod
759         as well. Fixes #604054.
760
761 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
762
763         * metadata-verify.c: MS doesn't mind duplicates in the
764         typeref table. Move it to full verification.
765
766         Fixes #600508.
767
768 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
769
770         * image.c (do_mono_image_load): Report verification
771         errors when loading an image fails.
772
773 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
774
775         * reflection.c (mono_type_get_object): Remove chunk of code
776         no longer in use.
777
778 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
779
780         * icall-def.h
781         * icall.c: Delete some unused icalls.
782
783 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
784
785         * appdomain.c (mono_domain_has_type_resolve): Check for
786         NULL domain objects to make pedump happy.
787
788         * object.c (mono_field_get_value): Assert on NULL object.
789         It's the caller resposibility to check for this.
790
791         * object.c (mono_field_get_value_object): Ditto.
792
793         Fixes #601384.
794
795 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
796
797         * icall.c (ves_icall_type_is_subtype_of): Non iface subtype
798         checks can avoid doing a mono_class_init.
799
800         * icall.c: Remove mono_class_init from a bunch of icalls that
801         don't need it.
802
803         Hopefully we're now lazy enough to fix most victims of #601431.
804
805 2010-05-07  Mark Probst  <mark.probst@gmail.com>
806
807         * sgen-gc.c: Remove REMSET_ROOT_LOCATION.
808
809 2010-05-07  Mark Probst  <mark.probst@gmail.com>
810
811         * sgen-gc.c: Remove unnecessary checks in domain clearing code.
812
813 2010-05-07  Marek Habersack  <mhabersack@novell.com>
814
815         * culture-info-tables.h: updated to include en-TT culture. Fixes
816         bug #594035
817
818 2010-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
819
820         Move mono_class_init from mono_type_get_object to icalls.
821         This causes massive memory savings for Assembly::GetTypes () and
822         make it fail a lot less due to missing dependencies.
823
824         This is a conservative, naive change as it doesn't remove some
825         mono_class_init from places that might not need them. Carefull
826         review of those should follow.
827
828         * reflection.c (mono_type_get_object): Don't mono_class_init the
829         returning type.
830
831         * reflection.c:
832         * cominterop.c:
833         * icall.c:
834         * marshal.c: Call mono_class_init in functions receiving a MonoType
835         object.
836
837         First step into fixing #601431.
838
839 2010-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
840
841         * gc-internal.h: Add new functions required for ephemeron support.
842
843         * gc.c: Implement ves_icall_System_GC_register_ephemeron_array.
844
845         * icall-def.h: Add GC::register_ephemeron_array.
846
847         * object.c (compute_class_bitmap): sys.rt.cs.Ephemeronis an opaque type
848         under sgen. Its fields must not be marked.
849
850         * sgen-gc.c (mono_gc_clear_domain): Call cleanup function for ephemerons.
851
852         * sgen-gc.c (finish_gray_stack): Mark all reachable ephemerons before
853         handling finalizable objects. Clean dead ones after all finalizable
854         handling.
855
856         * sgen-gc.c (dump_heap): Add new kind of internal memory.
857
858         * sgen-gc.c (null_ephemerons_for_domain): Remove from the list ephemeron
859         arrays from the dead domain.
860
861         * sgen-gc.c (clear_unreachable_ephemerons): Clear dead ephemerons entries.
862
863         * sgen-gc.c (mark_ephemerons_in_range): Mark/Copy all ephemeron values
864         whose keys are reachable.
865
866         * sgen-gc.c (mono_gc_ephemeron_array_add): Register the array into the
867         list of live ephemeron arrays.
868
869 2010-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
870
871         * class.c (mono_class_layout_fields): Don't perform alignment
872         if align is zero.
873
874         * class.c (mono_class_layout_fields): Init field related information
875         to sane defaults.
876
877 2010-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
878
879         * verify.c (mono_verifier_verify_class): Verify the constraint
880         of generic type definitions.
881
882 2010-05-04  Mark Probst  <mark.probst@gmail.com>
883
884         * sgen-marksweep.c: Simplify free list maintenance in sweep.
885
886 2010-05-02  Mark Probst  <mark.probst@gmail.com>
887
888         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Unify
889         major_do_collection() across the two major collectors.
890
891 2010-05-02  Mark Probst  <mark.probst@gmail.com>
892
893         * sgen-gc.c: Add heavy statistics counter for re-added global
894         remsets.
895
896 2010-05-02  Mark Probst  <mark.probst@gmail.com>
897
898         * sgen-marksweep.c, sgen-gc.c: Use one mark bit per ALLOC_ALIGN to
899         get rid of a division in critical code.
900
901 2010-04-29  Mark Probst  <mark.probst@gmail.com>
902
903         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Have separate
904         blocks for objects without references in mark&sweep, to improve
905         performance.
906
907 2010-04-28  Mark Probst  <mark.probst@gmail.com>
908
909         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Bring heavy
910         statistics up-to-date.
911
912 2010-04-27  Mark Probst  <mark.probst@gmail.com>
913
914         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Support
915         heap-dump for mark&sweep.
916
917 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
918
919         * loader.c (mono_method_get_header): Move the is_inflated case before the
920         wrapper case, as a method can be both.
921
922 2010-04-27  Mark Probst  <mark.probst@gmail.com>
923
924         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Don't do a
925         separate pass to scan pinned and large object but use the gray
926         queue like for regular objects.
927
928 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
929
930         * boehm-gc.c: Applied patch from Robert Nagy (robert@openbsd.org). Include
931         string.h for memmove.
932
933         socket-io.c: Applied patch from Robert Nagy (robert@openbsd.org).
934         ipaddress_to_struct_in6_addr() is only needed when
935         defined(HAVE_STRUCT_IP_MREQN) || defined(HAVE_STRUCT_IP_MREQ).
936
937 2010-04-25  Mark Probst  <mark.probst@gmail.com>
938
939         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Properly
940         separate copy_object functions for major vs nursery.  Allows us to
941         get rid of a few checks and the start and end parameters for many
942         functions.
943
944 2010-04-25  Mark Probst  <mark.probst@gmail.com>
945
946         * sgen-marksweep.c, sgen-gc.c, sgen-major-copying.c,
947         sgen-protocol.c, sgen-protocol.h, Makefile.am: Major Mark&Sweep
948         collector.
949
950 2010-04-25  Zoltan Varga  <vargaz@gmail.com>
951
952         * class.c (mono_class_create_from_typedef): Initialize class->nested_in after
953         calling setup_mono_type () since the nested parent could recursively reference
954         the nested class using generic constraints. Fixes #599469.
955
956 2010-04-24  Mark Probst  <mark.probst@gmail.com>
957
958         * sgen-gc.c, sgen-pinning.c, sgen-major-copying.c: Major collector
959         abstraction.
960
961 2010-04-24  Mark Probst  <mark.probst@gmail.com>
962
963         * sgen-gc.c: Remove more unneeded code.
964
965 2010-04-24  Mark Probst  <mark.probst@gmail.com>
966
967         * sgen-gc.c: Disable managed allocator and wbarrier when the
968         binary protocol is enabled.
969
970 2010-04-24  Mark Probst  <mark.probst@gmail.com>
971
972         * sgen-gc.c: Put nursery-fragment-cleaning into its own function.
973
974 2010-04-24  Mark Probst  <mark.probst@gmail.com>
975
976         * sgen-gc.c: Remove a few commented out and unneeded bits.
977
978 2010-04-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
979
980         * threadpool.c: patch from Robert Nagy that fixes a nullref and
981         uses mono_sem_wait instead of mono_sem_timedwait for openbsd.
982
983 2010-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
984
985         * icall.c (ves_icall_type_is_assignable_from): Properly handle byref
986         types.
987
988         Fixes #331126
989
990 2010-04-21  Mark Probst  <mark.probst@gmail.com>
991
992         * sgen-gc.c: Turn off semi-precise stack mark.
993
994 2010-04-20  Sebastien Pouliot  <sebastien@ximian.com>
995
996         * reflection.c (mono_custom_attrs_from_index): Use right function
997         to free 'list' (i.e. g_list_free) if the verifier fails.
998
999 2010-04-19 Rodrigo Kumpera  <rkumpera@novell.com>
1000
1001                 * verify.c: Handle the case where mono_type_get_underlying_type_any
1002                 returns NULL. Remove duplicated code between MONO_TYPE_GENERICINST
1003                 and MONO_TYPE_VALUETYPE in those case.
1004
1005                 Based on a slightly modified patch by Sebastien Pouliot  <sebastien@ximian.com>
1006
1007                 Hopefully Fixes #564253.
1008
1009 2010-04-19 Gonzalo Paniagua Javier <gonzalo@novell.com>
1010
1011         * domain-internals.h: made threadpool_jobs volatile.
1012         * mono-wsq.c: add an assert to verify that the threadpool cleaned up
1013         all local jobs.
1014         * threadpool.c:
1015                 -When two threads try to initialize the socket IO pool,
1016                 the second one waits until the intialization is finished
1017                 instead of continuing right away.
1018                 -Add checks for domain unload: no items added in this case.
1019                 -Only measure the time every 10 elements added to the queue.
1020                 This is an experiment since linux x86 gettimeofday() sucks.
1021                 -Create new thread if there are none waiting for work items.
1022                 -There was a missing decrement of the busy threads.
1023                 -Make sure the local queue is cleaned up before exiting the
1024                 thread when the program ends.
1025
1026 2010-04-19 Rodrigo Kumpera  <rkumpera@novell.com>
1027
1028         * reflection.c (mono_type_get_object): Normalize generics types
1029         as to how managed code expect them to be. A generic instance over
1030         the GTD arguments must have the same mirror as the GTD itself.
1031
1032         Fixes #473289.
1033
1034 2010-04-19  Zoltan Varga  <vargaz@gmail.com>
1035
1036         * locales.c: Implement support for DISABLE_NORMALIZATION.
1037
1038 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1039
1040         * marshal.c (mono_marshal_get_native_func_wrapper): Set the marshal info to NULL,
1041         since it is not a MonoMethod.
1042
1043 2010-04-16  Sebastien Pouliot  <sebastien@ximian.com>
1044
1045         * icall-def.h: Add get_RequiresElevatedPermissions icall to
1046         System.Security.SecurityManager - used only by Moonlight
1047         * security-core-clr.c|h: Add Elevated Trust/Permission support
1048         for CoreCLR / Moonlight
1049
1050 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1051
1052         * boehm-gc.c (mono_gc_base_init): Applied patch from Robert Nagy
1053         (robert@openbsd.org). Fix GC_stackbottom calculation on OpenBSD.
1054
1055 2010-04-16  Marek Habersack  <mhabersack@novell.com>
1056
1057         * mono-perfcounters.c: added code for the "Mono
1058         Memory/Total Physical Memory" performance counter.
1059
1060         * mono-perfcounters-def.h: added definition of the "Mono
1061         Memory/Total Physical Memory" performance counter.
1062
1063 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1064
1065         * class.c (mono_class_get_method_by_index): Return NULL
1066         on type load failures.
1067
1068 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1069
1070         * class.c (mono_class_from_typeref): Check if the supplied
1071         image has an assembly bound to it.
1072
1073         Fixes #567884.
1074
1075 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1076
1077         * loader.c (mono_method_get_signature_full): Use new function
1078         inflate_generic_signature_checked to check for errors.
1079
1080         Fixes #560839.
1081
1082 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1083
1084         * loader.c (inflate_generic_signature): Add _checked variant
1085         and move this function to use it.
1086
1087 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1088
1089         * class.c (mono_class_setup_vtable_general): Use error checking
1090         version of mono_class_inflate_generic_method_full.
1091
1092         Fixes #596975.
1093
1094 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1095
1096         * class.c (mono_class_inflate_generic_type_no_copy): Do proper
1097         error handling passing MonoError around.
1098
1099         Fixes #560336.
1100
1101 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1102
1103         * socket-io.c: make GetHostByName ("") work on windows.
1104         Fixes bug #456723.
1105
1106 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1107
1108         * object-internals.h:
1109         * threads.c: use a spin lock when accesing the per-thread appdomain
1110         list.
1111
1112 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1113
1114         * threads.c: no need to take the threads lock in push/pop appdomain.
1115
1116 2010-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1117
1118         * reflection.c (_mono_reflection_parse_type): MS supports
1119         non-assembly-qualified types in a generic type parameter list
1120         when enclosed in '[]' (which signals that they should be a fqn).
1121
1122         This breaks ECMA specs for how type names are encoded in cattr
1123         blobs but F# does it.
1124
1125         Fixes #576342.
1126
1127 2010-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1128
1129         * icall.c (ves_icall_InternalInvoke): Check if the vtable is sane
1130         for instance methods/ctors.
1131
1132         Fixes #422113.
1133
1134 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1135
1136         * reflection.c: Use the new verifier support for checking
1137         custom attributes.
1138
1139         Fixes #595306.
1140
1141 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1142
1143         * metadata-verify.c: Implement structural verification
1144         of custom attributes. This check requires access to the
1145         loader since to resolve the size of an enum we have to
1146         look it up.
1147         We don't check if named argumenments are encoded in a
1148         compatible fashion to their underlying field/prop.
1149         Maybe we should?
1150
1151         * verify-internals.h: Add two new cattr verification API.
1152
1153 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1154
1155         * metadata-verify.c (decode_signature_header): Fix signature.
1156
1157 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1158
1159         * verify.c (mono_verifier_is_enabled_for_method): Handle
1160         assembly less images.
1161
1162         * verify.c (mono_verifier_is_class_full_trust): Ditto.
1163
1164 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1165
1166         * loader.c (mono_method_signature_checked): Properly
1167         init MonoError.
1168
1169         * loader.c (mono_method_signature): It's the calee
1170         resposibility to init the error object.
1171
1172 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1173
1174         * metadata-verify.c (decode_signature_header): Do proper
1175         overflow checking.
1176
1177 Tue Apr 13 12:36:29 CEST 2010 Paolo Molaro <lupus@ximian.com>
1178
1179         * reflection.c: maintain the invariants required by
1180         mono_class_layout_fields() also in typebuilder_setup_fields ().
1181
1182 2010-04-11  Sebastien Pouliot  <sebastien@ximian.com>
1183
1184         * security-core-clr.c: Call mono_class_setup_methods in 
1185         get_default_ctor before checking klass->methods. Fix typo in
1186         comment
1187
1188 2010-04-10  Jb Evain  <jbevain@novell.com>
1189
1190         * domain.c (supported_runtimes): remove .net 4.0 beta 2 and
1191         add .net 4.0 RTM version.
1192
1193 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1194
1195         * reflection.c (resolve_object): Properly inflate generic
1196         methods when a context is supplied.
1197
1198         Fixes #591226.
1199
1200 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1201
1202         * verify.c (mono_method_verify): A switch op don't empty
1203         the stack for the next one. Fixes a bug when running fsi
1204         under --verify-all.
1205
1206 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1207
1208         * metadata-verify.c (is_valid_standalonesig_blob): Accept
1209         fields as valid standalone sig too. F# does generate them.
1210
1211         * metadata-verify.c (verify_typedef_table_full): Ignore
1212         what <module> extends.
1213
1214 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1215
1216         * verify.c (do_invoke_method): It's ok to do use call with
1217         virtual, non-final methods if their class is sealed.
1218
1219 2010-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1220
1221         * icall.c (ves_icall_MonoField_GetValueInternal): This function
1222         is a near identical copy of mono_field_get_value_object. So simply
1223         call it.
1224
1225         * object.c (mono_field_get_value_object): Handle literal fields
1226         on open generic classes.
1227
1228         Fixes #594942.
1229
1230 2010-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1231
1232         * reflection.c (mono_reflection_create_runtime_class): Setup
1233         parent/supertype information again since it can be changed
1234         without notice.
1235
1236 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1237
1238         * verify.c (verify_type_compatibility_full): Properly handle
1239         stores between arrays of primitives.
1240
1241         Fixes the verifier side of #555950.
1242
1243 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1244
1245         class.c (mono_bounded_array_class_get): Properly init
1246         cast_class to take the fact that uint[] and int[] can be
1247         casted between each other.
1248
1249         Fixes #555950.
1250
1251 2010-04-07  Geoff Norton  <gnorton@novell.com>
1252
1253         * domain.c: Avoid a deadlock on osx.  Fixes #565765
1254
1255 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1256
1257         * icall.c (ves_icall_System_Enum_ToObject): Avoid a crash for unfinished type
1258         builders. Fixes #594464.
1259
1260 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1261
1262         * icall.c (ves_icall_System_Environment_Exit): Shutdown the threadpool before
1263         waiting for all threads to suspend, as those threads can't be suspended.
1264
1265 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1266
1267         * threads.c (mono_thread_suspend_all_other_threads): Call ensure_synch_cs_set ()
1268         to avoid crashes on newly created threads.
1269
1270 2010-04-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
1271
1272         * file-io.c: reset the MonoIOStat structure in case of error.
1273         Fixes bug #582667.
1274
1275 2010-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
1276
1277         * class.c (print_implemented_interfaces): Print proper type name.
1278
1279         * class.c (mono_class_setup_vtable): Don't try that hard to produce
1280         the override map for generic instances since it later ignored.
1281
1282         * class.c (mono_class_implement_interface_slow): Don't break for
1283         dynamic generic instances.
1284
1285         * object.c (mono_runtime_invoke_array): Add an assert for allocation.
1286
1287         * reflection.c (mono_reflection_method_get_handle): New method that
1288         resolves a method handle.
1289
1290         * reflection.c (mono_reflection_get_dynamic_overrides): Handle the
1291         case when we override methods from a dynamic generic instance interface.
1292
1293         Fixes #575941.
1294
1295 2010-04-05 Gonzalo Paniagua Javier <gonzalo@novell.com>
1296
1297         * threadpool.c: don't attempt to close the pipe when it has not been
1298         created.
1299
1300 2010-04-05 Gonzalo Paniagua Javier <gonzalo@novell.com>
1301
1302         * threadpool.c: if there are no waiting threads, try to start a new
1303         one. This fixes the not-so-random hangs in System.ServiceModel tests.
1304         No need to use InterlockedCompareExchange to read volatile variables.
1305
1306 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1307
1308         * verify.c (verify_type_compatibility_full): Fail mixed valuetype
1309         and reference types that point to the same class.
1310
1311         Fixes #565598.
1312
1313 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1314
1315         * verify.c (verify_stack_type_compatibility_full): Ignore constraints
1316         when verifying compatibility between a generic instance and a generic
1317         parameter.
1318
1319         * verify.c (check_is_valid_type_for_field_ops): Improve error message.
1320
1321         * verify.c (stack_slot_stack_type_full_name): Improve verification type
1322         name.
1323
1324         Fixes #587849.
1325
1326 2010-04-04  Mark Probst  <mark.probst@gmail.com>
1327
1328         * sgen-gc.c: Remove superfluous scanning of alloc-pinned objects.
1329
1330 2010-04-04  Zoltan Varga  <vargaz@gmail.com>
1331
1332         * threads.c Applied some openbsd changes from Robert Nagy <robert@openbsd.org>.
1333
1334 2010-04-03  Marek Habersack  <mhabersack@novell.com>
1335
1336         * process.c: when cross-compiling with MinGW, force GetProcessId
1337         lookup using GetProcAddress.
1338
1339 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1340
1341         * sgen-gc.c: parse_environment_string_extract_number() must be
1342         static.
1343
1344 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1345
1346         * sgen-gc.c, sgen-gray.c: Macros for gray_object_enqueue() and
1347         gray_object_dequeue(), to make sure they're inlined.
1348
1349 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1350
1351         * sgen-gc.c, sgen-gray.c: Fix a few debug levels, put a few
1352         asserts in inner loops into DEBUG and lower MAX_DEBUG_LEVEL.
1353
1354 2010-04-02  Jb Evain  <jbevain@novell.com>
1355
1356         * exception.c: remove dead code.
1357
1358 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1359
1360         * *-gc.c: Fix the signature of mono_gc_get_used/heap_size () to be consistent
1361         with mono-gc.h.
1362
1363 2010-04-01  Sanjoy Das <sanjoy@playingwithpointers.com>
1364
1365         * sgen-gc.c: Make the nursery size adjustable by the
1366         MONO_GC_PARAMS environment variable.
1367
1368         Code is contributed under MIT/X11 license.
1369
1370 2010-04-01 Gonzalo Paniagua Javier <gonzalo@novell.com>
1371
1372         * threadpool.c: threadpool threads wait is alertable.
1373         Fixes bug #592964.
1374         Reduced the stack size of the *poll_wait thread.
1375
1376 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1377
1378         * exception.c|metadata-internals.h: Add new mono_get_exception_
1379         field_access_msg and mono_get_exception_method_access_msg 
1380         functions that accept a const char* parameter to provide more 
1381         details when the exception is thrown.
1382         * security-core-clr.c|h: Rework code to allow logging exceptions
1383         (export MONO_LOG_MASK="security") and to supply more details in
1384         [TypeLoad|MethodAccess|FieldAccess]Exception thrown. Also added
1385         mono_security_core_clr_is_field_access_allowed and 
1386         mono_security_core_clr_is_call_allowed to return an exception,
1387         with messages and logging, that can be emitted by method-to-ir.c
1388
1389 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1390
1391         * sgen-gc.c, sgen-pinning-stats.c: In the heap-dump, dump each
1392         pinned object.
1393
1394 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1395
1396         * appdomain.c (mono_domain_assembly_postload_search): Avoid a crash/assert if
1397         the assembly name is not well formed utf8. Fixes #567882.
1398
1399 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1400
1401         * reflection.c (mono_reflection_create_generic_class): Set the flags field of
1402         the generic parameters from the builder. Fixes #473298.
1403
1404 2010-03-31  Miguel de Icaza  <miguel@novell.com>
1405
1406         * object.c (mono_class_proxy_vtable): Eliminate warning. 
1407
1408         * marshal.c (emit_marshal_boolean): Eliminate possible
1409         uninitialized local warning. 
1410
1411 2010-03-30  Sebastien Pouliot  <sebastien@ximian.com>
1412
1413         * class.c (mono_class_init): Postpone coreclr inheritance check
1414         until the end of the initialization (so we can check up the 
1415         default ctor manually for the core-clr inheritance rules).
1416         * security-core-clr.c: Add the missing (undocumented) checks on
1417         default constructors when verifying inheritance rules.
1418
1419 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1420
1421         * domain-internals.h (MonoJitExceptionInfo): Add new field
1422         handler_end to the data union. To be used to point the end
1423         of a finally block.
1424
1425 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1426
1427         * reflection.c: Add support for new v4 type
1428         System.Reflection.MonoModule that is the concrete version
1429         of Module which is abstract unver v4.
1430
1431 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1432
1433         * class.c (mono_class_init): Don't set class failure after
1434         inited = 1 is set. It must be done before.
1435
1436 2010-03-30  Andreas Färber  <andreas.faerber@web.de>
1437
1438         * mono-config.c: Add support for OS "haiku"
1439         * ChangeLog: Fix UTF-8 encoding
1440
1441         Code is contributed under MIT/X11 license.
1442
1443 Tue Mar 30 15:53:06 CEST 2010 Paolo Molaro <lupus@ximian.com>
1444
1445         * console-unix.c: fixed include logic for sys/ioctl.h.
1446
1447 2010-03-30  Mark Probst  <mark.probst@gmail.com>
1448
1449         * threads.c: Fix bitmap generation for TLS marking on 64 bit
1450         systems.
1451
1452 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1453
1454         * icall.c (ves_icall_System_Enum_get_underlying_type): Don't crash on
1455         unfinished/broken typebuilders.
1456
1457 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1458
1459         * sgen-gc.c: Use the same heuristic for the LOS target that we use
1460         for the minor section allowance.
1461
1462 2010-03-29  Raja R Harinath  <harinath@hurrynot.org>
1463
1464         * metadata-verify.c (INVALID_METHOD_IMPLFLAG_BITS): Allow bit 6
1465         "NoOptimization".
1466
1467 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1468
1469         * sgen-gc.c: Count bytes allocated with heavy statistics.
1470
1471 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1472
1473         * sgen-gc.c: More detailed time statistics.
1474
1475 Mon Mar 29 11:52:34 CEST 2010 Paolo Molaro <lupus@ximian.com>
1476
1477         * gc-internal.h, sgen-gc.c, threads.c, utils/mono-hash.c:
1478         fix the user defined mark interface to pass a pointer
1479         to the object location and not the object itself.
1480
1481 2010-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
1482
1483         * reflection.c (mono_method_body_get_object): Release
1484         the method header before the call to CACHE_OBJECT since
1485         this is a macro that returns.
1486
1487 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1488
1489         * class.c (inflate_generic_type): mono_metadata_type_dup
1490         already dupes array information, the g_memdup was just
1491         leaking memory.
1492
1493 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1494
1495         * verify.c: Add stack_peek function. Fix CEE_DUP
1496         to not read from invalid memory if push did expand
1497         the stack.
1498
1499 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1500
1501         * verify.c: Remove old table verification code that has
1502         been superseeded by the new metadata verifier.
1503
1504         * verify.h: Remove mono_image_verify_tables from the public
1505         API.
1506
1507         * pedump.c: Fix for removed bits.
1508
1509 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1510
1511         * verify.c: Allocate stack slows lazily to reduce stack usage
1512         in case of methods with huge stacks. Reduces memory consumption
1513         for mcs yyparse from 459Mb to 1.8Mb.
1514
1515 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1516
1517         * threadpool.c: don't try executing items from domains being
1518         unloaded. Fixes appdomain-async-invoke test.
1519
1520 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1521
1522         * threadpool.c: spin while the threadpool initializes.
1523         * mono-wsq.c: if the WSQ has not been initialized or has been shut
1524         down, don't do anything.
1525
1526 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1527
1528         * threads.c (mono_thread_create_internal): Set the GC type of the
1529         threads_starting_up hash table.
1530
1531 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1532
1533         * threadpool.c: reset 'state' to avoid returning non-null when the
1534         event type is not found.
1535
1536 Fri Mar 26 19:03:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1537
1538         * sgen-gc.c: make copy_object () take the address of the
1539         slot holding the reference. This allows saving memory stores
1540         when not needed and it allows keeping track of oldspace->nursery
1541         references for the card table code.
1542
1543 2010-03-26  Andreas Färber  <andreas.faerber@web.de>
1544
1545         * null-gc.c (mono_gc_invoke_with_gc_lock): Fix function name.
1546
1547         Code is contributed under MIT/X11 license.
1548
1549 Fri Mar 26 11:33:17 CET 2010 Paolo Molaro <lupus@ximian.com>
1550
1551         * object.c, threads.c, threads-types.h, threads.h: make the
1552         managed thread local storage references precisely tracked.
1553
1554 2010-03-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
1555
1556         * threadpool.[ch]: reworked the threadpool:
1557                 -Threadpool threads use a work-stealing queue. Adding a work
1558                 item from a threadpool thread will queue it in the thread
1559                 local queue without locking (in most cases).
1560                 -epoll events are coalesced before being added to the IO
1561                 queue.
1562                 -Dynamically change the number of active threads
1563                 -Changed the global queue to be more GC friendly
1564
1565         * class-internals.h: add 2 new performance counters for the number of
1566         threads in the threadpool and the IO threadpool.
1567
1568         * object-internals.h: new field in MonoAsyncResult.
1569         * icall-def.h: new internal call for queueing work items.
1570
1571         * Makefile.am: add 2 new files.
1572
1573         * appdomain.c: bump up corlib version.
1574
1575         * mono-wsq.[ch]: an implementation of a work-stealing queue.
1576
1577         * mono-perfcounters-def.h:
1578         * mono-perfcounters.c: added 2 new performance counters.
1579
1580 2010-03-26  Mark Probst  <mark.probst@gmail.com>
1581
1582         * sgen-gc.c: More FIXME/TODO updates.
1583
1584 2010-03-25  Mark Probst  <mark.probst@gmail.com>
1585
1586         * gc-internal.h, sgen-gc.c, sgen-gc.h, boehm-gc.c, null-gc.c: New
1587         function mono_gc_invoke_with_gc_lock() which invokes a function
1588         with the guarantee that no collection will occur during its execution.
1589
1590 2010-03-25  Mark Probst  <mark.probst@gmail.com>
1591
1592         * sgen-gc.c: Update a few comments.
1593
1594 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1595
1596         * reflection.c: Add support for new v4 type
1597         System.Reflection.MonoAssembly that is the concrete version
1598         of Assembly which is abstract unver v4.
1599
1600 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1601
1602         * reflection.c (mono_reflection_get_custom_attrs_info): Protect
1603         code that uses System.Reflection.Emit in DISABLE_REFLECTION_EMIT.
1604
1605         Expose a few macros that are needed for SR but not SRE to the
1606         world (previous inside the SRE ifdef)
1607
1608 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1609
1610         * sgen-gc.c (gc_register_current_thread): We need
1611         stack_start_limit as well in the non-attribute pthread case.
1612
1613 2010-03-23 Rodrigo Kumpera  <rkumpera@novell.com>
1614
1615         * threads.c: Fix windows build.
1616
1617 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1618
1619         * thread-types.h: Add mono_thread_resume_interruption.
1620
1621         * threads.c: Add mono_thread_resume_interruption, this
1622         function should be called after the last protected handler
1623         found at interruption time has finished.
1624
1625 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1626
1627         * threads.c (ves_icall_System_Threading_Thread_ResetAbort):
1628         Check MonoInternalThread's ::state instead of ::abort_exc
1629         since the later can be lazily created.
1630
1631         This is specially problematic when running a finally block
1632         under AbortRequested state. ResetAbort must work, but the
1633         abort_exc object has not been created because interruption
1634         has not began.
1635
1636 2010-03-22  Geoff Norton  <gnorton@novell.com>
1637
1638         * locales.c: Its possible for CFStringGetCStringPtr
1639         to return null and not convert encodings.  Use
1640         CFStringGetCString instead.
1641
1642 Mon Mar 22 18:06:38 CET 2010 Paolo Molaro <lupus@ximian.com>
1643
1644         * class-internals.h, class.c, object.c: introduce compressed
1645         interface bitmaps (for now only under small config): this saves
1646         about 600 KB of runtime memory on gmcs bootstraps or monodevelop
1647         startups.
1648
1649 Mon Mar 22 16:03:34 CET 2010 Paolo Molaro <lupus@ximian.com>
1650
1651         * mono-debug.c: don't try to get the method header, it causes a
1652         deadlock and it is not used for anything anymore.
1653
1654 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1655
1656         * loader.c (mono_method_get_marshal_info): Fix the handling of dynamic methods
1657         broken by the last change.
1658
1659 2010-03-21  Andreas Färber  <andreas.faerber@web.de>
1660
1661         * socket-io.c: Don't depend on AF_SNA, AF_DECnet,
1662         SOCK_RDM.
1663         
1664         Code is contributed under MIT/X11 license.
1665
1666 2010-03-20  Sanjoy Das <sanjoy@playingwithpointers.com>
1667
1668         * sgen-gc.c (mono_gc_get_write_barrier): Handle non-aligned
1669         nursery.
1670
1671         Code is contributed under MIT/X11 license.
1672
1673 2010-03-19  Martin Baulig  <martin@ximian.com>
1674
1675         * mono-debug.c (MonoDebugWrapperData): Replace `cil_code' with a
1676         dummy field, containing an empty string.
1677         (mono_debug_add_method): Don't call mono_disasm_code() for wrappers.
1678
1679
1680 Fri Mar 19 17:26:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1681
1682         * class.c: setup_interface_offsets() refactor to not call
1683         mono_class_get_implemented_interfaces () more times than needed and
1684         to reduce the runtime memory requirements to be O(num_interfaces)
1685         instead of O(max_interface_id).
1686
1687 2010-03-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
1688
1689         * mono-mlist.[ch]: add mono_mlist_set_next ().
1690
1691 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1692
1693         * domain-internals.h: Add MonoTryBlockHoleJitInfo struct and
1694         associated changes to support holes in the protected range of a
1695         try block.
1696
1697         * domain.c: Add mono_jit_info_get_try_block_hole_table_info, which
1698         retrieves the holes table from a given MonoJitInfo.
1699
1700 Tue Mar 16 13:11:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1701
1702         * object.h, object-internals.h, object.c, icall.c, gc-internal.h,
1703         debug-helpers.c, cominterop.c, process.c, sgen-gc.c, socket-io.c:
1704         hide the contents of the MonoString and MonoArray structs from the
1705         public API. Change the accessor macros to accessors functions where
1706         needed. Adjusted the array API to allow for pointer-sized lengths and
1707         starting positions, so 64 bit arrays can be optionally provided in an
1708         API compatible way if needed on 64 bit systems.
1709
1710 Tue Mar 16 10:18:07 CET 2010 Paolo Molaro <lupus@ximian.com>
1711
1712         * class-internals.h, class.c, loader.c, marshal.c, metadata.c,
1713         reflection.c: the MonoMethodNormal struct is now unused, so remove it.
1714
1715 Mon Mar 15 18:28:00 CET 2010 Paolo Molaro <lupus@ximian.com>
1716
1717         * class-internals.h: remove the method header from MonoMethod since
1718         from now on it will be transient. We have a header pointer for method
1719         wrappers, since in that case we need to keep track of it. For this
1720         reason, all the Reflection.Emit generated methods use MonoMethodWrapper
1721         structs now. The same happens with MonoMethodInflated.
1722         * class.c: reset the sre_method flag for inflated method structures:
1723         this makes the code that cares look at the header in the MonoMethodInflated
1724         structure.
1725         * loader.c: lookup the method header in the appropriate field now that
1726         it is removed from MonoMethod.
1727         * metadata-internals.h: add a flag to the method header to know if it
1728         can be freed inside mono_metadata_free_mh ().
1729         * method-builder.c: updates after moving the header field from
1730         MonoMethod to MonoMethodWrapper.
1731         * reflection.c: MonoMethods generated from Reflection.Emit use
1732         MonoMethodWrapper structs if they need a method header now (later take
1733         advantage of this and remove all the current unsafe uses of method_aux_hash).
1734         * metadata.c: make method header parsing not leak when verification
1735         fails. Alloc it with g_malloc() and free it in mono_metadata_free_mh().
1736         These changes save a few hundred KB of runtime memory in a mcs
1737         bootstrap or a monodevelop startup.
1738
1739 2010-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1740
1741         * verify.c: Improve error message.
1742
1743 2010-03-12  Jb Evain  <jbevain@novell.com>
1744
1745         * reflection.c (add_exported_type): populate the exported
1746         table with the type's nested type.
1747
1748 2010-03-10  Mark Probst  <mark.probst@gmail.com>
1749
1750         * sgen-gc.c (STRING_SIZE): Semi-revert r153342.  I'm an idiot who
1751         can't read parentheses.
1752
1753 2010-03-10  Mark Probst  <mark.probst@gmail.com>
1754
1755         * threads.c (thread_cleanup): Add a guard to dereferencing
1756         "thread" to avoid an unlikely race condition.
1757
1758 2010-03-09  Sebastien Pouliot  <sebastien@ximian.com>
1759
1760         * assembly.c: Fix crash in moon-unit when aname->culture is NULL
1761         instead of an empty string.
1762
1763 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1764
1765         * object-internals.h (_G_BOOLEAN_EXPR): Fix the definition of this to explicitly
1766         convert to a boolean, recent gcc versions compile this differently.
1767
1768 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1769
1770        * sgen-gc.c (safe_object_get_size): Avoid a function call so this can really be
1771        inlined.
1772
1773 2010-03-09  Mark Probst  <mark.probst@gmail.com>
1774
1775         * sgen-gc.c (STRING_SIZE): Off by one.
1776
1777 2010-03-09  Mark Probst  <mark.probst@gmail.com>
1778
1779         * sgen-archdep.h: Fix the signal context register access for
1780         AMD64.
1781
1782 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1783
1784         * sgen-gray.c: Get rid of the unused 'start' field in GrayQueueSection.
1785
1786 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1787
1788         * verify.c: Store the initial basic block returned by mono_basic_block_split
1789         so we can release the whole list and not just the first one.
1790
1791 Mon Mar 8 17:30:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1792
1793         * verify.c, debug-helpers.c, profiler.c, loader.c,
1794         mono-basic-block.c, mono-debug.c, reflection.c: prepare to make
1795         MonoMethodHeader a transient entity.
1796
1797 2010-03-08  Zoltan Varga  <vargaz@gmail.com>
1798
1799         * sgen-gc.c (scan_needed_big_objects): Call drain_gray_stack () to avoid
1800         uncontrolled growth of the gray stack.
1801
1802         * sgen-gray.c: Rewrite this so it behaves like a stack, not a queue, so recently
1803         added items are removed first, improving cache locality. Avoid freeing queue
1804         segments in the fast path, use the list of segments as the free list, truncate
1805         it to its max size at the start of collection.
1806
1807 Mon Mar 8 10:13:52 CET 2010 Paolo Molaro <lupus@ximian.com>
1808
1809         * metadata-internals.h: more memory savings, both with small config and without.
1810
1811
1812 Sat Mar 6 19:12:12 CET 2010 Paolo Molaro <lupus@ximian.com>
1813
1814         * appdomain.c, domain-internals.h, domain.c, object.c:
1815         make class_vtable_hash into an array to reduce memory usage.
1816
1817 Sat Mar 6 18:16:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1818
1819         * mempool.c, class-internals.h, class.c, icall.c, metadata.c,
1820         object-internals.h, object.c, reflection.c, threadpool.c:
1821         reduce resource usage when the small config is selected.
1822         In particular, up to 64K of methods/fields/properties/events
1823         are allowed and "other" methods in events are ignored.
1824
1825 Fri Mar 5 19:05:47 CET 2010 Paolo Molaro <lupus@ximian.com>
1826
1827         * threads.c: reduce resource usage when compiled for a small config.
1828
1829 2010-03-05  Mark Probst  <mark.probst@gmail.com>
1830
1831         * sgen-gc.c: Also collect number of degraded-alloced objects with
1832         heavy statistics.
1833
1834 2010-03-04  Geoff Norton  <gnorton@novell.com>
1835
1836         * assembly.c: Only support OSX bundling if the bundle is 
1837         actually detectable.
1838
1839 2010-03-04  Geoff Norton  <gnorton@novell.com>
1840
1841         * loader.c: The marshal specs are freed at the end of the call
1842         but it explicitly frees the strings as well as the container,
1843         so we need to dup them too to avoid referencing free'd memory.
1844
1845 2010-03-04  Geoff Norton  <gnorton@novell.com>
1846
1847         * icall-def.h:
1848         * icall.c: Add a new private internal icall to construct
1849         an object from its type without running the ctor.
1850
1851 Thu Mar 4 15:37:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1852
1853         * profiler.c: allow multiple profiler engines to be loaded
1854         at the same time.
1855
1856 Wed Mar 3 20:19:45 CET 2010 Paolo Molaro <lupus@ximian.com>
1857
1858         * profiler-private.h, profiler.c, profiler.h, sgen-gc.c: introduce
1859         profiler event to track object moves.
1860
1861 Wed Mar 3 19:20:39 CET 2010 Paolo Molaro <lupus@ximian.com>
1862
1863         * object.c, profiler.c, profiler.h, string-icalls.c:
1864         remove the reduntant MONO_PROFILE_STRING_ALLOC profiler event.
1865
1866 2010-03-03  Miguel de Icaza  <miguel@novell.com>
1867
1868         * decimal.c (mono_double2decimal): Add support for reducing the
1869         scale of a decimal.  It turns the 0.6000000000000 into 0.6 as
1870         expected.
1871
1872 2010-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1873
1874         * icall-def.h:
1875         * icall.c: Implement System.MonoType::get_core_clr_security_level icall.
1876
1877 2010-03-03  Marek Habersack  <mhabersack@novell.com>
1878
1879         * mono-config.c (mono_config_parse_assembly_bindings): added -
1880         parses assembly binding redirections from appdomain's config
1881         file.
1882
1883         * metadata-internals.h: added definition of a new function -
1884         mono_config_parse_assembly_bindings - to support parsing assembly
1885         binding redirections defined in appdomain's config file.
1886
1887         * domain-internals.h: added two new fields to _MonoDomain - a list
1888         of assembly bindings and a flag to parse the config file only
1889         once.
1890
1891         * assembly.c (assembly_binding_maps_name): empty culture name and
1892         NULL culture name are considered equal.
1893         (mono_assembly_apply_binding): added support for domain specific
1894         assembly binding redirections, read from the appdomain's
1895         configuration file. Fixes bug #580185
1896
1897 Wed Mar 3 11:46:06 CET 2010 Paolo Molaro <lupus@ximian.com>
1898
1899         * appdomain.c, domain.c, icall.c, image.c, marshal.c, object.c,
1900         reflection.c, socket-io.c, threadpool.c, threads.c: removed 1.1/1.0
1901         support.
1902
1903 2010-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1904
1905         * reflection.c (mono_image_get_memberref_token): Extract mono_image_add_memberef_row
1906         from this function. The new function receive the parent token instead of a type.
1907
1908         * reflection.c (mono_image_get_methodref_token_for_methodbuilder):
1909         * reflection.c (mono_image_get_ctorbuilder_token): Use new function to encode
1910         typebuilders. This make it possible to properly encode generic type builders since
1911         their unmanaged type don't have generics data while unfinished.
1912
1913         Fixes #583655.
1914
1915 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1916
1917         * sgen-gc.c, sgen-protocol.c, sgen-protocol.h: New facility for
1918         writing binary log files (can be enabled by #define'ing
1919         BINARY_PROTOCOL) for better debugging of timing-dependent bugs or
1920         bugs in longer running programs.
1921
1922 Mon Mar 1 19:35:32 CET 2010 Paolo Molaro <lupus@ximian.com>
1923
1924         * metadata.c: added some API documentation.
1925
1926 2010-03-01  Robert Jordan  <robertj@gmx.net>
1927
1928         * filewatcher.h: Include glib.h to fix the MSVC build.
1929
1930 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1931
1932         * class-internals.h (MonoClass): Get rid of the reflection_info field, add
1933         a GC handle instead. This is a bit slower to access, but avoids burdening the
1934         GC with 100s of individual roots.
1935
1936         * reflection.c (mono_class_get_ref_info):
1937         (mono_class_set_ref_info):
1938         (mono_class_free_ref_info): New internal helper fuctions.
1939
1940         * reflection.c appdomain.c icall.c class.c: Use the new helper functions instead
1941         of accessing klass->reflection_info directly.
1942
1943         * sgen-gc.c (alloc_complex_descriptor): Fix the computation of the number of
1944         words.
1945
1946         * gc.c (alloc_handle): Create a GC descriptor for the 'entries' array, free
1947         the previous array.
1948
1949 2010-02-28  Zoltan Varga  <vargaz@gmail.com>
1950
1951         * marshal.c (get_runtime_invoke_type): Avoid sharing byref with I, as the latter
1952         needs an indirection.
1953
1954 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1955
1956         * generic-sharing.c: Removed, moved its contents to mini/mini-generic-sharing.c,
1957         so all generic sharing code is in one place.
1958
1959         * class.c (get_implicit_generic_array_interfaces): Fix the last change so
1960         we don't call setup_interface_offsets () for unfinished types.
1961
1962 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1963
1964         * class.c (mono_class_generic_sharing_enabled): Move this to
1965         generic-sharing.c.
1966
1967         * image.c: Add an unload hook which is called before an image is unloaded.
1968
1969         * generic-sharing.c: Use the unload hook to unregister per-image data, to avoid
1970         metadata.c having to depend on generic sharing.
1971
1972 Fri Feb 26 19:23:18 CET 2010 Paolo Molaro <lupus@ximian.com>
1973
1974         * class.c: reduce size of ridiculously large cache.
1975
1976 2010-02-26  Martin Baulig  <martin@ximian.com>
1977
1978         * mono-debug.h
1979         (MONO_DEBUGGER_MINOR_VERSION): Bump to 5.
1980
1981         * threads.c (mono_thread_internal_reset_abort): New method; resets
1982         the abort, but doesn't throw any exception if no abort was requested.
1983
1984 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1985
1986         * class.c (get_implicit_generic_array_interfaces): Call
1987         mono_class_setup_interface_offsets () before accessing
1988         eclass->interface_offsets_count. This only shows up on platforms without IMT for
1989         some reason.
1990
1991 Thu Feb 25 12:12:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1992
1993         * environment.c, environment.h, icall.c: make the GetOSVersionString()
1994         icall internal.
1995
1996 Thu Feb 25 11:37:50 CET 2010 Paolo Molaro <lupus@ximian.com>
1997
1998         * metadata.c, metadata.h: make MONO_TYPE_IS* functional without
1999         direct access to the MonoType fields.
2000
2001 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
2002
2003         * threads.h: Move some internal functions which were added to this header by
2004         mistake to threads-types.h.
2005
2006         * class.c (mono_class_init): Get rid of mono_setup_vtable_in_class_init.
2007
2008 Wed Feb 24 17:45:27 CET 2010 Paolo Molaro <lupus@ximian.com>
2009
2010         * class-internals.h, class.h, object.h: make MonoRemoteClass
2011         and mono_remote_class() internal.
2012
2013 Wed Feb 24 17:05:18 CET 2010 Paolo Molaro <lupus@ximian.com>
2014
2015         * metadata-internals.h, class-internals.h, metadata.h: make the
2016         MonoType guts internal as well.
2017
2018 Wed Feb 24 16:02:42 CET 2010 Paolo Molaro <lupus@ximian.com>
2019
2020         * reflection.h: the MonoTypeNameParse guts are internal now.
2021         * assembly.c, assembly.h, image.h: the MonoAssemblyName guts
2022         are internal now, provide accessors as needed.
2023         * metadata.h, metadata-internals.h: the MonoMethodSignature
2024         guts are internal now.
2025         * Makefile.am: mempool.h is an internal header now.
2026         * *.h, *.c: remove glib.h usage from the public headers.
2027
2028 2010-02-24  Atsushi Enomoto  <atsushi@ximian.com>
2029
2030         * culture-info-table.h : regenerated.
2031
2032 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
2033
2034         * metadata.c: Add mono_method_get_header_summary which returns minimal
2035         information about the header of a method. This is the information used
2036         by the inline oracle to reject methods.
2037
2038         This method doesn't decode local variables and doesn't cache it's result,
2039         so it should cause a minimal reduction in memory usage.
2040
2041         * metadata-internals.h: Add MonoMethodHeaderSummary structure and
2042         mono_method_get_header_summary.
2043
2044 2010-02-22  Jeffrey Stedfast  <fejj@novell.com>
2045
2046         * threads.c (mono_thread_exit): Make sure that the main thread is
2047         non-null before dereferencing it.
2048
2049 2010-02-21  Geoff Norton  <gnorton@novell.com>
2050
2051         * Makefile.am: Add CoreFoundation linkage on darwin to properly get the current
2052         locale.
2053         * locaes.c: When running on darwin, try to get the local from CoreFoundation 
2054         before falling back to the posix lookup.
2055
2056 2010-02-19  Zoltan Varga  <vargaz@gmail.com>
2057
2058         * threads.c (mono_thread_suspend_all_other_threads): Ignore threads which have
2059         the DONT_MANAGE flag set.
2060
2061 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
2062
2063         * domain.c: Remove old v1 version strings. Let the runtime
2064         default to 2.0 instead of failing because it can't find a
2065         working 1.0 instalation.
2066
2067 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
2068
2069         * domain.c: Add v4 RC version string.
2070
2071 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
2072
2073         * mono-basic-block.c (mono_opcode_value_and_size): Use pointer variant
2074         of overflow checking function.
2075
2076 2010-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
2077
2078         * reflection.c (mono_reflection_method_on_tb_inst_get_handle): Handle non
2079         generic methods.
2080
2081         * reflection.c (mono_reflection_get_custom_attrs_info): Handle compiler context
2082         cases for ParameterInfo.
2083
2084         Fixes #579493.
2085
2086 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
2087
2088         * class.c (mono_class_get_cctor): Fix support for dynamic classes, which doesn't
2089         have has_cctor set. Fixes #575946.
2090
2091 2010-02-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
2092
2093         * appdomain.c: display a warning if the parsing the config file
2094         produces any error.
2095         Skip the BOM in UTF-8 files.
2096         Copy the AppDomainSetup before setting the privateBinPath so that the
2097         correct configuration file is read.
2098
2099 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
2100
2101         * object.c: Instead of using one vtable trampoline, allow the JIT to use one
2102         vtable trampoline per vtable slot index. Not used yet.
2103
2104 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
2105
2106         * icall-def.h:
2107         * icall.c: add internal call that returns the system page size.
2108
2109 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
2110
2111         * debug-helpers.c (mono_method_desc_search_in_image): Handle short names like
2112         'int' for system classes.
2113
2114 Fri Feb 12 18:36:02 CET 2010 Paolo Molaro <lupus@ximian.com>
2115
2116         * icall.c, icall-def.h: new icall to check for sufficient
2117         stack space.
2118
2119 2010-02-12  Mark Probst  <mark.probst@gmail.com>
2120
2121         * reflection.c (ensure_complete_type): Check that reflection_info
2122         is set, too.  Fixes crash of corlib testsuite with -O=-all.
2123
2124 2010-02-11  Rodrigo Kumpera  <rkumpera@novell.com>
2125
2126         * attrdefs.h:
2127         * tabledefs.h: Add NoOptimization flag.
2128
2129 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2130
2131         * sgen-gc.c: Don't consider it a missing remset if the target
2132         object is pinned - we might have done the store but not added the
2133         remset yet.
2134
2135 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2136
2137         * sgen-gc.c: When checking for missing remsets, don't assert on
2138         the first one, but print them all and then assert.
2139
2140 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2141
2142         * sgen-gc.c (find_in_remset_loc): Handle the small bitmap case.
2143
2144 2010-02-09  Miguel de Icaza  <miguel@novell.com>
2145
2146         * console-unix.c: On OSX Control-Y is assigned to
2147         VDSUSP (non-Posix), the
2148         suspend-program-next-time-it-tries-to-read-input command (this is
2149         different than C-z, which suspends immediately).
2150
2151         Do the same thing that bash does and ignore this setting,
2152         making our repl/getline support pasting.
2153
2154 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2155
2156         * sgen-gc.c: Simple plausibility check for scan_starts.
2157
2158 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2159
2160         * sgen-gc.c: Round up when calculating the number of scan starts.
2161
2162 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2163
2164         * reflection.c: Export mono_get_object_from_blob.
2165
2166         * object-internals.h: Ditto.
2167
2168         * icall.c: New icall property_info_get_default_value to get the default
2169         value of a property. Since using this is not common, no caching is done.
2170
2171         * icall-def.h: Add new icall.
2172
2173 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2174
2175         * class.c: Add mono_class_get_property_default_value.
2176
2177         * class-internal.h: Export mono_class_get_property_default_value.
2178
2179 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2180
2181         * reflection.c (mono_image_get_property_info): Encode the default value of a property.
2182
2183 Wed Feb 10 14:48:45 CET 2010 Paolo Molaro <lupus@ximian.com>
2184
2185         * sgen-gc.c: introduced critical regions to allow some lockless
2186         operations and increase scalability.
2187
2188 2010-02-10  Geoff Norton  <gnorton@novell.com>
2189
2190         * reflection.c: Support building with DISABLE_REFLECTION
2191
2192 2010-02-09 Gonzalo Paniagua Javier <gonzalo@novell.com>
2193
2194         * threadpool.c: Fixes for SetMinThreads and SetMaxThreads.
2195         Closes bug #566057.
2196
2197         * exception.c: fix typo in comment.
2198
2199 2010-02-09  Rodrigo Kumpera  <rkumpera@novell.com>
2200
2201         * icall.c (param_info_get_type_modifiers): Handle the case when the member object is a
2202         property. This happens which instances returned by PropertyInfo::GetIndexParameters ().
2203
2204         * reflection.c (mono_reflection_get_custom_attrs_info): Ditto.
2205
2206         * object-internals.h: Export mono_class_is_reflection_method_or_constructor as part of
2207         the internal API.
2208
2209         Fixes #574434.
2210
2211 2010-02-09  Mark Probst  <mark.probst@gmail.com>
2212
2213         * threads.c: Removed two assertions that were too strict.  Added a
2214         clarifying comment.  Fixes #577090.
2215
2216 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
2217
2218         * domain.c (mono_jit_info_table_find): Avoid looking in the root domain, since
2219         the caller has no way of knowing the domain which owns the returned MonoJitInfo.
2220
2221         * appdomain.c (create_exceptions): Call mono_thread_push/popappdomain_ref ().
2222
2223         * verify.c (mono_type_get_stack_name): Fix a warning.
2224
2225 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
2226
2227         * marshal.c (mono_marshal_get_wrapper_info): Rename from
2228         mono_marshal_wrapper_info_from_wrapper.
2229
2230         * marshal.c (mono_marshal_set_wrapper_info): Rename from
2231         mono_marshal_method_set_wrapper_data, and export.
2232
2233         * boehm-gc.c sgen-gc.c null-gc.c: Get rid of mono_gc_get_allocator_type, store
2234         the allocator type in a AllocatorWrapperInfo structure instead, which is accesible
2235         by calling mono_marshal_get_wrapper_info ().
2236
2237         * sgen-gc.c (mono_gc_get_managed_allocator): Add a specialized allocator for
2238         small objects which does no size checks.
2239
2240 2010-02-05  Rodrigo Kumpera  <rkumpera@novell.com>
2241
2242         * icall-def.h: Rename get_MetadataToken to GetMetadataToken.
2243
2244 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2245
2246         * verify.c (mono_method_verify): Use the new basic block formation pass
2247         to avoid verifying dead basic blocks. This is the same behavior as the
2248         runtime MS verifier.
2249
2250 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2251
2252         * mono-basic-block.c:
2253         * mono-basic-block.h: New implementation of a basic block formation pass.
2254         The formation pass does static liveness analysis as well to detect dead
2255         basic blocks.
2256
2257 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2258
2259         * marshal.c (mono_marshal_get_native_wrapper): Emit a null check for the
2260         'this' argument in icalls.
2261
2262 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2263
2264         * reflection.c (resolve_object): Handle MonoArrayMethod. Fixes #575955.
2265
2266 2010-02-01  Mark Probst  <mark.probst@gmail.com>
2267
2268         * object.c, domain.c: When using SGen, we must register
2269         vtable->type as a root if it's not a MonoType, because then it
2270         wasn't pin-alloced.
2271
2272 2010-02-01  Mark Probst  <mark.probst@gmail.com>
2273
2274         * sgen-gc.c: Reset to_space_bumper to to_space_section->next_data
2275         at the start of nursery collections, because we might have had
2276         degraded allocations which changed next_data.
2277
2278 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2279
2280         * marshal.c (mono_marshal_get_managed_wrapper): Avoid constructing the
2281         custom attr so this function works in cross-compiling mode.
2282
2283 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2284
2285         * class.c (make_generic_param_class): Initialize interface offsets since we
2286         set klass->inited. Fixes #574819.
2287
2288 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2289
2290         * domain.c (mono_domain_free): Send the END_UNLOAD profiler event before
2291         calling the JIT domain cleanup hook.
2292
2293 2010-01-28  Rodrigo Kumpera  <rkumpera@novell.com>
2294
2295         * pedump.c (main): Properly set the verifier mode when running the metadata
2296         verifier.
2297
2298 2010-01-28  Rodrigo Kumpera  <rkumpera@novell.com>
2299
2300         * verify.c (verify_class_for_overlapping_reference_fields): Properly verify
2301         overlapping fields now that we're called before has_references is set.
2302
2303         * pedump.c (dump_verify_info): Clear any loader error before verifying another
2304         method. Otherwise all sort of weird stuff happens.
2305
2306 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2307
2308         * object.c (mono_field_get_value_object): Handle nullable types correctly.
2309         Fixes #572874.
2310
2311 2010-01-25  Zoltan Varga  <vargaz@gmail.com>
2312
2313         * icall.c (ves_icall_System_Array_SetValueImpl): Handle nullable types correctly.
2314         Fixes #573322.
2315
2316 2010-01-23  Mark Probst  <mark.probst@gmail.com>
2317
2318         * sgen-pinning.c (evacuate_pin_staging_area): Don't assume
2319         pin_staging_area_index is greater than 0.
2320
2321 2010-01-22 Miguel de Icaza (miguel@novell.com)
2322
2323         * loader.c: Since we do nothing with the error returned, pass NULL
2324         to ignore the error.
2325
2326 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2327
2328         * reflection.c (typebuilder_setup_fields): Pretend field setup already
2329         happened before starting to encode the actual fields. This avoid ciclic
2330         dependencies and eventual crashes.
2331
2332         Fixes #572660.
2333
2334 2010-01-21  Mark Probst  <mark.probst@gmail.com>
2335
2336         * sgen-gc.c, gc-internal.h, object.c: Make string allocation
2337         atomic and remove the half-constructed hack in SGen.
2338
2339 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2340
2341         * metadata-verify.c (parse_generic_inst): Fail a type signature if it 
2342         has a recursive reference to itself.
2343
2344         Fixes #571863.
2345
2346 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2347
2348         * loader.c (mono_method_signature): Fix error message.
2349
2350 2010-01-21  Mark Probst  <mark.probst@gmail.com>
2351
2352         * sgen-gc.c: Reuse to-space sections between nursery collections.
2353
2354 2010-01-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
2355
2356         * icall.c: don't raise AppDomain.TypeResolve when the type is loaded
2357         from the current assembly or mscorlib. Fixes bug #322957.
2358
2359 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2360
2361         * marshal.c: Calculate the target class of the delegete invoke wrappers using
2362         get_wrapper_target_class.
2363
2364 2010-01-19  Mark Probst  <mark.probst@gmail.com>
2365
2366         * sgen-gc.c: Fix warnings.
2367
2368 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2369
2370         * verify.c (store_local): Better error message.
2371
2372 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2373
2374         * object.c (mono_object_get_virtual_method): Handle generic interfaces with variant
2375         arguments.
2376
2377 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2378
2379         * icall.c (ves_icall_Remoting_RemotingServices_GetVirtualMethod): This
2380         function is generics variance aware.
2381
2382 2010-01-19  Sebastien Pouliot  <sebastien@ximian.com>
2383
2384         * security-core-clr.c (mono_security_core_clr_can_access_internals):
2385         Handle the case where 'basedir' can be NULL (e.g. SRE assemblies)
2386
2387 2010-01-19  Sylvain Dupont <duposyl@gmail.com>
2388
2389         * cominterop.c marshal.c: Added support for marshalling in, in/byref,
2390           in/out, in/out/byref parameters of type SAFEARRAY[VARIANT].
2391
2392         Code is contributed under MIT/X11 license.
2393
2394 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2395
2396         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Handle inflated generic methods
2397         on a GTD.
2398
2399 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2400
2401         * marshal.c (mono_marshal_wrapper_info_from_wrapper): New helper function to
2402         return a point to a wrapper specific info structure describing the wrapper.
2403         (mono_marshal_get_array_address): Store the rank+elem_size in the wrapper info.
2404  
2405 2010-01-18  Mark Probst  <mark.probst@gmail.com>
2406  
2407         * sgen-gc.c: Make minor collection section allowance adaptive,
2408         depending on the amount of memory reclaimed in the last major
2409         collection.  If more memory was reclaimed (i.e. more garbage
2410         produced), do the next collection earlier.
2411
2412 2010-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2413
2414         * metadata-verify.c (parse_type): Fail a type signature if it has a recursive reference
2415         to itself.
2416
2417         * metadata-verify.c (mono_verifier_verify_typespec_signature): Change signature to take
2418         the token as parameter.
2419
2420         * verify-internals.h: Ditto.
2421
2422         * metadata.c (mono_type_create_from_typespec): Pass token to verifier.
2423
2424         Fixes #571460.
2425
2426 2010-01-18  Mark Probst  <mark.probst@gmail.com>
2427
2428         * sgen-gc.c: Make store_remset_buffer_index long.
2429
2430 2010-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2431
2432         * class.c (mono_class_from_typeref): Fail loading of self-referencing typeref tokens.
2433
2434         Fixes #569579.
2435
2436 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2437
2438         * sgen-gc.c (mono_gc_base_init): Add 'conservative_stack_mark' option to turn
2439         off precise marking if it is available.
2440         (mono_gc_get_bitmap_for_descr): Fix the handling of run length descriptors.
2441
2442 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2443
2444         * sgen-gc.c (mono_gc_conservatively_scan_area): Resurrect this.
2445
2446         * sgen-pinning.c (evacuate_pin_staging_area): Don't assert if there are no
2447         pinned objects.
2448
2449         * sgen-gc.c (create_allocator): Add the missing n > MONO_ARRAY_MAX_INDEX check
2450         to the array allocator.
2451
2452 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2453
2454         * generic-sharing.c (instantiate_other_info): Don't create ftnptr's from the
2455         result of mono_compile_method (), it already includes an ftnptr.
2456
2457 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2458
2459         * metadata.c (get_image_set): Remove an assert which can happen in normal use.
2460
2461 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2462
2463         * metadata.c (mono_metadata_str_hash): New helper function to compute a stable
2464         hash value which doesn't depend on glib/eglib versions.
2465         (mono_metadata_type_hash): Use it.
2466
2467         * object.c (mono_method_get_imt_slot): Ditto.
2468
2469 2010-01-14  Rodrigo Kumpera  <rkumpera@novell.com>
2470
2471         * class.c (mono_type_has_exceptions): Check the generic instance. It can fail
2472         independently of the GTD.
2473
2474         * class.c (mono_class_setup_fields): Fail if field has negative offset.
2475
2476         * class.c (mono_class_setup_fields): Fail if valuetype has zero size. Add sizeof(MonoObject)
2477         to the upper limit since instance_size includes this amount.
2478
2479         * class.c (mono_class_layout_fields): Check if the types of the static fields have failed.
2480
2481         Fixes #569544.
2482
2483 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2484
2485         * object.c (build_imt_slots): Compute the vtable slot correctly for interfaces
2486         with static methods.
2487
2488         * object.c (build_imt_slots): Avoid asserting when static methods are
2489         encountered in an interface.
2490
2491 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2492
2493         * sgen-gc.c (to_space_expand): Fix assertion.
2494
2495 Wed Jan 13 15:42:28 CET 2010 Paolo Molaro <lupus@ximian.com>
2496
2497         * string-icalls.c: missing declaration fixes.
2498         * sgen-gc.c: portability fixes.
2499
2500 2010-01-12  Rodrigo Kumpera  <rkumpera@novell.com>
2501
2502         * class.c (mono_class_get_implemented_interfaces): Now take a MonoError argument.
2503
2504         * class.c:
2505         * cominterop.c:
2506         * icall.c:
2507         * object.c: 
2508         * class-internals.h: Adjust for new signature of mono_class_get_implemented_interfaces.
2509
2510 2010-01-12  Rodrigo Kumpera  <rkumpera@novell.com>
2511
2512         * class.c (mono_class_setup_interfaces): Now take a MonoError argument and
2513         it can fail loading the type.
2514
2515         * class.c: Add mono_class_inflate_generic_class_checked.
2516
2517         * class.c:
2518         * verify.c:
2519         * class-internals.h: Adjust for new signature of mono_class_setup_interfaces.
2520
2521 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2522
2523         * loader.c (mono_method_signature_checked): New internal function taking an
2524         MonoError argument.
2525
2526         * socket-io.c (AI_ADDRCONFIG): Applied patch from John Lightsey (jd@cpanel.net).
2527         Fixes build on rh 7.3.
2528
2529 2010-01-10  Aaron Bockover  <abockover@novell.com>
2530
2531         * assembly.c (mono_set_rootdir): Support finding the mono paths on OS X
2532         at runtime in the same way as on Windows, which yields a relocatable
2533         Mono. Uses dyld's _NSGetExecutablePath and realpath to resolve the path
2534         of the running mono process.
2535
2536         On TARGET_ARM, fallback () will always be executed.
2537
2538 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2539
2540         * icall.c (ves_icall_Type_GetInterfaceMapData): This function is generics variance aware.
2541
2542 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2543
2544         * class.c (mono_class_is_assignable_from_slow): Support variant
2545         generic delegates.
2546
2547         * class.c (mono_class_implement_interface_slow): Support types with
2548         variant generic arguments.
2549
2550 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2551
2552         * verify.c: Remove some code duplication.
2553
2554 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2555
2556         * object.c: Update docs.
2557
2558 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2559
2560         * object.c (add_imt_builder_entry): Improve DEBUG_IMT spew.
2561
2562         * object.c (build_imt_slots): Interfaces with variant generic arguments use the
2563         fallback trampoline as well.
2564
2565         * class.c (mono_class_interface_offset_with_variance): Add new non_exact_match
2566         out argument that is set to TRUE if the match was direct. 
2567
2568         * class.c (mono_class_is_assignable_from): Delegates require variance testing as well.
2569
2570         * class-internal.h: Update prototype of mono_class_interface_offset_with_variance.
2571
2572 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2573
2574         * class.c: Add mono_class_interface_offset_with_variance function that does same
2575         as mono_class_interface_offset but takes variance into account.
2576
2577         * class-internal.h: Export mono_class_interface_offset_with_variance.
2578
2579         * object.c: Fix and improve DEBUG_IMT. Added an assert for IMT thunk building.
2580
2581 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2582
2583         * object.c:
2584         * icall.c:
2585         * class.c: Add some FIXME for due to variant generic arguments.
2586
2587         object.c (mono_object_isinst_mbyref): Interfaces with variant generic arguments
2588         can't use the simple bitfield check, so call mono_class_is_assignable_from if
2589         the bitfield check fails.
2590
2591 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2592
2593         * class.c (mono_class_is_assignable_from): Rework the generics variance code
2594         to be easier to read and fix bugs in the case a non generic type implements a variant
2595         interface.
2596
2597         * class.c (mono_class_has_variant_generic_params): Make non static.
2598
2599         * class-internals.h: Export mono_class_has_variant_generic_params as part of
2600         the private API.
2601
2602 2010-01-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2603
2604         * assembly.c: fix MONO_PATH debug output.
2605
2606 2010-01-06  Atsushi Enomoto  <atsushi@ximian.com>
2607
2608         * culture-info-table.h : regenerated.
2609
2610 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2611
2612         * verify.c (mono_verifier_verify_class): Properly check for broken parent. Ignore
2613         types that are meant to not have a parent.
2614
2615 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2616
2617         * marshal.c (mono_marshal_get_runtime_invoke): Make a copy of the signature
2618         from the image mempool, so it is not leaked.
2619
2620 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2621
2622         * metadata-internals.h (_MonoImage): Remove unused generic_class_cache field.
2623
2624 2010-01-04  Sebastien Pouliot  <sebastien@ximian.com>
2625
2626         * verify.c (verify_valuetype_layout_with_target): Fix case
2627         that can lead to infinite recursion. Fix bug #567861
2628
2629 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2630
2631         * pedump.c: Run code verifier even if image verification fails
2632         due to a failed type we. This allows more errors to be shown.
2633
2634 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2635
2636         * class.c (count_virtual_methods): Remove the assert and now
2637         fail properly.
2638         
2639         * class.c (setup_interface_offsets): This can fail now.
2640
2641         * class.c (mono_class_setup_vtable_general): Check for parent vtable
2642         errors. Check setup_interface_offsets errors.
2643
2644         * class.c (setup_interface_offsets): Simplify the return error logic
2645         and remove class_init_ok.
2646
2647         Fixes #560327.
2648
2649 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2650
2651         * class.c (mono_class_init): Do class verification at the beginning. Add
2652         some asserts to avoid tripping into invalid memory.
2653
2654         * object.c (compute_class_bitmap): Replace a g_assert_not_reached with a
2655         g_error and a decent message.
2656
2657         * verify.c (mono_verifier_verify_class): Verify for invalid super type.
2658
2659         Fixes #567548.
2660
2661 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2662
2663         * mempool-internals.h (g_list_prepend_mempool): Define this and related functions
2664         as inline functions instead of defining them in mempool.c.
2665
2666         * metadata-internals.h (MonoImageSet): New structure representing a set of
2667         MonoImages, which own a collection of generic instances.
2668
2669         * metadata.c: Get rid of the global generic caches, instead assign each generic
2670         instance to the image set which consists of all the images referenced by the
2671         instance. This greatly speeds up mono_metadata_clean_for_image (), and allows
2672         the memory used by generic instances to be allocated from a per image-set mempool
2673         later.
2674
2675 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2676
2677         * marshal.c (mono_marshal_get_runtime_invoke): Fix a memory leak.
2678
2679 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2680
2681         * appdomain.c (zero_static_data): Fix a warning.
2682
2683         * locales.c (construct_culture_from_specific_name): Applied patch from
2684         José Antonio Sánchez Lázaro <jasl@darcysoft.es>. Fix a crash if a culture was
2685         not found. Fixes #567900.
2686
2687 2009-12-31  Sebastien Pouliot  <sebastien@ximian.com>
2688
2689         * loader.c (mono_method_get_signature_full): Remove two asserts.
2690         Return NULL instead so that the verifier can handle both cases 
2691         gracefully.
2692
2693 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2694
2695         * class.c (mono_class_setup_methods): Use checked version of mono_class_inflate_generic_method_full
2696         so we can properly fail types instead of crashing.
2697
2698         Fixes #567676.
2699
2700 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2701
2702         * reflection.c (reflection_methodbuilder_to_mono_method): Assert in case of a broken
2703         generic method.
2704
2705 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2706
2707         * marshal.c (mono_mb_emit_restore_result): Properly handle generic enums.
2708
2709 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2710
2711         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait): Don't close the
2712         wait handle if the wait is interrupted, since it is still in mon->wait_list, and
2713         we can't remove it from it since we don't hold the lock.
2714         (mon_new): Free the orphaned events here when a mon structure is added to the
2715         freelist. Fixes #561239. Thanks to Mike Rieker <wmrieker@nii.net> for tracking
2716         this down.
2717
2718 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2719
2720         * verify.c (init_stack_with_value_at_exception_boundary): Do stack overflow checking here
2721         as max stack might be zero.
2722
2723         Fixes #562320.
2724
2725 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2726
2727         Rework all uses of mono_class_setup_methods to accept that it can fail now.
2728
2729         * class.c (mono_class_setup_methods): This function now can fail the class. Do so for generic
2730         instances if the GTD did.
2731
2732         * class.c (mono_class_setup_properties): Ditto.
2733
2734         * class.c (mono_class_setup_events): Ditto.
2735
2736         * class.c (mono_class_setup_vtable): Fail early if the type is already broken.
2737
2738         * class.c (mono_class_setup_vtable_general): Add a few more missing broken type checks. Sanitize
2739         error setting.
2740
2741         * class.c (mono_class_init): Fail if GTD did.
2742
2743         * cominterop.c:
2744         * generic-sharing.c:
2745         * icall.c:
2746         * loader.c:
2747         * object.c:
2748         * verify.c: Properly handle failure of mono_class_setup_methods.
2749
2750 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2751
2752         * class-internals.c: Add mono_class_inflate_generic_method_full_checked and make
2753         mono_class_inflate_generic_method_full internal.
2754
2755         * class.c (inflate_generic_context): Now takes a MonoError argument.
2756
2757         * class.c (mono_class_inflate_generic_method_full): Now calls the _checked and abort on
2758         errors.
2759
2760 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2761
2762         * generic-sharing.c (instantiate_other_info): Avoid creating jump trampolines since
2763         they cannot be patched. Partly fixes #564408.
2764
2765 2009-12-24  Mark Probst  <mark.probst@gmail.com>
2766
2767         * metadata-internals.h, reflection.c: Use the
2768         MonoDynamicImage.handleref hash table only with unmanaged keys,
2769         and add a managed hash table handleref_managed for managed keys.
2770
2771 2009-12-24  Mark Probst  <mark.probst@gmail.com>
2772
2773         * sgen-gc.c: Unset to-space bumper between collections.  It might
2774         become invalid due to degraded allocations.
2775
2776 2009-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
2777
2778         * loader.c (mono_method_get_signature_full): Check if the returned signature is compatible
2779         with the one from the original method.
2780
2781         * metadata-verify.c (mono_verifier_is_sig_compatible): New function to verify signature
2782         compatibility.
2783
2784         * verify-internals.h: Add new function to the internal API.
2785
2786 2009-12-18  Dimitar Dobrev  <dpldobrev@yahoo.com>
2787
2788         * culture-info-tables.h: regenerated it to include the Georgian culture.
2789
2790 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2791
2792         * sgen-gc.c: Include mono/utils/memcheck.h.
2793
2794         * reflection.c (mono_reflection_get_type_internal_dynamic): Use assembly->domain
2795         instead of the current domain, since the two might not match if this is called
2796         from the debugger.
2797
2798         * metadata-internals.h (MonoDynamicAssembly): Add a 'domain' field to specify the
2799         domain which created this assembly.
2800
2801 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2802
2803         * debug-helpers.c (dis_one): Avoid a glib assert on empty strings.
2804
2805 2009-12-17  Mark Probst  <mark.probst@gmail.com>
2806
2807         * sgen-gc.c: Managed implementation of the specialized generic
2808         store write barrier.
2809
2810 2009-12-17  Rodrigo Kumpera  <rkumpera@novell.com>
2811
2812         * icall.c (ves_icall_Type_GetMethodsByName): Don't pin virtual methods if they are newslot.
2813         A private virtual newslot method is used to implement an interface method without exposing
2814         it to users. When querying for public instance methods, such method would hide a public one
2815         on a parent type.
2816
2817         Fixes #564379.
2818
2819 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2820
2821         * reflection.c (resolve_object): Fix the encoding of unmanaged calling
2822         conventions.
2823
2824 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2825
2826         * reflection.c (mono_type_get_object): Guard against NULL generic param owner.
2827
2828 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2829
2830         * class-internals.h (MonoDynamicGenericClass): Kill property and event related fields
2831         as they are no longer used.
2832         
2833          * metadata.c (free_generic_class_dependents): Remove reference to previous fields
2834
2835         * reflection.c (mono_reflection_generic_class_initialize): Ditto.
2836
2837 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2838
2839         * reflection.c (mono_type_get_object): If the type is VAR or MVAR check
2840         if the owner class has not been finished before returning reflection_info.      
2841
2842         Fixes #565127.
2843
2844 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2845
2846         * reflection.c (mono_custom_attrs_from_param): Avoid a crash if a dynamic
2847         param doesn't have custom attributes. Fixes #565117.
2848
2849         * class.c (mono_bounded_array_class_get): Make these classes PUBLIC. Fixes
2850         #565120.
2851
2852 2009-12-15  Rodrigo Kumpera  <rkumpera@novell.com>
2853
2854         * class.c (mono_class_setup_fields): Fail valuetypes that are bigger than 1Mb.
2855
2856 2009-12-15  Rodrigo Kumpera  <rkumpera@novell.com>
2857
2858         * pedump.c: Add partial-md mode that doesn't perform full metadata verification. It does the
2859         same amount done by a core-clr enabled runtime.
2860
2861 2009-12-15  Marek Habersack  <mhabersack@novell.com>
2862
2863         * appdomain.c (mono_make_shadow_copy): make sure access mode of
2864         the target files is reset to writable by owner and readable by
2865         everyone else to prevent problems when updating shadow copies of
2866         files whose source is read-only. Fixes bug #556884
2867
2868 2009-12-15  Mark Probst  <mark.probst@gmail.com>
2869
2870         * class.c (mono_generic_class_get_class): Allocate the generic
2871         class via malloc again, so that it can be freed when any one of
2872         the images of its constituent types is closed.
2873
2874         * metadata.c: When closing an image, don't free generic insts and
2875         generic classes right away, but put them into a list for later
2876         freeing.
2877
2878         * image.c, metadata-internals.h: Store the free list and in the
2879         second pass of closing an image, free it.
2880
2881 2009-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
2882
2883         * reflection.c (mono_generic_class_get_object): Assert if this is ever called.
2884
2885         * reflection.c (mono_reflection_register_with_runtime): Only register dynamic
2886         types in type_hash.
2887
2888         * reflection.c (resolve_object): Call ensure_complete_type on the inflated field.
2889
2890 2009-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
2891
2892         * reflection.c (mono_reflection_type_get_handle): Properly fail in case of a broken
2893         user type.
2894
2895         * reflection.c (mono_reflection_register_with_runtime): Throws in case a bad user type
2896         is used.
2897
2898 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2899
2900         * verify.c (mono_method_verify): The Unused opcodes produce an
2901         InvalidProgramException on .NET
2902
2903 2009-12-14  Sebastien Pouliot  <sebastien@ximian.com>
2904
2905         * loader.c (mono_method_get_header): Move assert after the verifier
2906         has been called on the method header.
2907
2908 2009-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
2909
2910         * object-internals.h: Remove useless field from MonoReflectionGenericClass.
2911
2912         * appdomain.c: Bump corlib version.
2913
2914 2009-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
2915
2916         To properly support user types, MonoGenericClass has to be used for regular, non SRE,
2917         types as well since otherwise generic instances would not return UT as arguments but
2918         their undelying system type.
2919
2920         * object-internals.h: Change field types of MonoGenericClass and *OnTypeBuilderInst
2921         to reflect the fact that they can have now multiple different types.
2922
2923         * reflection.c (mono_image_get_field_on_inst_token): Handle MonoField.
2924
2925         * reflection.c (mono_image_get_ctor_on_inst_token): Handle MonoCMethod.
2926
2927         * reflection.c (mono_image_get_method_on_inst_token): Handle MonoMethod.
2928
2929         * reflection.c (mono_reflection_register_with_runtime): Init super types
2930         if the image is not dynamic.
2931
2932         * reflection.c (mono_reflection_bind_generic_parameters): In case of a MonoGenericClass,
2933         check if the generic type definition is a TypeBuilder.
2934
2935         * reflection.c (mono_reflection_generic_class_initialize): If the generic type definition
2936         doesn't belong to a dynamic image, skip initialization.
2937
2938         * reflection.c (resolve_object): Properly handle *OnTypeBuilderInst types where their
2939         base definition is not a dynamic type.
2940
2941 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2942
2943         * object.c (mono_ldstr, mono_ldstr_metadata_sig): added calls to
2944         mono_profiler_string_allocation
2945
2946         * string-icalls.c (ves_icall_System_String_InternalAllocateStr):
2947         if string profiling is enabled, call
2948         mono_profiler_string_allocation
2949
2950         * profiler.h: added two MonoProfileFlags -
2951         MONO_PROFILE_IOMAP_EVENTS and MONO_PROFILE_STRING_ALLOC as well as
2952         installation functions for the hooks below.
2953
2954         * profiler-private.h, profiler.c: added two hooks:
2955         mono_profiler_string_allocation called whenever a string is
2956         allocated by InternalAllocateStr and mono_profiler_iomap called
2957         whenever IOMAP code performs an adjustement on a file path.
2958
2959 Fri Dec 11 18:24:04 CET 2009 Paolo Molaro <lupus@ximian.com>
2960
2961         * boehm-gc.c: fixed race condition while getting the target of a
2962         disappearing link (bug #522233).
2963
2964 2009-12-10  Rodrigo Kumpera  <rkumpera@novell.com>
2965
2966         * class.c (mono_type_get_full): Produce warning instead of simply swallowing
2967         the error.
2968
2969 2009-12-10  Rodrigo Kumpera  <rkumpera@novell.com>
2970
2971         * reflection.c: Add mono_reflection_register_with_runtime icall to
2972         allow a MonoGenericClass to register itself as the managed mirror of
2973         a given generic instance.
2974         This is a temporary workaround until all MGC instantiation happens in
2975         managed code.
2976
2977         * object-internals.h: Ditto.
2978
2979         * icall-def.h: Ditto.
2980
2981 2009-12-10  Mark Probst  <mark.probst@gmail.com>
2982
2983         * sgen-gc.c (find_in_remsets): Also search the generic store
2984         remsets.
2985
2986 2009-12-10  Mark Probst  <mark.probst@gmail.com>
2987
2988         * sgen-gc.c: Don't access class names in debugging code when
2989         unloading a domain, because they might not be valid anymore.
2990
2991 2009-12-10  Mark Probst  <mark.probst@gmail.com>
2992
2993         * domain.c, domain-internals.h: New function mono_domain_unset().
2994
2995         * appdomain.c (unload_thread_main): Detach the thread again at the
2996         end.
2997
2998         * threads.c: When a thread exists or is detached, unset its domain
2999         so that it's NULL when, for example, a pthread destructor runs.
3000
3001         * sgen-gc.c: Assert that there is no domain set after a thread is
3002         done.
3003
3004 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3005
3006         * class.c (mono_generic_class_get_class),
3007         metadata.c (free_generic_class): Allocate generic MonoClass's from
3008         the image mempool, not via malloc.  The problem with malloc is
3009         that when unloading a domain those classes are freed before
3010         clearing the heap and SGen needs the classes.  Rewriting the
3011         unloading code to do the free later would be more work and there's
3012         no point in using malloc anyway.
3013
3014 2009-12-09  Sebastien Pouliot  <sebastien@ximian.com>
3015
3016         * loader.c (mono_method_signature): Always call mono_loader_unlock 
3017         before returning.
3018
3019 2009-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3020
3021         * metadata-verify.c: Add mono_verifier_verify_string_signature to check
3022         user string blobs.
3023
3024         * verify-internals.h: Add new function to the internal API.
3025
3026         * verify.c (do_ldstr): Call into mono_verifier_verify_string_signature to
3027         check if it's a valid string.
3028
3029         * object.c (mono_ldstr): Ditto.
3030
3031         Fixes #561943.
3032
3033 2009-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3034
3035         * icall.c (ves_icall_GetCurrentMethod): Drop all generic arguments
3036         from a method before returning it. This is the expected behavior.
3037
3038 2009-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3039
3040         * reflection.c (inflate_method): Handle the case of a regular system type.
3041
3042 2009-12-08  Mark Probst  <mark.probst@gmail.com>
3043
3044         * sgen-gc.c, sgen-pinning-stats.c, sgen-gray.c: More statistics
3045         gathering code.
3046
3047         * mempool.c, mempool-internals.h: New function
3048         mono_mempool_get_bytes_allocated().
3049
3050         * Makefile.am: sgen-pinning-stats.c added.
3051
3052 2009-12-08  Mark Probst  <mark.probst@gmail.com>
3053
3054         * sgen-gc.c (create_allocator): Only use the fast path if the
3055         object size is within the small object size limit.
3056
3057 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3058
3059         * sgen-gc.c: Make sure section->data is aligned to 8 bytes by
3060         possibly adding padding to sizeof (GCMemSection).
3061
3062 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3063
3064         * sgen-gc.c (mono_gc_wbarrier_nostore): Skip the remset if the
3065         reference is not in the nursery.
3066
3067 2009-12-07  Rodrigo Kumpera  <rkumpera@novell.com>
3068
3069         * class.c (mono_class_from_typeref): Bounds check idx against the 
3070         assemblyref table.
3071
3072 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3073
3074         * sgen-gc.c, sgen-pinning.c: When pinning, make only one pass
3075         through the potential roots, then sort the results and find the
3076         pinned objects from there.
3077
3078         * Makefile.am: sgen-pinning.c added.
3079
3080 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3081
3082         * sgen-gc.c: Record generic stores in specialized remset buffers.
3083
3084 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3085
3086         * sgen-gc.c: Make pinned chunks the same size as major heap
3087         sections, and align them as well, so that we can check whether an
3088         object is in a pinned chunk or a major section in constant time.
3089
3090 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3091
3092         * sgen-gc.c (build_nursery_fragments): Don't leak fragments.
3093
3094 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3095
3096         * sgen-gc.c: Make all major heap sections the same size (currently
3097         128k) and allocate them on aligned addresses.  Small heap sections
3098         give us better granularity with pinned objects - we can free up
3099         much more memory.
3100
3101 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3102
3103         * string-icalls.c (ves_icall_System_String_GetLOSLimit): Debug
3104         output removed.
3105
3106 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3107
3108         Applied patch from Laurent Etiemble (laurent.etiemble@gmail.com).
3109
3110         * mono/metadata/assembly.c: When opening an assembly image, pass the real
3111         names in addition to the runtime generated one.
3112
3113         * mono/metadata/image.h: Add a function to take the real name of the assembly
3114         image.
3115
3116         * mono/metadata/image.c: If a real name has been passed to load an assembly,
3117         use it instead of the runtime generated one.
3118
3119         Code is contributed under MIT/X11 license.
3120
3121 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3122
3123         * marshal.c (emit_marshal_vtype): Do the klass == date_time_class checks
3124         before the other checks to prevent problems if the DateTime class is blittable.
3125         Hopefully fixes #559600.
3126
3127 2009-12-05  Mark Probst  <mark.probst@gmail.com>
3128
3129         * string-icalls.c, string-icalls.h, icall-def.h: New icall that
3130         returns the largest string length that will not be put into the
3131         LOS.
3132
3133         * sgen-gc.c, gc-internal.h: New function that returns the largest
3134         object size that will not be put into the LOS.
3135
3136         * appdomain.c: Bump corlib version.
3137
3138 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3139
3140         * class-internals.h: Add MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
3141
3142         * generic-sharing.c: Handle MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
3143
3144 2009-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3145
3146         * reflection.c (inflate_method): Fix signature.
3147
3148         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Reflect change
3149         in managed code.
3150
3151 2009-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3152
3153         * reflection.c (inflate_method): Make this method work with TypeBuilder as well.
3154
3155 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3156
3157         * sgen-gc.c: Abstract to-space handling.
3158
3159 2009-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
3160
3161         * loader.c (find_method_in_class): Ignore methods with broken signatures.
3162
3163         Fixes #559906.
3164
3165 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3166
3167         * sgen-gc.c: Only add references from outside the nursery to
3168         within the nursery to the global remset list.
3169
3170 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3171
3172         * appdomain.c (create_exceptions): Set the domain temporarily if
3173         necessary to avoid cross-domain references.
3174
3175 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3176
3177         * verify.c (get_stack_type): Return that the type is invalid instead of
3178         asserting.
3179
3180         * verify.c (mono_method_verify): Verify that all locals and arguments
3181         have valid stack types.
3182
3183         Fixes #559913.
3184
3185 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3186
3187         * verify.c (mono_method_verify): Bounds check the filter offset. Make all
3188         bounds checking overflow aware.
3189
3190         Fixes #559910.
3191
3192 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3193
3194         * verify.c (do_invoke_method): Check for invalid method signatures.
3195
3196         Fixes #553450.
3197
3198 2009-12-02  Jb Evain  <jbevain@novell.com>
3199
3200         * appdomain.c (MONO_CORLIB_VERSION): bump.
3201         * icall-def.h (get_base_definition): renamed to get_base_method
3202         and add a boolean argument indicating we want the original
3203         method definition, or the immediate base method.
3204         * icall.c: apply the get_base_definition to get_base_method change.
3205
3206 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3207
3208         * class.c (mono_class_setup_fields): Fail an enum without an instance field.
3209
3210         Fixes #558042.
3211
3212 Wed Dec 2 16:35:49 CET 2009 Paolo Molaro <lupus@ximian.com>
3213
3214         * class.c: remove asserts for invalid type token in
3215         mono_class_name_from_token(), mono_assembly_name_from_token() and
3216         mono_class_create_from_typedef () (fixes bug #553318).
3217
3218 Wed Dec 2 15:48:19 CET 2009 Paolo Molaro <lupus@ximian.com>
3219
3220         * metadata.c, class.c, loader.c: remove assert after bsearch() for
3221         incorrect assemblies (bug #553322).
3222
3223 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3224
3225         * metadata.c (mono_metadata_inflate_generic_inst): Add MonoError parameter.
3226
3227         * metadata-internals.h: Change signature of mono_metadata_inflate_generic_inst. 
3228
3229         * class.c (inflate_generic_type): Use new version of mono_metadata_inflate_generic_inst.
3230
3231         * class.c (inflate_generic_context): Ditto.
3232
3233         * loader.c (method_from_methodspec): Ditto.
3234
3235         Fixes #558230.
3236
3237 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3238
3239         * class.c (mono_type_retrieve_from_typespec): Use MonoError machinery to report errors.
3240
3241         * class.c (mono_class_create_from_typespec): Ditto.
3242
3243         * class.c (mono_class_get_full): Fix for change on the above 2 functions.
3244
3245         * class.c (mono_type_get_full): Fix for change on the above 2 functions.
3246
3247         Fixes #558184.
3248
3249 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3250
3251         * verify.c (mono_class_has_default_constructor): Check fror broken signatures.
3252
3253         * verify.c (verify_delegate_compatibility): Ditto.
3254
3255         * verify.c (do_newobj): Ditto.
3256
3257         Fixes #558046.
3258
3259 2009-12-02  Mark Probst  <mark.probst@gmail.com>
3260
3261         * sgen-gc.c: Use a gray queue instead of requiring that gray
3262         objects are in a contiguous region.
3263
3264         * sgen-gray.c: The gray queue implementation.
3265
3266         * Makefile.am: sgen-gray.c added.
3267
3268 2009-12-02  Mark Probst  <mark.probst@gmail.com>
3269
3270         * appdomain.c: When unloading a domain, zero its static data and
3271         perform a minor collection when using SGen.  That will get rid of
3272         all the remsets pointing into that domain's static data.
3273
3274         * sgen-gc.c: Allow remsets into static data.  By doing this we
3275         need less checks so we're more efficient.
3276
3277 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3278
3279         * verify.c (mono_method_verify): Check for catch clauses with broken
3280         types.
3281
3282         Fixes #558465.
3283
3284 2009-12-01  Jb Evain  <jbevain@novell.com>
3285
3286         * class.c (make_generic_param_class): set the namespace of
3287         the generic parameter class from its owner, if available.
3288
3289 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3290
3291         * verify.c (code_bounds_check): Do proper overflow checking.
3292
3293         * verify.c (mono_method_verify): The number of switch entries is
3294         an unsigned int. Properly bounds check it.
3295
3296         Fixes #558594.
3297
3298 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3299
3300         * metadata.c: Kill mono_metadata_get_param_attrs_checked. Add
3301         mono_metadata_method_has_param_attrs which only checks if a given param
3302         list has a non zero flags entry.
3303
3304         * metadata.c (mono_metadata_get_param_attrs): Add param_count parameter
3305         to inform how many params should we expect to decode.
3306
3307         * loader.c (mono_method_signature): Use mono_metadata_method_has_param_attrs
3308         as it's faster than mono_metadata_get_param_attrs.
3309
3310         * metadata-internals.h: Fix mono_metadata_get_param_attrs signature and
3311         add mono_metadata_method_has_param_attrs.
3312
3313 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3314
3315         * class.c (mono_class_setup_vtable_general): Check for mono_method_get_vtable_slot
3316         failures.
3317
3318         * class.c (mono_method_get_vtable_slot): Don't assert if the computed method slot
3319         is -1 but its class is broken.
3320
3321         Fixes #558522.
3322
3323 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3324
3325         * metadata.c: Introduce mono_metadata_get_param_attrs_checked which checks
3326         for parameter overflow.
3327
3328         * metadata.c (mono_metadata_parse_method_signature_full): Use checked version
3329         of mono_metadata_get_param_attrs.
3330
3331         * metadata-internals.h: Add mono_metadata_get_param_attrs_checked to the internal
3332         API.
3333
3334         * loader.c (mono_method_signature): Use checked version of mono_metadata_get_param_attrs.
3335
3336 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3337
3338         * class.c (mono_class_setup_fields): Check for fields with broken types.
3339
3340         Fixes #558741.
3341
3342 2009-11-28  Rodrigo Kumpera  <rkumpera@novell.com>
3343
3344         * reflection.c (ensure_generic_class_runtime_vtable): Split this function in 2
3345         so we can avoid calling ensure_runtime_vtable multiple times for the GTD during
3346         its TypeBuilder::CreateType ().
3347
3348         * reflection.c (ensure_generic_class_runtime_vtable): Avoid initializing interfaces
3349         if not needed.
3350
3351         * reflection.c: Every time we change the interface array, set interfaces_packed to NULL
3352         to make setup_interface_offsets happy.
3353
3354         * reflection.c (remove_instantiations_of_and_ensure_contents): Fix instances again as corlib
3355         compilation now works.
3356
3357 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
3358
3359         * appdomain.c (create_exceptions): New helper function extracted from
3360         mono_runtime_init () to precreate objects used during exception handling.
3361         (mono_runtime_init): Call it.
3362         (mono_domain_create_appdomain_internal): Ditto. Fixes #555264.
3363
3364 2009-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3365
3366         * reflection.c (remove_instantiations_of_and_ensure_contents): Temp hack to fix corlib
3367         compilation until the proper one is found.
3368
3369 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
3370
3371         * class.c (mono_class_setup_vtable_general): Cache the result of
3372         get_virtual_methods () since it can be slow because of the metadata
3373         optimization.
3374
3375         * metadata-internals.h (_MonoImage): Change 'method_cache' to a GHashTable
3376         from a MonoValueHashTable for now, since the later is based on an earlier
3377         version of hpj's internal probing code and seems to have serious collision
3378         issues.
3379
3380         * loader.c (mono_get_method_full): Update after the change above.
3381
3382 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3383
3384         * class-internals.h (MonoCachedClassInfo): Add 'is_generic_container' field.
3385
3386 2009-11-26  Rodrigo Kumpera  <rkumpera@novell.com>
3387
3388         * reflection.c (get_field_on_inst_generic_type): Try to fallback using the field from
3389         the GTD instead of the DGC instead of crashing.
3390
3391         * reflection.c (ensure_generic_class_runtime_vtable): Only reinflate stuff that is
3392         required. Inflate fields if needed.
3393
3394         * reflection.c (remove_instantiations_of): Ensure generic instances are properly
3395         finished. Renamed.
3396
3397 2009-11-26  Rodrigo Kumpera  <rkumpera@novell.com>
3398
3399         * class.c (check_interface_method_override): Check for NULL signatures and fail
3400         the type.
3401
3402         * debug-helpers.c (mono_signature_get_desc): Return a fixed string for NULL signatures.
3403
3404         Fixes #553428.
3405
3406 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3407
3408         * class.c (mono_class_get_virtual_methods): Call decode_row_col to obtain
3409         the MONO_METHOD_FLAGS column instead of decoding the whole row.
3410
3411 2009-11-25  Rodrigo Kumpera  <rkumpera@novell.com>
3412
3413         * loader.c (field_from_memberref): Resolve the class first then the field
3414         signature. Remove a lot of duplicated code and make sure we don't pass valid
3415         values to mono_loader_set_error_field_load.
3416
3417         Fixes #553306.
3418
3419 2009-11-25  Rodrigo Kumpera  <rkumpera@novell.com>
3420
3421         * class.c (inflate_generic_type): Change code to use new signature of
3422         mono_error_set_bad_image.
3423
3424         Fixes #558124.
3425
3426 2009-11-25  Sebastien Pouliot  <sebastien@ximian.com> 
3427
3428         * verify.c (mono_method_verify): Don't free ctx.params items if 
3429         we aborted while inflating the ctx.locals. Complete previous fix
3430
3431 2009-11-25  Sebastien Pouliot  <sebastien@ximian.com>
3432
3433         * verify.c (mono_method_verify): Use the uninflated type name, 
3434         when the inflated is null, to report errors. Also take care when
3435         freeing, not to free everything since, in case of an error, some
3436         stuff would be copies (i.e. not allocated by the function itself)
3437         Fix bug #558145
3438
3439 2009-11-24  Rodrigo Kumpera  <rkumpera@novell.com>
3440
3441         * verify.c (stack_push, stack_pop, stack_pop_safe): Assert if we underflow
3442         or overflow. The caller must have done this check explicitly. This guard us
3443         from accessing invalid memory.
3444
3445         * verify.c (do_push_static_field): Check for stack overflow.
3446
3447         Fixes #553333.
3448
3449 2009-11-24  Rodrigo Kumpera  <rkumpera@novell.com>
3450
3451         * loader.c (find_method_in_class): Don't crash if the signature cannot
3452         be resolved.
3453
3454         * metadata.c (mono_metadata_parse_generic_param): Return NULL instead
3455         of asserting for the case of invalid params.
3456
3457         Fixes #553304.
3458
3459 2009-11-24  Sebastien Pouliot  <sebastien@ximian.com>
3460
3461         * image.c (mono_image_load_module): Fix crash when a bad assembly
3462         has no module at all (fix bug #553412) and also replace the 
3463         g_assert with a return NULL (documented return value for failure)
3464
3465 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
3466
3467         * debug-helpers.c (mono_type_get_desc): Handle typedbyref.
3468
3469 2009-11-23  Miguel de Icaza  <miguel@novell.com>
3470
3471         * file-io.c: Change FindFirst/FindNext/FindClose API to return the
3472         file attribute to managed code and avoid doing the mask/attribute
3473         checks here. 
3474
3475 2009-11-22  Miguel de Icaza  <miguel@novell.com>
3476
3477         * file-io.c: Surface a smart FindFirst/FindNext/FindClose API to
3478         the managed world.
3479
3480         * icall-def.h: New entry points.
3481         
3482 2009-11-19  Mark Probst  <mark.probst@gmail.com>
3483
3484         * process.c: Don't put references to managed objects into a
3485         g_ptr_array.
3486
3487 2009-11-18  Sebastien Pouliot  <sebastien@ximian.com>
3488
3489         * class.c (can_access_internals): Allow CoreCLR to participate in
3490         allowing (or not) [InternalsVisibleTo] between assemblies.
3491         * security-core-clr.c|h: Make sure that only trusted code (a 
3492         superset of platform code) can access the internals of platform
3493         code.
3494
3495 Mon Nov 16 16:28:11 CET 2009 Paolo Molaro <lupus@ximian.com>
3496
3497         * reflection.c: use the correct base class to get the virtual method
3498         "get_UnderlyingSystemType" and speed up the icall. Fixes bug #555013.
3499
3500 2009-11-16  Sebastien Pouliot  <sebastien@ximian.com>
3501
3502         * security-core-clr.c (get_caller_no_reflection_related): 
3503         [Mono]Type.InvokeMember is outside System.Reflection[.Emit] but
3504         it's still reflection and must be filtered correctly.
3505
3506 2009-11-16  Mark Probst  <mark.probst@gmail.com>
3507
3508         * object.c (compute_class_bitmap): Fix for large bitmaps.
3509
3510 2009-11-15  Zoltan Varga  <vargaz@gmail.com>
3511
3512         (mono_gc_get_suspend_signal): Fix the build with a system libgc.
3513
3514         * boehm-gc.c (mono_gc_base_init): Applied patch from DKoushik K. Dutta (
3515         koush@koushikdutta.com). Disable GC_no_dls on android.
3516
3517 2009-11-12  Mark Probst  <mark.probst@gmail.com>
3518
3519         * sgen-gc.c (find_tlab_next_from_address): Handle the case where
3520         tlab_next points outside the TLAB because the allocator was
3521         interrupted.
3522
3523 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3524
3525         * reflection.c (mono_image_module_basic_init): Handle exceptions correctly.
3526
3527 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3528
3529         * object-internals.h: Change signature for mono_string_to_utf8_image.
3530
3531         * object.c (mono_string_to_utf8_image): Change signature to take a MonoError
3532         argument.
3533
3534         * reflection.c: Take care of mono_string_to_utf8_image change and avoid raising
3535         exceptions due to mono_string_to_utf8.
3536
3537 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3538
3539         * object-internals.h: Change signature for mono_string_to_utf8_mp.
3540
3541         * object.c (mono_remote_class): Make sure all resources are released before
3542         raising an exception.
3543
3544         * object.c (mono_print_unhandled_exception): Avoid raising an exception.
3545
3546 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3547
3548         * mono-perfcounters.c (network_get_impl): Change variable initialization
3549         ordering to fix potential memory leak in case of exceptions.
3550
3551         * mono-perfcounters.c (mono_perfcounter_create): Properly handle badly
3552         encoded strings.
3553         
3554 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3555
3556         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): Change
3557         variable initialization ordering to fix potential memory leak in case
3558         of exceptions.
3559
3560 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3561
3562         * icall.c (mono_ArgIterator_Setup): Remove the MONO_ARCH_REGPARMS stuff, its not
3563         needed.
3564
3565 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3566
3567         * appdomain.c: Fix shadow path code to better deal with exceptions.
3568
3569 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3570
3571         * appdomain.c: Use checked version of mono_string_to_utf8 to avoid raising an
3572         exception in the middle of the runtime code.
3573
3574 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3575
3576         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): Don't
3577         leak memory with broken envvar value.
3578
3579 2009-11-06  Mark Probst  <mark.probst@gmail.com>
3580
3581         * reflection.c (mono_reflection_setup_internal_class): Because
3582         nested classes are not added to the name cache, we must put them
3583         in the reflection_info_unregister_classes list.
3584
3585 2009-11-05  Sebastien Pouliot  <sebastien@ximian.com>
3586
3587         * class.c: When CoreCLR is enabled don't call mono_init_com_types
3588         if MONO_CLASS_IS_IMPORT return true unless the type reside in 
3589         platform (trusted) code. Instead we return a TypeLoadException to
3590         be thrown later. This is the exception thrown by Silverlight 2 if
3591         a type, inside application (user) code is marked with [ComImport]
3592
3593 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3594
3595         * icall.c (ves_icall_System_Diagnostics_Debugger_IsAttached_internal): Call
3596         mono_is_debugger_attached () too.
3597
3598         * mono-debug.c (mono_is_debugger_attached): New helper function.
3599         (mono_set_is_debugger_attached): Ditto.
3600
3601 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3602
3603         * object-internals.h: Add mono_string_to_utf8_checked.
3604
3605         * object.c: Implement mono_string_to_utf8_checked.
3606
3607 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3608
3609         * class.c: Add missing check for load errors after every
3610         call to mono_class_setup_fields
3611
3612         Fixes #552282.
3613
3614 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3615
3616         metadata-verify.c (verify_tables_schema): Fix the error message.
3617
3618 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3619
3620         * metadata.c: Change event table schema to use TDOR for event type
3621         as this is what it's meant to be.
3622
3623         * metadata.c (mono_metadata_compute_size): Change MONO_TABLE_ASSEMBLYPROCESSOR
3624         to MONO_TABLE_ASSEMBLYREFPROCESSOR, which is table that has a MONO_MT_TABLE_IDX
3625         entry.
3626
3627         * metadata.c (mono_metadata_compute_size): Trim MT_TABLE_IDX of code that no
3628         longer makes sense: remove MONO_TABLE_EVENT and remove checks for non-existent
3629         rows in MONO_TABLE_GENERICPARAM.
3630
3631         Fixes #552289.
3632
3633 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3634
3635         * class.c (mono_image_add_to_name_cache): Assert on duplicate
3636         insertion.
3637
3638         * reflection.c (mono_reflection_setup_internal_class): Avoid
3639         registering a gc root the same MonoClass multiple times.
3640         Don't register nested types on the global scope as they should
3641         not be available there.
3642
3643 2009-11-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3644
3645         * culture-info-tables.h: regenerated.
3646
3647 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3648
3649         * debug-helpers.c: avoid g_strdup() in mono_type_full_name().
3650
3651 2009-11-04  Sebastien Pouliot  <sebastien@ximian.com>
3652
3653         * string-icalls.c|h: Remove string internal calls that are not 
3654         used anymore by the class libraries.
3655         * icall.c: Remove System_Reflection_FieldInfo_internal_from_handle
3656         which is not used in the class librairies.
3657         * icall-def.h: Update tables.
3658
3659 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3660
3661         * class.h: Move mono_class_inflate_generic_type_checked...
3662
3663         * class-internals.h: to here and make it internal. We don't want to
3664         further expose MonoGenericContext. 
3665
3666 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3667
3668         * verify.c (mono_method_verify): Improve error message.
3669
3670 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3671
3672         * reflection.c (fieldref_encode_signature): If field_image is NULL then
3673         the token is already properly encoded. Fixs 4.0 build.
3674
3675 2009-11-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3676
3677         * locales.c (construct_number_format): Check if the number index is
3678         valid before trying to use it, if not, just return.
3679         
3680 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3681
3682         * marshal.c (mono_marshal_get_runtime_invoke): Don't reset abort exceptions,
3683         since that loses the abort state. Fixes #539394.
3684
3685 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3686
3687         * marshal.c (mono_marshal_get_native_wrapper): For icall wrappers, add an
3688         explicit this argument to the call signature.
3689         (mono_marshal_get_icall_wrapper): Ditto.
3690
3691 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3692
3693         * reflection.c (fieldref_encode_signature): Add new field_image parameter
3694         to indicate which assembly to use when resolving a custom-mod.
3695
3696         Fixes handling of volatile fields used across assemblies as reported in #551513.
3697
3698 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3699
3700         * loader.c: Improve error messages.
3701
3702 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3703
3704         * class.c (mono_class_setup_methods): Only give a slot for virtual methods
3705         of interfaces. Fixes IKVM.
3706
3707         * class.c (mono_class_setup_vtable_general): Improve debug spew.
3708
3709 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3710
3711         * verify.c (verifier_inflate_type): Return the inflated type on success.
3712
3713 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3714
3715         * debug-mono-symfile.c (check_line): Fix the handling of IL offset 0.
3716
3717         * threads.c (mono_thread_attach): Call the profiler thread start callback.
3718
3719         * object-internals.h (_MonoThreadInternal): Add a 'flags' field.
3720
3721         * threads.c (build_wait_tids): Ignore threads which have the DONT_MANAGE
3722         flag set.
3723
3724         * profiler.c: Add new profiler callbacks for runtime invoke.
3725
3726         * object.c (mono_runtime_invoke): Call the runtime invoke callbacks.
3727
3728 2009-11-01  Mark Probst  <mark.probst@gmail.com>
3729
3730         * sgen-gc.c: Keep track of the reason for a major collection and
3731         write it to the heap-dump file.
3732
3733 2009-10-31  Miguel de Icaza  <miguel@novell.com>
3734
3735         * threads.c: refactor the code that initializes the
3736         thread_start_args into a reusable function and use this in the two
3737         methods that start up threads.
3738
3739 2009-10-31  Zoltan Varga  <vargaz@gmail.com>
3740
3741         * appdomain.c (mono_domain_try_unload): Applied patch from Romain Tartière.
3742         Fix returning when WaitForSingleObjectEx returns WAIT_IO_COMPLETION.
3743
3744 2009-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3745
3746         * mono-perfcounters.c: add the "_Total" instance for CPU counters.
3747         Until now, we only had the per-cpu(core) counters.
3748
3749 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3750
3751         * gc-internal.h, boehm-gc, sgen-gc.c, null-gc: Add
3752         mono_gc_get_suspend_signal(), which returns the suspend signal
3753         number used by the GC.
3754
3755 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3756
3757         * threads.c (start_wrapper): Avoid an assert if thread_start_args () is NULL.
3758
3759         * threads.c (start_wrapper): Call mono_profiler_thread_start () later after
3760         signalling start_notify.
3761
3762 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
3763
3764         * appdomain.c: do not test the st_mode field for shadow-copies.
3765         Fixes bug #545276.
3766
3767 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
3768
3769         * threadpool.[ch]: added hooks for thread start/finish and item
3770         processing begin/end. For monotouch use only.
3771
3772 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3773
3774         * threads.c (mono_thread_get_name): New helper function.
3775
3776         * reflection.c (resolve_object): Set handle_class for strings too.
3777         (mono_reflection_create_custom_attr_data_args): New helper function to decode
3778         a cattr blob into a set of arrays and structures without creating the custom
3779         attributes themselves.
3780         (create_custom_attr_data): Simplify using create_custom_attr_data_args.
3781
3782         * mono-debug.c (mono_debug_il_offset_from_address): New helper function.
3783
3784         * debug-mono-symfile.c (mono_debug_symfile_get_line_numbers): New helper
3785         function.
3786
3787 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3788
3789         * verify.c: Replace calls to mono_class_inflate_generic_type with
3790         mono_class_inflate_generic_type_checked. Fixes #480005.
3791
3792 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3793
3794         * class.c (mono_class_inflate_generic_type_with_mempool): Clear the error
3795         object since not all paths lead to callees initing it.
3796
3797 2009-10-23  Alp Toker  <alp@nuanti.com>
3798
3799         Fix embedding API breakage from r144688. mono-compiler.h is an internal
3800         header and should not be shipped:
3801
3802         * class.h: Back out MONO_DEPRECATED change. Currently depends on config.h
3803         which is specific to the mono build. Not going to work.
3804
3805 2009-10-23  Sebastien Pouliot  <sebastien@ximian.com>
3806
3807         * security-manager.c: Report if core-clr is active from
3808         ves_icall_System_Security_SecurityManager_get_SecurityEnabled
3809         to allow Moonlight BCL to behave appropriately (both in browser
3810         and outside, e.g. smcs)
3811
3812 2009-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
3813
3814         * mono-config.c: ignore UTF-8 BOM and report parser errors.
3815         Fixes bug #549108.
3816
3817 2009-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3818
3819         * class.c: fix typo.
3820
3821 2009-10-22  Rodrigo Kumpera  <rkumpera@novell.com>
3822
3823         * class-internals.h: Change signature of mono_class_inflate_generic_type_with_mempool to take
3824         a MonoError parameter.
3825
3826         * class.h: Mark mono_class_inflate_generic_type deprecated, add new mono_class_inflate_generic_type_checked
3827         version that can does proper error handling.
3828
3829         * class.c (inflate_generic_type): Add a MonoError parameter. Don't assert on error, use new mono error machinery.
3830
3831         * class.c (mono_class_inflate_generic_type_with_mempool): Add new MonoError parameter.
3832
3833         * class.c, generics-sharing.c: Changes to handle mono_class_inflate_generic_type_with_mempool new signature.
3834
3835 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
3836
3837         * debug-helpers.c (dis_one): Fix the disassembly of empty strings when
3838         NO_UNALIGNED_ACCESS is defined.
3839
3840 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3841
3842         * marshal.c (mono_string_builder_to_utf16): Applied patch from
3843         Hib Eris  <hib@hiberis.nl>. Return empty string for empty string builders.
3844         Fixes #549173.
3845
3846 2009-10-22  Mark Probst  <mark.probst@gmail.com>
3847
3848         * sgen-gc.c: Shorten sections whenever possible.
3849
3850 2009-10-22  Mark Probst  <mark.probst@gmail.com>
3851
3852         * sgen-gc.c: Use our portable semaphore #defines.
3853
3854 2009-10-22  Mark Probst  <mark.probst@gmail.com>
3855
3856         * sgen-gc.c: A debug option for dumping the heap layout to a file
3857         after each collection.
3858
3859 2009-10-21  Mark Probst  <mark.probst@gmail.com>
3860
3861         * sgen-gc.c: Make managed write barriers atomic via
3862         thread-restarts.
3863
3864 2009-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3865
3866         * verify.c (verify_delegate_compatibility): Properly verify delegate creation of static
3867         methods. Fixes #543021.
3868
3869 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
3870
3871         * socket-io.[ch]: fix VS build.
3872
3873 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
3874
3875         * icall-def.h:
3876         * socket-io.[ch]: implemented SendFile.
3877
3878 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
3879
3880         * class.c (mono_class_create_from_typedef): Initialize class->element_class
3881         before the interfaces to avoid crashes later if class initialization fails.
3882         Fixes #548417.
3883
3884         * marshal.c (emit_marshal_vtype): Implement byref marshalling of DateTime.
3885         Fixes #548276.
3886
3887 2009-10-20  Marek Safar  <marek.safar@gmail.com>
3888
3889         * domain.c: Bump 4.0 version.
3890
3891 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3892
3893         * assembly.c (mono_assembly_load_reference): Fix leak when 'status'
3894         code is known. (parse_public_key) Remove duplicate (unneeded) NULL
3895         check since 'pubkey' can't be NULL at this stage
3896         * icall.c (ves_icall_System_Array_FastCopy): Add comment about
3897         the check. (ves_icall_Type_GetInterfaceMapData) Remove duplicate
3898         initialization of 'iter'
3899
3900 2009-10-16  Bill Holmes  <billholmes54@gmail.com>
3901
3902         * cominterop.c : Search the interface parts of vtable to find 
3903           method matches.  Fixes 547030.
3904
3905         Code is contributed under MIT/X11 license.
3906
3907 2009-10-15 Gonzalo Paniagua Javier <gonzalo@novell.com>
3908
3909         * marshal.c: BeginInvoke cannot be called on multicast delegates with
3910         multiple targets. Fixes bug #574426.
3911
3912 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3913
3914         * profiler.h: Put here the definition of
3915         MONO_PROFILER_MAX_STAT_CALL_CHAIN_DEPTH
3916         (and fix the build...).
3917
3918 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3919
3920         * profiler.c, profiler.h, profiler-private.h:
3921         Added support for different ways of getting call chains in stat mode.
3922
3923 2009-10-12  Mark Probst  <mark.probst@gmail.com>
3924
3925         * object.c, object-internals.h: New function for computing the
3926         size of an array, factored out of mono_array_new_full().  Use
3927         SGen's functions for allocating arrays and vectors.
3928
3929         * sgen-gc.c, gc-internal.h: Special functions for allocating
3930         arrays and vectors without race conditions.  A managed array
3931         allocator method.
3932
3933         * boehm-gc.c, null-gc.c: Don't provide a managed array allocator.
3934
3935 2009-10-12  Mark Probst  <mark.probst@gmail.com>
3936
3937         * object.c, object.h, icall.c: Write barriers do the copying now,
3938         as well, so no need for an additional memcpy.
3939
3940         * sgen-gc.c: Lock when storing remsets.  Do the memory
3941         copying/moving in the write barriers.
3942
3943         * null-gc.c, boehm-gc.c: Write barriers must copy here, too.
3944
3945         * reflection.c: Added an assert.
3946
3947 2009-10-12  Mark Probst  <mark.probst@gmail.com>
3948
3949         * threads.c, process.c: A few missing write barriers.
3950
3951 2009-10-12  Joel W. Reed <joelwreed@gmail.com>
3952
3953         * mono-perfcounters.c, mono-perfcounters-def.h: Add
3954         network performance counters for bytes sent per second, bytes
3955         received per second, and bytes total per second.
3956
3957         Code is contributed under MIT/X11 license.
3958
3959 2009-10-09  Mark Probst  <mark.probst@gmail.com>
3960
3961         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
3962         Fix warning.
3963
3964 2009-10-09  Mark Probst  <mark.probst@gmail.com>
3965
3966         * threads.c, object-internals.h, object.c: Move code for
3967         transferring an object to a different domain (via
3968         serialization/remoting) to object.c.
3969
3970         * object.c (call_unhandled_exception_delegate): If the exception
3971         is in a different domain than the delegate, transfer the exception
3972         to that domain.
3973
3974 2009-10-07  Zoltan Varga  <vargaz@gmail.com>
3975
3976         * marshal.c (emit_marshal_vtype): Emit marshalling of DateTime to OLE DATE.
3977         Fixes #322934.
3978
3979 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3980
3981         * domain.c (DEFAULT_RUNTIME_VERSION): Change this to v2.0.
3982
3983 2009-10-06  Mark Probst  <mark.probst@gmail.com>
3984
3985         * object.c (mono_method_return_message_restore): Handle the case
3986         where the argument is an instance of a generic type.  Fixes
3987         #544446.
3988
3989 2009-10-06  Mark Probst  <mark.probst@gmail.com>
3990
3991         * object.c (set_value): Write barrier fix - we must pass the
3992         count, not the size.
3993
3994 2009-10-05  Zoltan Varga  <vargaz@gmail.com>
3995
3996         * domain.c (mono_init_internal): Print a useful error message when encountering
3997         an old mscorlib, instead of crashing. Fixes #544307.
3998
3999 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
4000
4001         * appdomain.c (copy_app_domain_setup): Fix a warning.
4002
4003         * debug-helpers.c (dis_one): Ditto.
4004
4005 2009-10-04  Mark Probst  <mark.probst@gmail.com>
4006
4007         * domain-internals.h, appdomain.c: The AppDomainSetup is copied
4008         into the new domain, instead of referencing the original one.
4009
4010         * marshal.c, marshal.h: Make mono_marshal_xdomain_copy_value()
4011         non-static.
4012
4013         * appdomain.c: Corlib version bump.
4014
4015 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
4016
4017         * threadpool.c: one more...
4018
4019 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
4020
4021         * threadpool.c: forgot a LeaveCriticalSection when telling the idle
4022         threads to die because we're shutting down. delgate5.exe works again.
4023
4024 2009-10-01  Bill Holmes  <billholmes54@gmail.com>
4025
4026         * cominterop.c (mono_marshal_free_ccw_entry): Updating the
4027           ccw_interface_hash table when a ccw is finalized.
4028
4029         Code is contributed under MIT/X11 license.
4030
4031 2009-09-30  Mark Probst  <mark.probst@gmail.com>
4032
4033         * assembly.c, domain.c, image.c, metadata-internals.h: Split
4034         domain and image unloading into two steps.  We must do this
4035         because clearing the domain in SGen requires the class metadata to
4036         be intact, but we need to free the mono_g_hash_tables in case a
4037         collection occurs during domain unloading and the roots would trip
4038         up the GC.
4039
4040 2009-09-30  Mark Probst  <mark.probst@gmail.com>
4041
4042         * object-internals.h: Remove serialized culture fields from
4043         MonoInternalThread.
4044
4045         * icall-def.h, thread-types.h, threads.c: Remove serialized
4046         culture icalls.
4047
4048         * appdomain.c: Corlib version bump.
4049
4050 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
4051
4052         * marshal.c (emit_marshal_object): Emit out marshalling of stringbuilders.
4053         Fixes #543133.
4054
4055 2009-09-30  Mark Probst  <mark.probst@gmail.com>
4056
4057         * sgen-gc.c: Try to shorten the new section after a major
4058         allocation to avoid ever-growing sections.
4059
4060 2009-10-13  Martin Baulig  <martin@ximian.com>
4061
4062         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
4063         `MONO_DEBUGGER_EVENT_TRAMPOLINE' into
4064         `MONO_DEBUGGER_EVENT_OLD_TRAMPOLINE' and added a new
4065         `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
4066
4067         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 4.
4068
4069 2009-09-29 Gonzalo Paniagua Javier <gonzalo@novell.com>
4070
4071         * threadpool.c: fixed the order in which 'completed' and the wait
4072         handle, if any, are set.  Fixes bug #542933 and delegate2.exe
4073         No need to use the wait_handle field of ASyncCall. Make sure the
4074         threadpool is active when adding a job or queueing an idle thread.
4075
4076 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
4077
4078         * object.c (mono_unhandled_exception): Fix a crash if there is no main thread.
4079
4080         * threads.c (build_wait_tids): Fix a crash if there is no main thread, like
4081         when using --compile-all.
4082
4083 2009-09-27  Mark Probst  <mark.probst@gmail.com>
4084
4085         * metadata.c (free_generic_class): Unregister the field_objects
4086         roots if we're using SGen.
4087
4088 2009-09-27  Mark Probst  <mark.probst@gmail.com>
4089
4090         * reflection.c (mono_dynamic_image_free): Deregister the GC root
4091         for GenericParamTableEntry.gparam.
4092
4093 2009-09-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
4094
4095         * marshal.c: don't create the handle when calling. It is created later
4096         if needed.
4097
4098 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4099
4100         * sgen-gc.c: Warning fixes.
4101
4102 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4103
4104         * sgen-gc.c: New debug option "xdomain-checks", which scans the
4105         whole heap for cross-domain references before each collection.
4106
4107         * sgen-scan-object.h: The scan action can now use SCAN to scan the
4108         object.
4109
4110         * threadpool-internals.h, threadpool.c: New function
4111         mono_thread_pool_is_queue_array() for checking whether a given
4112         array is used as a (cross-domain) queue by the thread pool code.
4113
4114 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4115
4116         * sgen-gc.c: New function mono_gc_scan_for_specific_ref() which
4117         searches the whole heap for objects containing a specific
4118         reference.  Only for debugging.
4119
4120 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4121
4122         * appdomain.c (MONO_CORLIB_VERSION): Bumped.
4123
4124         * icall-def.h, threads.c, threads-types.h: New icalls for copying
4125         byte arrays between domains.
4126
4127 2009-09-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
4128
4129         * threadpool.c:
4130         * class-internals.h:
4131         * mono-perfcounters-def.h:
4132         * mono-perfcounters.c:
4133         -There is a list of idle threads
4134         -Each of those idle threads wait on their own WaitHandle instead
4135         of all of them using the same semaphore. When a new work item is
4136         added, the job is assigned directly to an idle thread or a newly
4137         created one if possible and then the handle for that thread is
4138         signaled. Compare that to the current approach where all the
4139         threads in the pool compete to dequeue a job from the same
4140         queue.
4141         -New struct ThreadPool that brings together the bunch of static
4142         variable for each threadpool (IO and regular).
4143         -New performance counters: # of items added and its rate per
4144         threadpool. The rate will be used later, perhaps together with
4145         other perf. counters, to decide when idle threads should exit.
4146
4147 2009-09-25  Jonathan Chambers  <joncham@gmail.com>
4148
4149         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal): 
4150         Fix typo on Windows build.      
4151         (ves_icall_System_Net_Sockets_Socket_Accept_internal): Fix typo on Windows build.
4152         
4153         Code is contributed under MIT/X11 license.
4154
4155 2009-09-25  Mark Probst  <mark.probst@gmail.com>
4156
4157         * object-internals.h: The Thread class is split up into Thread and
4158         InternalThread now.  We have exactly one InternalThread per
4159         thread, and at most one Thread per appdomain per thread.  Most
4160         data is stored in InternalThread.  All InternalThread objects live
4161         in the root domain.
4162
4163         * class-internals.h: Add internal_thread_class to MonoDefaults.
4164
4165         * appdomain.c (mono_domain_unload), attach.c (receiver_thread),
4166         domain.c, gc.c, icall-def.h, monitor.c, object.c, sgen-gc.c,
4167         socket-io.c, threadpool.c, thread-types.h, threads.c: Changes
4168         resulting from the split of the Thread class.
4169
4170         * gc-internal.h: Prototype for new function for checking whether a
4171         thread is the finalizer thread.
4172
4173         * appdomain.c: Corlib version bump.
4174
4175 2009-09-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4176
4177         * appdomain.c|h: Add a mono_domain_try_unload method which is
4178         equivalent to mono_domain_unload, except that it returns an exception
4179         instead of throwing it. Make mono_domain_unload use the
4180         mono_domain_try_unload method to avoid code-duplication.
4181
4182 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
4183
4184         * debug-helpers.c (dis_one): Avoid unaligned accesses on platforms where that is
4185         a problem.
4186
4187 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
4188
4189         * marshal.c (emit_ptr_to_object_conv): Generate an exception instead of
4190         aborting when a conversion is not implemented.
4191
4192 2009-09-23  Miguel de Icaza  <miguel@novell.com>
4193
4194         * verify.c: when comparing culture strings, use g_ascii_strcmp
4195
4196         * assembly.c (mono_public_tokens_are_equal): Change g_strcasecmp
4197         when comparing public key tokens to use memcmp on 16 bytes.   I do
4198         not believe this ever worked as advertised in the past.
4199
4200         The standard Public Key is 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00
4201         which would have always failed earlier.
4202
4203 2009-06-25  Miguel de Icaza  <miguel@novell.com>
4204
4205         * gc.c: Raise a NullArgumentException if the object passed is
4206         null.
4207
4208 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
4209
4210         * image.c (mono_image_close): Atomically decrement the reference count and
4211         remove the image from the hash tables, to prevent another thread from seeing a
4212         dying MonoImage. Fixes #541194.
4213
4214 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4215
4216         * threadpool.c: actually use the minimum number of 'completion ports'
4217         (for us is just a potential worker thread).
4218
4219 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4220
4221         * threadpool.c: remove ares_htable. It does not make sense any more
4222         since the same objects are now stored in GC-tracked arrays while they are
4223         in the queue.
4224
4225 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4226
4227         * threadpool.c: increase the minimum length of the queues to 128.
4228         Remove warning.
4229
4230 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
4231
4232         * marshal.c (mono_marshal_get_string_ctor_signature): New internal function to
4233         return the modified signature used by string ctors.
4234
4235 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
4236
4237         * marshal.c (mono_marshal_get_runtime_invoke_dynamic): New internal function
4238         to return a runtime-invoke wrapper which uses DYN_CALL to call the wrapped
4239         method, to be used by full-aot.
4240
4241 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
4242
4243         Since the runtime supports lazy initialization of a type's vtable and this can cause a type
4244         to fail, we need to ensure that the vtable is properly initialized at spots were the type must
4245         be known to be good.
4246
4247         * class.c (mono_class_init): Fail array types if their element type fails initialization
4248         as well.
4249
4250         * object.c (mono_class_create_runtime_vtable): Fail array types if their element type fails
4251         initialization, additionally we request the element_type vtable to be initialized as well.
4252
4253         This is fine and should not increase the working set in any meaningful way since it's reasonable
4254         to assume       that most code will create an array and eventually populate it, which will require the
4255         type's vtable to be initialized.
4256
4257         * loader.c (field_from_memberref): Add a comment for a possibly useless mono_class_init call.
4258
4259 2009-09-17  Atsushi Enomoto  <atsushi@ximian.com>
4260
4261         * normalization-tables.h : regenerated.
4262
4263 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
4264
4265         * mono-debug.c (mono_debug_add_method): Increase the size of the buffer,
4266         a leb128 encoding can take up to 5 bytes.
4267
4268 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
4269
4270         * class.c (verify_class_overrides): Remove useless argument.
4271
4272         * class.c (mono_class_setup_vtable_general): Move the overrides check to happen
4273         before interface enumeration as this is no longer required.
4274
4275 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
4276
4277         * class.c: New function mono_class_is_assignable_from_slow that is safe to be
4278         used under mono_class_init context. This functions avoid any code path that
4279         calls mono_class_init, which leads it to be slow as some things like the interface
4280         bitmap are not available.
4281
4282         * class.c (verify_class_overrides): Use mono_class_is_assignable_from_slow instead
4283         of it's own broken version. Fixes the verifier part of #538588.
4284
4285         * class-internals.h: Export mono_class_is_assignable_from_slow as part of the internal
4286         API.
4287
4288 2009-09-15  Mark Probst  <mark.probst@gmail.com>
4289
4290         * class.c (mono_class_init): Always set an exception in a class if
4291         vtable setup fails.  Fixes #538577.
4292
4293         * generic-sharing.c: Raise an exception if mono_class_vtable()
4294         returns NULL.
4295
4296 2009-09-13  Zoltan Varga  <vargaz@gmail.com>
4297
4298         * marshal.c (mono_marshal_get_runtime_invoke): Don't share instance 
4299         methods of vtypes, as they could be incorrectly shared with static methods
4300         taking an IntPtr argument.
4301
4302 2009-09-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
4303
4304         * domain.c:
4305         * object.c:
4306         * class-internals.h: renamed waithandle_class to
4307         manualresetevent_class.
4308         * marshal.c: propagate the exception if a remoting BeginInvoke call
4309         fails.
4310
4311 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4312
4313         * object.c: Properly handle vtable failures.
4314
4315 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4316
4317         * socket-io.c: Assert on vtable failure.
4318
4319         * mono-mlist.c: Assert on vtable failure.
4320
4321 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4322
4323         * marshal.c: Assert on vtable failure.
4324
4325 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4326
4327         * icall.c: Properly handle vtable failures.
4328
4329 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4330
4331         * debug-helpers.c (mono_class_describe_statics): Properly handle vtable failures.
4332
4333 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4334
4335         * cominterop.c (ves_icall_System_ComObject_CreateRCW): Property handle vtable failures.
4336
4337         * console-unix.c (do_console_cancel_event): Same.
4338
4339 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4340
4341         * class-internals.h: Add mono_class_vtable_full function that allows control
4342         if an exception should be raised or not.
4343
4344         * object.c (mono_class_vtable): Call into mono_class_vtable_full. Fix this function
4345         to do what its documentation say, that is to return NULL and set exception_type on
4346         failure.
4347
4348         * object.c (mono_class_create_runtime_vtable): Add new raise_on_error parameter
4349         and change the code to honor it.
4350
4351 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4352
4353         * verify.c: Fix typo in error message.
4354
4355 2009-09-10  Sebastien Pouliot  <sebastien@ximian.com>
4356
4357         * security-core-clr.c: Fix default_platform_check so it can run
4358         the runtime coreclr tests (without an infinite recursion when
4359         throwing an exception).
4360
4361 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4362
4363         object.c (mono_delegate_ctor_with_method): Guard against null method.
4364
4365 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4366
4367         * marshal.c (mono_marshal_get_xappdomain_dispatch): Add an assert
4368         that should be replaced with error handling later.
4369
4370 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4371
4372         * marshal.c (mono_delegate_end_invoke): Fix warning.
4373
4374 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4375
4376         * loader.c (mono_field_from_token): Properly handle invalid
4377         dynamic tokens.
4378
4379 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4380
4381         * pedump.c (verify_image_file): Skip types that can't be
4382         decoded.
4383
4384 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4385
4386         * verify.c: Look for recursive valuetypes only against the
4387         type been initialized as this is a lot simpler and works.
4388
4389 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4390
4391         * verify.c: Ensure that fields are properly loaded before
4392         checking them.
4393
4394 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
4395
4396         * object.c (mono_object_get_virtual_method) : Call 
4397           mono_cominterop_get_invoke if the object is a COM object.
4398
4399         Code is contributed under MIT/X11 license.
4400
4401 2009-09-09  Rodrigo Kumpera  <rkumpera@novell.com>
4402
4403         * verify.c: Check for recursive valuetype definitions.
4404
4405 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
4406
4407         Use inheritance-aware interface offsets. Inherited types use the same offsets
4408         of their parents. This reduce offset duplication in case more than one type in
4409         the inheritance tree explicitly implements the same interface.
4410
4411         This also removes a source of vtable bubbles found in #532409. An abstract type
4412         isn't required to provide abstract methods to all interfaces it implements, which
4413         resulted in a bubble with the previous scheme as the child would get a non-full
4414         vtable from its parent. We fail all concrete types with vtable bubbles, so this
4415         should be fixed.
4416
4417         This change causes an increase of 1.7% in vtable memory usage for IronPython pystone but
4418         it's expected to not cause any significant increase beyond that.
4419
4420         * class.c (setup_interface_offsets): Compute super class iface offsets
4421         first to force sharing.
4422
4423         * class.c: Add VTABLE_SELECTOR macro to the vtable debug macros to help
4424         dumping only the relevant ones.
4425
4426         * class.c (mono_class_setup_vtable_general): Give newslot, non final, virtual
4427         methods a new slot regardless if they belong to an interface or not. This allows
4428         an inherited type to override the iface method separately from the class one.
4429
4430 2009-09-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
4431
4432         * threadpool.c: make the Sleep() alertable to prevent delays exiting
4433         applications that take less than 2s to execute.
4434         Bug #524984 fixed.
4435
4436 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
4437
4438         * object-internals.h (MonoRuntimeCallbacks): Add a 'get_runtime_build_info' callback.
4439
4440         * object.c (mono_get_runtime_callbacks): New helper function to return
4441         the runtime callbacks.
4442
4443         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Use the result of
4444         mono_get_runtime_build_info () as the display name.
4445         
4446 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4447
4448         * marshal.c (emit_marshal_array): Call conv.ovf.i on the array parameter
4449         argument, since NEWARR expects a native int. Fixes #481559.
4450
4451 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4452
4453         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Guard
4454         against broken SRE methods.
4455
4456 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4457
4458         * class.c (mono_type_get_full): Don't call mono_metadata_free_type on
4459         a NULL variable. Abort early on failure.
4460
4461 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4462
4463         * class.c (can_access_type): Fail visibility test for non nested
4464         types with nested visibility.
4465
4466 2009-09-02  Sebastien Pouliot  <sebastien@ximian.com>
4467
4468         * assembly.c (parse_public_key): Avoid allocating (and not 
4469         freeing) the public key array when it's not requested by the 
4470         caller.
4471         * threads.c (mono_thread_manage, mono_thread_create_internal, 
4472         ves_icall_System_Threading_Thread_Thread_internal): Free 
4473         allocated memory on error.
4474
4475 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4476
4477         * icall.c, icall-def.h: Remove some dead code from early SRE changes.
4478
4479 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4480
4481         * class.c (mono_class_setup_fields): Remove duplicated local variable
4482         named gklass.
4483         Rename gklass to gtd to reflect the fact that it points to the generic
4484         type definition.
4485         Remove the duplicated call to mono_class_setup_fields on gtd and move
4486         the error check to the beginning.
4487
4488 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4489
4490         * marshal.c (mono_array_to_lparray): Do DISABLE_COM properly.
4491         Remove cruft of the previous patch.
4492
4493 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4494
4495         * metadata-verify.c (verify_method_table): Check for abstract + final.
4496         Fixes #534175.
4497
4498 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4499
4500         * verify.c (verify_class_fields): Check for duplicate fields.
4501
4502 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4503
4504         * metadata-verify.c: Verify the typeref table for duplicates.
4505
4506 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4507
4508         This reverts r140936 and properly handles interfaces with static methods. The
4509         right fix is to ensure vtables without bubles which is an easier to verify
4510         constraint. We should avoid such special cases as of the reverted patch as those
4511         only make the runtime more brittle.
4512
4513         * class.c (mono_class_setup_vtable_general): Revert previous change that handle
4514         static methods on interfaces.
4515
4516         * class.c (setup_interface_offsets): Use the number of virtual methods when
4517         calculating interface offsets instead of the number of methods. This way we
4518         avoid bubles on the layout.
4519
4520 2009-08-31  Rodrigo Kumpera  <rkumpera@novell.com>
4521
4522         * metadata-verify.c (verify_metadata_header): Some very smart
4523         obfuscators like to add extra stream headers. Ignore them.
4524
4525 2009-08-30  Zoltan Varga  <vargaz@gmail.com>
4526
4527         * class.c (mono_class_setup_vtable_general): Verify interfaces with static
4528         methods correctly.
4529
4530 2009-08-29  Rodrigo Kumpera  <rkumpera@novell.com>
4531
4532         * metadata-verify.c: Verify for duplicated types.
4533
4534 2009-08-28  Rodrigo Kumpera  <rkumpera@novell.com>
4535
4536         * metadata-verify.c (verify_typedef_table): Verify for nested types
4537         without an entry on the nested class table.
4538
4539 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4540
4541         * cominterop.c (cominterop_get_ccw): Applied patch from tom hindle
4542         <tom_hindle@sil.org>. Add locking around hash table accesses.
4543
4544 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4545
4546         * verify.c (mono_verifier_verify_class): Verify all interface if
4547         really are interfaces. Fixes #534184.
4548
4549 2009-08-27  Rodrigo Kumpera  <rkumpera@novell.com>
4550
4551         * pedump.c: Initialize all types during metadata validation so we report
4552         errors only detected as part of class initialization.
4553
4554 2009-08-26  Rodrigo Kumpera  <rkumpera@novell.com>
4555
4556         * metadata-verify.c (verify_method_table): PInvoke requires method to
4557         be static. Fixes #534189
4558
4559 2009-08-26  Zoltan Varga  <vargaz@gmail.com>
4560
4561         * threads.c (mono_thread_suspend_all_other_threads): Handle 'threads_starting_ip'
4562         being NULL.
4563
4564 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4565
4566         * class.c (mono_class_setup_vtable_general): Verify the resulting vtable
4567         for holes or bad methods. Fixes #525314.
4568
4569 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4570
4571         * class.c (setup_interface_offsets): Don't allocate slot
4572         for the same interface multiple times. This creates bubbles
4573         that waster space and make vtable verification harder.
4574
4575         The same interface get a slot multiple times since we need
4576         to get the closure of all implemented interfaces, which means
4577         the same interface is reported multiple times.
4578
4579 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4580
4581         * verify.c (mono_verifier_verify_class): Don't check the fields
4582         of generic instances since the context on which they got expanded
4583         might lead to false positives.
4584
4585         Such thing happens when a generic type is inflated in the context
4586         of a generic method and the inflated type of a field turns into a
4587         generic method argument, which causes the checking code to think
4588         it's an invalid class when it's not.
4589
4590 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4591
4592         * verify.c (mono_type_is_valid_in_context): Verify if type
4593         is NULL and remove duplicate test.
4594
4595 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4596
4597         * verify.c (mono_verifier_verify_class): Check fields for
4598         invalid generic arguments.
4599
4600 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4601
4602         * class.c (verify_class_overrides): Verify if for static
4603         and non virtual methods.
4604
4605 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4606
4607         * icaa.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor):
4608         Check for errors after retrieving the vtable.
4609
4610 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4611
4612         * class.c (mono_class_setup_vtable_general): Verify
4613         if method overrides are valid before processing them.
4614
4615 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4616
4617         * marshal.c (mono_array_to_lparray): Fix minimal build with
4618         cominterop disabled.
4619
4620         * marshal.c (mono_free_lparray): Same.
4621
4622 2009-08-21  Mark Probst  <mark.probst@gmail.com>
4623
4624         * threadpool.c (mono_thread_pool_init): Use mono_object_hash() as
4625         the hash function for the ares_htable.
4626
4627 2009-08-20  Rodrigo Kumpera  <rkumpera@novell.com>
4628
4629         * metadata-verify.c (verify_assembly_table): Accept 0x10 as a valid
4630         bit for assembly flags. MS is ok with it but there is no spec anywhere
4631         on its mean
4632
4633 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4634
4635         * class.c (mono_class_create_from_typedef): Emit profiler events
4636         in all cases.
4637
4638 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4639
4640         * icall.c (ves_icall_Type_GetMethodsByName): Don't leak loader errors.
4641         Release memory on failure.
4642
4643 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4644
4645         * class-internals.h: Add mono_metadata_load_generic_param_constraints_full
4646         to the internal API.
4647
4648         * metadata.c (get_constraints): Use a single-linked table as we don't
4649         traverse it backward. Fail and return FALSE if only of the contraint types
4650         is not found.
4651
4652         * metadata.c (mono_metadata_load_generic_param_constraints_full): Identical
4653         to mono_metadata_load_generic_param_constraints except for having a return value.
4654         This has to be done since the later is part of the public API.
4655
4656         * class.c (mono_class_create_from_typedef): Properly check the loading of constrains
4657         and fail the type.
4658
4659         * loader.c (mono_get_method_from_token): Properly check the loading of constraints
4660         and fail the method.
4661
4662 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4663
4664         * metadata-verify.c (is_valid_method_header): Add work-around to deal
4665         with MS broken behavior of emmitting EH section sizes without the
4666         header size added.
4667
4668 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4669
4670         * metadata.c (mono_type_create_from_typespec): Don't allocate image
4671         memory until we're sure that we'll need it. This avoids leaking for
4672         broken types or duplicated instantiation.
4673
4674 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4675
4676         * metadata-verify.c (is_valid_method_header): Fix stupid formating
4677         mistake.
4678
4679 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4680
4681         * metadata-verify.c (is_valid_method_header): Fix number of clauses
4682         and expected size calculation.
4683
4684 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4685
4686         * class.c (mono_class_get_field_idx): Add fixme for broken
4687         behavior for types with multiple fields with the same name.
4688         I would rather fix it, but have no idea on how to generate
4689         such artifact for testing.
4690
4691 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4692
4693         * verify.c (verifier_load_field): We should allow references to
4694         fields to be made using the generic type definition. It's up to
4695         the loader system to fail invalid ops.
4696
4697         * verify.c (get_boxable_mono_type): Only uninstantiated GTDs
4698         are invalid.
4699
4700 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4701
4702         * class.c: Fix usage of mono_metadata_interfaces_from_typedef_full.
4703
4704         * metadata-internals.h: Fix declaration of 
4705         mono_metadata_interfaces_from_typedef_full.
4706
4707         * metadata.c (mono_metadata_interfaces_from_typedef_full): Add extra
4708         heap_alloc_result parameter that controls if the result should be
4709         g_malloc'd.
4710
4711         * metadata.c (mono_metadata_interfaces_from_typedef): Let the resulting
4712         array be g_malloc'd and properly document this public API function.
4713
4714 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4715
4716         * cil-coff.h: Fix METHOD_HEADER_FORMAT_MASK to be 2 bits and
4717         remove METHOD_HEADER_TINY_FORMAT1.
4718
4719         * reflection.c: Remove reference to METHOD_HEADER_TINY_FORMAT1.
4720
4721         * metadata.c (mono_metadata_parse_mh_full): Kill tiny format1.
4722
4723         Both spec and MS uses only 2 bits to enumerate the kind of header.
4724         So given that 0x6 and 0x2 are equal under a 2 bits mask, tiny format1
4725         is superfluous, only used for tiny headers with odd code lengths.
4726
4727         This change also make sure that mono doesn't wronly interpret bit 2
4728         of fat header flags, which is currently reserved.
4729
4730 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4731
4732         * metadata.c (do_mono_metadata_parse_type): Do error
4733         checking for element types. Don't abort if presented
4734         with a broken type kind.
4735
4736 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4737
4738         * metadata.c (mono_metadata_parse_method_signature_full):
4739         Gracefully fail bad vararg signatures.
4740
4741 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4742
4743         * profiler.c:
4744         * class.c: Fix warnings for uninitialized variables.
4745
4746 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4747
4748         * icall.c: Fix _NSGetEnviron method declaration warning.
4749
4750 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4751
4752         * icall.c:
4753         * reflection.c: Make bitwise checks explicit.
4754
4755 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4756
4757         * debug-helpers.c:
4758         * marshal.c: Fix printf warnings.
4759
4760 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4761
4762         * reflection.c (encode_cattr_value): Fix a warning.
4763
4764 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4765
4766         * metadata.c (mono_metadata_parse_array_full): Fix memory leak
4767         of array bounds.
4768
4769 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4770
4771         * loader.c (mono_method_signature): Don't assert on broken
4772         signature. Print a more useful error message.
4773
4774 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4775
4776         * loader.c (mono_method_get_marshal_info): Assert if
4777         signature is invalid. Bounds check stores to the
4778         mspecs array;
4779
4780 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4781
4782         * loader.c (field_from_memberref): Fix warning.
4783
4784 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4785
4786         * loader.c (mono_method_get_param_names): Check if signature
4787         is null. Don't store beyond the size of the name array.
4788
4789 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4790
4791         * loader.c (mono_get_method_constrained): Check if signature
4792         is null.
4793
4794 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4795
4796         * loader.c (mono_loader_set_error_bad_image): Improve
4797         error messages.
4798
4799 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4800
4801         * loader.c (mono_get_method_full): Convert an assertion
4802         into a loader error.
4803
4804 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4805
4806         * class-internals.h, class.c: Better naming and documentation.
4807
4808 2009-08-17  Zoltan Varga  <vargaz@gmail.com>
4809
4810         * boehm-gc.c (mono_gc_add_weak_track_handle): Don't do any work if
4811         obj is NULL.
4812
4813 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4814
4815         * loader.c (mono_method_get_signature_full): Fail gracefully if signature
4816         parsing fails.
4817
4818 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4819
4820         * loader.c (mono_loader_error_prepare_exception): Handle missing field
4821         errors with no class set.
4822
4823         * loader.c (field_from_memberref): If the field signature is of the wrong
4824         type fail with a MissingFieldException instead of a BadImageException as
4825         this is the behavior observed on MS. 
4826
4827 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4828
4829         * loader.c (field_from_memberref): Don't crash if either the field
4830         signature or the typespec class are invalid.
4831
4832 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4833
4834         * verify.c (verifier_load_field): Don't allow field related
4835         ops to reference fields on generic type definition.
4836
4837 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4838
4839         * metadata-verify.c: Add new warning level for errors specified
4840         by ECMA 335 but that MS ignores.
4841
4842         * metadata-verify.c (verify_method_table): Make compiler controled
4843         visibility + (rt)specialname error a warning as MS ignores this. Ignoring
4844         this check is safe because the end result will only be some visibility
4845         exceptions been thrown.
4846
4847 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4848
4849         * verify.c (get_boxable_mono_type): Don't allow the
4850         use of the generic type definition on boxed type positions.
4851
4852         Fixes #531237.
4853
4854 2009-08-14  Mark Probst  <mark.probst@gmail.com>
4855
4856         * threadpool.c: Make sure no cross-domain references remain in
4857         ares_htable or the arrays that are thrown away when resizing.
4858
4859 2009-08-14  Mark Probst  <mark.probst@gmail.com>
4860
4861         * appdomain.c, metadata-internals.h, image.c: In MonoImage add a
4862         list of classes for which we have to unregister reflection_info
4863         with the GC and which are not in the namespace cache.
4864
4865         * reflection.c (mono_reflection_initialize_generic_parameter): Add
4866         the class to the list.
4867
4868 2009-08-14  Mark Probst  <mark.probst@gmail.com>
4869
4870         * domain.c (mono_domain_free): Unregister the GC roots in
4871         MonoDomain.
4872
4873 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
4874
4875         * reflection.c (mono_reflection_type_get_handle): Fix typo.
4876
4877 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
4878
4879         * class.c: Add mono_class_get_field_from_name_full which does
4880         the same as mono_class_get_field_from_name but does check field
4881         signature as well.
4882
4883         * class-internals.h: Export mono_class_get_field_from_name_full as
4884         part of the internal API.
4885
4886         * loader.c (field_from_memberref): Search fields by name and signature
4887         as it's valid to have two fields with same name but different types.
4888
4889         Fixes #528055.
4890
4891 2009-08-10  Rodrigo Kumpera  <rkumpera@novell.com>
4892
4893         * icall-def.h: Add a bunch of temporary icalls to MonoGenericClass.
4894
4895         * reflection.c (mono_reflection_type_get_handle): Handle MonoGenericClass.
4896
4897         * reflection.c (encode_cattr_value): Use mono_reflection_type_get_handle to encode
4898         System.Type.
4899
4900 2009-08-13  Zoltan Varga  <vargaz@gmail.com>
4901
4902         * gc.c (GCHandle_CheckCurrentDomain): Moved this here from icall.c.
4903
4904         * boehm-gc.c (mono_gc_add_weak_track_handle): Handle nulls.
4905
4906 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4907
4908         * sgen-gc.c, sgen-scan-object.h: Object scanning code factored out
4909         to sgen-scan-object.h, which can be included and parameterized via
4910         macros.
4911
4912         * Makefile.am: sgen-scan-object.h added.
4913
4914 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4915
4916         * gc.c: #define GC_dont_gc if we're compiling with SGen.
4917
4918 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4919
4920         * domain.c (mono_domain_free): Free a domain's mono_g_hash_tables
4921         before clearing a domain in the GC.
4922
4923 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4924
4925         * exception.c (mono_exception_from_name_domain): Actually create
4926         the exception in the specified domain.
4927
4928         * appdomain.c (mono_domain_create_appdomain_internal): Create the
4929         OutOfMemoryException a bit later so that the domain is inialized
4930         "enough" that it works.
4931
4932 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4933
4934         * threads.c (thread_cleanup): Clean up the cached_culture_info
4935         array to prevent cross-domain references.
4936
4937 Tue Aug 11 14:38:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4938
4939         * metadata.c: more documentation for MonoType accessors.
4940
4941 2009-08-11  Raja R Harinath  <harinath@hurrynot.org>
4942
4943         Fix incorrect size definitions where the tail array isn't a list
4944         of pointers
4945         * class-internals.h (MONO_SIZEOF_MARSHAL_TYPE): Use offsetof to
4946         define size.
4947         * domain-internals.h (MONO_SIZEOF_JIT_INFO): Likewise.
4948         * metadata.h (MONO_SIZEOF_TYPE): Likewise.
4949         * reflection.h (MONO_SIZEOF_CUSTOM_ATTR_INFO): Likewise.
4950
4951 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4952
4953         * reflection.h:
4954         * reflection.c: MONO_SIZEOF_CUSTOM_ATTR_INFO.
4955
4956 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4957
4958         * metadata.c:
4959         * loader.c:
4960         * metadata-internals.h:
4961         * method-builder.c:
4962         * reflection.c: use MONO_SIZEOF_METHOD_HEADER.
4963
4964 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4965
4966         * cominterop.c:
4967         * metadata.c:
4968         * metadata.h:
4969         * loader.c:
4970         * marshal.c:
4971         * reflection.c: #define for sizeof in MonoType and
4972         MonoMethodSignature.
4973
4974 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4975
4976         * domain.c:
4977         * domain-internals.h: add and use #define's instead of sizeof()
4978         for MonoJitInfo and MonoJitInfoTable.
4979
4980 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4981
4982         * object.c:
4983         * class.h: use #define instead of sizeof() for MonoRemoteClass.
4984
4985 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4986
4987         * metadata.c:
4988         * metadata.h:
4989         * object.c:
4990         * class-internals.h:
4991         * generic-sharing.c:
4992         * marshal.c: use a #define instead of sizeof() for a few
4993         structures that use a zero-length array.
4994
4995 2009-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
4996
4997         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Add new fields
4998         to handle inflated generic methods.
4999
5000         * appdomain.c: Bump corlib version.
5001
5002         * reflection.c (mono_image_get_method_on_inst_token): Handle generic method
5003         instances.
5004
5005         * reflection.c (fixup_method): Same
5006
5007         * reflection.c (resolve_object): Same.
5008
5009         * reflection.c (inflate_method): Replace a g_assert_not_reached with a
5010         g_error and a decent message.
5011
5012 2009-08-06  Massimiliano Mantione  <massi@ximian.com>
5013
5014         * bohem-gc.c (mono_gc_add_weak_track_handle): Get the domain
5015         from the object because it could not yet be available globally
5016         (it happens if the profiler tries to create a gchandle on the
5017         MonoThread object of a thread that is still registering itself
5018         with the runtime).
5019
5020 2009-08-04  Rodrigo Kumpera  <rkumpera@novell.com>
5021
5022         * reflection.c (mono_generic_class_get_object): Initialized the
5023         managed type arguments array.
5024
5025         * object-internals.h (MonoReflectionGenericClass): Add type_arguments field.
5026
5027         * appdomain.c: Bump corlib version.
5028
5029 2009-08-04  Zoltan Varga  <vargaz@gmail.com>
5030
5031         * threads.c (thread_cleanup): Free serialized_ui_culture_info. Fixes
5032         #527902.
5033
5034 2009-08-03  Zoltan Varga  <vargaz@gmail.com>
5035
5036         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
5037         Avoid a crash if synch_cs is not set.
5038         
5039         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
5040         Handle the case when the handle is 0.
5041
5042         * appdomain.c: Bump corlib version.
5043
5044 2009-08-02  Zoltan Varga  <vargaz@gmail.com>
5045
5046         * reflection.c (mono_type_get_object): Fix a warning.
5047
5048 2009-08-01  Mark Probst  <mark.probst@gmail.com>
5049
5050         * sgen-gc.c (mono_gc_wbarrier_value_copy): Don't compute the GC
5051         descriptor here.  We assume it's already been computed.
5052
5053         * generic-sharing.c (instantiate_other_info): Compute the GC
5054         descriptor for info type MONO_RGCTX_INFO_KLASS.
5055
5056 2009-08-01  Mark Probst  <mark.probst@gmail.com>
5057
5058         * reflection.c (mono_type_get_object): MonoDomain is an unmanaged
5059         type, so don't use MONO_OBJECT_SETREF to set a field.
5060
5061 2009-08-01  Mark Probst  <mark.probst@gmail.com>
5062
5063         * gc.c: We were missing one case where invoking a finalizer would
5064         not reset the domain.  Also, in the finalizer thread loop, assert
5065         that we're in the root domain.
5066
5067 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
5068
5069         * icall.c (ves_icall_MonoType_GetArrayRank): Throw ArgumentException
5070         if the type is not an array.
5071
5072 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
5073
5074         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Return the
5075         method bound to the declaring type of the method. Raise an exception
5076         if the type is not a generic param.
5077
5078 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
5079
5080         * class.c (print_unimplemented_interface_method_info): Print the
5081         full type name.
5082
5083         * class.c (mono_class_setup_vtable_general): When dealing with a
5084         generic instance first check if the generic type definition is
5085         not broken.
5086
5087 2009-02-11 Tom Hindke <tom_hindle@sil.org>
5088
5089         * marshal.c (mono_array_to_lparray): Implemented so managed object types are converted to native types.
5090
5091         * marshal.c: Added new method mono_free_lparray to free memory allocated by mono_array_to_lparray
5092
5093         * marshal.c (emit_marshal_array): call emit mono_free_lparray where approprate.
5094
5095         * marshal.c (conv_to_icall): added MONO_MARSHAL_FREE_LPARRAY case
5096
5097         * metadata.h (MonoMarshalConv enum): added MONO_MARSHAL_FREE_LPARRAY
5098
5099         Code is contributed under MIT/X11 license
5100
5101 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
5102
5103         * verify.c: Fix naming of stelem and ldelem.
5104
5105 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5106
5107         * generic-sharing.c: Replace the templates lock with the loader
5108         lock because of very hard to resolve deadlock issues.
5109
5110 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
5111
5112         * icall.c (ves_icall_Type_GetMethodsByName): Use 
5113         mono_class_get_vtable_size () instead of accessing klass->vtable_size
5114         directly. Fixes #525338.
5115
5116         * class.c (mono_class_get_vtable_size): New helper function.
5117
5118         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle_type): Fix the second argument, its a MonoType* not a MonoClass*. Check whenever
5119         the field belongs to the type. Fixes #525733.
5120
5121 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5122
5123         * sgen-gc.c: When we stop a thread and its stack top is not within
5124         its allocated stack (because it's in an altstack signal handler),
5125         restart it and stop it again, until it is.
5126
5127 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5128
5129         * sgen-gc.c: Take a thread's stack top and registers from the
5130         sigcontext in the suspend signal handler.
5131
5132         * sgen-gc.h, sgen-archdep.h, Makefile.am: Move arch-dependent
5133         stuff to sgen-archdep.h.
5134
5135         * gc.c, gc-internal.h: Remove the get_ip_from_sigctx installer and
5136         caller, because have code in sgen-archdep.h to acquire that data.
5137
5138 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
5139
5140         * profiler.c, profiler.h, profiler-private.h:
5141         Added support for keeping track of code chunks and buffers.
5142
5143 2009-07-29 Rodrigo Kumpera  <rkumpera@novell.com>
5144
5145         * metadata-verify.c: Fix endianness problems on decoding functions.
5146         Based on a patch by Ulrich Weigand <uweigand@de.ibm.com>
5147
5148 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
5149
5150         * icall.c (ves_icall_Type_make_array_type): Handle the new encoding
5151         schema for vectors and one dimension SZARRAY.
5152
5153 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
5154
5155         * reflection.c (mono_reflection_type_get_handle): Handle the new encoding
5156         schema for vectors and one dimension SZARRAY.
5157
5158 2009-07-27  Mark Probst  <mark.probst@gmail.com>
5159
5160         * icall-def.h, thread-types.h, threads.c: New separate icalls for
5161         Interlocked.(Compare)Exchange with object arguments, which invoke
5162         write barriers.
5163
5164 2009-07-26  Miguel de Icaza  <miguel@novell.com>
5165
5166         * icall.c (ves_icall_Type_GetNestedType): Throw an exception when
5167         passed invalid arguments.   Fixes another crasher in the
5168         Silverlight test suite.
5169
5170         * class.c (mono_class_array_element_size): Return 0 for the size
5171         of the class;  This fixes the crasher exposed by :
5172
5173         typeof (void).MakeArrayType ();
5174
5175         * icall.c (ves_icall_MonoType_GetEvent): Do not dereference method
5176         if there is no method to dereference.    Put all the code that
5177         depends on this inside the if (method) block.
5178
5179         This fixes the crasher exposed by Microsoft's Silvelright CLR test
5180         suite  ./Reflection/Emit/TypeBuilder/TypeBuilderGetEvent.exe
5181
5182         With this change, we pass the test.
5183         
5184         * reflection.c (mono_reflection_sighelper_get_signature_local):
5185         Only dereference the assembly if it has been set.    Fixes a
5186         crasher exposed by #525328
5187
5188 2009-07-25  Mark Probst  <mark.probst@gmail.com>
5189
5190         * sgen-gc.c, object.h, null-gc.c, boehm-gc.c, marshal.c: Really
5191         don't perform the store in mono_gc_wbarrier_generic_nostore().
5192         Remove the second argument (value), which is not needed.
5193
5194 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
5195
5196         * null-gc.c (mono_gc_wbarrier_generic_nostore): Define this to fix
5197         the build.
5198
5199         * boehm-gc.c: Ditto.
5200         
5201 2009-07-24  Mark Probst  <mark.probst@gmail.com>
5202
5203         * sgen-gc.c, marshal.c, object.h: Make the managed write barrier
5204         not perform the store itself.  Introduce
5205         mono_gc_wbarrier_generic_nostore(), which is the same as
5206         mono_gc_wbarrier_generic_store(), except it doesn't perform the
5207         store.
5208
5209 2009-07-24  Mark Probst  <mark.probst@gmail.com>
5210
5211         * icall.c (ves_icall_System_Array_SetGenericValueImpl):
5212         mono_gc_wbarrier_value_copy() doesn't perform the copy itself, so
5213         we still need the memcpy().
5214
5215 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5216
5217         * sgen-gc.c: Align array bounds calculation to mono_array_size_t
5218         so that big arrays are handled correctly.  Always use
5219         safe_object_get_size() to calculate array object sizes, which
5220         takes bounds into account.
5221
5222 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5223
5224         * sgen-gc.c (mono_gc_wbarrier_value_copy): Make sure the class's
5225         GC descriptor is computed before we use it.
5226
5227 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5228
5229         * icall.c (ves_icall_System_Array_SetGenericValueImpl): Use a
5230         write barrier if necessary.
5231
5232 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5233
5234         * icall-def.h, icall.c, thread-types.h: New separate icall for
5235         VolatileWrite(object&,object) that uses a write barrier.
5236
5237         * console-unix.c, file-io.c, icall.c, threads.c: Use write
5238         barriers in icalls which write to "ref" or "out" arguments.
5239
5240 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
5241
5242         * marshal.c (mono_marshal_get_runtime_invoke): Do the work done in the exception
5243         handler in a separate icall, to reduce the size of the wrappers.
5244
5245 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5246
5247         * metadata-verify.c (is_valid_typespec_blob): Fix error message.
5248
5249 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5250
5251         * metadata-verify.c (parse_field): Allow byref field.
5252
5253         * metadata-verify.c (parse_locals_signature): Allow byref locals.
5254
5255         * metadata-verify.c (is_valid_typespec_blob): Allow byref typespec.
5256
5257 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5258
5259         * verify.c (do_cast): Fail for any non reference type that isn't boxed.
5260         Fixes #522784.
5261
5262 2009-07-20  Robert Jordan  <robertj@gmx.net>
5263
5264         * cominterop.c (cominterop_get_managed_wrapper_adjusted):
5265         Fix invalid IL in valuetype handling (STOBJ must push the
5266         corresponding class). Fixes bug #523149.
5267
5268         Code is contributed under MIT/X11 license.
5269
5270 2009-07-20  Geoff Norton  <gnorton@novell.com>
5271
5272         * gc.c: Use proper semaphores where available on posix and darwin.
5273
5274 2009-07-19  Geoff Norton  <gnorton@novell.com>
5275
5276         * gc.c: Unnamed posix semaphores are broken on darwin-arm too.
5277
5278 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
5279
5280         * refletion.c (is_sre_usertype): Change name to is_usertype and
5281         invert it's result so it returns true if the type is an user type
5282         and not the opposite.
5283
5284         * reflection.c (is_*_type): Change all of those to use new macro
5285         check_corlib_type_cached that cached the type lookup so we don't
5286         need to do string comparisons all the type. Changed the signature
5287         to take a MonoClass instead.
5288
5289         * reflection.c: Change mono_image_create_token and resolve_object
5290         to use is_sre_* functions.
5291
5292 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5293
5294         * sgen-gc.c: Check for writes to the stack in the managed
5295         wbarrier as well.
5296
5297 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5298
5299         * sgen-gc.c: When a thread is unregistered, don't free its remsets
5300         but put them on a list which is processed with the other thread's
5301         remsets.
5302
5303 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5304
5305         * sgen-gc.c: Fix and enable the internal allocator instead of
5306         using malloc/free (which causes deadlocks).
5307
5308 2009-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
5309
5310         * refletion.c: Fix builds with SRE disabled by adding a minimal
5311         implementation of mono_reflection_type_get_handle.
5312
5313 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
5314
5315         * refletion.c: Make mono_reflection_type_get_handle non static.
5316
5317         * object-internals.h: Export mono_reflection_type_get_handle.
5318
5319         * icall.c (ves_icall_MonoGenericClass_InflateType): Resolve the
5320         unmanaged handle using mono_reflection_type_get_handle.
5321
5322 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
5323
5324         * refletion.c: Replace all reads of MonoReflectionType::type with
5325         calls to mono_reflection_type_get_handle. Only the functions that
5326         deal with constructing TypeBuilder::type have not been changed
5327         because they have to deal with NULL values.
5328
5329         This is a first step into supporting reflection types that don't
5330         map directly into their unmanaged counterpart.
5331
5332 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
5333
5334         * metadata-verify.c (parse_locals_signature): Don't complain
5335         on signature with zero locals since MS generates it and doesn't
5336         bother with.
5337
5338 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
5339
5340         * reflection.c (mono_image_get_array_token): Resolve return
5341         type using mono_reflection_type_get_handle.
5342
5343         * reflection.c (mono_image_get_array_token): Resolve array method
5344         parent type using mono_reflection_type_get_handle.
5345
5346 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
5347
5348         * reflection.c (mono_image_basic_init): Applied patch from
5349         <Dax@daxxfiles.net>. Set the public key token from the assembly
5350         builder. Fixes #518909.
5351
5352         * appdomain.c: Bump corlib version.
5353
5354 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
5355
5356         * class.c (mono_class_needs_cctor_run): Make this return false if
5357         the class has no cctor.
5358
5359 2009-07-13  Mark Probst  <mark.probst@gmail.com>
5360
5361         * sgen-gc.c: When the minor GC needs to allocate a new section,
5362         invoke the major GC afterwards.
5363
5364 2009-07-14  Bill Holmes  <billholmes54@gmail.com>
5365
5366         * process.c  (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal) :
5367           Applying the window_style field to the SHELLEXECUTEINFO struct.
5368
5369         Code is contributed under MIT/X11 license.
5370
5371 2009-07-13  Mark Probst  <mark.probst@gmail.com>
5372
5373         * sgen-gc.c: Fix the race condition in the unmanaged allocator by
5374         locking earlier.  Fix it in the managed allocator by making sure
5375         that no thread is stopped there before the GC runs.  If we do stop
5376         a thread there, we restart it and let it run a but, until it stops
5377         somewhere else.
5378
5379         * gc-internal.h, gc.c: Function for getting the IP from a signal
5380         context via a function registered by mini.
5381
5382 2009-07-11  Zoltan Varga  <vargaz@gmail.com>
5383
5384         * object-internals.h (MonoIntPtr): New structure describing a boxed
5385         IntPtr.
5386
5387         * object.c (mono_runtime_invoke_array): Handle ptr arguments and
5388         returns. Fixes #519953.
5389
5390         * marshal.c (mono_marshal_get_runtime_invoke): Handle pointer returns.
5391
5392 2009-07-09  Mark Probst  <mark.probst@gmail.com>
5393
5394         * class-internals.h, generic-sharing.c: New RGCTX info type for
5395         getting a remoting invoke with check wrapper.
5396
5397 2009-07-07  Geoff Norton  <gnorton@novell.com>
5398
5399         * icall-def.h: Fix the enable-minimal build.
5400
5401 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5402
5403         * object-internals.h: Add MonoReflectionDerivedType.
5404
5405         * reflection.c: Implement support for PointerType.
5406         Fixed tons of warnings.
5407
5408 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5409
5410         * object-internals.h: Add MonoReflectionByRefType.
5411
5412         * reflection.c: Implement support for ByRefType.
5413
5414 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5415
5416         * icall-def.h: Add System.Reflection.Emit.DerivedType::create_unmanaged_type.
5417
5418         * object-internals.h: Add MonoReflectionArrayType and
5419         mono_reflection_create_unmanaged_type.
5420
5421         * reflection.c: Implement support for ArrayType.
5422
5423 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5424
5425         * metadata-verify.c (is_valid_method_header): Parse EH block
5426         flags correctly.
5427
5428 2009-07-03  Mark Probst  <mark.probst@gmail.com>
5429
5430         * sgen-gc.c (finish_gray_stack): Set the to_space pointer after
5431         processing the disappearing links, and process disappearing links
5432         in a loop until no new objects are copied.
5433
5434 2009-07-03  Mark Probst  <mark.probst@gmail.com>
5435
5436         * object.c (handle_enum): Invoke the write barrier when copying
5437         value type instances.
5438
5439         * sgen-gc.c: Register remsets for unmanaged write barriers only
5440         when the address written to is actually on the heap.  This makes
5441         set_value() in object.c work without requiring that the result be
5442         on the heap.
5443
5444 2009-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
5445
5446         The runtime wrappers are all bound to a given type that must
5447         exist in the same image. For regular images we use the <Module>
5448         type, which is required to exist for all images.
5449
5450         The <Module> type can't be used for dynamic images because it
5451         might not exist at the time the wrapper is required, so we create
5452         a synthetic type to use instead.
5453
5454         The current code works because of the 2 stage setup of MonoClass,
5455         but once this is gone it will no longer work.
5456
5457         * icall-def.h: Add ModuleBuilder::set_wrappers_type.
5458
5459         * metadata-internals.h (MonoDynamicImage): Add wrappers_type.
5460
5461         * object-internals.h: Export mono_image_set_wrappers_type icall
5462         as part of the internal API.
5463
5464         * marshal.c (get_wrapper_target_class): If the image is dynamic,
5465         use MonoDynamicImage::wrappers_type instead of the <Module> type.
5466
5467         reflection.c: Add mono_image_set_wrappers_type qhixh sets the dynamic
5468         image wrappers_type to the provided value.
5469
5470 2009-07-01 Rodrigo Kumpera  <rkumpera@novell.com>
5471
5472         * appdomain.c (deregister_reflection_info_roots): No need
5473         to use the image lock here.
5474
5475 2009-07-02  Mark Probst  <mark.probst@gmail.com>
5476
5477         * sgen-gc.c (collect_nursery): Also scan from write-barrier roots.
5478
5479 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
5480
5481         * threads.c: Store the thread start argument in a hash table instead of
5482         registering it as a root, as libgc doesn't support unregistering roots
5483         under windows, leading to 'too many root sets' errors when many threads
5484         are created.
5485
5486         * gc.c (mono_gc_run_finalize): Avoid finalizing dynamic methods during
5487         shutdown, they can still be referenced by the other dying objects.
5488         Fixes #514506.
5489
5490 2009-06-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
5491
5492         * socket-io.c: DontLinger does not allow LingerOptions.
5493
5494 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5495
5496         * metadata-verify.c: The spec doesn't mention that it's possible to add
5497         custom attribute to a generic parameter. Fixed.
5498
5499 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5500
5501         * class.c (inflate_generic_type): Don't crash while trying to output a message
5502         on why we're aborting.
5503
5504 2009-06-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
5505
5506         * socket-io.c: DontLinger can take an int or a boolean too.
5507
5508 Fri Jun 26 17:00:04 CEST 2009 Paolo Molaro <lupus@ximian.com>
5509
5510         * gc.c: check for a null argument to SuppressFinalize () and
5511         ReRegisterForFinalize ().
5512
5513 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5514
5515         * loader.c (method_from_methodspec): Call into the verifier to check
5516         the signature.
5517
5518         * metadata-verify.c: Addmono_verifier_verify_methodspec_signature.
5519
5520         * verify-internals.h: Export mono_verifier_verify_methodspec_signature as
5521         part of the internal API.
5522
5523 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5524
5525         * metadata.c (mono_type_create_from_typespec): Call into the verifier to check
5526         the signature.
5527
5528         * metadata-verify.c: Add mono_verifier_verify_typespec_signature.
5529
5530         * verify-internals.h: Export mono_verifier_verify_typespec_signature as
5531         part of the internal API.
5532
5533 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5534
5535         * metadata.c (mono_metadata_parse_mh_full): Call into the verifier to check
5536         the signature.
5537
5538         * metadata-verify.c: Add mono_verifier_verify_standalone_signature. Fix
5539         blob verification.
5540
5541         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
5542         part of the internal API.
5543
5544 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5545
5546         * metadata-verify.c: Use is_valid_blob_object to verify blob validity
5547         when doing basic verification. 
5548
5549         This check must be done since the runtime peeks into signatures in much
5550         more places than it does decoding so it makes sense to ensure that all
5551         pointers to blob objects are well formed.
5552
5553 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5554
5555         * metadata-verify.c (is_valid_blob_object): Add extra minsize argument.
5556         Use proper overflow dectection. Fix usage of it.
5557
5558 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5559
5560         * loader.c (field_from_memberref): Call into the verifier to check
5561         the signature.
5562
5563         * loader.c (mono_method_get_signature_full): Same.
5564
5565         * loader.c (method_from_memberref): Same.
5566
5567         * metadata-verify.c: Add mono_verifier_verify_memberref_signature.
5568
5569         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
5570         part of the internal API.
5571
5572 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5573
5574         * threadpool.c (mono_thread_pool_add): If the domain is unloading
5575         or unloaded, still return an AsyncResult, but don't add it to the
5576         threadpool.
5577
5578 2009-06-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
5579
5580         * threads.c: fix missing colon when DEBUG is defined.
5581
5582 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5583
5584         * threadpool.c: Don't add new calls to a threadpool if the domain
5585         of the call is unloading or unloaded.  When dequeuing a job, null
5586         the reference in the queue.
5587
5588 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5589
5590         * sgen-gc.c (null_link_in_range): Add the dislink for the old
5591         generation if an object was moved.
5592
5593 2009-06-25  Sylvain Dupont <duposyl@gmail.com>
5594
5595         * cominterop.h cominterop.c marshal.c: Added support for marshalling out 
5596           parameters of type SAFEARRAY[VARIANT].
5597
5598         * reflection.c (encode_marshal_blob): Properly generate element type
5599           (SafeArraySubType marshal attribute option).
5600
5601         Code is contributed under MIT/X11 license.
5602
5603 Thu Jun 25 15:48:09 CEST 2009 Paolo Molaro <lupus@ximian.com>
5604
5605         * reflection.c: in mono_method_clear_object () really ensure all the
5606         objects are removed.
5607
5608 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5609
5610         * loader.c (mono_method_signature): Call into the verifier to check
5611         the method signature.
5612
5613         * metadata-verify.c (verify_method_table): Move signature verification
5614         to verify_method_table_full.
5615
5616         * metadata-verify.c: Add mono_verifier_verify_method_signature.
5617
5618         * verify-internals.h: Export mono_verifier_verify_method_signature as
5619         part of the internal API.
5620
5621 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5622
5623         * loader.c (mono_method_get_header): Call into the verifier to
5624         check the method header.
5625
5626         * metadata-verify.c: Add mono_verifier_verify_method_header.
5627
5628         * verify-internals.h: Export mono_verifier_verify_method_header as
5629         part of the internal API.
5630
5631 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5632
5633         * class.c (mono_class_find_enum_basetype): Call into the verifier to
5634         check the field signature. Replace an assert with an explicit check.
5635
5636         * class.c (mono_class_setup_fields): Call into the verifier to check
5637         the field signature.
5638
5639         * metadata-verify.c: Add mono_verifier_verify_field_signature.
5640
5641         * verify-internals.h: Export mono_verifier_verify_field_signature as
5642         part of the internal API.
5643
5644 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5645
5646         * class.c (mono_class_find_enum_basetype): Simplify this function
5647         by moving code outside of the loop and not decoding static fields.
5648
5649 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5650
5651         * metadata-verify.c (verify_typedef_table): Check the extends
5652         token here. Move to here a flags check from verify_typedef_table_full.
5653
5654 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
5655
5656         * metadata-verify.c (is_valid_method_header): Fix a warning.
5657
5658         * metadata-internals.h (MonoImage): Remove the unused 
5659         static_rgctx_invoke_wrapper_cache.
5660
5661         * image.c marshal.c: Ditto.
5662
5663 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5664
5665         * image.c (do_mono_image_load): Enable table data verification.
5666
5667 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5668
5669         * metadata-verify.c (is_valid_constant): Fix nullref check.
5670
5671 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5672
5673         * metadata-verify.c (is_valid_constant): Fix string bounds check.
5674
5675 2009-06-22  Mark Probst  <mark.probst@gmail.com>
5676
5677         * sgen-gc.c: Managed allocation with pthreads TLS.
5678
5679         * threads.c, threads-types.h: Functions for the JIT to tell the
5680         runtime whether it supports the MONO_TLS opcode.
5681
5682 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5683
5684         * metadata-verify.c (verify_param_table): Fix a crash for assemblies
5685         without methods.
5686
5687 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5688
5689         * metadata-verify.c (is_valid_constant): Fix the string length check.
5690         Use safe overflow checking. Add decent error messages.
5691
5692 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5693
5694         * metadata-verify.c: Move remaininh blob checks to the offline
5695         verification path.
5696
5697 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5698
5699         * metadata-verify.c: Move more blob checks to the offline verification
5700         path.
5701
5702 2009-06-22  Bill Holmes  <billholmes54@gmail.com>
5703
5704         * object-internals.h : Adding interrupt_on_stop field.
5705
5706         * threads.c (mono_thread_request_interruption) : On Windows exit the
5707           thread if interrupt_on_stop is set.
5708
5709         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
5710          Removing old interrupt logic and setting the interrupt_on_stop for the
5711          thread when calling accept.
5712
5713         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal) :
5714          setting the interrupt_on_stop for the thread when calling accept.
5715
5716         Contributed under MIT/X11 license.
5717
5718 2009-06-20  Martin Baulig  <martin@ximian.com>
5719
5720         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 3.
5721
5722 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
5723
5724         * appdomain.c (mono_try_assembly_resolve): Don't call managed code when
5725         running in no-exec mode.
5726
5727 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5728
5729         * metadata-verify.c (verify_method_table): Move header
5730         checking to verify_method_table_full.
5731
5732         * metata-verify.c (mono_verifier_verify_full_table_data):
5733         Call verify_method_table_full.
5734
5735 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5736
5737         * metadata-verify.c (verify_field_table): Move signature
5738         checking to verify_field_table_full.
5739
5740         * metata-verify.c (mono_verifier_verify_full_table_data):
5741         Call verify_field_table_full.
5742
5743 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5744
5745         * metadata-verify.c (verify_typedef_table): Move remaining
5746         stuff to verify_typedef_table_full.
5747
5748 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5749
5750         * metadata-verify.c: Kill is_corlib from VerifyContext.
5751         It is only used by the offline mode.
5752         So we better remove it from the runtime path.
5753
5754 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5755
5756         * metadata-verify.c: Add new mono_verifier_verify_full_table_data
5757         function that perform the offline metadata verification steps.
5758
5759         * metadata-verify.c (verify_typedef_table): Move some checks to
5760         verify_typedef_table_full and make it been called by new function
5761         mono_verifier_verify_full_table_data.
5762
5763         * pedump.c: Call mono_verifier_verify_full_table_data.
5764
5765         * verify-internals.h: Export mono_verifier_verify_full_table_data as
5766         part of the internal API.
5767
5768 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5769
5770         * metadata-verify.c (typedef_is_system_object): Fix System.Object
5771         check.
5772
5773         * metadata-verify.c (verify_implmap_table): Fix implmap invalid
5774         flags bits. SupportLastError was confused as bit 7 instead of 6.
5775
5776         * metadata-verify.c (verify_implmap_table): Fix import scope verification
5777         to check against the module ref table instead of module.
5778
5779         * metadata-verify.c (verify_implmap_table): Fix corlib check.
5780
5781         * pedump.c: Call mono_image_load_names.
5782
5783 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5784
5785         * image.c: Extract mono_image_load_names from do_mono_image_load.
5786
5787         * metadata-internals.h: Export mono_image_load_names as part of
5788         the internal API.
5789         
5790 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
5791
5792         * metadata.c (mono_metadata_cleanup): Free the generic method cache
5793         first, as it could reference data in the other caches.
5794
5795 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
5796
5797         * metadata-verify.c: Finished with method header verification.
5798
5799 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
5800
5801         * metadata-verify.c: Added more header verification code.
5802         Now only EH clauses are missing.
5803
5804 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
5805
5806         * marshal.c (get_runtime_invoke_type): Don't share primitive types
5807         for return values.
5808
5809 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
5810
5811         * metadata-verify.c: Initial method header verification.
5812
5813 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
5814
5815         * metadata-verify.c (verify_import_table): The IAT contents
5816         might end been patched by the windows DL when running with
5817         coree enabled.
5818
5819 2009-06-15 Rodrigo Kumpera  <rkumpera@novell.com>
5820
5821         * class.c (mono_class_from_typeref): If the enclosing type is not
5822         found return null instead of crashing. Fixes #508487.
5823
5824 2009-06-15  Atsushi Enomoto  <atsushi@ximian.com>
5825
5826         * normalization-tables.h : updated to the latest unicode charcter
5827           data.
5828         * appdomain.c : bump corlib version.
5829
5830 2009-06-14  Zoltan Varga  <vargaz@gmail.com>
5831
5832         * class.c (mono_class_from_name): Fix support for assembly references
5833         in the EXPORTEDTYPE table. Fixes #511704.
5834
5835 2009-06-13  Geoff Norton  <gnorton@novell.com>
5836
5837         * domain.c: Ensure that mono_domain_assembly_open actually opens the
5838         assembly in the target domain.
5839
5840 2009-06-12  Robert Jordan  <robertj@gmx.net>
5841
5842         * cominterop.c (cominterop_get_ccw): Increment mspec's SizeParamIndex
5843         because "this" of the managed signature has become an
5844         ordinary parameter in the unmanaged signature.
5845
5846 2009-06-12  Zoltan Varga  <vargaz@gmail.com>
5847
5848         * class-internals.h (struct _MonoGenericContainer): Add an 'image'
5849         field for owner-less generic containers.
5850
5851         * reflection.c (mono_reflection_initialize_generic_parameter): Set the
5852         image field of the owner-less generic containers created here.
5853
5854         * metadata.c (mono_metadata_load_generic_params): Ditto, the
5855         contain is ownerless until the caller sets its owner.
5856
5857         * metadata.c (type_in_image): Handle owner-less generic containers
5858         correctly.
5859         
5860 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
5861
5862         * image.c (mono_image_close): Support debug_assembly_unload for
5863         dynamic images too.
5864
5865 2009-06-11 Andrés G. Aragoneses  <aaragoneses@novell.com>
5866
5867         * class.c: Fix some typos in comments.
5868
5869 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
5870
5871         * reflection.c (add_custom_modifiers): Avoid reading invalid memory.
5872
5873         * threads.c (mono_thread_execute_interruption): Avoid creating the
5874         abort exception object while holding the synch_cs lock.
5875
5876 2009-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5877
5878         * metadata-verify.c: Verify basic cattr content.
5879
5880 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
5881
5882         * reflection.c (add_exported_type): Don't set the FORWARDER flag on
5883         nested types.
5884         
5885         * reflection.c (mono_image_fill_export_table_from_type_forwarders): Add
5886         support for nested types. Fixes #511704.
5887
5888 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5889
5890         * metadata-verify.c: Verify methodspec signatures.
5891
5892 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5893
5894         * metadata-verify.c: Verify typespec signatures.
5895
5896 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
5897
5898         * metadata.c (free_inflated_method): Call 
5899         mono_marshal_free_inflated_wrappers (), which was missed earlier.
5900
5901 2009-06-08  Miguel de Icaza  <miguel@novell.com>
5902
5903         * mono-config.c: Small change to report the PPC64/ILP32 model.
5904
5905 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5906
5907         * metadata-verify.c (parse_type): Check szarray.
5908
5909 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5910
5911         * metadata-verify.c (parse_type): Check fnptr.
5912
5913 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5914
5915         * metadata-verify.c (parse_type): Check generic instances.
5916
5917 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5918
5919         * metadata-verify.c (parse_type): Check array shape.
5920
5921 2009-06-05  Robert Jordan  <robertj@gmx.net>
5922
5923         * class.c (mono_class_create_from_typedef): Check only for
5924         mscorlib's System.Array.
5925
5926 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5927
5928         * metadata-verify.c (parse_type): Check pointer, class/valuetype
5929         and generic params. 
5930
5931         * metadata-verify.c (parse_field): Check the signature.
5932
5933 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5934
5935         * metadata-verify.c: Implement locals signature check.
5936
5937 2009-06-04  Marek Safar  <marek.safar@gmail.com>
5938
5939         * domain.c: Add .NET 4.0 Beta 1 version.
5940
5941 2009-06-04  Bill Holmes  <billholmes54@gmail.com>
5942
5943         * cominterop.c (cominterop_ccw_queryinterface): Fix for bug 499566.
5944           For QueryInterface on CCWs consider the base class
5945           interfaces as well.
5946
5947         Code is contributed under MIT/X11 license.
5948
5949 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
5950
5951         * wrapper-types.h: Delete STATIC_RGCTX_INVOKE.
5952
5953         * marshal.c (mono_marshal_ret_static_rgctx_invoke): Remove, no longer
5954         used.
5955
5956         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
5957         adding a static-rgctx invoke wrapper, it is done by the runtime trampolines.
5958
5959         * generic-sharing.c (inflate_other_data): Ditto.
5960         
5961 2009-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5962
5963         * metadata-verify.c: Implement property signature check.
5964
5965 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5966
5967         * sgen-gc.h: Register saving support for PPC.
5968
5969 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5970
5971         * sgen-gc.c: Fixed a pthread TLS screwup.
5972
5973 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5974
5975         * sgen-gc.c: Do TLS using pthread API if __thread keyword is not
5976         supported.
5977
5978 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5979
5980         * sgen-gc.c: Disable TLA and managed allocation if the __thread
5981         keyword is not supported.
5982
5983 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
5984
5985         * marshal.c metadata.c: Applied patch from Ulrich Weigand 
5986         <uweigand@de.ibm.com>: Free the wrappers of inflated generic methods when
5987         the inflated method is freed. Fixes #508389.
5988
5989         The code is contributed under the MIT/X11 license.
5990         
5991 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
5992
5993         * marshal.c (get_wrapper_target_class): New helper function.
5994         (mono_marshal_get_runtime_invoke): Place runtime-invoke wrappers into
5995         the <Module> class of the image. Fixes #509049.
5996
5997 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5998
5999         * threads.c (ves_icall_System_Threading_Thread_Sleep_internal):
6000         Check if the thread was interrupted and proccess it straight away.
6001         Makes abortion much more responsive.
6002
6003 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6004
6005         * threads.c (mono_thread_execute_interruption): Use atomic cas with
6006         MonoThread::interruption_requested to match it's counterpart.
6007
6008         Fixes a hang in abort-stress-1 on a 2 core x86.
6009
6010         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
6011         Fix warning.
6012
6013 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6014
6015         Change MonoImage::name_cache to be protected by the image lock
6016         instead of the loader lock.
6017
6018         * appdomain.c (deregister_reflection_info_roots): Protect access
6019         to name_cache.
6020
6021         * class.c (mono_image_init_name_cache): Change from the loader lock
6022         to the image lock. Check if the cache wasn't already created.
6023
6024         * class.c: Change from the loader to the image lock.
6025
6026         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Fix
6027         the code to hold the image lock while iterating over name_cache and
6028         not go into mono_array_new holding it.
6029
6030         * metadata-internals.h: Add a comment about this change.
6031
6032 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6033
6034         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
6035         Under the 2.0 profile raise the loader error.
6036
6037         Fixes #508532.
6038
6039 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6040
6041         * marshal.c (mono_marshal_get_runtime_invoke): Emit the right kind
6042         of ldind opcode for generic instances so we don't fail for direct wrappers.
6043         This only affect direct calls.
6044
6045 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
6046
6047         * reflection.c (create_dynamic_mono_image): Fix warnings.
6048
6049         * generic-sharing.c (other_info_equal): Ditto.
6050         
6051 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
6052
6053         * metadata-verify.c: Implement field signature check.
6054
6055 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
6056
6057         * metadata-verify.c: Implement standalone signature check.
6058
6059 2009-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
6060
6061         * metadata-verify.c: Implement methodref signature check.
6062
6063 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
6064
6065         * object-internals.h (MonoRuntimeCallbacks): New structure containing
6066         callbacks supplied by the runtime.
6067
6068         * object.c (mono_install_callbacks): New internal function to install
6069         the callbacks.
6070
6071         * object.c (mono_create_ftnptr): Move the implementation of this to
6072         mini/.
6073
6074         * object.c (mono_get_addr_from_ftnptr): Ditto.  
6075
6076 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
6077
6078         * metadata-verify.c (parse_return_type): Proper byref check.
6079         * metadata-verify.c (is_valid_method_signature): Check for zero arity
6080         generic signatures and method params.
6081
6082 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
6083
6084         * metadata-verify.c (decode_signature_header): Fix bounds check.
6085
6086         * metadata-verify.c (parse_custom_mods): Check custom mods.
6087
6088         * metadata-verify.c (parse_type): Do initial basic verification
6089         of valid values.
6090         
6091         * metadata-verify.c (is_valid_method_signature): Parse the generic
6092         param count.
6093
6094 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
6095
6096         * icall.c (ves_icall_Type_GetMethodsByName): Virtual methods should be
6097         discarded based on their most specific definition so we set the method_slots
6098         array before checking if the method is acceptable or not.
6099
6100         Fixes #506757.
6101
6102 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6103
6104         * icall.c: Free the old array when resizing a mono_ptr_array.
6105
6106 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6107
6108         * reflection.c (create_dynamic_mono_image): Use mono_object_hash()
6109         for the hashes whose keys are managed objects.
6110
6111 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6112
6113         * object-internals.h, threads.c: Set the execution context on
6114         thread start here, not in corlib.
6115
6116         * appdomain.c: Bump corlib version.
6117
6118 2009-05-27  Martin Baulig  <martin@ximian.com>
6119
6120         * mono-debug.c (mono_debug_init): Use `MONO_DEBUG_FORMAT_DEBUGGER'
6121         if `_mono_debug_using_mono_debugger' is set to make things work
6122         properly when embedding Mono.
6123
6124 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
6125
6126         * class.c (mono_class_setup_fields): Don't mark simd types as having
6127         16 bytes alignment as the whole runtime doesn't support.
6128
6129 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
6130
6131         * metadata-verify.c (safe_read): Use endian safe read macros.
6132
6133 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
6134
6135         * object.c (mono_create_ftnptr): Don't allocate from the code mempool since
6136         it is read-only when using full aot.
6137
6138 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6139
6140         * metadata-verify.c (is_valid_method_signature): Verify parts
6141         of the return type. Provide an error message in case of failure.
6142
6143 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6144
6145         * metadata-verify.c (is_valid_method_signature): Verify the call conv.
6146
6147 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6148
6149         * metadata-verify.c: Include the size prefix in the bounds check.
6150
6151 2009-05-22  Miguel de Icaza  <miguel@novell.com>
6152
6153         * icall.c: Remove warnings.
6154
6155         * mono-config.c: Allow for CONFIG_CPU to be set in config.h and
6156         prevent auto-detection based on GCC defines.
6157
6158         Add PS3
6159
6160         * metadata-verify.c: Do not include signal.h
6161
6162         * generic-sharing.c, marshal.c: Add returns to avoid some warning
6163         messages.  Not sure why the g_assert_not_reached is not enough to
6164         quiet the compiler.
6165         
6166
6167         * appdomain.c: Remove code that is not used when
6168         DISABLE_SHADOW_COPY is set.
6169
6170         * image.c: use g_getenv
6171
6172 2009-05-21  Miguel de Icaza  <miguel@novell.com>
6173
6174         * reflection.c: Remove code that it not used with
6175         DISABLE_REFLECTION_EMIT is defined.
6176
6177 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
6178
6179         * marshal.c (mono_marshal_get_runtime_invoke): Share more runtime
6180         invoke wrappers.
6181
6182 2009-05-20  Miguel de Icaza  <miguel@novell.com>
6183
6184         * socket-io.c
6185         (ves_icall_System_Net_Sockets_Socket_Available_internal): Remove
6186         the ifdef here and instead put that on io-layer
6187
6188 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6189
6190         * metadata-verify.c: Verify the generic param constraint table.
6191
6192 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6193
6194         * metadata-verify.c (verify_generic_param_table): Fix
6195         thinko on the valid flags bits for generic params.
6196
6197 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6198
6199         * metadata-verify.c: Verify the methodspec table.
6200
6201 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6202
6203         * metadata-verify.c: Verify the generic param table.
6204
6205 2009-05-19  Mark Probst  <mark.probst@gmail.com>
6206
6207         * sgen-gc.c: Store and use the count with REMSET_VTYPE.
6208
6209 2009-05-19  Mark Probst  <mark.probst@gmail.com>
6210
6211         * sgen-gc.c: Use generation enum more consistently and use the
6212         correct generation in mono_gc_register_for_finalization().
6213
6214 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
6215
6216         * metadata-verify.c: Verify the nested class table.
6217
6218 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
6219
6220         * metadata-verify.c: Verify the manifest resource table.
6221
6222 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
6223
6224         * debug-helpers.c (dis_one): Add little-endian support for ldstr.
6225
6226 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
6227
6228         * class.c (mono_class_get_vtable_entry): Avoid adding static-rgctx
6229         wrappers, this is now done in the JIT.
6230         
6231         * class.c (mono_set_generic_sharing_supported): New internal function.
6232         (mono_class_generic_sharing_enabled): Move the #ifdef stuff to the JIT.
6233
6234 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6235
6236         * metadata-verify.c: Verify the exported type table.
6237
6238 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6239
6240         * pedump.c (main): Fake an assembly for netmodules to make the verifier happy.
6241
6242 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6243
6244         * metadata-verify.c: Verify the file table.
6245
6246 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6247
6248         * metadata-verify.c (verify_assembly_table): Fix an error message.
6249
6250         * metadata-verify.c: Verify the assemblyref table.
6251
6252 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6253
6254         * metadata-verify.c (verify_assembly_table): Fix the valid
6255         bits mask for flags.
6256
6257 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
6258
6259         * debug-helpers.c (mono_method_full_name): Print generic parameters of
6260         generic methods as well.
6261
6262 2009-05-15  Geoff Norton  <gnorton@novell.com>
6263
6264         * gc.c: MachO/Darwin supports and uses semaphores fine for this 
6265         use-case and is significantly more performant than the wapi layer.
6266
6267 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6268
6269         * metadata-verify.c: Verify the assembly table.
6270
6271 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6272
6273         * metadata-verify.c: Fix rows limit check.
6274
6275 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6276
6277         * metadata-verify.c: Verify the fieldrva table.
6278
6279 2009-05-13  Mark Probst  <mark.probst@gmail.com>
6280
6281         * sgen.c: Speed up weak links and finalizers by grouping them by
6282         generation.
6283
6284 2009-05-13  Mark Probst  <mark.probst@gmail.com>
6285
6286         * marshal.c (delegate_hash_table_add): When overwriting an entry,
6287         free the old GCHandle (only applies to SGen).
6288
6289 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
6290
6291         * loader.c (mono_get_method_from_token): Avoid the expensive call to
6292         mono_metadata_load_generic_params () for non-generic methods.
6293
6294 2009-05-12  Mark Probst  <mark.probst@gmail.com>
6295
6296         * monitor.c, monitor.h (mono_monitor_get_object_monitor_weak_link):
6297         New function for returning a monitor's weak link if it has one.
6298
6299         * sgen-gc.c: Remove an object's monitor's weak link (if it has
6300         one) when clearing a domain.  These can still be around because
6301         the object might not have been collected.
6302
6303 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
6304
6305         * gc.c: Fix a warning.
6306
6307 2009-05-12  Kornél Pál  <kornelpal@gmail.com>
6308
6309         * gc.c (mono_gc_init): Set gc_thread on creation. This avoids the
6310         prevous wait that resulted in a deadlock on Windows when initializing
6311         the runtime form DllMain. Also results in improved startup time.
6312         (finalizer_thread): Get rid of thread_started_event.
6313         * threads.c, threads-types.h (mono_thread_create_internal): Return the
6314         resulting MonoThread.
6315
6316         Contributed under MIT/X11 license.
6317
6318 2009-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
6319
6320         * metadata-verify.c: Verify the implmap table.
6321         Don't require that #US and #Strings be present.
6322
6323 2009-05-11  Sebastien Pouliot  <sebastien@ximian.com>
6324
6325         * security-core-clr.c: Delegate checks are done at creation time,
6326         not a invocation time. Fix exception for Telerik Silverlight demo
6327
6328 2009-05-11  Mark Probst  <mark.probst@gmail.com>
6329
6330         * sgen-gc.c (need_remove_object_for_domain): Remove the special
6331         case for the Thread class.
6332
6333         * threads.c: Do clean-up of abort exception/state in
6334         thread_cleanup() instead of Thread.free_internal().  Also clean up
6335         current_appcontext.  The reason we have to do that is because
6336         those references might point into another domain and if that
6337         domain is unloaded before the thread is finalized, they point to
6338         invalid data.
6339
6340 2009-05-10  Andreas Faerber  <andreas.faerber@web.de>
6341
6342         * null-gc.c (mono_gc_weak_link_add, mono_gc_clear_domain): Fix
6343         stub signatures.
6344         
6345         Contributed unter MIT/X11 license.
6346
6347 2009-05-09  Miguel de Icaza  <miguel@novell.com>
6348
6349         * verify.c, metadata-verifier.c: Add support for disabling the
6350         verifier in some builds.
6351
6352         [ Sorry, my previous commit accidentally commited some work in
6353         progress ]
6354
6355 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
6356
6357         * class.c (mono_class_setup_fields): Set class->field.first for
6358         generic instances.
6359
6360 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
6361
6362         * metadata-verify.c: Verify the typespec table.
6363
6364 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
6365
6366         * metadata-verify.c: Verify the module table.
6367
6368 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6369
6370         * metadata-verify.c: Verify the methodimpl table.
6371
6372 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6373
6374         * metadata-verify.c: Verify the property table.
6375
6376 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
6377
6378         * debug-helpers.c (mono_method_desc_match): Add support for generic
6379         glob patterns.
6380
6381 2009-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
6382
6383         * metadata-verify.c: Verify the propertymap table.
6384
6385 2009-05-04 Rodrigo Kumpera  <rkumpera@novell.com>
6386
6387         * metadata-verify.c: Verify the event table.
6388
6389         * metadata-verify.c (search_sorted_table): Fix offset
6390         calculation.
6391
6392 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
6393
6394         * domain-internals.h (struct _MonoJitInfo): Add a 'from_llvm' flag.
6395
6396 2009-05-01  Mark Probst  <mark.probst@gmail.com>
6397
6398         * gc.c (mono_gc_run_finalize): Don't set the domain too late,
6399         because mono_delegate_free_ftnptr() needs it.
6400
6401 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6402
6403         * metadata-verify.c: Verify the eventmap table.
6404
6405 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6406
6407         * metadata-verify.c: Verify the standalonesig table.
6408
6409 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6410
6411         * metadata-verify.c: Verify the field layout table.
6412
6413 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6414
6415         * class.c (mono_type_get_name_recurse): Don't crash
6416         for ownerless generic params.
6417
6418         * debug-helpers.c (mono_type_get_desc): Correct the format
6419         for ownerless generic params.
6420
6421 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6422
6423         * metadata-verify.c: Verify the class layout table.
6424
6425 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6426
6427         * metadata-verify.c: Verify the decl security table.
6428
6429 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6430
6431         * domain.c (mono_domain_set_internal_with_options): Don't do
6432         anything if the old domain is the same as the old one.  Fixes
6433         #499326.
6434
6435 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6436
6437         * appdomain.c: Deregister the reflection_info roots when unloading
6438         a domain.
6439
6440         * sgen-gc.c, domain.c, gc-internal.h: mono_gc_clear_domain() nulls
6441         memory allocated by a domain and frees its disappearing links.
6442
6443         * boehm-gc.c, null-gc.c: Empty implementation of
6444         mono_gc_clear_domain().
6445
6446 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6447
6448         * appdomain.c (clear_cached_vtable): Free the static fields memory
6449         block.
6450
6451 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6452
6453         * gc.c: Set the correct domain when invoking finalizers.
6454
6455         * appdomain.c: Set the correct domain when creating threads.
6456
6457 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6458
6459         * sgen-gc.c: Fix skip size for vectors.
6460
6461 2009-05-03  Martin Baulig  <martin@ximian.com>
6462
6463         * mono-debug-debugger.c
6464         (mono_debugger_check_breakpoints): Check class init handlers even
6465         if we don't have any method load handers.
6466
6467 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
6468
6469         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid 
6470         returning refonly assemblies if refonly is FALSE. Fixes #499013.
6471
6472 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
6473
6474         * metadata-verify.c: Verify the field marshal table.
6475
6476 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
6477
6478         * metadata-verify.c: Verify the custom attribute table.
6479
6480 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6481
6482         * metadata-verify.c: Verify the constant table.
6483
6484 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6485
6486         * metadata-verify.c: Verify the memberef table.
6487
6488 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6489
6490         * metadata-verify.c (get_coded_index_token): Remove
6491         dead argument.
6492
6493 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6494
6495         * metadata-verify.c: Verify the interfaceimpl table.
6496
6497 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6498
6499         * verify.c: Improve error message.
6500
6501         * debug-helpers.c (mono_type_get_desc): Harden the code that
6502         deals with VAR and MVAR.
6503
6504 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
6505
6506         * image.c (mono_image_fixup_vtable): Avoid casting an lvalue. Fixes 
6507         part of #498692.
6508
6509 2009-04-23 Tom Hindle <tom_hindle@sil.org>
6510
6511         * cominterop.c (ves_icall_System_Runtime_InteropServices_Marshal_ReleaseComObjectInternal):
6512         changed to match .Net behaviour of not aborting on additional calls to ReleaseComObject.
6513
6514 2009-04-28  Sebastien Pouliot  <sebastien@ximian.com>
6515
6516         * security-core-clr.c: Avoid redundant checks for platform code, 
6517         e.g. check for method and for class (very common) and check
6518         for class and outer class (less common)...
6519
6520 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
6521
6522         * reflection.c: Avoid returning random cattrs for synthetic methods.
6523         Fixes #498545.
6524
6525 2009-04-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
6526
6527         * assembly.c: assemblies in the GAC should never be shadow-copied.
6528
6529 2009-04-26  Mark Probst  <mark.probst@gmail.com>
6530
6531         * domain.c, domain-internals.h: Disable
6532         track_resurrection_{objects,handles}_hash in MonoDomain if using
6533         SGen.
6534
6535 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6536
6537         * metadata-verify.c: Verify the param table.
6538
6539 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6540
6541         * metadata-verify.c (verify_typedef_table): Range check FieldList and
6542         MethodList.
6543
6544         * metadata-verify.c (verify_method_table): Proper check the ParamList
6545         field.
6546
6547 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6548
6549         * metadata-verify.c (verify_method_table): Check for runtime
6550         implemented functions such as delegate .ctors. Remove spurious
6551         printf.
6552         
6553 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6554
6555         * pedump.c: Proper initialize the runtime forcing the 2.0 profile.
6556
6557 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6558
6559         Don't allocate MonoGenericInfo for ownerless generic params.
6560         * class-internals.h (MonoGenericParam::info): Move field to ...
6561         (MonoGenericParamFull): ... this.  New struct.
6562         (MonoGenericContainer::type_params): Change type to
6563         MonoGenericParamFull.
6564         (MonoGenericParam, MonoGenericContainer): Update accessors.
6565         * metadata.c (mono_metadata_parse_generic_param): Don't initialize
6566         'info' field for ownerless generic param.
6567         (mono_metadata_load_generic_params): Update to changes.
6568         * reflection.c (mono_reflection_create_generic_class): Likewise.
6569         (reflection_methodbuilder_to_mono_method): Likewise.
6570         (mono_reflection_initialize_generic_parameter): Likewise.
6571
6572 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6573
6574         Don't use MonoGenericParamInfo for ownerless generic params.
6575         * class.c (get_anon_gparam_class, set_anon_gparam_class): New.  Don't
6576         use ParamInfo class at all.
6577         (mono_class_from_generic_parameter): Use them.
6578         (make_generic_param_class): Fix a couple of instances where 'pinfo
6579         == NULL' wasn't handle.
6580
6581 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6582
6583         * class.c (make_generic_param_class): Carve out of ...
6584         (mono_class_from_generic_parameter): ... here.
6585
6586 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6587
6588         Simplify mono_class_from_generic_parameter
6589         * class-internals.h (MonoGenericParamInfo::token): New field.
6590         * metadata.c (mono_metadata_load_generic_params): Initialize it
6591         from metadata.
6592         * class.c (mono_class_from_generic_parameter): Use it instead of
6593         searching through metadata.
6594
6595 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6596
6597         * metadata-verify.c: Add verification of the method table.
6598
6599 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6600
6601         * icall.c (ves_icall_Type_GetMethodsByName): Fix memleak for the
6602         Delegate::Invoke optimization.
6603
6604 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6605
6606         * appdomain.c (mono_domain_create_appdomain_internal): Free the
6607         string returned by get_shadow_assembly_location_base.
6608
6609         * appdomain.c (get_shadow_assembly_location_base): Add a comment
6610         about caller's ownership.
6611
6612 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6613
6614         * reflection.c: Add mono_reflection_cleanup_domain to cleanup
6615         reflection memory on domain unload.
6616
6617         * domain.c (mono_domain_free): Don't free refobject_hash, let the
6618         reflection cleanup code do it.
6619
6620         * domain-internals.h: Add mono_reflection_cleanup_domain.
6621
6622         This fixes a memory leak for managed mirrors of reflection objects
6623         on domain unload. 
6624
6625 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
6626
6627         * metadata-verify.c: Implement more verification of the field table.
6628
6629 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
6630
6631         * pedump.c (main): Init mono with mscorlib so it defaults to 2.0 and
6632         doesn't try to parse the input assembly, which can be broken.
6633
6634 2009-04-23  Mark Probst  <mark.probst@gmail.com>
6635
6636         * boehm-gc.c, gc-internal.h, gc.c, monitor.c, null-gc.c,
6637         sgen-gc.c: Implement track resurrection in weak GC handles in SGen
6638         by using the lowest bit in the link to store whether the link is
6639         tracked.  Move the track_resurrection hashes into boehm-gc.c.
6640
6641 2009-04-22  Miguel de Icaza  <miguel@novell.com>
6642
6643         * Makefile.am: Split the console support in platform specific code
6644         and put together a framework for making this easy in the future so
6645         that we can start splitting code instead of having a mess of PLATFORM_WIN32
6646
6647 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6648
6649         * pedump.c: Fix a warning.
6650
6651 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6652
6653         * verify.c (mono_delegate_type_equal): Compare valuetypes using
6654         mono_class_from_mono_type to avoid bad interactions with the dual representation
6655         of the generic type definition.
6656
6657 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6658
6659         * verify.c (do_invoke_method): Use mono_class_from_mono_type to
6660         get the MonoClass for the call context type as it might be a generic
6661         instance.
6662
6663         Fixes #491483.
6664
6665 2009-04-21  Mark Probst  <mark.probst@gmail.com>
6666
6667         * object-internals.h: The Thread object has no execution_context
6668         member anymore.
6669
6670         * threads.c, threadpool.c, threads-types.h: Accessor functions for
6671         the execution context.
6672
6673         * appdomain.c: Bump corlib version.
6674
6675 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6676
6677         * verify.c (do_newobj): Improve error message.
6678
6679 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6680
6681         * verify.c (verify_clause_relationship): Only mask as an error if the exception clause
6682         is nested in the filter block.
6683
6684         * verify.c (verify_clause_relationship): The disjoint check must verify if the exception
6685         block is not fully nested.
6686
6687         Fixes #495656.
6688
6689 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6690
6691         * verify.c (verify_type_compatibility_full): Compare MonoClass and
6692         not MonoType to check for equality of valuetypes as the generic type
6693         definition allows for two different encodings: the generic type definition
6694         class or a generic instance over the GTD arguments.
6695
6696         Fixes #496175.
6697
6698 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6699
6700         * verify.c (dump_stack_value): Fix compilation with extra debug turned on.
6701
6702         * verify.c (do_initobj): Improve error message.
6703
6704 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6705
6706         * metadata-verify.c: Enable pe verification as the issue with #496453
6707         is that the authenticode data directory have a different unspecified
6708         format. Ignore it for now.
6709
6710         * pedump.c: Run the metadata verifier together with the IL verifier.
6711
6712         Fixes ##496453.
6713
6714 2009-04-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6715
6716         * metadata-verify.c: Temporarily disable pe verification due to #496453.
6717
6718 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6719
6720         * class.c (can_access_type): Check visibility against
6721         the element type for pointers and arrays.
6722
6723         Fixes #496150.
6724
6725 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6726
6727         * metadata-verify.c: Fix cli and table verification to use information
6728         from the MonoImage. A lot of duplicated code got killed.
6729
6730 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6731
6732
6733         This patch starts to integrate the metadata verifier with the runtime code.
6734
6735         This patch causes major regression in functionality for the metadata verifier
6736         as cli and table verification are disabled since they require to be ported to
6737         use MonoImage information.
6738
6739         * image.c (do_mono_image_load): Split the code in this function
6740         into mono_image_load_pe_data and mono_image_load_cli_data.
6741         Add     care_about_pecoff parameter to not load pecoff data.
6742         Call into the metadata verifier for pecoff and cli verification.
6743
6744         * image.c (mono_image_open_raw): New function that doesn't perform
6745         any parsing of the image contents.
6746         
6747         The reason for the 3 new functions is to give pedump better control
6748         into the interaction with the verifier.
6749
6750         * metadata-internals.h: Add new functions from image.c as part of the
6751         internal mono API.
6752
6753         * metadata-verify.c: Split mono_image_verify into mono_verifier_verify_pe_data,
6754         mono_verifier_verify_cli_data and mono_verifier_verify_table_data. Prepare
6755         to make those functions work together with the runtime.
6756
6757         * verify.c: Add mono_verifier_is_enabled_for_image function that returns
6758         true if the image needs to be verified.
6759
6760         * verify-internals.h: Export new functions from metadata-verify.c and verify.c.
6761
6762         * pedump.c: Use new metadata verifier API.
6763
6764 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
6765
6766         * object.c (mono_install_vtable_trampoline): Make this receive a
6767         trampoline creation function instead of trampoline, allowing the JIT
6768         to use a different trampoline for each vtable.
6769
6770 2009-04-18  Mark Probst  <mark.probst@gmail.com>
6771
6772         * object.c (mono_raise_exception): Don't reset the thread abort
6773         exception state here.
6774
6775 2009-04-18  Mark Probst  <mark.probst@gmail.com>
6776
6777         * icall-def.h: New icall for getting the thread abort exception
6778         state for a thread.
6779
6780         * object.c, thread.c, object-internals.h: A thread's abort
6781         exception state is now a GC handle.  To get the object it stands
6782         for, we must move it into the current app domain, if it's
6783         different than the one where it originated from.
6784
6785         * appdomain.c: Bump corlib version.
6786
6787         * domain.c, domain-internals.h: New function for setting the
6788         domain and migrate the thread abort exception or not.
6789
6790 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6791
6792         * metadata-verify.c: Add initial verification of the
6793         field table.
6794
6795 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6796
6797         * metadata-verify.c: Add a macro to conditionally enable
6798         dumping of verification information. Add  make_coded_token
6799         and search_sorted_table to enable search sorted tables
6800         by a given coded token.
6801
6802 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6803
6804         * metadata-verify.c: Add array mapping from table index
6805         to description offset. Add get_col_offset and get_col_size
6806         functions.
6807
6808 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6809
6810         * metadata-verify.c: Add remaining table descriptions offsets.
6811         Add remaining coded index descriptions.
6812
6813 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6814
6815         * metadata-verify.c: Fixed constant table description.
6816         Fixed calculation of HasCustomAttribute coded index size.
6817         Fixed calculation of size for many table indexes. 
6818
6819 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6820
6821         * pedump.c (dump_metadata): Dump table offset instead
6822         of useless pointer in memory.
6823
6824 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6825
6826         * metadata-verify.c (verify_typedef_table): Add tests for MethodList.
6827
6828 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6829
6830         * metadata-verify.c (verify_typedef_table): Add tests for FieldList and
6831         a missing of for interface types.
6832
6833 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6834
6835         * metadata-verify.c (verify_pe_optional_header): Add comment of why
6836         the code is commented.
6837
6838         * metadata-verify.c (verify_resources_table): Remove spurious printf
6839         and don't fail if there are unmanaged resources. Gmcs generates a useless
6840         one     for all assemblies - I bet it's some MS compatibility junk.
6841
6842 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6843
6844         * metadata-verify.c (verify_typedef_table): Verify the extends field.
6845
6846         * metadata-verify.c (mono_image_verify): Add a is_corlib.
6847
6848         * verify-internals.h: Same.
6849
6850         * pedump.c: Fix for mono_image_verify new signature.
6851
6852 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6853
6854         * metadata-verify.c (verify_typedef_table): Verify for some invalid
6855         flags combinations.
6856
6857 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6858
6859         * metadata-verify.c (verify_module_table): Ignore the generation field.
6860
6861 2009-04-15  Martin Baulig  <martin@ximian.com>
6862
6863         * debug-mono-symfile.c
6864         (mono_debug_symfile_lookup_location): Don't print a warning for
6865         unknown extended opcodes if they're within 0x40 and 0x7f.
6866
6867 2009-04-15  Zoltan Varga  <vargaz@gmail.com>
6868
6869         * marshal.c (mono_marshal_get_runtime_invoke_sig): Don't share runtime
6870         invoke signatures returning an enum. Fixes #494847.
6871
6872 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6873
6874         * metadata-verify.c: Initial code to verify the typedef table.
6875
6876 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6877
6878         * verify.c (mono_method_verify): Don't fail if an unconditional branch
6879         with non empty stack happens before the beginning of a try block.
6880
6881         Fixes #494812.
6882
6883 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6884
6885         * metadata-verify.c: Verify typename and typenamespace fields of
6886         the typeref table.
6887
6888 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
6889
6890         * metadata-verify.c: Initial code to verify the typeref table.
6891
6892 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
6893
6894         * verify.c (verify_delegate_compatibility): Fix error message.
6895
6896 2009-04-14  Sebastien Pouliot  <sebastien@ximian.com>
6897
6898         * security-core-clr.c: Fix typo
6899
6900 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
6901
6902         * marshal.c (delegate_hash_table_add): Make delegate_target_locations 
6903         a MonoGHashTable to keep its values alive.
6904         (emit_marshal_boolean): Fix a warning.
6905
6906 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
6907
6908         * socket-io.c: don't return IPv4/IPv6 addresses if the machine does
6909         not have any interface configured for IPv4/IPv6.
6910
6911 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
6912
6913         * assembly.c: fix typo in error message.
6914
6915 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
6916
6917         * marshal.c (mono_delegate_to_ftnptr): Use mono_gc_alloc_fixed () for
6918         allocating the location holding the this argument to prevent
6919         'too many root sets' errors.
6920
6921         * object.c (mono_class_create_runtime_vtable): Set field->offset to -1
6922         to mark fields as special static.
6923         (mono_field_static_get_value): Handle special static fields.
6924         (mono_field_static_set_value): Ditto.
6925
6926         * class-internals.h (struct _MonoClassField): Document this.
6927
6928 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
6929
6930         * cominterop.c (mono_cominterop_emit_marshal_com_interface): Assigning
6931           the argument a value of null for the MARSHAL_ACTION_MANAGED_CONV_OUT
6932           case.  This will handle when managed code returns null to native code.
6933
6934         Code is contributed under MIT/X11 license.
6935
6936 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
6937
6938         * object.c (build_imt_slots): Changing a free to a g_free to match
6939           the g_malloc0 in add_imt_builder_entry that allocated this memory.
6940
6941         Code is contributed under MIT/X11 license.
6942
6943 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
6944
6945         * marshal.c (emit_marshal_boolean): Adding code to ensure that
6946           the correct TRUE value is passed through the marshaling layer.
6947
6948         Code is contributed under MIT/X11 license.
6949
6950 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
6951
6952         * marshal.c (mono_marshal_emit_managed_wrapper): Handle closed delegates
6953         correctly. Fixes #492330.
6954         
6955         * marshal.c: Fix the embedding of object pointers into JITted code in
6956         the native-to-managed wrappers by allocating some GC tracked memory, and
6957         embedding the address of that.
6958
6959 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
6960
6961         * object.c (mono_class_create_runtime_vtable): Avoid putting MonoMethod
6962         pointers into the vtable.
6963
6964 2009-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
6965
6966         * verify.c (mono_delegate_type_equal): Proper check MONO_TYPE_CLASS.
6967
6968         * verify.c (verify_ldftn_delegate): Improve error message.
6969
6970 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
6971
6972         * reflection.c (my_mono_class_from_mono_type): Remove.
6973
6974 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
6975
6976         Prepare to reduce memory usage of owner-less generic parameters (1/n)
6977         * class-internals.h (MonoGenericParam): Carve out pklass, name, flags
6978         and constraints fields into ...
6979         (MonoGenericParamInfo): ... this.
6980         (mono_generic_param_info, mono_generic_container_get_param_info):
6981         New accessors.
6982         * class.c, debug-helpers.c, icall.c: Update to changes.
6983         * metadata.c, reflection.c, verify.c: Likewise.
6984
6985 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
6986
6987         * debug-helpers.c (dis_one): Fix decoding of strings in dynamic images.
6988
6989         * marshal.c (get_runtime_invoke_type): Share enums with their base types.
6990         
6991         * marshal.c (get_runtime_invoke_type): Share pointers with ints and
6992         booleans with sbytes.
6993
6994 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6995
6996         * class.c (can_access_instantiation): Verify accesibility of element types
6997         for arrays and pointers.
6998
6999         * class.c (can_access_type): Return true if the target class is VAR or MVAR.
7000
7001         * class.c (mono_method_can_access_method_full): Fix typos in the documentation.
7002
7003         Fixes #493068.
7004
7005 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
7006
7007         * verify.c (do_invoke_method): Improve error messages.
7008
7009 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
7010
7011         * verify.c:  Fixing the MSVC build.
7012
7013         Code is contributed under MIT/X11 license.
7014
7015 2009-04-08  Sebastien Pouliot  <sebastien@ximian.com>
7016
7017         * security-core-clr.c: Simplify get_reflection_caller not to call
7018         mono_method_get_last_managed (another stack walk) and adjust the
7019         callers to handle a (should not happen) NULL return value.
7020
7021 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
7022
7023         Add accessors to some MonoGenericParam fields
7024         * class-internals.h (mono_generic_param_owner): New accessor.
7025         (mono_generic_param_num): Likewise.
7026         (mono_type_get_generic_param_owner): New helper.
7027         (mono_type_get_generic_param_num): New helper.
7028         * class.c, icall.c, metadata.c, reflection.c, verify.c: Use them.
7029
7030 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
7031
7032         * class-internals.h (mono_generic_container_get_param): New wrapper.
7033         * class.c, icall.c, metadata.c, verify.c: Use it.
7034
7035 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
7036
7037         Fix gtest-252.cs
7038         * verify.c (mono_type_is_valid_type_in_context): Rewrite to use
7039         the standard case/loop.  In particular, don't complain about
7040         references to generic type definitions.
7041
7042 2009-04-07  Zoltan Varga  <vargaz@gmail.com>
7043
7044         * debug-helpers.c (dis_one): Decode string arguments.
7045
7046 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
7047
7048         * pedump.c (dump_verify_info): Dump type name correctly.
7049
7050 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
7051
7052         * verify.c (mono_method_verify): Don't init code slots for exception boundaries if they
7053         are larger than code size.
7054
7055         This can happen in valid code if the try/catch block is not followed by any instruction
7056         and do a backward branch on the leave instruction.
7057
7058         Fixes #492494.
7059
7060 2009-04-06  Sebastien Pouliot  <sebastien@ximian.com>
7061
7062         * security-core-clr.c: Fix typo while comparing second method names
7063         in can_avoid_corlib_reflection_delegate_optimization
7064
7065 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
7066
7067         * verify.c (do_throw): Don't allow an unboxed generic param ar argument.
7068
7069         Fixes #487738.
7070
7071 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
7072
7073         * metadata.c (do_mono_metadata_parse_type): Fail if we are decoding
7074         a MVAR using a class context.
7075
7076         Fixes #490335.
7077
7078 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
7079
7080         * object.c (mono_class_compute_gc_descriptor): Make this non-static.
7081
7082         * domain-internals.h (struct _MonoJitInfo): Add a 'gc_info' field.
7083
7084         * gc-internal.h (MonoGCCallbacks): New stucture containing the callback
7085         functions supplied by the JIT for the SGEN GC.
7086
7087         * sgen-gc.c: Call the callbacks supplied by the JIT to do stack marking.
7088         
7089 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
7090
7091         monitor.c (mono_monitor_try_enter_internal):
7092         Added calls to profile monitor contentions.
7093         Also duplicated a small piece of code (the "get the monitor" logic)
7094         from the fast path to the slow path, and changed the relevant goto
7095         statements, so that monitor acquisition events can be emitted from the
7096         slow path (this is by Paolo Molaro).
7097
7098 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
7099
7100         * profiler.c, profiler.h, profiler-private.h:
7101         Added support for profiling monitor contentions.
7102
7103 2009-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
7104
7105         * metadata-verify.c: Verify the modules table.
7106
7107 2009-04-02 Rodrigo Kumpera  <rkumpera@novell.com>
7108
7109         * verify.c (mono_generic_param_is_constraint_compatible): Inflate the candidate
7110         using the context of the method been verifier and not of the method been called.
7111
7112         * verify.c: Add verifier_inflate_type and mono_type_is_valid_type_in_context to
7113         safely inflate generic types. 
7114
7115 2009-04-02  Sebastien Pouliot  <sebastien@ximian.com>
7116
7117         * security-core-clr.c: Change the strategy for checking the 
7118         "reflection using delegates optimization" to avoid unneeded 
7119         attributes in multiple class libraries.
7120
7121 2009-04-02  Mark Probst  <mark.probst@gmail.com>
7122
7123         * sgen-gc.c: Remove object element in the disappearing link struct
7124         by storing the object pointer in the link.
7125
7126 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7127
7128         * pedump.c (dump_verify_info): Don't crash if signature decoding fails.
7129
7130 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7131
7132         * verify.c (verifier_load_field): Fail if the field parent could not be loaded.
7133
7134         * verify.c (mono_method_verify): Do proper bounds checking of exception
7135         clause ranges.
7136
7137 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7138
7139         * loader.c (mono_field_from_token): Don't crash if the field parent could
7140         not be decoded.
7141
7142 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7143
7144         * sgen-gc.c: Execute critical finalizers after ordinary
7145         finalizers.
7146
7147         * class-internals.h, domain.c: Add CriticalFinalizerObject to
7148         mono_defaults.
7149
7150 2009-03-31 Jb Evain <jbevain@novell.com>
7151
7152         * verify.c (do_ldstr): don't check if a string is in the user strings
7153         heap if the current image is dynamic.
7154
7155 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7156
7157         * sgen-gc.c: Wait until the last finalizer has executed when
7158         returning from WaitForPendingFinalizers.
7159
7160 2009-03-31  Martin Baulig  <martin@ximian.com>
7161
7162         * mono-debug-debugger.h (MonoDebuggerEvent): Add
7163         `MONO_DEBUGGER_EVENT_CREATE_APPDOMAIN' and
7164         `MONO_DEBUGGER_EVENT_UNLOAD_APPDOMAIN'.
7165         (mono_debugger_event_create_appdomain): New function.
7166         (mono_debugger_event_unload_appdomain): New function.
7167
7168         * appdomain.c (mono_domain_create_appdomain_internal): Call
7169         mono_debugger_event_create_appdomain().
7170
7171 2009-03-31  Martin Baulig  <martin@ximian.com>
7172
7173         * mono-debug-debugger.c
7174         (mono_debugger_register_class_init_callback): Also register the
7175         class init callback if the class is already initialized to make
7176         things work with shadow copied assemblies.
7177
7178 2009-03-31  Sebastien Pouliot  <sebastien@ximian.com>
7179
7180         * security-core-clr.c
7181         (mono_security_core_clr_ensure_reflection_access_field): Let 
7182         critical code access the field (just like we do for methods). Use
7183         check_field_access helper.
7184         (mono_security_core_clr_ensure_reflection_access_method): Use 
7185         check_field_access helper.
7186
7187 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7188
7189         * sgen-gc.c: Remove data (callback) element from FinalizeEntry and
7190         call the run-finalize function directly.
7191
7192         * gc.c, gc-internal.h: Make run_finalize() non-static.
7193
7194 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7195
7196         * sgen-gc.c: Use a separate struct for disappearing links.
7197
7198 2009-03-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
7199
7200         * socket-io.c: don't fail if the SocketOptionsFlag has Partial or
7201         * MaxIOVectorLength enabled, just ignore them.
7202         Fixes bug #349688.
7203
7204 2009-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
7205
7206         * metadata-verify.c: Fix eglib build.
7207
7208 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
7209
7210         * threads-types.h: Fix the win32 build.
7211
7212 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
7213
7214         * class.c: move coreclr inheritance/override checks to 
7215         security-core.clr.c
7216         * security-core.clr.c|h: add code from class.c with additional
7217         documentation. Fix override check when the method is not critical.
7218
7219 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
7220
7221         * debug-helpers.c (mono_method_desc_match): Make '*' match anything.
7222         (match_class): Ditto.
7223
7224 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
7225
7226         * metadata-verify.c: Rename bounds_check_offset to bounds_check_datadir.
7227
7228         * metadata-verify.c: Implement table layout row size calculation. Verify
7229         the total size of the tables.
7230
7231 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
7232
7233         * metadata-verify.c: Verify heap sizes and size to decode row counts. 
7234
7235 2009-03-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
7236
7237         * appdomain.c:
7238         * console-io.[ch]: added new mono_console_init() to make sure that
7239         file descriptors 0, 1 and 2 are opened.
7240         Bug #489019 fixed.
7241
7242 2009-03-27  Sebastien Pouliot  <sebastien@ximian.com> 
7243
7244         * appdomain.h: Export a new callback type and a new function to
7245         set this callback. This allow a mono host to provide it's own
7246         definition for "platform code".
7247         * metadata-internals.h: Add a core_clr_platform_code flag on 
7248         _MonoImage to (cache and) know if it is representing platform 
7249         code.
7250         * image.c (do_mono_image_open): Set core_clr_platform_code flag 
7251         on platform code images.
7252         * security-core-clr.c|h 
7253         (mono_security_set_core_clr_platform_callback): Allow the host
7254         to provide it's own platform check definition.
7255         (mono_security_core_clr_determine_platform_image): Detect if an 
7256         image is platform code (using the specified callback).
7257         (mono_security_core_clr_is_platform_image): Return cached value 
7258         for platform code.
7259
7260 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
7261
7262         * threads.c (mono_create_thread): New helper function to wrap CreateThread
7263         which has different parameter types for the 'tid' argument in windows and
7264         the io-layer.
7265
7266         * appdomain.c attach.c threads.c: Use the new helper.
7267
7268 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
7269
7270         * metadata-verify.c: Verify valid table bits.
7271
7272 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
7273
7274         * metadata-verify.c (verify_metadata_header): Store size in the size field.
7275
7276         * metadata-verify.c: Add initial table schema verification.
7277
7278 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
7279
7280         * icall.c (ves_icall_get_parameter_info): Add a 'member' argument, used to
7281         obtain the refclass argument needed by mono_param_get_objects (). Fixes
7282         #488383.
7283
7284         * reflection.c (mono_param_get_objects_internal): Add a 'refclass' argument.
7285
7286         * appdomain.c (MONO_CORLIB_VERSION): Bump this.
7287
7288 2009-03-26  Sebastien Pouliot  <sebastien@ximian.com>
7289
7290         * security-core-clr.c: Add/update documentation
7291
7292 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
7293
7294         * marshal.c (emit_marshal_object): Generate code to throw an exception
7295         instead of throwing it. Fixes #488670.
7296
7297 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com>
7298
7299         * appdomain.c: Bump MONO_CORLIB_VERSION to 73.
7300         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Add
7301         an extra 'throwOnBindFailure' parameter to the icall. Remove FIXME
7302         and add a call to mono_security_core_clr_ensure_delegate_creation
7303         to do the extra checks required by CoreCLR.
7304         * security-core-clr.c|h: Add function to check delegate creation,
7305         both in the binding and accessibility, under CoreCLR.
7306
7307 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com> 
7308
7309         * reflection.c (mono_reflection_create_dynamic_method): when 
7310         coreclr is enabled make sure that every resolved object are
7311         checked (e.g. field and method access).
7312         * security-core-clr.c|h: Add function to check objects resolved
7313         when a dynamic method is created.
7314
7315 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
7316
7317         * metadata-verify.c: Cache directory rva translations.
7318
7319         * metadata-verify.c: Add cli-header and streams verification.
7320
7321 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
7322
7323         * image.c (load_metadata_ptrs): We decode MonoImage::md_version_minor at
7324         the wrong offset (8 instead of 6).
7325
7326 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
7327
7328         * marshal.c (mono_delegate_to_ftnptr): For delegates wrapping pinvoke
7329         methods, return the native function address itself. Fixes
7330         #487758.
7331
7332 2009-03-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
7333
7334         * console-io.c: some of the values for control characters might not be
7335         present.
7336
7337 2009-03-21  Sebastien Pouliot  <sebastien@ximian.com>
7338
7339         * exception.c|h: Add helpers to create [Field|Method]AccessException
7340         * icall.c: Add required coreclr check calls for field reflection.
7341         Move the existing (method) check logic into security-core-clr.c
7342         * security-core-clr.c: Add functions to check if the access of a
7343         field or method is allowed when reflecting under coreclr. This is
7344         mostly done using a stack walk to find the "real" caller: i.e. the
7345         code that is calling the reflection
7346
7347 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
7348
7349         * gc-internal.h: Change location of gc_wrapper.h
7350
7351 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com> 
7352
7353         * class.c: Simplification to coreclr checks for overrides that
7354         makes it easier to set breakpoints.
7355
7356 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com>
7357
7358         * security-core-clr.c|h: (mono_security_core_clr_class_level, 
7359         mono_security_core_clr_method_level): Avoid potential 
7360         MonoCustomAttrInfo allocation for transparent assemblies (e.g. 
7361         user/application code) and make it easier to set breakpoints
7362
7363 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7364
7365         * metadata-verify.c: Reject cli header tables that mono don't handle.
7366
7367 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7368
7369         * pedump.c: Fix CLI header dumping.
7370
7371 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7372
7373         * metadata-verify.c: More CLI header verification.
7374
7375 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
7376
7377         * locales.c (get_current_locale_name): Use g_malloc instead of malloc.
7378
7379 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
7380
7381         * metadata-verify.c: Initial verification of the CLI header.
7382
7383 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
7384
7385         * metadata-verify.c (verify_resources_table): Fix verification of zero
7386         sized resource section and id entries count.
7387
7388 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
7389
7390         * icall.c: Handle user types in many Type icalls. Fixes #486303.
7391
7392 2009-03-17  Jb Evain  <jbevain@novell.com>
7393
7394         * profiler.c: call mono_gc_base_init from mono_profiler_load.
7395
7396 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
7397
7398         * sgen-gc.c (mono_gc_make_descr_for_object): Fix 64 bit support.
7399         (mono_gc_make_descr_for_array): Ditto.
7400
7401 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
7402
7403         * verify.c (mono_verifier_is_class_full_trust): Add support for
7404         CoreCLR security mode where trusted assemblies are defined as
7405         "platform code".
7406
7407 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7408
7409         * metadata-verify.c: Add minimal PECOFF resource verification.
7410
7411 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7412
7413         * metadata-verify.c: Be less restrictive with some coff fields.
7414
7415 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7416
7417         * verify.c (init_stack_with_value_at_exception_boundary): Init generic
7418         params as boxed values on stack. Fixes #485706.
7419
7420 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
7421
7422         * console-io.c: the termios values may vary in different flavors of unix.
7423
7424 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
7425
7426         * console-io.[ch]: return the entire set of control characters when
7427         initializing the terminal.
7428         * appdomain.c: bump corlib version.
7429
7430 Mon Mar 16 11:11:26 CET 2009 Paolo Molaro <lupus@ximian.com>
7431
7432         * mono-perfcounters.c: added support for in-process custom
7433         performance counters.
7434
7435 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7436
7437         * metadata-verify.c: Small cleanup and add comment for IAT directory entry. 
7438
7439 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7440
7441         * metadata-verify.c: Verify the data pointed by the import table. 
7442
7443 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7444
7445         * metadata-verify.c (load_data_directories): Store data
7446         directory contents.
7447
7448         * metadata-verify.c: Verify the import table. 
7449
7450 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7451
7452         * metadata-verify.c: Verify data directories.
7453
7454 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7455
7456         * metadata-verify.c: Check section header flags.
7457
7458 2009-03-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
7459
7460         * appdomain.c: if the assembly name is a shadow-copied file, return
7461         TRUE from mono_is_shadow_copy_enabled but don't actually do anything
7462         in mono_make_shadow_copy.
7463         * icall.c: if the assembly name is a shadow-copied file, replace it
7464         with the original assembly path.
7465
7466         Bug #484244 fixed. NUnit tests for corlib can be run without
7467         --noshadow now.
7468
7469 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
7470
7471         * sgen-gc.c (add_to_global_remset): Fix the handling of root global remset
7472         entries when the table is reallocated.
7473
7474         * icall.c: Allocate the memory used by the mono_ptr_array macros using
7475         mono_gc_alloc_fixed () since it contains GC refs.
7476
7477 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
7478
7479         * reflection.c (ensure_complete_type): New helper function to call
7480         type resolve handlers for unfinished dynamic types.
7481         (resolve_object): Call it for MonoClassFields. Fixes #483852.
7482
7483 2009-03-09  Zoltan Varga  <vargaz@gmail.com>
7484
7485         * reflection.c (mono_custom_attrs_has_attr): Handle interfaces. Fixes
7486         #483247.
7487
7488 2009-03-08 Rodrigo Kumpera  <rkumpera@novell.com>
7489
7490         * appdomain.c (get_shadow_assembly_location): Fix memleak.
7491
7492 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
7493
7494         * domain-internals.h (struct _MonoDomain): Add new hash tables mapping
7495         between GCHandles of type WeakTrackResurrection and the objects they
7496         point to.
7497
7498         * gc.c: Partly implement the sematics of GCHandles of type 
7499         WeakTrackResurrection: these handles should only be cleared after the
7500         finalizer of the object they are pointing to has ran.
7501
7502 2009-03-06  Mark Probst  <mark.probst@gmail.com>
7503
7504         * icall.c: Partially revert r126631 because using the jump
7505         trampolines for generic shared methods makes it superfluous.
7506
7507 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
7508
7509         * threads.c (handle_store): Create the 'threads' hash table with the proper
7510         MONO_HASH_VALUE_GC type.
7511
7512 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
7513
7514         * domain-internals.h (struct _MonoDomain): Move 'typeof_void' before
7515         FIRST_GC_TRACKED.
7516
7517         * domain.c (mono_domain_create): Register the fields between FIRST_GC_TRACKED
7518         and LAST_GC_TRACKED as a GC root.
7519
7520         * gc-internal.h: Fix the comment of mono_gc_alloc_fixed.
7521
7522         * object.c (mono_class_create_runtime_vtable): Create a GC descriptor for
7523         the static data even if it consists of 1 reference.
7524
7525         * boehm-gc.c (mono_gc_alloc_fixed): Allocate using GC_MALLOC_EXPLICITLY_TYPED
7526         if there is a GC descriptor.
7527
7528         * reflection.c (ALLOC_REFENTRY): Allocate ReflectedEntry-es using malloc
7529         instead of through the GC since they contain no object references.
7530
7531 2009-03-05  Mark Probst  <mark.probst@gmail.com>
7532
7533         * generic-sharing.c (instantiate_other_info): Always return a jump
7534         trampoline for method code.
7535
7536 2009-03-05  Marek Habersack  <mhabersack@novell.com>
7537
7538         * culture-info-tables.h: generated to include the en-tt culture.
7539
7540 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
7541
7542         * domain-internals.h (MonoDomain): Add two fields to cache invoke wrappers to
7543         capture the thread context.
7544
7545         * object.c (mono_async_result_new): Cache the invoke wrappers to
7546         ExecutionContext::Capture.
7547
7548 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
7549
7550         * marshal.h: Add a prototype for what mono_compile_method returns
7551         for invoke wrappers.
7552
7553         * gc.c: Use the new prototype declaration.
7554
7555 2009-03-04  Geoff Norton  <gnorton@novell.com>
7556
7557         * boehm-gc.c: Add some MONO_LOG tracing for the GC
7558         * gc-internal.h:
7559         * mono-gc.h: Expose mono_gc_invoke_finalizers in the embedding api.
7560
7561 2009-03-04  Martin Baulig  <martin@ximian.com>
7562
7563         * mono-debug.h
7564         (mono_debugger_runtime_invoke): Removed.
7565
7566         * mono-debug-debugger.c
7567         (mono_runtime_invoke): Moved into ../mini/debug-mini.c.
7568
7569 2009-03-02  Martin Baulig  <martin@ximian.com>
7570
7571         * mono-debug.h
7572         (mono_debugger_unhandled_exception): Removed.
7573         (mono_debugger_handle_exception): Removed.
7574         (mono_debugger_throw_exception): Removed.
7575
7576         * mono-debug.c
7577         (mono_debug_debugger_version): Bump to 5.
7578
7579         * mono-debug-debugger.c: Moved the exception handling code to
7580         ../mini/debug-mini.c
7581
7582 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
7583
7584         * domain-internals.h (struct _MonoDomain): Add a separate lock for the
7585         finalize_objects_hash.
7586
7587         * gc.c: Use the separate lock to access the finalize_objects_hash field.
7588         
7589         * domain-internals.h (struct _MonoDomain): Add finalize_runtime_invoke
7590         field.
7591
7592         * metadata-internals.h (struct _MonoImage): Add runtime_invoke_vcall_cache
7593         cache.
7594
7595         * image.c (mono_image_close): Free it.
7596         
7597         * marshal.c (mono_marshal_get_runtime_invoke): Add a 'virtual' argument
7598         allowing a creation of a wrapper which invokes its method using a CALLVIRT
7599         on the this argument.
7600
7601         * gc.c (run_finalize): Optimize the calling of the finalizers.
7602
7603 2009-03-03  Martin Baulig  <martin@ximian.com>
7604
7605         * mono-debug.h (MONO_DEBUGGER_MAJOR_VERSION): Bump to 81 because
7606         of the `MonoGenericInst' changes.
7607
7608 2009-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7609
7610         * icall.c (ves_icall_MonoType_GetGenericArguments): Use
7611         mono_array_class_get_cached to reduce locking contention. Extract
7612         a domain var.
7613
7614         * icall.c (ves_icall_Type_GetFields_internal): Avoid allocating
7615         intermediary managed arrays. Use caching version of mono_array_new
7616         to allocate the result array.
7617
7618         * icall.c (ves_icall_Type_GetEvents_internal): Same.    
7619
7620         * icall.c (ves_icall_Type_GetNestedTypes): Same.        
7621
7622         * locales.c (create_names_array_idx):  Use mono_array_new_cached
7623         to reduce locking contention.
7624
7625 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
7626                 
7627         * object.c (mono_method_add_generic_virtual_invocation): Put back the
7628         thunk builder code for the non-interface case.
7629
7630 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
7631
7632         * object.c (get_generic_virtual_entries): New helper function to collect
7633         the virtual generic method instances which need to be added to an IMT
7634         thunk.
7635         (mono_method_add_generic_virtual_invocation): Add a 'vtable' argument.
7636         Instead of creating a new IMT thunk, reset the vtable slot to the
7637         trampoline, the thunk will be created the next time the trampoline is called.
7638         (build_imt_slots): Add support for virtual generic methods in interfaces by
7639         adding to the IMT thunk all the methods registered using 
7640         mono_method_add_generic_virtual_invocation ().
7641
7642         * object-internals.h (_MonoImtBuilderEntry): Add a 'has_target_code' field.
7643         (struct _MonoIMTCheckItem): Ditto.
7644
7645         * object.c (mono_method_add_generic_virtual_invocation): Take a
7646         MonoMethod argument instead of a MonoGenericInst. Fix the construction of
7647         the IMT thunk to include all items.
7648         
7649         * object.c (mono_class_create_runtime_vtable): Add a missing
7650         mono_loader_unlock ().
7651
7652 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7653
7654         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7655
7656         * object-internals.h (MonoReflectionEvent): Add cached_add_event.
7657
7658 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7659
7660         * object-internals.h: Rename _MonoReflectionEvent to
7661         MonoReflectionMonoEvent so it reflects the right managed type.
7662         Add a MonoReflectionEvent that correctly represents System.EventInfo.
7663
7664         * icall.c:
7665         * reflection.c: Adjust code to use the new MonoReflectionMonoEvent
7666         type.
7667
7668 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7669
7670         * icall.c (ves_icall_Type_GetMethodsByName): Avoid allocating
7671         intermediary managed arrays. Use caching version of mono_array_new
7672         to allocate the result array.
7673
7674 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7675
7676         * reflection.c: Use cached version of mono_array_new alongside
7677         the mono_reflection_get_custom_attrs_by_type call path.
7678
7679 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7680
7681         * icall.c (ves_icall_Type_GetInterfaces): Avoid allocating
7682         intermediary managed arrays. Use caching version of mono_array_new
7683         to allocate the result array.
7684
7685         * icall.c (ves_icall_Type_GetConstructors_internal): Same.
7686
7687 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7688
7689         * icall.c: Add small implementation of a growable stack bound array.
7690
7691         * icall.c (ves_icall_System_Enum_get_hashcode): Fix warning.
7692
7693         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid allocating
7694         intermediary managed arrays. Use caching version of mono_array_new
7695         to allocate the result array.
7696
7697 2009-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
7698
7699         * icall.c: New icall ves_icall_System_Enum_compare_value_to that
7700         helps Enum::CompareTo to be implemented without reboxing all enums
7701         to their underlying type.
7702 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
7703
7704         * domain.c (SET_APPDOMAIN): Avoid calling TlsSetValue () on some platforms,
7705         since it acquires a global lock leading to scalability problems.
7706
7707         * profiler.c: Make the stat profiler work with multiple appdomains, this
7708         currently only works when no appdomains are unloaded.
7709
7710 2009-02-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
7711
7712         * appdomain.c: make the check to avoid copying when the assembly is
7713         already shadow copied actually work.
7714
7715 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
7716
7717         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7718
7719         * object-internals.h (struct _MonoReflectionGenericClass): Sync with
7720         changes to the managed side.
7721
7722 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
7723
7724         * metadata-internals.h (struct _MonoImage): Add a new cache for szarray
7725         classes + a separate lock for it, as it is used frequently at runtime, not
7726         just during metadata loading/JIT compilation.
7727
7728         * class.c (mono_bounded_array_class_get): Use the separate cache + lock
7729         for szarrays.
7730         
7731         * object-internals.h (mono_class_from_name_cached): New macro to cache
7732         the results of the lookup locally without having to declare a static
7733         variable to hold it.
7734         (mono_class_get_field_from_name_cached): Ditto.
7735         (mono_array_class_get_cached): Ditto.
7736
7737         * threadpool.c threads.c locales.c icall.c reflection.c socket-io.c: Use
7738         the new macros.
7739         
7740         * object.c (mono_get_delegate_invoke): Call setup_methods () to avoid the
7741         slower search in metadata.
7742
7743         * pedump.c: Fix a warning.
7744
7745 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
7746
7747         * reflection.c (encode_locals): Add checks for user types.
7748         (method_encode_clauses): Ditto.
7749         (method_encode_code): Ditto.
7750         (mono_image_create_token): Ditto.
7751
7752         * object-internals.h: Change the type of more fields from MonoReflectionType*
7753         to MonoObject*.
7754
7755 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
7756
7757         * threads.c (mono_thread_suspend_all_other_threads): Handle the case when
7758         the a thread does not suspend within 100ms.
7759
7760         * monitor.c (mono_monitor_try_enter_internal): Handle SuspendRequested
7761         in addition to StopRequested as well.
7762
7763         * mono-debug.c: Call _mono_debug_get_image () while holding the debug lock.
7764
7765         * debug-mono-symfile.c (mono_debug_symfile_lookup_method): Actually
7766         search the method_hash before inserting a new entry, to avoid crashes when
7767         the same method is inserted multiple times, causing the old 
7768         MonoDebugMethodInfo structure to be freed by the value dtor function.
7769
7770 2009-02-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
7771
7772         * socket-io.c: support SO_MAXCONN, SO_USELOOPBACK and
7773         SO_EXLUSIVEADDRUSE where available.
7774
7775 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
7776
7777         * marshal.c (mono_marshal_get_runtime_invoke): Fix _another_ bug sharing
7778         runtime invoke wrappers, this time it is string ctor wrappers, which
7779         pass a dummy string as 'this' instead of their obj argument. Fixes
7780         #478473.
7781
7782 2009-02-21  Jb Evain  <jbevain@novell.com>
7783
7784         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
7785         only get create_culture once.
7786
7787 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
7788
7789         * reflection.c (mono_reflection_setup_internal_class): Move the user type
7790         check before the locking.
7791         
7792         * reflection.c (mono_reflection_setup_internal_class): Check for user types.
7793         (mono_reflection_create_runtime_class): Ditto.
7794         (mono_reflection_sighelper_get_signature_local): Ditto.
7795         (mono_reflection_sighelper_get_signature_field): Ditto.
7796
7797         * object-internals.h (CHECK_MONOTYPE): New macro to check that a Type object
7798         is a System.MonoType object or similar.
7799         (monotype_cast): New helper function to cast a MonoObject to a 
7800         MonoReflectionType object.
7801
7802         * object-internals.h: Change MonoReflectionType* members in structures to
7803         MonoObject* members to force the usage of the monotype_cast () function.
7804
7805         * reflection.c icall.c: Use monotype_cast () for accessing Type members of
7806         structures/arrays. This causes us to assert instead of crashing when 
7807         instances of user defined subclasses of System.Type are encountered.
7808
7809 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
7810
7811         * cil-coff.h:
7812         * icall-def.h:
7813         * icall.c: add new GetUnmanagedResourcePtr that returns a pointer to a
7814         win32 resource loaded from a PE file.
7815
7816         * image.c: fix mono_image_lookup_resource.
7817
7818 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
7819
7820         * icall-def.h:
7821         * threads-types.h:
7822         * threads.c: added internal call for WaitHandle.SignalAndWait.
7823
7824 2009-02-19  Bill Holmes  <billholmes54@gmail.com>
7825
7826         * cominterop.c : Adding cominterop_type_from_handle and 
7827           registering it as an icall.  Replacing all references
7828           to type_from_handle.
7829
7830         Code is contributed under MIT/X11 license.
7831
7832 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
7833
7834         * Makefile.am: Add lock-tracer.h and lock-trace.c.
7835
7836         * appdomain.c: Call the tracer init function.
7837
7838         * domain-internals.h: Enable the tracer for the domain locks.
7839
7840         * image.c: Enable the tracer for image locks.
7841
7842         * loader.c: Enable the trace for the loader lock.
7843
7844         * lock-tracer.h:
7845         * lock-tracer.c: Initial implementation of the lock trace utility.
7846         The tracer requires a compile time define to be enabled and a env var
7847         to be enabled at runtime.
7848
7849 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
7850
7851         * domain.c (mono_domain_code_foreach): Improve documentation.
7852
7853 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
7854
7855         * appdomain.c:
7856         * generic-sharing.c:
7857         * object.c:
7858         * reflection.c:  Adjust locking order to the new semantics where the loader lock
7859         comes first.
7860
7861 2009-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
7862
7863         * domain.c: Add mono_domain_code_* functions that perform locking
7864         around the domain codeman.
7865
7866         * domain-internals.h: Export those functions.
7867
7868         * object.c: Use new functions instead of acquiring the domain lock.
7869
7870 2009-02-19  Zoltan Varga  <vargaz@gmail.com>
7871
7872         * marshal.c (mono_ftnptr_to_delegate): Convert a NULL ftnptr to a null
7873         delegate. Fixes #477396.
7874
7875 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
7876
7877         * reflection.c (create_custom_attr): Get rid of alloca.
7878
7879 2009-02-18  Bill Holmes  <billholmes54@gmail.com>
7880
7881         * cominterop.c (cominterop_get_managed_wrapper_adjusted) :
7882           Adding exception handling for all CCW calls.
7883
7884         Code is contributed under MIT/X11 license.
7885
7886 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
7887
7888         * reflection.c (mono_reflection_init): Remove the unused reflection mutex.
7889
7890         * marshal.c (emit_marshal_boolean): Add null checks to the new 
7891         native->managed marshalling code. Fixes #476247.
7892
7893 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
7894
7895         * class.c (mono_class_get_vtable_entry): Move the addition of
7896         static rgctx invoke wrappers for vtable methods here, this simplifies
7897         a lot of code and causes fewer rgctx wrappers to be created.
7898
7899         * marshal.c (mono_marshal_get_static_rgctx_invoke): Change the
7900         name of the statistics to begin with an uppercase.
7901
7902 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
7903
7904         * reflection.c: Revert previous change as it breaks the build.
7905         
7906 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
7907
7908         * verify.c: Properly handle SZARRAY element type.
7909
7910         Fixes #474271.
7911
7912 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
7913
7914         * reflection.c (mono_image_create_method_token): Correctly encode
7915         MethodDef MemberRefParent token.
7916
7917         Fixes #472845.
7918
7919 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
7920
7921         * image.c (mono_image_close): Delete the critical section before
7922         freeing the memory holding it.
7923
7924 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7925
7926         * verify.c (mono_method_verify): rethrow opcode doesn not fall through.
7927         Fixes #476257.
7928
7929 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7930
7931         * pedump.c (main): Call mono_marshal_init so pedump
7932         doesn't crash.
7933
7934 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7935
7936         * loader.c (method_from_memberref): Properly fix #474271 and
7937         don't break the runtime bad.
7938
7939 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
7940
7941         * domain.c (mono_domain_alloc): Add locking so the caller doesn't have to.
7942         (mono_domain_alloc0): Ditto.
7943
7944 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7945
7946         * loader.c (method_from_memberref): Don't abort if the array
7947         method is not found. A regular loader failure is more informative
7948         and correct.
7949
7950         Fixes #474271.
7951
7952 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7953
7954         *loader.c: Guard MonoImage::method_cache/methodref_cache
7955         using the image lock instead of the loader lock.
7956
7957         * metadata.h: Add comments about which fields are protected by
7958         the image lock.
7959
7960 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
7961
7962         * appdomain.c (mono_set_private_bin_path_from_config): Fix a warning.
7963
7964         * generic-sharing.c (mono_method_construct_object_context): Remove the
7965         wrapper_type == NONE assert, it is not needed.
7966
7967 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
7968
7969         * reflection.c (clear_cached_object): New helper function.
7970         (mono_method_clear_object): New function to clear the cached reflection
7971         objects for a dynamic method.
7972
7973         * object.c (mono_runtime_free_method): Call mono_method_clear_object ().
7974         Partly fixes # 463323.
7975         
7976 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
7977
7978         * class.c:
7979         * loader.c:
7980         * reflection.c: Remove all explicit uses of MonoImage::property_hash.
7981
7982 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
7983
7984         * image.c: Add mono_image_property_(lookup,insert,remove) functions that
7985         take the image lock instead of the loader lock.
7986
7987         * metadata-internals.h: Export new functions.
7988
7989 2009-02-12  Miguel de Icaza  <miguel@novell.com>
7990
7991         * domain.c (app_config_parse): Remove another use of stat that is
7992         not necessary as g_file_get_contents already does the presence
7993         check. 
7994
7995 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
7996
7997         * cominterop.c icall-def.h: Fix the DISABLE_COM build.
7998
7999         * marshal.c: Move the bstr handling code to cominterop.c.
8000
8001         * marshal.c: Remove some COM interop code missed previously.
8002
8003 2009-02-12  Miguel de Icaza  <miguel@novell.com>
8004
8005         More Paolo patches from the Wii port:
8006         
8007         * security.c: Remove ves_icall_System_Environment_get_UserName
8008         from here.
8009
8010         * icall.c: And put ves_icall_System_Environment_get_UserName
8011         here. 
8012
8013         * appdomain.c (mono_set_private_bin_path_from_config): Remove
8014         redundant call to stat that was only used to test for the file
8015         existence.   Patch from Paolo.
8016
8017         * gc.c (run_finalize): If COM is disabled, do not link in
8018         mono_marshal_free_ccw.
8019
8020         * generic-sharing.c: Use alloca.h here as well.
8021
8022 2009-02-13 Rodrigo Kumpera  <rkumpera@novell.com>
8023
8024         * reflection.c (mono_reflection_lookup_dynamic_token): Do the locking properly.
8025
8026 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
8027
8028         * cominterop.c cominterop.h: New files.
8029
8030         * marshal.c: Move the COM interop related code to cominterop.c. Make a few
8031         function/typedefs which are needed by cominterop.c global.
8032
8033 2009-02-12  Mark Probst  <mark.probst@gmail.com>
8034
8035         * generic-sharing.c: Don't take the loader lock to guard image
8036         mempool allocs.
8037
8038 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8039
8040         * reflection.c (mono_reflection_lookup_dynamic_token): This function might be
8041         called without the loader lock which is required to guard MonoImage:tokens.
8042
8043 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8044
8045         * class.c:
8046         * metadata.c:
8047         * method-builder.c:
8048         * marshal.c:
8049         * reflection.c: Don't take the loader lock to alloc memory from the image mempool.
8050
8051 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8052
8053         * metadata.c: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
8054         Rework the code to use regular mono_image_alloc/0.
8055
8056         * loader.c: Rework the code to use regular mono_image_alloc/0.
8057
8058         * metadata-internals.h: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
8059
8060 2009-02-12  Bill Holmes  <billholmes54@gmail.com>
8061
8062         * object-internals.h : Fixing a typo in the 
8063           MonoReflectionComVisibleAttribute struct.
8064
8065         * marshal.c (cominterop_com_visible): Check the implemented 
8066           interfaces for ComImport.
8067
8068         * marshal.c (cominterop_get_native_wrapper_adjusted): For COM calls 
8069           assume that bools should be treated as VARIANTBOOLs.
8070
8071         * marshal.c (emit_marshal_boolean): Adding cases for 
8072           MARSHAL_ACTION_MANAGED_CONV_IN and MARSHAL_ACTION_MANAGED_CONV_OUT.
8073
8074         * marshal.c (mono_marshal_emit_managed_wrapper): Adding calls to 
8075           emit_marshal MARSHAL_ACTION_MANAGED_CONV_IN and OUT for bools.
8076
8077         * marshal.c (cominterop_get_ccw): For COM calls assume that bools
8078           should be treated as VARIANTBOOLs.    
8079
8080         Code is contributed under MIT/X11 license.
8081
8082 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8083
8084         * image.c (mono_image_alloc, mono_image_alloc0, mono_image_strdup): Guard mempool
8085         allocation with the image lock.
8086
8087 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8088
8089         This patch is the last of a series to remove explicit reference of MonoImage::mempool
8090         and use mono_image_alloc set of functions instead. This time we finish with reflection.c
8091
8092         * object.c: Add mono_string_to_utf8_image.
8093
8094         * object-internals.h: Export mono_string_to_utf8_image.
8095
8096         * reflection.c: Rework all explicit references to the the image mempool to go thought
8097         the mono_image_alloc set of functions.
8098
8099 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8100
8101         This patch is the third of a series to remove explicit reference of MonoImage::mempool
8102         and use mono_image_alloc set of functions instead. This time we finish with marshal.c
8103         and generics-sharing.c.
8104
8105         * generics-sharing.c (set_other_info_templates): Take a MonoImage instead of a MonoMemPool
8106         as first argument. Note that this function remains broken as it doesn't perform locking around the
8107         mempool allocation.
8108
8109         * generics-sharing.c (rgctx_template_set_other_slot): Pass the image and not the mempool.
8110
8111         * image.c: Add g_slist_append_image.
8112
8113         * metadata.c (mono_metadata_field_info_with_mempool): Remove the mempool argument and use
8114         the supplied image for allocation. Move code into mono_metadata_field_info_full.
8115
8116         * metadata.c (mono_metadata_parse_marshal_spec_full): Take a MonoImage instead of a MonoMemPool.
8117         Fix all related code to do the same.
8118
8119         * marshal.c (mono_marshal_load_type_info): Pass the image instead of the mempool.
8120
8121         * metadata-internals.h: Fix the signatures.
8122
8123 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8124
8125         This patch is the second of a series to remove explicit reference of MonoImage::mempool
8126         and use mono_image_alloc set of functions instead. This time we rework mono_metadata_type_dup
8127         and similar to work using MonoImage.
8128
8129         * class.c (mono_mempool_dup): Rename to mono_image_memdup and take a MonoImage instead of a
8130         MonoMemPool.
8131
8132         * class.c (mono_dup_array_type): Take a MonoImage instead of a MonoMemPool as first argument.
8133
8134         * class.c (mono_metadata_signature_deep_dup): Same.
8135
8136         * class.c (inflate_generic_type): Same.
8137
8138         * class.c (mono_class_inflate_generic_type_with_mempool): Same.
8139
8140         * metadata.c (mono_metadata_signature_dup_full): Same.
8141
8142         * metadata.c: Add mono_metadata_signature_dup_mempool and extract common functionality from 
8143         mono_metadata_signature_dup_full.
8144
8145         * metadata.c (mono_metadata_type_dup): Same.
8146
8147         * marshal.c: Pass the image to calls to mono_metadata_type_dup.
8148
8149         * reflection.c: Same.
8150
8151         * generic-sharing.c: Pass the image to calls to mono_class_inflate_generic_type_with_mempool.
8152
8153         * metadata-internals.h: Fix the signatures.
8154
8155         * class-internals.h: Same.
8156
8157 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8158
8159         This patch is the first of a series to remove explicit reference of MonoImage::mempool
8160         and use mono_image_alloc set of functions instead. 
8161
8162         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy):
8163         Rename to mono_class_inflate_generic_type_no_copy and take a MonoImage instead
8164         of a MonoMemPool.
8165
8166         * class.c (mono_class_setup_fields): Adapt to mono_class_inflate_generic_type_no_copy.
8167
8168         * class.c (g_list_prepend_mempool): Removed.
8169
8170         * class.c (mono_class_get_nested_types): Use g_list_prepend_image instead of g_list_prepend_mempool.
8171
8172         * image.c: Add g_list_prepend_image.
8173
8174         * metadata-internals.h (struct MonoImage): Fix comment. Export g_list_prepend_image as internal.
8175
8176         * reflection.c (mono_reflection_create_runtime_class): Use g_list_prepend_image instead of g_list_prepend_mempool.
8177
8178
8179 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8180
8181         * metadata-internals.h (struct MonoImage): Add lock field. Export mono_image_lock and
8182         mono_image_unlock.
8183
8184         * image.c (mono_image_init): Init the lock field.
8185  
8186         * image.c (mono_image_init): Cleanup the lock field.
8187
8188         * image.c: Add mono_image_(un)lock functions.
8189
8190 2009-02-11  Mark Probst  <mark.probst@gmail.com>
8191
8192         * class.c, class-internals.h: mono_method_get_context_general()
8193         combines the functionality of mono_method_get_context() and
8194         mini_method_get_context().
8195
8196         * generic-sharing.c, domain-internals.h:
8197         mono_method_construct_object_context() and
8198         mono_domain_lookup_shared_generic() moved from mini.
8199
8200         * icall.c (ves_icall_InternalInvoke): Handle the case where the
8201         method doesn't have the correct instantiation because it's shared
8202         generic code.  Fixes #473999.
8203
8204 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
8205
8206         * loader.c (mono_method_get_wrapper_data): Handle inflated methods as well.
8207
8208         * loader.c (mono_loader_lock): Add a comment pointing to the locking document.
8209         
8210 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8211
8212         * metadata.c: Make mono_image_alloc_lock and mono_image_alloc0_lock non static.
8213
8214         * metadata-internals.h: Export mono_image_alloc_lock and mono_image_alloc0_lock.
8215
8216         * loader.c (mono_get_method_full): Drop the loader lock while constructing the method
8217         and recheck the cache for dups after it.
8218
8219         * loader.c (mono_get_method_from_token): Use _lock version of mono_image_alloc0.
8220
8221         Fixes one of the deadlocks found in #473150.
8222
8223 2009-02-11  Bill Holmes  <billholmes54@gmail.com>
8224
8225         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
8226           For Win32, add additional break conditions for accept.
8227
8228         Code is contributed under MIT/X11 license.
8229
8230 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
8231
8232         * marshal.c (mono_marshal_get_native_func_wrapper): Use get_cache to
8233         lazily initialize the native wrapper cache.
8234         (mono_marshal_get_native_wrapper): Put aot-ed native wrappers into a separate
8235         cache, since they are different from the normal wrappers.
8236
8237         * image.c (mono_image_init): Initialize native_wrapper_cache lazily as well.
8238
8239         * metadata-internals.h (struct _MonoImage): Add a new wrapper for
8240         AOT compiled native wrappers.
8241
8242 2009-02-09  Geoff Norton  <gnorton@novell.com>
8243
8244         * appdomain.h:
8245         * security-core-clr.c: Allow enabling core-clr from the embedding
8246         API.
8247
8248 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8249
8250         * socket-io.c: when requesting all the local ips, if there are no
8251         interfaces up and running, MS returns 127.0.0.1.
8252
8253 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8254
8255         * mono-perfcounters-def.h: processor time is an inverse time.
8256         Fixes bug #468625.
8257
8258 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8259
8260         * socket-io.c: an empty host name returns the list of local IPs.
8261         Fixes bug #386637 part 1/2.
8262
8263 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
8264
8265         * verify.c (mono_class_interface_implements_interface): Call
8266         mono_class_setup_interfaces ().
8267         (merge_stacks): Ditto.
8268
8269 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
8270
8271         * class.c (mono_class_setup_interfaces): New function to lazily initalize
8272         klass->interfaces.
8273         (mono_generic_class_get_class): Don't initalize klass->interfaces.
8274         (mono_generic_class_get_class): Ditto.
8275
8276 2009-02-06  U-QUACK\miguel  <miguel@quack>
8277
8278         * icall-defs.h: Include also the Encrypt/Decrypt string methods as
8279         they live in security.c
8280
8281         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Integrated
8282         another bit from Paolo's code.
8283
8284 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
8285
8286         * object.c (build_imt_slots): Add a small optimization to avoid inflating
8287         methods which will be discarded by add_imt_builder_entry ().
8288
8289         * marshal.c (get_runtime_invoke_type): Avoid sharing enum types since they
8290         need to be boxed.
8291
8292         * loader.c: Add a statistics for the size of the memberref signature cache.
8293         
8294         * loader.c (find_cached_memberref_sig): New helper function.
8295         (cache_memberref_sig): Ditto.
8296
8297         * loader.c: Cache the result of parsing memberref signatures, since otherwise
8298         they will be parsed again for every generic instantiation, leading to unbounded
8299         memory growth.
8300
8301 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8302
8303         * loader.c (mono_get_method_from_token): Avoid creating class for the generic
8304         parameters of generic methods.
8305
8306         * class.c (mono_class_inflate_generic_method_full): Set is_mb_open again
8307         after the original method is copied to the inflated method.
8308         (mono_class_get_vtable_entry): Handle rgctx invoke wrappers more efficiently.
8309
8310         * class-internals.h (struct _MonoMethodInflated): Move the is_mb_open
8311         field to MonoMethod since it only consumes 1 bit there, and 4/8 bytes here.
8312
8313         * class.c metadata.c: Update after the changes above.
8314
8315 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
8316
8317         * metadata-verify.c: Simplified error handling and added
8318         section table validation.
8319
8320 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8321
8322         * class-internals.h (MonoClassExt): New structure containing rarely used
8323         fields of MonoClass.
8324         (struct _MonoClass): Move rarely used fields to MonoClassExt, accessed
8325         through a new 'ext' field.
8326
8327         * class.c (mono_class_alloc_ext): New helper function to allocate 
8328         class->ext.
8329
8330         * class.c metadata.c reflection.c: Update after MonoClass structure changes.
8331
8332 2009-02-05  Mark Probst  <mark.probst@gmail.com>
8333
8334         * object.c (mono_object_get_virtual_method): Properly inflate
8335         generic methods.  Fixes #472692.
8336
8337 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
8338
8339         * class.c (mono_class_create_from_typedef): The CLR supports SystemF
8340         recursive types such as List<T>:Cons<T,List<T>> so when doing the lookup
8341         for the parent type, the created type must be ready to be used on a generic
8342         instantiation.
8343         We fill this_arg/byval_arg if the parent is a generic instance to make sure
8344         we won't have duplicated entries in generic_inst_cache.
8345
8346         Fixes #469553.
8347
8348 2009-02-05  Miguel De Icaza  <miguel@novell.com>
8349
8350         * threadpool.c (socket_io_add_poll): Remove the BSD6 define and
8351         replace with plain BSD per the comments on the bug MONO77637.
8352
8353 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8354
8355         * class.c (mono_class_get_generic_class): New accessor function.
8356         (mono_class_get_generic_container): Ditto.
8357
8358         * class-internals.h (struct _MonoClass): Add 'is_generic' and 'is_inflated'
8359         fields, similar to the ones in MonoMethod.
8360
8361         * class.c (mono_generic_class_get_class): Set klass->is_inflated.
8362         (mono_class_create_from_typedef): Set klass->is_generic if needed.
8363
8364         * reflection.c (mono_reflection_create_generic_class): Set klass->is_generic.
8365         
8366         * class-internals.h (struct _MonoClass): Remove enum_basetype, it contains
8367         the same information as element_class->byval_arg.
8368
8369         * class.c reflection.c: Remove references to class->byval_arg.
8370
8371         * class.c marshal.c: Use mono_class_enum_basetype () instead of accessing 
8372         klass->enum_basetype directly.
8373
8374         * verify.c metadata.c object.c icall.c reflection.c: Use 
8375         mono_class_enum_basetype () instead of accessing klass->enum_basetype 
8376         directly.
8377
8378 2009-02-04  Miguel de Icaza  <miguel@novell.com>
8379
8380         * icall-def.h: Remove internal calls for sockets when
8381         DISABLE_SOCKET is defined, file system writing features when the
8382         OS only support reading and not writing data and Policy support if
8383         the Policy is disabled.
8384         
8385         * image.c (do_mono_image_open): Apply Paolo's patches for using
8386         mono_file_map_ APIs here.
8387
8388         * assembly.c: Add support for platforms to avoid prefix
8389         auto-detection. 
8390
8391 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
8392
8393         * generic-sharing.c (mono_method_fill_runtime_generic_context): Fix a
8394         warning.
8395
8396         * class.c (mono_class_inflate_generic_class): New helper function.
8397
8398         * class.c: Use mono_class_inflate_generic_class in a few places. Add
8399         statistics for inflated methods/classes.
8400
8401         * loader.c (inflate_generic_header): Use mono_class_inflate_generic_class.
8402
8403         * icall.c (ves_icall_Type_GetMethodsByName): Optimize the case when
8404         the call is made from Delegate.CreateDelegate () for the invoke method of
8405         a delegate.
8406
8407         * loader.c: Add a statistics for the memory occupied by inflated signatures.
8408
8409         * metadata.c (mono_metadata_signature_size): New helper function.
8410
8411         * class.c (mono_class_get_method_from_name_flags): Add an optimization for
8412         generic instances.
8413
8414         * metadata.c (inflated_method_in_image): Avoid calling 
8415         mono_method_signature () if the method does not already have a signature.
8416
8417 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8418
8419         * verify.c (is_compatible_boxed_valuetype): When checking if the boxed 
8420         valuetype is compatible with target type, check by inheritance as a
8421         VT is not really compatible with System.ValueType, for example.
8422
8423         * verify.c (do_invoke_method): Improve error message.
8424
8425         * verify.c (do_box_value): If boxing a nullable, use the type argument
8426         on stack instead.
8427
8428         * verify.c (do_newobj): Improve error message.  
8429
8430         Fixes #469549.
8431
8432 2009-02-03  Miguel de Icaza  <miguel@novell.com>
8433
8434         * appdomain.c: Add support for DISABLE_SOCKETS and DISABLE_SHADOW_COPY
8435
8436 2009-02-03  Mark Probst  <mark.probst@gmail.com>
8437
8438         * generic-sharing.c: Don't hold domain lock when calling
8439         instantiate_other_info().  Fixes #471958.
8440
8441         * domain-internals.h, loader.c: Describe locking policy of domain
8442         lock vs loader lock.
8443
8444 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8445
8446         * verify.c (mono_delegate_signature_equal): Make it possible to check
8447         first-arg-bound delegates to static method.
8448
8449         * verify.c (verify_delegate_compatibility): Correctly verify delegates to
8450         static methods with the first arg bound.
8451
8452         Fixes #469529.
8453
8454 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8455
8456         * verify.c: Added stack_slot_full_name to provide decent and more meanfull
8457         errors.
8458
8459         * verify.c (is_compatible_boxed_valuetype): Be less restrictive when not
8460         under strict mode. Any type, when boxed can be seen as a reference type.
8461
8462         Fixes #469528.
8463
8464 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8465
8466         * object.h: The lower bound of an array is a signed integer value.
8467         Introduce mono_array_lower_bound_t typedef. It should be used instead of
8468         gint32 as under MONO_BIG_ARRAYS it will be a gint64.
8469
8470         * icall.c: Cast MonoArrayBounds::length to a signed value so correctly
8471         calculate the upper bound.
8472         
8473         Fixes #471252.
8474
8475 2009-02-02  Miguel de Icaza  <miguel@novell.com>
8476
8477         From Paolo's work, refactored, cleared up:
8478         
8479         * threadpool.c, icall.c: ifdef code that requires a working socket
8480         stack.
8481
8482         * metadata.c (mono_metadata_field_info): Do not attempt to return
8483         a value from a function declared as void.
8484
8485         * console-io.c: Use MONO_NULL_TTYDRIVER to remove the tty driver
8486         from the console stack.
8487
8488         * assembly.c: use strrchr instead of rindex.
8489
8490         * class.c, object.c, marshal.c, icall.c, reflection.c: include
8491         alloca.h on systems that have it.
8492
8493         * environment.c: Avoid code that uses stuff from
8494         HAVE_SYS_UTSNAME_H
8495         
8496         * appdomain.c: Include sys/time.h.
8497
8498         * console-io.c: include sys/ioctl.h if it is available.
8499
8500 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
8501
8502         * method-builder.h (_MonoMethodBuilder): Add a 'skip_visibility' flag.
8503
8504         * method-builder.c (mono_mb_create_method): Set method->skip_visibility from
8505         the method builder.
8506
8507         * marshal.c: Set mb->skip_visibility instead of setting it on the method
8508         after it was created and cached, as the later is not thread safe.
8509         
8510 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
8511
8512         * mono-debug.c (mono_debug_print_stack_frame): Avoid crashes when this is
8513         called while the debugging module is not initialized. Fixes #471669.
8514
8515 2009-02-02 Rodrigo Kumpera  <rkumpera@novell.com>
8516
8517         * icall.c (type_from_name): Ignore reflection frames to find out the real caller.
8518
8519         Fixes #471255.
8520
8521 2009-02-02  Mark Probst  <mark.probst@gmail.com>
8522
8523         * generic-sharing.c (lookup_or_register_other_info): Make sure the
8524         loader lock is not taken while the templates lock is held.  Fixes
8525         #471089.
8526
8527 2009-02-02  Mark Probst  <mark.probst@gmail.com>
8528
8529         * metadata.c (type_in_image): Added a check to fix a monodis
8530         crash.
8531
8532 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
8533
8534         * marshal.c (mono_marshal_get_runtime_invoke): Add support for byref
8535         nullable arguments.
8536
8537         * object.c (mono_runtime_invoke_array): Ditto.
8538         
8539         * marshal.c (mono_marshal_free_dynamic_wrappers): New function for
8540         freeing wrappers of dynamic methods.
8541
8542         * loader.c (mono_free_method): Call it. Fixes #463323.
8543         
8544         * marshal.c (mono_marshal_get_runtime_invoke): Disable sharing for
8545         methods taking vtype/byref arguments, to fix yet another bug caused by
8546         the sharing of runtime invoke wrappers. Partly fixes #471259.
8547
8548 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
8549
8550         * debug-mono-symfile.c (check_line): Return NULL instead of returning
8551         <first file in file table>:1 when the IL offset does not have an associated
8552         line number.
8553
8554 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
8555
8556         * mono-debug.c (mono_debug_lookup_locals): New function to return local
8557         variable info for a method.
8558
8559         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Ditto.
8560         
8561 2009-01-30  Jb Evain  <jbevain@novell.com>
8562
8563         * pedump.c: reuse code from monodis to make sure pedump honors
8564         MONO_PATH, which is needed to verify net_2_1 assemblies.
8565
8566 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
8567
8568         * mono-debug.c (mono_debug_print_stack_frame): Print the IL offset even when
8569         there is no line number info.
8570
8571 2009-01-29  Raja R Harinath  <harinath@hurrynot.org>
8572
8573         Avoid some MonoType allocations
8574         * reflection.c (mono_reflection_initialize_generic_parameter):
8575         Reuse MonoType from param->pklass rather than allocating one.
8576         (mono_dynamic_image_free): Update to changes.
8577
8578 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
8579
8580         Rearrange some code to improve consistency
8581         * reflection.c (mono_reflection_setup_generic_class): Move body ...
8582         (mono_reflection_initialize_generic_parameter): ... here.
8583
8584 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
8585
8586         * generic-sharing.c (has_constraints): Enable gshared for methods/classes
8587         with type constraints as an experiment.
8588
8589         * boehm-gc.c (on_gc_notification): Update mono_stats.
8590
8591 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
8592
8593         Avoid some allocations
8594         * class-internals.h (_MonoGenericInst::type_argv): Convert from
8595         pointer to tail array to avoid extra allocation.
8596         * metadata.c (free_generic_inst): Update to changes.
8597         (mono_metadata_get_generic_inst): Likewise.  Use alloca instead of
8598         on-stack struct.
8599
8600 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
8601
8602         * icall.c (ves_icall_System_Type_EqualsInternal): For user-defined types,
8603         return TRUE if the two type objects are the same.
8604
8605 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
8606
8607         * marshal.c (mono_marshal_load_type_info): Fill out info->min_align.
8608         (mono_class_native_size): Use klass->marshal_info->min_align instead of
8609         klass->min_align, since klass->min_align contains the managed alignment,
8610         while the native alignment can be different, like for longs on x86.
8611         Fixes #469135.
8612
8613         * class-internals.h (MonoMarshalType): Add a min_align field.
8614
8615 2009-01-26 Rodrigo Kumpera  <rkumpera@novell.com>
8616
8617         * assembly.c (mono_assembly_try_decode_skip_verification): Add a hack to check
8618         the 1.0 format.
8619
8620 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
8621
8622         * domain-internals.h (struct _MonoJitInfo): Add a 'from_aot' field plus
8623         some comments about the usage of the used_regs field.
8624
8625         * marshal.c (emit_marshal_ptr): Allow pointers to blittable structures.
8626         Fixes #469217.
8627
8628 2009-01-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
8629
8630         * appdomain.c: return NULL instead of throwing FileNotFoundException
8631         when LoadAssembly() fails.
8632
8633 2009-01-23  Mark Probst  <mark.probst@gmail.com>
8634
8635         * metadata.c (mono_metadata_generic_param_equal): Only compare the
8636         image if the owner is NULL.  Fixes the AOT failures.
8637
8638 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
8639
8640         * metadata.c (mono_metadata_load_generic_params): Initialize the 
8641         MonoGenericParam structure using memset so the image field is initialized
8642         as well.
8643
8644 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8645
8646         * appdomain.c (mono_domain_unload): Change the InterlockedIncrement to
8647         a plain store.
8648
8649 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
8650
8651         * class.c (mono_class_setup_vtable_general): In the generic instance
8652         optimization, set method->slot for abstract virtual methods. Fixes part of
8653         #467834.
8654
8655 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8656
8657         * domain-internals.h: Add new appdomain state MONO_APPDOMAIN_UNLOADING_START
8658         which signals that the unloading has started but all appdomain services must
8659         remain operational.
8660
8661         * appdomain.c (mono_domain_unload): The initial state for unloading now
8662         is unloading_start and we switch to unloading after the managed call to
8663         AppDomain::DomainUnload has finished.
8664
8665         The new unloading state has to be created because managed code in the
8666         DomainUnload event can depend on things like the threadpool still working.
8667         The domain must remain fully functional while the event executes.
8668
8669         This shown as an issue due to Process::WaitForExit, which waits for
8670         async reads of stdout and stderr to complete. Since those are processed
8671         in the threadpool the code deadlocks because the DomainUnload callback 
8672         waits for the async read finished event, which should have been set by a
8673         threadpool job but has been discarded due to the domain been in unload
8674         state.
8675
8676 2009-01-21  Mark Probst  <mark.probst@gmail.com>
8677
8678         * metadata.c (mono_metadata_generic_param_equal): Owner as well as
8679         image must match.
8680
8681 2009-01-21  Mark Probst  <mark.probst@gmail.com>
8682
8683         * reflection.c (resolve_object): For fields, inflate the class and
8684         then get the field in the inflated class.
8685
8686 2009-01-20  Mark Probst  <mark.probst@gmail.com>
8687
8688         * object-internals.h (struct _MonoException): Added a comment
8689         explaining the new use of trace_ips.
8690
8691 2009-01-20  Mark Probst  <mark.probst@gmail.com>
8692
8693         * generic-sharing.c (inflate_other_data): Inflate array methods
8694         correctly.
8695
8696         * loader.c, class-internals.h: Rename search_in_array_class() to
8697         mono_method_search_in_array_class() and make it non-static.
8698
8699 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
8700
8701         * metadata.c (inflated_signature_in_image): Call signature_in_image as well.
8702         Hopefully fixes #458168.
8703
8704 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
8705
8706         * object.c (mono_raise_exception): Remove call to InterlockedIncrement
8707         as it is performed elsewhere.
8708
8709         Code is contributed under MIT/X11 license
8710
8711 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
8712
8713         * mono-perfcounters-def.h: Add counters for asp.net requests total and
8714         requests queued.
8715         * object.c (mono_raise_exception): Increment the exceptions total
8716         counter when an exception is thrown.
8717         * class-internals.h: Add a location for storing the total number of
8718         asp.net requests served.
8719         * mono-perfcounters.c: Implement update support for asp.net counters
8720         from the class libraries. Implement read support for asp.net counters
8721         and exceptions total counter.
8722
8723 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
8724
8725         * loader.c (search_in_array_class): Call mono_class_setup_methods () before
8726         accessing klass->methods. Fixes #467385.
8727
8728 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
8729
8730         * marshal.c (emit_marshal_custom): Avoid calling MarshalNativeToManaged
8731         for byval arguments without an [Out] attribute. Fixes #467212.
8732
8733         * attach.c: Applied patch from Koushik Dutta (koush@koushikdutta.com). 
8734         Fix compilation under android.
8735         
8736         * sgen-gc.c: Instead of scanning gray objects after all roots have been 
8737         processed, scan them directly after they are copied, to achieve better locality
8738         and cache usage.
8739
8740         * socket-io.c: Applied patch from Koushik Dutta
8741         (koush@koushikdutta.com). Disable IPV6 when running under android.
8742
8743 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
8744
8745         * icall.c (ves_icall_InternalExecute): Add write barriers.
8746
8747         * marshal.c (mono_marshal_get_write_barrier): Remove, this is now done in
8748         the GC code.
8749
8750         * sgen-gc.c: Implement write barriers in IL code.
8751
8752 2009-01-17  Geoff Norton  <gnorton@novell.com>
8753
8754         * image.c: Avoid trying to walk the reference table of dynamic assemblies.
8755
8756 2009-01-17  Geoff Norton  <gnorton@novell.com>
8757
8758         * image.c: When unloading the image->references table, there can be gaps
8759         in it.  Ensure that we iterate every entry to avoid leaking assembly references
8760         when unloading an appdomain.
8761
8762 2009-01-16  Zoltan Varga  <vargaz@gmail.com>
8763
8764         * sgen-gc.c: Add support for allocating a nursery at an aligned address, to
8765         speed up ptr-in-nursery checks.
8766
8767         * threads.c (mono_threads_abort_appdomain_threads): Abort threads outside the
8768         threads_lock () to prevent deadlocks.
8769
8770         * sgen-gc.c gc-internal.h: Add a new root type root-with-wbarrier, which
8771         does not need to be scanned during minor collections, since writes to it
8772         must use write barriers.
8773
8774 2009-01-15 Rodrigo Kumpera  <rkumpera@novell.com>
8775
8776         * metadata-verify.c: Add pe nt header verification.
8777         
8778 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
8779
8780         * gc.c: Fix a few warnings when using SGEN.
8781
8782 2009-01-14 Rodrigo Kumpera  <rkumpera@novell.com>
8783
8784         * metadata-verify.c: Add pe optional header verification.
8785
8786 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
8787
8788         * sgen-gc.c: Add support for user defined marker functions, used by
8789         MonoGHashTable to avoid registering a GC root for every hash node.
8790
8791 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
8792
8793         * sgen-gc.c: Fix warnings. Optimize copy_object () a bit. Split pinned/
8794         non-pinned roots into separate hashes to avoid having to traverse them
8795         in functions which are only interested in one kind.
8796
8797 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
8798
8799         * metadata-verify.c: Add pe header machine field verification.
8800         
8801 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
8802
8803         * metadata-verify.c: Add pe header size verification.
8804
8805 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
8806
8807         * reflection.c (ALLOC_REFENTRY): Don't allocate the ReflectionEntry structures
8808         using the GC, they don't contain references.
8809
8810         * domain.c (mono_domain_create): Create ldstr_table using MONO_HASH_KEY_VALUE_GC.
8811
8812 2009-01-13  Geoff Norton  <gnorton@novell.com>
8813
8814         * appdomain.c|h: Expose mono_domain_unload to the embedding api so that 
8815         AppDomains created on the native side can be cleaned up on the native side.
8816
8817 2009-01-13  Geoff Norton  <gnorton@novell.com>
8818
8819         * appdomain.c: Ensure that we call mono_context_init for the embedding api
8820         as well as the managed api.
8821
8822 2009-01-13  Geoff Norton  <gnorton@novell.com>
8823
8824         * appdomain.h|c: New API for creating a MonoDomain in the embedding api
8825         with a MonoAppDomain initialized against it.
8826
8827 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
8828
8829         * reflection.c (MOVING_GC_REGISTER): Fix a warning.
8830         
8831         * reflection.c (mono_image_get_generic_param_info): Use MOVING_GC_REGISTER.
8832
8833         * marshal.c: Avoid setting the exception clauses after a method has been entered 
8834         into the wrapper caches. Fixes #465700.
8835
8836         * method-builder.c (mono_mb_set_clauses): New function to set the clauses of the
8837         method builder.
8838         (mono_mb_create_method): Set the clauses from the method builder.
8839
8840 2009-01-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
8841
8842         * threadpool.c: include sys/socket.h. Fixes compilation on FreeBSD.
8843         Patch from Makoto Kishimoto.
8844
8845 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
8846
8847         * sgen-gc.c (mono_gc_make_descr_from_bitmap): Handle large bitmaps by 
8848         encoding them as ROOT_DESC_COMPLEX.
8849         (precisely_scan_objects_from): Implement support for ROOT_DESC_COMPLEX.
8850
8851 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
8852
8853         * sgen-gc.c (scan_from_remsets): Clear the global remset of pointers which
8854         no longer point to the nursery.
8855
8856         * sgen-gc.c: Add a few comments/FIXMEs.
8857         
8858         * sgen-gc.c: Implement scanning of the alloc_pinned objects.
8859
8860         * marshal.c (mono_marshal_get_synchronized_wrapper): Make the 
8861         initialization of the various _method variables thread safe. Fixes
8862         #465377.
8863
8864 2009-01-12  Mark Probst  <mark.probst@gmail.com>
8865
8866         * domain.c, domain-internals.h: Remove the shared_generics_hash
8867         and its lookup functions.
8868
8869 2009-01-12  Bill Holmes  <billholmes54@gmail.com>
8870
8871         * socket-io.c:  Fixing the MSVC build. 
8872
8873         Code is contributed under MIT/X11 license.
8874
8875 2009-01-12 Rodrigo Kumpera  <rkumpera@novell.com>
8876
8877         * metadata-verify.c: Add pe header watermark verification.
8878
8879 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
8880
8881         * metadata-verify.c: Add lfanew verification.
8882
8883 2009-01-12  Jb Evain  <jbevain@novell.com>
8884
8885         * tabldefs.h: rename METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE to
8886         METHOD_ATTRIBUTE_STRICT to match the ECMA terminology.
8887
8888 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
8889
8890         * socket-io.c: Fix the build.
8891
8892         * environment.c: Fix an #ifdef.
8893
8894 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
8895
8896         * threadpool.c (async_invoke_thread): Handle the wait function returning
8897         WAIT_IO_COMPLETION as well.
8898         (async_invoke_io_thread): Ditto.
8899
8900 2009-01-09  Bill Holmes  <billholmes54@gmail.com>
8901
8902         * threads.c: Fixing the Windows build.
8903
8904         Code is contributed under MIT/X11 license.
8905
8906 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
8907  
8908         * threads.c (signal_thread_state_change): Call wapi_interrupt_thread () to
8909         interrupt a wait.
8910         (mono_thread_execute_interruption): Call wapi_clear_interruption () to enable
8911         the thread to wait again.
8912
8913 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
8914
8915         * metadata-verify.c: Initial skeleton of the metadata verifier.
8916
8917         * pedump.c: Add support for the metadata verifier.
8918
8919         * verify-internal.h: Export the whole assembly metadata verifier function.
8920
8921 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
8922
8923         * gc.c (mono_gc_init): Fix the comments about deadlock on windows.
8924
8925 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
8926
8927         * Makefile.am: Upgrade dtrace-prelink.sh location.
8928
8929 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
8930
8931         * gc.c (mono_gc_init): Wait for finalizer thread to init on windows as
8932         well. Otherwise the shutdown deadlock that happens on unix will can happen
8933         as well.
8934         If the main thread code finishes too fast it's possible that the finalizer
8935         thread won't have executed yet, won't record itself as the finalizer thread
8936         and the shutdown sequence will wait on it forever.
8937
8938 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
8939
8940         * threads.c (mono_thread_current): Make THREAD_DEBUG work on windows
8941         with MSVC.
8942
8943 2009-01-08  Miguel de Icaza  <miguel@novell.com>
8944
8945         * appdomain.c: Initialize the mono_strtod_mutex here, thanks to
8946         Robert Jordan for pointing this out.
8947
8948 2009-01-08  Christian Prochnow  <cproch@seculogix.de>
8949
8950         * icall.c
8951         * icall-def.h: added internal calls ves_icall_System_IO_DriveInfo_GetDiskFreeSpace,
8952         ves_icall_System_IO_DriveInfo_GetDriveType.
8953
8954 2009-01-07  Miguel de Icaza  <miguel@novell.com>
8955
8956         * icall.c: Wrap calls to mono_strtod in CriticalSection
8957         invocations when using eglib, to work around #464316.
8958
8959 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
8960
8961         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Double check the
8962         return value of GetCurrentDirectory to never access unitialized memory.
8963
8964 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
8965
8966         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Properly check the
8967         return value of GetCurrentDirectory and expand the buffer if needed.
8968
8969         Fixes #459094.
8970
8971 2009-10-07 Tom Hindle  <tom_hindle@sil.org>
8972
8973         * marshal.c (GetIUnknownForObjectInternal, GetIUnknownForObjectInternal) : 
8974           Adding a call to mono_init_com_types.
8975
8976         Code is contributed under MIT/X11 license.
8977
8978 2009-01-07  Geoff Norton  <gnorton@novell.com>
8979
8980         * socket-io.c: ioctlsocket(FIONREAD) returns the size of the UDP header as well on 
8981         darwin.  Use getsockopt SO_NREAD instead to get the right values for TCP and UDP.
8982         ai_canonname can be null in some cases on darwin, where the runtime assumes it will 
8983         be the value of the ip buffer.
8984
8985 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
8986
8987         * verify.c (mono_class_interface_implements_interface): Verify parents as we can't rely on
8988         interfaces_packed here.
8989
8990         Fixes part of #463294.
8991
8992 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
8993
8994         * verify.c (is_array_type_compatible): Ignore bounds and sizes when checking array compatibility.
8995
8996         Fixes part of #463294.
8997
8998 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
8999
9000         * verify.c (stack_slot_is_complex_type_not_reference_type): Check if the type
9001         is a boxed complex as well.
9002
9003         Fixes part of #463294.
9004
9005 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9006
9007         * reflection.c (mono_image_get_methodref_token): Add an extra create_typespec parameter to
9008         control if a methodspec should be created for the generic method definition from external assemblies.
9009         Caching of methodspec is done using the handleref hash table.
9010
9011         Fixes #462592.
9012
9013 2009-01-05 Rodrigo Kumpera  <rkumpera@novell.com>
9014
9015         * loader.c (find_method): When searching the interfaces of a class
9016         check the transitive closure of implemented interfaces.
9017
9018         Fixes #463303.
9019
9020 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
9021
9022         * class.c (get_implicit_generic_array_interfaces): Improve debugging code.
9023         
9024 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
9025
9026         * class.c (get_implicit_generic_array_interfaces): Extract valuetype
9027         interfaces calculation to fill_valuetype_array_derived_types.
9028
9029         * class.c (get_implicit_generic_array_interfaces): Valuetypes need IList /
9030         ICollection / IEnumerator interfaces for their extra twin type - sbyte for byte
9031         for example.
9032
9033         * class.c (get_implicit_generic_array_interfaces): InternalEnumerator gets
9034         interfaces for valuetypes if needed.    
9035
9036         * class.c (fill_valuetype_array_derived_types): Enums should have interfaces
9037         for their basetype as well. Types are array expanded if rank is > 0.
9038
9039         Fixes #400716.
9040
9041 2008-12-30  Bill Holmes  <billholmes54@gmail.com>
9042
9043         * socket-io.h : Changing the signature of
9044           ves_icall_System_Net_Sockets_Socket_Accept_internal to pass
9045           the blocking state.
9046
9047         * icall-def.h :  Changing the signature of
9048           System.Net.Sockets.Socket.Accept_internal to pass the blocking state.
9049
9050         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
9051           For Windows only.  Avoid blocking when calling accept by
9052           querying for a connection via select.  The loop also queries
9053           the thread state every 1000 micro seconds for the thread
9054           stop state.  This will avoid the process hanging on shutdown
9055           when using a TcpChannel that is never connected to.
9056
9057         Code is contributed under MIT/X11 license.
9058
9059 2008-12-30  Marek Safar  <marek.safar@gmail.com>
9060
9061         * tabledefs.h: Add METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE.
9062
9063 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
9064
9065         * class.c (get_implicit_generic_array_interfaces): Extract common
9066         code to a helper function making it a lot easier on the eyes.
9067
9068 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
9069
9070         * class.c (get_implicit_generic_array_interfaces): If the internal
9071         enumerator is an interface inflate System.Object instead of itself.
9072
9073         Fixes #461261.
9074
9075 2008-12-24 Rodrigo Kumpera  <rkumpera@novell.com>
9076
9077         * object.c (mono_runtime_invoke_array): Don't assert with
9078         byref nullable types.
9079
9080         * marshal.c (mono_marshal_get_runtime_invoke): To handle
9081         byref nullables we unbox the object and store it on the
9082         stack. 
9083         We can't use the boxed object since it is the T of Nullable<T>
9084         and the boxed representation of a nullable it's underlying type
9085         or null.
9086         We could cheat and create a boxed nullable and use the same
9087         machinery of other byref VTs but this feels like a hack and
9088         using the stack has the bonus of reducing heap pressure.
9089
9090         Fixes #461941.
9091
9092 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
9093
9094         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
9095         return value.
9096
9097         Fixes #461867.
9098
9099 2008-12-19  Bill Holmes  <billholmes54@gmail.com>
9100
9101         * icall-def.h : Adding an internal call definition for 
9102           System.Environment.internalBroadcastSettingChange.
9103
9104         * icall.c : Adding a Windows only implementation to broadcast a 
9105           WM_SETTINGCHANGE when an environment variable has changed.
9106
9107         Code is contributed under MIT/X11 license.
9108
9109 2008-12-19  Mark Probst  <mark.probst@gmail.com>
9110
9111         * class.c, class-internals.h: Made
9112         mono_class_has_parent_and_ignore_generics() non-static.
9113
9114 Thu Dec 18 16:35:22 CET 2008 Paolo Molaro <lupus@ximian.com>
9115
9116         * image.c: deal with the mmap failing when loading an image.
9117
9118 2008-12-17  Geoff Norton  <gnorton@novell.com>
9119
9120         * threadpool.c: Ensure that the io_queue_lock is initialized
9121         in all circumstances, as we always attempt to cleanup against it.
9122
9123 2008-12-17  Miguel de Icaza  <miguel@novell.com>
9124
9125         * icall.c (ves_icall_System_Environment_get_Platform): For
9126         compatibility reasons for existing client code we will keep
9127         returning 4 for a while.   
9128
9129         For how long will depend on the documentation being updated, and
9130         for us to give client code a chance to be updated.
9131
9132         This reverts the original decison on #433108 since we did not
9133         catch roughly 33 instances of the broken code in our own source
9134         code base, we did not catch failures on the buildbots, and QA did
9135         not bring this as a problem.
9136
9137         Only today I found some customer's code breaking due to our own
9138         class libraries not being fully updated and tracked it down to
9139         this change.  I am reverting it because if we could not even get
9140         our story straight in our own code base, how can we hope that our
9141         end user code be fixed?
9142
9143         As of this morning, our Wiki page that documents how to detect
9144         Unix had not been fixed.    
9145
9146 2008-12-16  Zoltan Varga  <vargaz@gmail.com>
9147
9148         * metadata.c (inflated_method_in_image): Add a workaround for #458168.
9149
9150         * class.c (mono_class_get_fields): Handle loading errors.
9151
9152 2008-12-12 Mark Mason <mmason@upwardaccess.com>
9153
9154         * 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.
9155         
9156 2008-12-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
9157
9158         * mono-perfcounters.c: avoid warning.
9159
9160 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9161
9162         * reflection.c (ensure_runtime_vtable): Work on generic instances and
9163         make sure all interfaces have MonoClass::interface_id set.
9164
9165         * reflection.c (ensure_generic_class_runtime_vtable): Ensure the
9166         method table is property set.
9167
9168 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9169
9170         * class.c: New function mono_class_setup_interface_id that setup
9171         MonoClass::interface_id if needed.
9172
9173         * class-internals.h: Export new function.
9174
9175 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9176
9177         * class.c: Add code to sanity check the vtable after setup_vtable_general
9178         has done it's work.
9179
9180 2008-12-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
9181
9182         * icall.c: make Assembly.GetExecutingAssembly work properly when
9183         reflection is used to invoke the method.
9184         Bug #321781 fixed.
9185
9186 2008-12-11  Mark Probst  <mark.probst@gmail.com>
9187
9188         * metadata/generic-sharing.c: Look for constraints in all type
9189         arguments, not just the first one.
9190
9191 2008-12-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
9192
9193         * appdomain.c: return the correct CodeBase for an Assembly instance
9194         that was loaded from the shadow-copy directories.
9195         Bug #458190 fixed.
9196
9197 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
9198
9199         * sgen-gc.c (build_nursery_fragments): Clear nursery_next/nursery_frag_real_end.
9200
9201         * sgen-gc.c (check_object): New debugging helper function.
9202
9203         * object.c: Fix calls to mono_value_copy_array ().
9204
9205 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9206
9207         * class.c (mono_class_setup_fields): If working on an inflated class
9208         first check if the generic definition did init with success.
9209
9210         Fixes #445361.
9211
9212 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9213
9214         pedump.c (main): Fix a warning.
9215
9216 2008-12-10  Bill Holmes  <billholmes54@gmail.com>
9217
9218         * object-internals.h : Adding a definition for 
9219           MonoReflectionComVisibleAttribute.
9220
9221         * marshal.c (cominterop_com_visible) :  Method added to check the 
9222           ComVisible attribute of a class.
9223
9224         * marshal.c (cominterop_raise_hr_exception, cominterop_get_interface) :  
9225           cominterop_raise_hr_exception added to consolidate common code 
9226           to raise hr exceptions.
9227
9228         * marshal.c (cominterop_can_support_dispatch) :  Method added to determine 
9229           if a managed class should support IDispatch.
9230
9231         * marshal.c 
9232           (cominterop_get_idispatch_for_objec, cominterop_ccw_queryinterfacet) :  
9233           Added additional checks for managed object when getting 
9234           an IDispatch interface.
9235
9236         Code is contributed under MIT/X11 license.
9237
9238 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9239
9240         pedump.c (main): Handle mono_get_method () returning NULL. 
9241
9242 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
9243
9244         * marshal.h: Fix a warning.
9245
9246 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
9247
9248         * marshal.c : Adding cominterop_release_all_rcws to release all
9249           runtime callable wrappers held by the runtime.
9250
9251         * marshal.h : Adding declaration for cominterop_release_all_rcws.
9252           
9253         Code is contributed under MIT/X11 license.
9254
9255 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
9256
9257         * metadata.c (mono_image_alloc_lock): New helper function.
9258         (mono_image_alloc0_lock): Ditto.
9259
9260         * metadata.c: Use the alloc_lock () helper functions for allocating
9261         memory from the image mempool.
9262
9263 2008-12-08 Rodrigo Kumpera  <rkumpera@novell.com>
9264
9265         * class.c (mono_class_from_generic_parameter): Document it's
9266         locking behavior. Fix double checked locking here, we stored in
9267         param->pklass a partially initialized MonoClass and no membar was used.
9268
9269 2008-12-05  Marek Habersack  <mhabersack@novell.com>
9270
9271         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
9272         (3) functions are present in the C library use them to do the
9273         job. If they are absent, make sure that the sum of int_part and
9274         dec_part is rounded before returning. This is necessary due to the
9275         division of dec_part by the power of 10 before the final addition
9276         is performed - if the result is not rounded in some cases it will
9277         yield invalid results.
9278
9279 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
9280
9281         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
9282         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
9283         instruction instead of a pointer constant.
9284
9285 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
9286
9287         * loader.c (mono_method_get_header): Do most of the work outside the
9288         loader lock, to avoid assembly load hook deadlocks.
9289
9290         * metadata.c (mono_metadata_parse_mh_full): Use finer-grained locking.
9291         (mono_metadata_parse_type_full): Ditto.
9292
9293 2008-12-02 Rodrigo Kumpera  <rkumpera@novell.com>
9294
9295         * mempool.c (mono_backtrace): Take the number of allocated bytes as argument.
9296         Make the stack depth fixed. Ensure proper argument passing to the backtrace
9297         funtions. Finally, use a lock to produce well ordered output.
9298
9299         The lock looks silly, as all calls to the corlib mempool should be guarded
9300         with the loader lock, but for some reason this fact doesn't help. 
9301
9302         * mempool.c (mono_mempool_alloc0): Add support for TRACE_ALLOCATIONS.
9303
9304 2008-12-02  Mark Probst  <mark.probst@gmail.com>
9305
9306         * socket-io.c: 64 bit big-endian fixes.
9307
9308 2008-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
9309
9310         * verify.c (is_compatible_boxed_valuetype): Rewrite function to work properly with
9311         targets that require strict compatibility between the types.
9312
9313         * verify.c (verify_stack_type_compatibility_full): Boxed values are not compatible
9314         to unboxed types. All cases that this is true are checked by is_compatible_boxed_valuetype.
9315         Kill the strict argument and create a new one valuetype_must_be_boxed.
9316
9317         * verify.c (verify_delegate_compatibility): Use verify_stack_type_compatibility_full to
9318         state that all valuetypes must be boxed.
9319
9320         Fixes #448560.
9321
9322 2008-11-29  Kornél Pál  <kornelpal@gmail.com>
9323
9324         * coree.c (MonoFixupExe): Use sizeof(IMAGE_BASE_RELOCATION) instead of
9325         IMAGE_SIZEOF_BASE_RELOCATION as newer Vista SDKs no longer define the latter.
9326
9327         Contributed under MIT/X11 license.
9328
9329 2008-11-28 Rodrigo Kumpera  <rkumpera@novell.com>
9330
9331         * class.c (mono_class_setup_fields): Don't copy MonoType::attrs as
9332         the inflate_generic_type machinery should handle it.
9333
9334         This avoids a crash when the field's flags is zero and it's type is
9335         a primitive.
9336         What happens is that mono_metadata_parse_type_full will see that opt_attrs
9337         is zero and will return one of the cached built-in primitive types. Since
9338         those types live in read-only memory, the code that copies it crashes.  
9339
9340 2008-11-28  Mark Probst  <mark.probst@gmail.com>
9341
9342         * object.c: Don't put function descriptors into generalized IMT
9343         thunks.
9344
9345 2008-11-28  Mark Probst  <mark.probst@gmail.com>
9346
9347         * class.c: Enable generic code sharing on PPC64.
9348
9349 2008-11-27  Mark Probst  <mark.probst@gmail.com>
9350
9351         * mempool.c, mempool-internals.h: Added g_slist_append_mempool()
9352         from mini/mini.c.
9353
9354         * generic-sharing.c: Allocate the method template slists from the
9355         image mempool so it doesn't leak.
9356
9357 2008-11-27 Rodrigo Kumpera  <rkumpera@novell.com>
9358
9359         * class.c (generic_array_methods): Release the linked list.
9360
9361 2008-11-27  Mark Probst  <mark.probst@gmail.com>
9362
9363         * marshal.c (mono_string_builder_to_utf8): Fixed a wrong
9364         invocation to g_utf16_to_utf8().
9365
9366 2008-11-26  Mark Probst  <mark.probst@gmail.com>
9367
9368         * icall.c (mono_ArgIterator_IntGetNextArg): Handle sub-word sized
9369         arguments on big endian archs.
9370
9371 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
9372
9373         * reflection.c: (_mono_reflection_parse_type) skip leading spaces in
9374         the type name (test added in corlib).
9375
9376 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
9377
9378         * pedump.c: initialize perf. counters. Fixes a segv.
9379
9380 2008-11-25  Martin Baulig  <martin@ximian.com>
9381
9382         * mono-debug-debugger.c
9383         (mono_debugger_runtime_invoke): Return the exception object if an
9384         exception was thrown.  Visual Studio displays the exception object
9385         in the locals window.
9386
9387 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9388
9389         * mini-trampolines.c (mono_delegate_trampoline): Don't return a
9390         ftnptr.
9391
9392 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9393
9394         * marshal.c (mono_type_native_stack_size): MONO_TYPE_I and
9395         MONO_TYPE_U are sizeof (gpointer), too.
9396
9397 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9398
9399         * marshal.c (mono_type_native_stack_size): Fixed size and
9400         alignment for reference types.
9401
9402 2008-11-23  Mark Probst  <mark.probst@gmail.com>
9403
9404         * class.c (mono_class_generic_sharing_enabled): Disable generic
9405         code sharing for PPC64.
9406
9407 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
9408
9409         * icall.c (mono_method_get_equivalent_method): Make sure
9410         method->klass->methods is inited before looping over it.
9411
9412 2008-11-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
9413
9414         * object.c: when calling ExecuteAssembly in a newly created domain,
9415         the configuration file and application base are already set up.
9416         Bug #446353 take 2 fixed.
9417
9418 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
9419
9420         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
9421         Fixes #444715. Fix a warning.
9422
9423 2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
9424
9425         * appdomain.c: write the full path of the assembly to the .ini file
9426         created when "shadow-copying"
9427         Bug #446353 fixed.
9428
9429 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
9430
9431         * debug-helpers.c (mono_method_full_name): Stringify wrapper types even
9432         if signature==FALSE.
9433
9434 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
9435
9436         * marshal.h : Fix the cygwin build.
9437            marshal.c:12442: undefined reference to `_IID_IMarshal'
9438           
9439         Code is contributed under MIT/X11 license.
9440
9441 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
9442
9443         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
9444           free threaded marshaler when QueryInterface is called on a COM callable
9445           wrapper requesting the IMarshal interface.
9446           
9447         Code is contributed under MIT/X11 license.
9448
9449 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
9450
9451         * domain-internals.h (MonoDomain): Update MONO_DOMAIN_LAST_GC_TRACKED.
9452
9453         * reflection.c (mono_type_get_object): Special case the very common
9454         void type.
9455
9456         * domain-internals.h (struct _MonoDomain): Add 'typeof_void' field to
9457         hold typeof(void).
9458
9459 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
9460
9461         * process.h : Adding method declaration for
9462           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9463           
9464         * process.c : Adding implementation for
9465           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9466           
9467         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
9468           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9469
9470         Code is contributed under MIT/X11 license.
9471
9472 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
9473
9474         * appdomain.c (unload_thread_main): Clean up threadpool by
9475         calling mono_thread_pool_remove_domain_jobs.
9476
9477         * domain-internals.h (struct _MonoDomain): Add new fields to
9478         help coordinate the cleanup of the threadpool.
9479
9480         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
9481         that cleans up the threadpool of all jobs associated with an appdomain.
9482         It does that by cleaning up the queues and making sure all active
9483         threads are accounted.
9484
9485         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
9486         unloaded or in the process of. Take this is such way that there is
9487         no race condition between another thread starting the unload and the
9488         current thread acknowledging it.
9489
9490         * threadpool.c (async_invoke_thread): Same.
9491
9492         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
9493         firing the new thread.
9494
9495         * threadpool.c (start_tpthread): Same.
9496
9497         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
9498
9499         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
9500
9501 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
9502
9503         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9504         Add support for DuplicateHandle.
9505         
9506         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9507         Add support for DuplicateHandle.
9508         
9509         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9510         Add support for DuplicateHandle.
9511
9512         Code is contributed under MIT/X11 license.
9513
9514 2008-11-06  Mark Probst  <mark.probst@gmail.com>
9515
9516         * class-internals.h: Make min_align into a whole byte.
9517
9518         * class.c: Set min_align for SIMD types to 16.
9519
9520 2008-11-05  Geoff Norton  <gnorton@novell.com>
9521
9522         * attach.c: Default the attacher to enabled for all cases including
9523         embedded.
9524
9525 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
9526
9527         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
9528         change r117650.
9529
9530 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9531
9532         * monitor.c, monitor.h: New function for querying offsets of
9533         members of MonoThreadsSync.
9534
9535 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9536
9537         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
9538         to speed up this function and to avoid the boundless memory growth caused by
9539         the signature_dup () calls.
9540
9541 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9542
9543         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
9544         wrapper.
9545
9546         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
9547         by 1 bit.
9548
9549         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
9550
9551 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
9552
9553         * appdomain.c:
9554         * domain-internals.h: made mono_set_private_bin_path_from_config()
9555         "internal".
9556         * object.c: call the above function after setting the configuration
9557         file path for the root domain.
9558         Fixes bug #314478.
9559
9560 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
9561
9562         * assembly.c: when the assembly is loaded from an absolute path, end
9563         basedir with a directory separator.
9564         Bug #440781 fixed.
9565
9566 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9567
9568         * monitor.c (mono_monitor_get_fast_enter_method): If
9569         CompareExchange is not available, don't create the fastpath
9570         instead of asserting.  (The method is missing in the 1.1 profile.)
9571
9572 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9573
9574         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
9575
9576         * monitor.c, monitor.h: Code for generating Monitor.Enter and
9577         Monitor.Exit IL fastpaths.
9578
9579 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9580
9581         * class.c (mono_class_create_from_typedef): Added Vector2ul.
9582
9583 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9584
9585         * class.c (mono_class_create_from_typedef): Added Vector2l.
9586
9587 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9588
9589         * class.c (mono_class_create_from_typedef): Added Vector2d.
9590
9591 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
9592
9593         * appdomain.c: translate \ into / for cache_path.
9594         * domain-internals.h: new mono_is_shadow_copy_enabled().
9595         * icall.c: (fill_reflection_assembly_name) do the same path
9596         manipulations that get_code_base does.
9597         (get_code_base) use mono_is_shadow_copy_enabled.
9598
9599 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
9600
9601         * appdomain.c: shadow-copied assemblies go to CachePath +
9602         ApplicationName when both are set. DynamicBase has nothing to do with
9603         shadow copies.
9604         Bug #406877 fixed.
9605
9606 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9607
9608         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
9609         STANDALONESIG table.
9610
9611         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
9612         standalone signatures.
9613
9614         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
9615         comparison code: instead of comparing the signatures using a custom
9616         equals function, transform them to a common signature and compare that. This
9617         works better with AOT.
9618
9619 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
9620
9621         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
9622
9623         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
9624         call for generic instances.
9625         (mono_class_setup_properties): Call setup_properties () before accessing
9626         gklass->properties.
9627
9628         * class.c (mono_class_get_virtual_methods): New helper function to iterate
9629         over the virtual methods of a class using metadata if possible, avoiding the
9630         creation of MonoMethod's for non-virtual methods.
9631         
9632         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
9633         get_virtual_methods () to iterate over the virtual methods of classes.
9634
9635 2008-10-25  Martin Baulig  <martin@ximian.com>
9636
9637         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
9638
9639 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9640
9641         * class.c (mono_class_create_from_typedef): Added Vector4i.
9642
9643 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9644
9645         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
9646         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
9647         special-casing applies to eliminate the call completely.
9648
9649 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9650
9651         * class.c (mono_class_create_from_typedef): Added Vector8s.
9652
9653 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9654
9655         * class.c (mono_class_create_from_typedef): Added Vector16sb.
9656
9657 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
9658
9659         * icall.c: get rid of annoying warning.
9660
9661 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
9662
9663         * threadpool.c: in 1.x, if you change the background status of the
9664         threadpool thread, it's not reset.
9665         Remove unnecessary calls to SetState.
9666
9667 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9668
9669         * threadpool.c: asynchronously create a set of idle threads upon first
9670         use of the threadpool. SetMinThreads will now start the appropriate
9671         number of idle threads if they are not already running. The default is
9672         1 threadpool thread per CPU. Increased the maximum number of threads
9673         per CPU to 10.
9674
9675 2008-10-22  Martin Baulig  <martin@ximian.com>
9676
9677         Revert r116521 from Zoltan, it breaks the debugger:
9678
9679         * class.c (mono_class_get_virtual_methods): New helper function to iterate
9680         over the virtual methods of a class using metadata if possible, avoiding the
9681         creation of MonoMethod's for non-virtual methods.
9682         
9683         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
9684         get_virtual_methods () to iterate over the virtual methods of classes.
9685
9686 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9687
9688         * threads.c: when creating a threadpool thread, set its state to
9689         'background'.
9690         * threadpool.c: reset the background state of a threadpool thread
9691         after finishing each work item
9692         Bug #437888 fixed.
9693
9694 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
9695
9696         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
9697         
9698         * class.c (mono_class_setup_vtable_general): Add an optimized version for
9699         generic instances which works by inflating the methods in the container
9700         class's vtable.
9701
9702         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
9703         variant which doesn't make a copy if no inflation was done.
9704         (mono_class_setup_fields): Use it.
9705
9706         * metadata.c (mono_metadata_get_shared_type): New helper function to
9707         return a shared instance of a given MonoType.
9708
9709         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
9710         a copy of most non-generic types.
9711
9712 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
9713
9714         * threadpool.c: remove one more GetSystemInfo () call.
9715
9716 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
9717
9718         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
9719         use the code in mono-proclib.h to get processor information.
9720
9721 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9722
9723         * appdomain.c: fixed the logic that determines whether assemblies in a
9724         directory are "shadow-copied" or not. Bug #433483 fixed.
9725
9726 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
9727
9728         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
9729         warning.
9730
9731 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9732
9733         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
9734         returning a vtype.
9735
9736         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
9737         reflection.c: Use mono_field_get_name () for accessing a field's name.
9738
9739         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
9740         class.c
9741
9742         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
9743         field.
9744
9745         * loader.c (find_method_in_class): Reenable the metadata optimization by
9746         not using it for generic instances.
9747
9748         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
9749         data/def_type fields from MonoClassField into a separate structure.
9750         (struct MonoClassField): Remove data/def_type fields.
9751         (struct _MonoClass): Add a 'field_def_values' array to store the default
9752         values/RVA for fields.
9753
9754         * class.c reflection.c: Update after the changes.
9755         
9756         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
9757         for accessing field->data.
9758
9759         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
9760
9761         * loader.c (find_method_in_class): Revert the last change for now as
9762         it breaks Mono.C5 unit tests.
9763
9764         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
9765         'field_generic_types' and 'field_objects' which contain the information
9766         previously stored in MonoInflatedField.
9767         (MonoInflatedField): Delete.
9768         (struct _MonoClassField): Delete 'generic_info' field.
9769
9770         * reflection.c: Store the information which was previously in 
9771         field->generic_info in MonoDynamicGenericClass instead.
9772
9773         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
9774         MonoClassField changes.
9775
9776 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
9777
9778         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
9779         store the value inside the data array of the MonoMethodWrapper.
9780         This saves memory, is faster and fixes the lifetime issues (methods
9781         were never removed from the hash previously). May also fix bug#436996.
9782
9783 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9784
9785         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
9786         generic instances, compute the type from the generic definition instead of
9787         looking in field->generic_info.
9788
9789         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
9790         for inflated fields, the only user was get_fieldref_token () which no
9791         longer needs it.
9792
9793         * class.c (mono_class_init): Revert the last change as it seems to cause
9794         crashes.
9795
9796         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
9797         bytes on 64 bit platforms.
9798
9799         * object.c (mono_class_create_runtime_vtable): Fix a warning.
9800         
9801         * object.c (mono_class_create_runtime_vtable): Don't initalize
9802         field->data/field->def_type here, it is done lazily by 
9803         mono_class_get_field_default_value ().
9804
9805         * icall.c (ves_icall_get_enum_info): Call 
9806         mono_class_get_field_default_value () instead of directly accessing
9807         field->data and field->def_type.
9808
9809         * object.c (get_default_field_value): Ditto.
9810
9811         * class.c (mono_field_get_data): Ditto.
9812         
9813         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
9814         call for generic instances.
9815
9816         * loader.c (find_method_in_class): If klass != from_class, then inflate
9817         the method with the context of from_class, since the caller assumes this.
9818
9819 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
9820
9821         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
9822         for accessing method->slot.
9823
9824 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
9825
9826         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
9827
9828 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9829
9830         * class.c (mono_method_get_vtable_index): Use
9831         mono_method_get_vtable_slot () for accessing method->slot.
9832
9833         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
9834         accessing klass->methods.
9835
9836         * class.c (mono_method_get_vtable_slot): New helper function.
9837         (mono_class_get_vtable_entry): Ditto.
9838         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
9839         accessing method->slot.
9840
9841         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
9842         method to get_inflated_method ().
9843
9844         * class.c (mono_class_get_inflated_method): New helper method to obtain
9845         a method of an inflated class without calling setup_methods ().
9846         (mono_class_get_cctor): Use get_inflated_method.
9847
9848         * generic-sharing.c (mono_class_get_method_generic): Ditto.
9849         
9850         * marshal.c image.c: Lazily create all the marshal caches.
9851
9852         * image.c (mono_image_init): Move initialization of runtime_invoke
9853         caches to marshal.c.
9854
9855         * marshal.c (get_cache): New helper function to lazily initialize a 
9856         wrapper cache.
9857         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
9858
9859         * debug-helpers.c (mono_method_full_name): Include generic arguments.
9860
9861 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
9862
9863         * loader.c: fixed check for interface type.
9864
9865 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
9866
9867         * appdomain.c: check for NULL setup before it's referenced.
9868
9869 p
9870 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
9871
9872         * class.c: remove the unused old vtable setup code.
9873
9874 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
9875
9876         * class.c: don't depend on interface order in
9877         setup_interface_offsets (bug #435777).
9878         * reflection.c: sort the InterfaceImpl table (patch from
9879         Jb Evain  <jbevain@novell.com>).
9880
9881 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9882
9883         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
9884         the low level assemblies lock.
9885
9886 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
9887
9888         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
9889         object.c, reflection.c, socket-io.c, threads.c: introduced
9890         mono_framework_version () to return the major framewrok version,
9891         changed the code that was using more complex patterns to use it.
9892         Return the correct value for PlatformID for OSX.
9893
9894 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
9895
9896         * icall-def.h, process.h, process.c: added an icall to get info about
9897         processes using mono-proclib.
9898
9899 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
9900
9901         * mono-perfcounters.c: use the mono-proclib functions to
9902         access process information.
9903
9904 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
9905
9906         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
9907         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
9908         reflection.c: remove rawbuffer usage: mmap support is more sanely
9909         provided by utils/mono-mmap.
9910
9911 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
9912
9913         * gc.c: use posix semaphores when possible so that
9914         mono_gc_finalize_notify() is signal safe.
9915
9916 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
9917
9918         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
9919         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
9920         be #ifdef-ed out, the linker will remove the rest.
9921
9922         * marshal.c: Implement DISABLE_COM.
9923
9924         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
9925
9926 2008-10-11  Miguel de Icaza  <miguel@novell.com>
9927
9928         * locales.c (string_invariant_compare_char): Optimization: do not
9929         call g_unichar_type unless we actually need the information.
9930
9931 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9932
9933         * object.c, class-internals.h: Also create remoting trampolines
9934         for generic methods.  Pass the domain to the remoting trampoline
9935         creation function, too.
9936
9937 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9938
9939         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
9940
9941 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9942
9943         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
9944         Vector4ui.
9945
9946 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
9947
9948         * assembly.c:
9949         * locales.c: remove the use of g_strdown. Fixes bug #322313.
9950
9951 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
9952
9953         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
9954         for the least possible amount of time (extending the fix in r113458).
9955
9956 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9957
9958         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
9959
9960 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9961
9962         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
9963         as possible simd intrinsic types.
9964         Optimized the test to check for the common prefix first.
9965
9966 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
9967
9968         * class.c: back out part of a broken optimization committed on
9969         May 23th (bug #433908).
9970
9971 2008-10-09  Mark Probst  <mark.probst@gmail.com>
9972
9973         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
9974         Win32.  Should fix #432388 for most cases until we have the new
9975         profiler on Win32.
9976
9977 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9978
9979         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
9980         instead of using inst->id so the hash is stable for AOT.
9981
9982 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
9983
9984         * appdomain.c:
9985         * icall.c: create a .ini file for shadow-copied assemblies that
9986         contains the location of the original assembly. Use this to return the
9987         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
9988         Also fix the number of '/' for windows when returning the CodeBase.
9989         Fixes bug #430920.
9990
9991 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9992
9993         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
9994
9995         Code is contributed under MIT/X11 license.
9996
9997 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9998
9999         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
10000           if if the class vtable needs initialized.
10001
10002         Code is contributed under MIT/X11 license.
10003
10004 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
10005
10006         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
10007           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
10008           STRING->BSTR, and CLASS->INTERFACE.
10009
10010         Code is contributed under MIT/X11 license.
10011
10012 2008-10-07  Marek Habersack  <mhabersack@novell.com>
10013
10014         * sysmath.h: changed the declaration of the
10015         ves_icall_System_Math_Round2 icall by adding an extra
10016         away_from_zero parameter.
10017
10018         * sysmath.c (ves_icall_System_Math_Round2): added support for
10019         away from zero rounding. The icall now takes an extra boolean
10020         parameter to signal that away from zero operation is requested.
10021
10022 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
10023
10024         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
10025         the delegate klass so it can work with full-aot.
10026         (mono_marshal_get_delegate_end_invoke): Ditto.
10027         (mono_marshal_get_delegate_invoke): Ditto.
10028
10029 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
10030
10031         * gc.c, attach.h, attach.c: remove a bad pattern:
10032         add_finalizer_callback () is not implemented correctly, it can't
10033         without adding more overhead to the finalizer loop and it's not
10034         even needed, since we know exactly what we need to call, so there is
10035         no need to do so through an expensive function pointer.
10036
10037 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
10038
10039         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
10040         for the no-gc case.
10041         * attach.c (mono_attach_init): Remove the #ifdef.
10042
10043 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
10044
10045         * attach.c (mono_attach_init): Don't use
10046         mono_gc_add_finalizer_thread_callback when compiling without GC.
10047         Fixes #432306.
10048         
10049         Code is contributed under MIT/X11 license.
10050
10051 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10052
10053         * class.c (mono_class_create_from_typedef): Remove the 
10054         #ifndef DISABLE_SIMD stuff.
10055
10056 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
10057
10058         * class-internals.h (MonoClass): Added simd_type bit field.
10059
10060         * class.c (mono_class_create_from_typedef): Check if type is a simd
10061         intrinsic.
10062
10063 2008-10-03  Mark Probst  <mark.probst@gmail.com>
10064
10065         * object.c (mono_method_add_generic_virtual_invocation): Only add
10066         instantiations to the thunk whose count is at least as large as
10067         the threshold.
10068
10069 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
10070
10071         * icall.c: changed the Type of the exception thrown when trying to
10072         invoke a constructor on an abstract class. Part of the fix for bug
10073         #324185.
10074
10075 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10076
10077         * class.c, class-internals.h (mono_method_get_vtable_index): New
10078         function which returns the index into the vtable and properly
10079         handles inflated virtual generic methods.
10080
10081 2008-10-01  Mark Probst  <mark.probst@gmail.com>
10082
10083         * object.c, domain.c, object-internals.h, domain-internals.h:
10084         Generalize IMT thunk machinery to also handle thunks for virtual
10085         generic method invokes.  When a virtual generic method is invoked
10086         more than a number of times we insert it into the thunk so that it
10087         can be called without lookup in unmanaged code.
10088
10089         * generic-sharing.c, class-internals.h: Fetching a
10090         MonoGenericInst* for a method from an (M)RGCTX.
10091
10092 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10093
10094         * marshal.c (emit_marshal_string): Applied a variant of a patch by
10095         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
10096         marshalling. Fixes #431304.
10097
10098 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
10099
10100         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
10101           handle when ref is specified without In or Out.
10102
10103         Code is contributed under MIT/X11 license.
10104
10105 2008-09-30  Mark Probst  <mark.probst@gmail.com>
10106
10107         * loader.c (mono_get_method_constrained): Don't expand method with
10108         the class's context, because it's already a method of that class.
10109
10110 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
10111
10112         * attach.c : should be correct build fix.
10113
10114 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10115
10116         * attach.c: Fix the previous change.
10117
10118 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
10119
10120         * attach.c : quick w32 build fix.
10121
10122 2008-09-27  Miguel de Icaza  <miguel@novell.com>
10123
10124         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
10125         crashes MonoDevelop: #430455.
10126
10127 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10128
10129         * domain-internals.h (struct _MonoDomain): Move most fields used only by
10130         the JIT do MonoJitDomainInfo in ../mini/mini.h.
10131
10132         * domain.c: Remove initialization/cleanup of the removed fields.
10133
10134 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10135
10136         * class.c (mono_class_generic_sharing_enabled): Enable generic
10137         code sharing for PPC.
10138
10139 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
10140
10141         * attach.c : Fixing the Windows builds.
10142
10143         Code is contributed under MIT/X11 license.
10144
10145 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10146
10147         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
10148         the default generic sharing mode to 'all'.
10149
10150 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10151
10152         * generic-sharing.c, class-internals.h: New function for checking
10153         whether a method needs a static RGCTX invoke wrapper.  A few
10154         funtions moved from mini/generic-sharing.c.
10155
10156         * icall.c: New function used.
10157
10158 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10159
10160         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
10161         Static RGCTX invoke wrapping applies to value type methods, too.
10162
10163         * class.c (mono_class_setup_vtable_general): In generic-shared
10164         value types, wrap methods with a static RGCTX invoke wrapper.
10165
10166 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10167
10168         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
10169         osx build.
10170
10171 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10172
10173         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
10174         register a callback which is called when the finalizer thread is woken
10175         up.
10176         (finalizer_thread): Call the callback if it exists.
10177
10178         * attach.h attach.c: New files, implementing the attach mechanism.
10179
10180         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
10181         
10182         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
10183         by the previous change.
10184
10185 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
10186
10187         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
10188         loader.c, marshal.c, metadata-internals.h, metadata.c,
10189         method-builder.c, object.c, reflection.c: introduced specific functions
10190         to allocate from the domain and image mempools and cleaned up most of
10191         the code to use them (still missing a few in reflection.c).
10192         Keep the loader bytes counter updated.
10193
10194 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
10195
10196         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
10197         loader-related counters.
10198
10199 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
10200
10201         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
10202         added more MS-compatible counters.
10203
10204 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10205
10206         * class.c (mono_class_setup_fields): Call setup_fields before accessing
10207         class->blittable. Fixes #428217.
10208
10209 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
10210
10211         * reflection.c (mono_image_get_field_on_inst_token): Call 
10212         field_encode_signature () since that handles custom modifiers too.
10213         Fixes #424663.
10214
10215 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
10216
10217         * reflection.c (add_custom_modifiers): New helper function to merge custom
10218         modifiers stored in objects to a MonoType.
10219         (fieldref_encode_signature): Encode custom modifiers.
10220         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
10221         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
10222
10223 2008-09-19  Kornél Pál  <kornelpal@gmail.com>
10224
10225         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
10226         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
10227         64-bit IL only images because imports are not resolved for IL only images.
10228         Special thanks to Bill Holmes for finding this bug and testing the patch.
10229         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
10230
10231         Contributed under MIT/X11 license.
10232
10233 2008-09-19  Miguel de Icaza  <miguel@novell.com>
10234
10235         * mono-config.c (dllmap_start): Add support for the bits keyword
10236         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
10237
10238 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10239
10240         * reflection.c (inflate_mono_method): When the class the method is
10241         to be inflated for is itself not inflated, just return the method.
10242
10243 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
10244
10245         * mono-perfcounters.c: use more user friendly process instance names.
10246
10247 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
10248
10249         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
10250           handle "[in] ref" and "[in][out] ref" cases.
10251
10252         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
10253           to mono_mb_create_method.  This was causing problems calling native to
10254           managed passing Variants by value.
10255
10256         Code is contributed under MIT/X11 license.
10257
10258 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
10259
10260         * class.c (can_access_internals): Call mono_assembly_load_friends ()
10261         before accessing the friend_assembly_names field.
10262
10263         * assembly.c (mono_assembly_load_friends): Make this callable multiple
10264         times.
10265         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
10266         called lazily when it is needed.
10267
10268         * metadata-internals.h (struct _MonoAssembly): Add 
10269         'friend_assembly_names_inited' flag.
10270
10271 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
10272
10273         * mono-perfcounters-def.h: fix the types of a few counters.
10274         * mono-perfcounters.c: implemented the instance names getter
10275         and a few bugfixes.
10276
10277 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
10278
10279         * culture-info-table.h : regenerated.
10280
10281 2008-09-17  Robert Jordan  <robertj@gmx.net>
10282
10283         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
10284         context bound objects. Fixes #415577.
10285
10286         Code is contributed under MIT/X11 license.
10287
10288 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
10289
10290         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
10291         implementation (bug #423582).
10292
10293 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
10294
10295         * object.c (mono_object_get_virtual_method): Handle the case method->slot
10296         is not set. Fixes #426309.
10297
10298 2008-09-16  Jb Evain  <jbevain@novell.com>
10299
10300         * class.c (mono_class_from_name): fix the exported type look up
10301         when the type is defined in a referenced assembly.
10302
10303 2008-09-16  Jb Evain  <jbevain@novell.com>
10304
10305         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
10306         increment the next index counter on each iteration to make that work
10307         for more than one type forwarder. Unmanaged part to fix #422929.
10308
10309 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10310
10311         * object-internals.h: enum ComInterfaceType in
10312         MonoInterfaceTypeAttribute is guint32, not guint16.
10313
10314 2008-09-12  Mark Probst  <mark.probst@gmail.com>
10315
10316         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
10317         writing code.
10318
10319 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10320
10321         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
10322         not gboolean.
10323
10324 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10325
10326         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
10327         Endianness fixes for MonoSymbolFileOffsetTable.
10328
10329 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
10330
10331         * process.c (complete_path) : Removing quotes from the 
10332           input path.  The glib file routines do not handle file paths
10333           that have quotes around them.
10334
10335         Code is contributed under MIT/X11 license.
10336
10337 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
10338
10339         * socket-io.h : Adding a comment to provide locations where 
10340           changes to MonoSocketAsyncResult need to be synced.
10341
10342         Code is contributed under MIT/X11 license.
10343
10344 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
10345
10346         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
10347         parameters as well. Fixes #425001.
10348
10349 2008-09-08  Miguel de Icaza  <miguel@novell.com>
10350
10351         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
10352         windows build.
10353
10354 2008-09-07  Miguel de Icaza  <miguel@novell.com>
10355
10356         * console-io.c: Add support for tracking the window size if it
10357         changes.
10358
10359         The setup is very simple: the TtySetup function will now return a
10360         pointer to a location in memory that tracks the current console
10361         size.  The managed code checks its current value every time its
10362         queried against the last value set, and updates accordingly.
10363
10364         With this setup we can work with multiple consoles, and we do not
10365         require to poke into managed code from a signal handler.
10366
10367         Additionally, the environment for COLUMNS and LINES is now handled
10368         in unmanaged code.
10369
10370         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
10371
10372 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10373
10374         * marshal.c (mono_type_native_stack_size): Treat
10375         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
10376
10377 2008-09-04  Jb Evain  <jbevain@novell.com>
10378
10379         * class.c (mono_class_is_assignable_from): fix assignability of nullables
10380         to nullables.
10381
10382 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
10383
10384         * verify.c (verify_type_compatibility_full): Revert change
10385         to allow converting a native int to unmanaged pointer be verifiable
10386         under non-strict mode.
10387         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
10388
10389         * verify.c: Added some TODOs.
10390
10391 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
10392
10393         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
10394           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
10395           Changed to use GlobalAlloc for the memory returned on Windows platforms.
10396
10397         Code is contributed under MIT/X11 license.
10398
10399 2008-09-02  Jb Evain  <jbevain@novell.com>
10400
10401         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
10402
10403 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
10404
10405         reflection.c (typebuilder_setup_fields): Handle classes with
10406         explicit size.
10407
10408 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
10409
10410         class.c (mono_class_setup_events): Add memory barrier due to
10411         double checked locking.
10412         
10413         class.c (mono_class_setup_properties): Same.
10414
10415 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10416
10417         * class.c (mono_class_is_assignable_from): Fix the build.
10418         
10419         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
10420         before accessing klass->interface_bitmap. Fixes #421744.
10421
10422 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10423
10424         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
10425         the runtime into no-exec mode, useful when running the AOT compiler.
10426
10427         * appdomain.c gc.c object.c: Avoid executing managed code when running
10428         in no-exec mode.
10429         
10430         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
10431
10432         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
10433         special case when the mono_assembly_loaded () returns NULL because the 
10434         search hook is not installed.
10435
10436 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10437
10438         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
10439         crashes in bstr marshalling on linux.
10440
10441 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10442
10443         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
10444         with more than one parameter.
10445
10446 2008-08-24  Miguel de Icaza  <miguel@novell.com>
10447
10448         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
10449         start/stop flow control as well when turning off ICANON (allows
10450         C-s and C-q to be read by Console.ReadKey).
10451
10452 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10453
10454         * class.c (mono_class_init): Move the initialization of nested classes
10455         into mono_class_get_nested_types (). Fixes #418433.
10456
10457         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
10458         flag.
10459
10460         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
10461         iterating tough the nested classes of a class.
10462
10463 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10464
10465         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
10466         on arm.
10467
10468 2008-08-22  Miguel de Icaza  <miguel@novell.com>
10469
10470         * console-io.c (sigcont_handler): Support signal chaining for
10471         SIGCONT.
10472
10473         (console_set_signal_handlers): Use best practices with sigaction,
10474         clear the structure before using it. 
10475
10476 2008-08-22  Robert Jordan  <robertj@gmx.net>
10477
10478         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
10479         Fix the Windows build.
10480
10481 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10482
10483         * class.c (mono_class_generic_sharing_enabled): Make the default
10484         sharing mode 'corlib'.
10485
10486 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10487
10488         * console-io.c (console_set_signal_handlers): Fix a warning.
10489
10490         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
10491         method normally, the JIT will take care of avoiding recursion.
10492
10493 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10494
10495         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
10496
10497         Code is contributed under MIT/X11 license.
10498
10499 2008-08-20  Miguel de Icaza  <miguel@novell.com>
10500
10501         * console-io.c (sigcont_handler): We need to restore the entire
10502         termios state, not only the original settings, as things like echo
10503         can be controlled after this (Booish exposes this issue with its
10504         own ReadLine implementation).
10505
10506         Additionally, we need to set the terminal back into keypad_xmit
10507         mode.
10508         
10509         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
10510         string as a paramter as well.   Otherwise we get different
10511         keyboard sequences.
10512
10513 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10514
10515         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
10516         delegates with byref out parameter passing. Fixes #351520.
10517
10518         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
10519         a generic context.
10520         (mono_type_get_desc): Add the type arguments for GENERICINST.
10521         (mono_method_full_name): Stringify the class name using mono_type_full_name
10522         so it picks up generic arguments.
10523
10524 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
10525
10526         * console-io.c: Removed debug output.
10527
10528 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
10529
10530         reflection.c (mono_reflection_create_runtime_class): Alloc
10531         the nested classes linked list using the dynamic image mempool.
10532         Fixes leak in corlib compilation.
10533
10534 2008-08-19  Miguel de Icaza  <miguel@novell.com>
10535
10536         * console-io.c: Fix incredibly annoying behavior on the console
10537         after resuming execution after control-z.   This affected every
10538         console application.
10539
10540 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
10541
10542         * mempool-internals.h: Header for mono private mempool functions. The first
10543         two function are for allocating glib linked lists using pools.
10544
10545         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
10546
10547         * Makefile.am: Added mempool-internals.h.
10548
10549 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10550
10551         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
10552         (mono_domain_free): Ditto.
10553
10554         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
10555         be used by the JIT to store its domain-specific information, instead of putting
10556         it directly into MonoDomain.
10557
10558         * domain.c (mono_install_create_domain_hook): New helper function to install
10559         a hook which initializes domain->runtime_info.
10560
10561         * domain.c (mono_install_free_domain_hook): Ditto.
10562         
10563 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10564
10565         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
10566         asserting if the ares parameter is null.
10567
10568         * mono-perfcounters.c: Fix warnings.
10569
10570         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
10571         is not needed, don't check for interruptions either.
10572         (mono_marshal_get_delegate_end_invoke): Ditto.
10573
10574 2008-08-15  Marek Habersack  <mhabersack@novell.com>
10575
10576         * mono-perfcounters.c (predef_readonly_counter): added support for
10577         reading the ASP.NET Requests Queued counter from another process.
10578
10579 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10580
10581         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
10582         MonoImage to simplify the AOT code.
10583
10584 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
10585
10586         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
10587         marshalling. Fixes #416078.
10588
10589 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10590         
10591         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
10592         it is set, looking up the icall address is deferred to the JIT, since 
10593         in embedded scenarios, the icall might not be registered in the runtime
10594         doing the AOT compilation. Backported from the 2.0 branch.
10595
10596 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10597
10598         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
10599         Fixes #415621.
10600
10601 2008-08-05  Marek Habersack  <mhabersack@novell.com>
10602
10603         * Makefile.am: added support for cross-compilation.
10604
10605 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
10606
10607         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
10608
10609 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
10610
10611         * mono-perfcounters.c: jitted methods and jitted bytes counters.
10612
10613 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
10614
10615         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
10616         mono-perfcounters.c: performance counters implementation.
10617
10618 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
10619
10620         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
10621         to gpointer, letting the AOT code decide what to store in it.
10622
10623 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
10624
10625         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
10626           mono_class_setup_methods if the methods are not initialized.
10627
10628         Code is contributed under MIT/X11 license.
10629
10630 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10631
10632         * verify.c: Remove some debug code I commited by accident.
10633
10634         * verify.c (mono_method_is_valid_in_context): Change the return value
10635         to make possible to distinguish between invalid and unverifiable.
10636
10637         * verify.c (verifier_load_method): Don't return NULL for unverifiable
10638         methods.
10639
10640 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10641
10642         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
10643         constraints. Fixes regression in gtest-253.
10644
10645 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10646
10647         * verify.c (mono_verifier_verify_class): Don't allow generic types
10648         with explicit layout.
10649
10650         * verify.c (mono_method_verify): Check locals and argument types.
10651
10652 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
10653
10654         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
10655         wait if the thread is in StopRequested state.
10656
10657         * class.c (mono_class_from_name): Refactor the module searching code into
10658         a separate function so it can be reused in the AOT case too.
10659
10660 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
10661
10662         * verify.c (mono_type_is_valid_in_context): Improve the error message.
10663         Check both the type and it's generic type definition for loader errors.
10664         
10665         * verify.c (mono_method_is_valid_in_context): Don't generate another
10666         error when a type errors occur, this leads to the wrong exception been
10667         thrown.
10668
10669 2008-07-28  Dick Porter  <dick@ximian.com>
10670
10671         * icall-def.h
10672         * process.c
10673         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
10674         New internal calls to duplicate and close a process handle.
10675
10676 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
10677
10678         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
10679
10680 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10681
10682         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
10683
10684 2008-07-27  Robert Jordan  <robertj@gmx.net>
10685
10686         * class.c (mono_class_init): Don't compute class.has_finalize for
10687         valuetypes. Fixes #412477.
10688
10689 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
10690
10691         * verify.c: Implement constraint equivalence checking.
10692         This is required when a generic parameter is used as
10693         argument to a constrained one.
10694
10695         Fixes #410637.
10696
10697 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10698
10699         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10700
10701         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
10702
10703         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
10704         synch with managed object layout.
10705
10706 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
10707
10708         * verify.c (do_branch_op): Handle valuetypes and generic
10709         arguments properly.
10710
10711         * verify.c (do_cmp_op): Same.
10712
10713         Fixes #410383.
10714
10715 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10716
10717         * generic-sharing.c: Fix memory leaks.
10718
10719         * class.c, class-internals.h: Make
10720         mono_class_inflate_generic_type_with_mempool() non-static.
10721
10722 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
10723
10724         * pedump.c (dump_verify_info): Dump full class name.
10725
10726 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10727
10728         * generic-sharing.c: Removed some old code that didn't do anything.
10729
10730 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
10731         * profiler.c: Added runtime_initialized_event,
10732         mono_profiler_install_runtime_initialized and
10733         mono_profiler_runtime_initialized. This new hook tells the profiler
10734         when the runtime is sufficiently initialized to be able to call
10735         mono_thread_attach on the root appdomain.
10736         * profiler.h, profiler-private.h: Likewise.
10737
10738 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
10739
10740         * verify.c (do_cast): Do boxing for generic arguments as well.
10741
10742         * class.c (is_nesting_type): Drop generic instantiations before
10743         checking for nesting.
10744
10745         * class.c (can_access_instantiation): Allow access to generic
10746         arguments.
10747
10748 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
10749
10750         * verify.c (verify_class_for_overlapping_reference_fields):
10751         On some cases, the field size might be zero, guard against that.
10752         Fix the explicit layout check to work as expected.
10753
10754 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
10755
10756         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
10757         mono_thread_resume () during shutdown, since the thread we want to abort
10758         might be suspended.
10759
10760 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
10761
10762         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
10763         warning.
10764
10765         * debug-mono-symfile.c: Fix a warning.
10766
10767         * mono-perfcounters.c (get_cpu_times): Fix a warning.
10768
10769         * object.c (mono_class_vtable): Check if exception_type is set, and return
10770         NULL as defined by the function comments.
10771
10772 2008-07-22  Mark Probst  <mark.probst@gmail.com>
10773
10774         * mempool.c: Use malloc for every single mempool allocation if the
10775         configure option is set.  This makes it easier to track mempool
10776         allocations with tools like Valgrind.
10777
10778 2008-07-22  Jb Evain  <jbevain@novell.com>
10779
10780         * reflection.c (create_dynamic_mono_image): emit the same
10781         metadata version that SL2 does when creating a SL2 image.
10782
10783 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
10784
10785         * icall-def.h:
10786         * icall.c: New icall System.Enum:get_hashcode. This function
10787         avoids the overhead of boxing the enum to the underlying type.
10788
10789 2008-07-21  Mark Probst  <mark.probst@gmail.com>
10790
10791         * reflection.c (mono_method_get_object): Don't let static RGCTX
10792         invoke wrappers get into MonoReflectionMethods.
10793
10794 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
10795
10796         * object-internals.h:
10797         * object.c: New mono_runtime_class_init_full function
10798         that makes throwing the exception optinal.
10799
10800         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
10801         for the case where the exception object is supplied.
10802
10803 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
10804
10805         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
10806         old ld versions.
10807
10808         Contributed under MIT/X11 license.
10809
10810 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
10811
10812         * string-icalls.c (ves_icall_System_String_InternalSplit):
10813         Optimize array allocation by caching the MonoClass of the
10814         array type.
10815
10816         * icall.c (ves_icall_Type_GetMethodsByName): Same.
10817
10818         * reflection.c (mono_param_get_objects): Same.
10819
10820 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
10821
10822         * icall-def.h:
10823         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
10824         It inflates the given type using the class context.
10825
10826 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
10827
10828         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
10829         the vtable if it already exists.
10830
10831         * object-internals.h: Add mono_class_try_get_vtable as part of the
10832         internal API.
10833
10834         * reflection.c (mono_type_get_object): Use the MonoObject from the
10835         vtable when possible. Reduces locking contention on reflection heavy
10836         code.
10837
10838 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
10839
10840         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
10841         g_bit_nth_msf () since that macro is not implemented in eglib.
10842
10843 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
10844
10845         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
10846         on platforms which do not support it.
10847
10848 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
10849
10850         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
10851
10852 2008-07-11  Martin Baulig  <martin@ximian.com>
10853
10854         * mono-debug-debugger.h
10855         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
10856
10857         * mono-debug-debugger.c
10858         (_mono_debugger_interruption_request): New global volatile variable.
10859         (mono_debugger_check_interruption): New public function.
10860
10861         * threads.c
10862         (mono_thread_current_check_pending_interrupt): Call
10863         mono_debugger_check_interruption().
10864         (mono_thread_interruption_checkpoint_request): Likewise.
10865
10866 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10867
10868         * verify.c: Add more type checks for loaded types. Verify the result
10869         handle from ldtoken.
10870
10871 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10872
10873         * loader.c (field_from_memberref): Don't crash if the field
10874         wasn't found.
10875
10876 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10877
10878         * verify.c: Verify if type and method instantiations
10879         don't have invalid VAR or MVAR arguments.
10880
10881 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10882
10883         * verify.c: Fix double free of function pointer list.
10884
10885 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10886
10887         * object.c (mono_string_to_utf8): Comment the new code as it
10888         breaks under eglib.
10889
10890 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
10891
10892         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
10893
10894 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
10895
10896         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
10897           is not throw too many times.
10898
10899         Code is contributed under MIT/X11 license.
10900
10901 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
10902
10903         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
10904         debugging is turned off.
10905
10906 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
10907
10908         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
10909
10910 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10911
10912         * class-internals.h, class.c: Added new generic sharing option:
10913         Share only stuff in System.Collections.Generic, which is now the
10914         default.
10915
10916 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10917
10918         * generic-sharing.c, class-internals.h: New function for getting a
10919         generic method in a generic class given the corresponding method
10920         for a different instantiation of the class.  Partly refactored
10921         from mini-trampolines.c.
10922
10923         * class.c: Make sure generic methods have a class_inst if they are
10924         part of a generic class.
10925
10926         * metadata.c (mono_type_stack_size_internal): Handle type
10927         variables.
10928
10929 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10930
10931         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
10932         Signifies whether information on the this/vtable/mrgctx variable
10933         is available.
10934
10935 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10936
10937         * object.c, object-internals.h, icall.c: New function
10938         mono_delegate_ctor_with_method(), which does the same as
10939         mono_delegate_ctor(), but takes an explicit method argument
10940         instead of taking the method from the jit info.
10941
10942         * marshal.c: When creating a delegate with an inflated method take
10943         the "this" argument as the target class for the castclass.
10944
10945 2008-07-03  Mark Probst  <mark.probst@gmail.com>
10946
10947         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
10948         mono_jit_info_table_find() to perform very badly in some cases.
10949
10950 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
10951
10952         * icall.c (type_from_typename): Handle 'string'.
10953
10954         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
10955         wrappers into the wrapper_hash, since the key is not a MonoMethod.
10956
10957 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
10958
10959         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
10960
10961         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
10962         number of available managed allocator types.
10963
10964         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
10965         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
10966
10967 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
10968
10969         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
10970         which is a low level lock protecting just the 'jit_code_hash' hash table.
10971
10972         * domain.c: Initialize+cleanup jit_code_hash_lock.
10973         
10974 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
10975
10976         * coree.c (mono_load_coree): Set coree_module_handle global variable only
10977         after initialization.
10978
10979         * coree.h: Make MonoFixupExe internal.
10980
10981         Contributed under MIT/X11 license.
10982
10983 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
10984
10985         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
10986         because that is platform independent. Check NumberOfRvaAndSizes in PE32
10987         as well.
10988         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
10989         image being loaded is a CLI image and _CorValidateImage gets called.
10990
10991         * coree.h: Add MonoLoadImage.
10992
10993         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
10994         instead of LoadLibrary.
10995
10996         Contributed under MIT/X11 license.
10997
10998 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
10999
11000         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
11001         for any primitive type.
11002
11003 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11004
11005         * object.c (mono_array_new_specific): Optimize this and the other allocation
11006         functions a bit.
11007         
11008         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
11009         domains too if mono_dont_free_domains is set.
11010
11011         * domain-internals.h (mono_dont_free_domains): New internal option controlling
11012         whenever to free appdomain data after it has been unloaded.
11013
11014         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
11015         
11016 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
11017
11018         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
11019         (mono_method_get_equivalent_method): Fix a warning.
11020
11021         * object.c (mono_message_init): Avoid looking up array types for each call.
11022
11023 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11024
11025         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
11026         call.
11027
11028         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
11029         even more.
11030
11031         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
11032         each iteration.
11033
11034         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
11035         fields of an enum.
11036
11037 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
11038
11039         * object.c (mono_value_box): Fix boxing of nullables.
11040
11041 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
11042
11043         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
11044         mono_module_handle that is defined by the linker; no initialization required.
11045         * coree.h: Remove mono_module_handle, add __ImageBase, update
11046         mono_image_open_from_module_handle.
11047         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
11048         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
11049         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
11050         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
11051         to 4 GB away from image base address. IA64 version is not tested but was very
11052         easy to implement and should work if we ever need it.
11053         * domain.c (mono_init_internal): Avoid system error message boxes.
11054         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
11055         with has_entry_point. Handle do_mono_image_load fauilre correctly.
11056         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
11057         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
11058         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
11059
11060         Contributed under MIT/X11 license.
11061
11062 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11063
11064         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
11065         as part of the private mono API.
11066         
11067         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
11068         Do proper argument checking for methods that belong to generic classes.
11069         Do proper type resolution for GMFH/2.
11070         Fixes #377324.
11071         
11072 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11073
11074         * verify.c (do_switch): Fix a memory corruption bug with
11075         the jump index is out of bound.
11076
11077 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11078
11079         * verify.c: Disable debug code.
11080
11081 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11082
11083         * reflection.c (mono_image_get_methodbuilder_token): Use
11084         mono_image_get_methodspec_token_for_generic_method_definition
11085         instead of mono_image_get_memberref_token. We cache more memberef
11086         entries now.
11087
11088 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11089
11090         * verify.c: Inflate exception clause types.
11091         Fixes #402606.
11092         
11093 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11094
11095         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
11096         name.
11097
11098         * reflection.c (mono_image_get_ctorbuilder_token): Same.
11099
11100         * reflection.c (mono_image_create_method_token): Same.
11101
11102 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11103
11104         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
11105         It does the same as mono_image_get_methodref_token but works on
11106         MethodBuilder.
11107
11108         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
11109         and always generate a methodspec. This follows the old behavior and fixes
11110         the regressions in System.Core. 
11111
11112 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11113
11114         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
11115         don't event mono_class_get () succeeds. Fixes #402182.
11116
11117 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
11118
11119         * metadata-internals.h: Added MonoDynamicImage::methodspec
11120         hashtable to store methodspec tokens created for MethodBuilders.
11121
11122         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
11123         MethodBuilders as open instantiations if a methodspec was requested.
11124
11125         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
11126
11127         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
11128
11129         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
11130
11131         Fixes bug #349190.
11132
11133 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
11134
11135         * loader.c (method_from_methodspec): Avoid crashing if the
11136         method lookup fails.
11137
11138 2008-06-20  Dick Porter  <dick@ximian.com>
11139
11140         * socket-io.c (get_socket_assembly): Cope with Moonlight network
11141         classes being in a different assembly.  Fixes bug 399184.
11142
11143 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
11144
11145         * loader.c (mono_loader_init): Make this callable multiple times.
11146         (mono_dllmap_insert): Call mono_loader_init () so this works even before
11147         the runtime is initialized. Fixes #401755.
11148
11149 2008-06-19  Dick Porter  <dick@ximian.com>
11150
11151         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
11152         Fixes bug 349688.
11153
11154 2008-06-19  Dick Porter  <dick@ximian.com>
11155
11156         * socket-io.c:
11157         * icall-def.h: Implement Socket generic Send() and Receive()
11158         methods.  Fixes bug 395168.
11159
11160 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
11161
11162         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
11163
11164         Contributed under MIT/X11 license.
11165
11166 2008-06-18  Martin Baulig  <martin@ximian.com>
11167
11168         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
11169         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
11170         set to 80.0.  The debugger <-> runtime interface is now frozen as
11171         well.   
11172
11173         * mono-debug.c
11174         (mono_debug_debugger_version): Bump to 4.
11175
11176 2008-06-18  Martin Baulig  <martin@ximian.com>
11177
11178         * debug-mono-symfile.c
11179         (load_symfile): Don't check the minor version.
11180
11181         * debug-mono-symfile.h: Bump the version number to 50.0.
11182
11183 2008-06-18  Martin Baulig  <martin@ximian.com>
11184
11185         * debug-mono-symfile.c
11186         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
11187         minimum required version.
11188
11189 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
11190
11191         * reflection.c (mono_custom_attrs_from_property): Fix support for
11192         retriveving cattrs of dynamic inflated generic types.
11193
11194         * reflection.c (mono_custom_attrs_from_event): Same.
11195
11196         * reflection.c (mono_custom_attrs_from_field): Same;
11197
11198         * reflection.c (typebuilder_setup_events): Same cattrs of events.
11199
11200         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
11201         Moved to metadata.c.
11202
11203         * metadata.c: New functions to retrive the equivalent field, event
11204         of property from the generic type definition.
11205
11206         * metadata-internals.h: Added new functions from metadata.c.
11207
11208 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
11209
11210         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
11211         to cached in a mempool is used.
11212
11213         * metadata.c (free_generic_class): In some situations field generic_info type
11214         is not properly dup'ed and leads to double free'ing.
11215
11216         Fixes #400643.
11217
11218 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11219
11220         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
11221         this arguments (will be needed later for generic methods).
11222         Collect stats.
11223
11224 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11225
11226         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
11227         Create a static RGCTX invoke wrapper for methods which require it.
11228
11229 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11230
11231         * object.c, class-internals.h: New function for checking whether
11232         an individual field is special static.
11233
11234 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
11235
11236         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
11237         linear search since the table is sorted.
11238
11239         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
11240         Fixes #324180.
11241
11242 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
11243
11244         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
11245         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
11246
11247         * gc.c (mono_domain_finalize): Allow an infinite timeout.
11248
11249         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
11250         
11251         * threads.c (mono_thread_request_interruption): Get rid of locking, use
11252         InterlockedCompareExchange to query and modify 
11253         thread->interruption_requested.
11254
11255         * object-internals.h (struct _MonoThread): Change interruption_requested
11256         to a gint32 so it can be modified by atomic operations. Add 
11257         'critical_region_level' from the managed side, change small_id to a guint32,
11258         add new set of 'unused' fields.
11259
11260         * appdomain.c: Bump corlib version.
11261
11262 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11263
11264         * class.c (mono_class_from_name): Search modules as well. Fixes
11265         #322332.
11266
11267 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11268
11269         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
11270         templates.  Templates are generalized with an additional type_argc
11271         argument.  RGCTX templates have type_argc==0, MRGCTX templates
11272         have type_argc>0.
11273
11274         * domain-internals.h, domain.c: New hash table for looking up
11275         MRGCTXs.
11276
11277         * metadata.c, metadata-internals.h: Rename hash and equal
11278         functions for MonoGenericInst's and make them public.
11279
11280         * class-internals.h: New data structures for the MRGCTX.  Macros
11281         for distinguishing slots in the RGCTX and the MRGCTX.
11282
11283 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11284
11285         * object.c (mono_method_get_imt_slot): Put the same methods of
11286         different instantiations of the same generic interface in the same
11287         IMT slots, to make generic sharing simpler.
11288
11289 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11290
11291         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
11292
11293         * metadata.c (mono_metadata_field_info_with_mempool): Added.
11294         This function works just like mono_metadata_field_info, but
11295         accept a mempool as argument to be used allocating memory.
11296
11297         * marshal.c (mono_marshal_load_type_info): Use new function
11298         to load marshal data into image mempool.
11299
11300 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11301
11302         * class.c (mono_class_inflate_generic_type_with_mempool):
11303         This function allows to inflate a generic type using
11304         a mempool.
11305
11306         * class.c (inflate_generic_type): Take a mempool as argument
11307         and use it to do type dup'ing.
11308
11309         * class.c (mono_class_setup_fields): Field type for generic
11310         generic classes are allocated from the image mempool.
11311
11312         * metadata.c (free_generic_class): Inflated field type is
11313         now allocated in the image mempool.
11314
11315 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11316
11317         * threads.c (thread_cleanup): Free MonoThread::name.
11318
11319 2008-06-12  Marek Habersack  <mhabersack@novell.com>
11320
11321         * appdomain.c (ensure_directory_exists): avoid unnecessary
11322         mkdir(2) calls when the shadow directory already exists.
11323         (mono_make_shadow_copy): copy also satellite assemblies from the
11324         private bin directories.
11325
11326 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
11327
11328         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
11329         
11330         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
11331         a page boundary. Fixes #396219.
11332
11333 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11334
11335         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
11336         due to double-checked locking.
11337
11338 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11339
11340         * assembly.c (build_assembly_name): Release memory on failure.
11341
11342         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
11343
11344 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11345
11346         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
11347         memory on failure.
11348
11349 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11350
11351         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
11352         memory on failure.
11353
11354 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11355
11356         * loader.c (field_from_memberref): Check if field signature type is equal
11357         to the non-inflated type of the field. Fixes #398980.
11358
11359 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
11360
11361         * assembly.c (mono_assembly_load_from_full): Call 
11362         mono_assembly_load_friends () outside the assemblies lock, since it can
11363         acquire the loader lock. Fixes #323696.
11364
11365         * reflection.c (resolve_object): Inflate the inst with the context for
11366         FieldOnTypeBuilderInst. Fixes #399010.
11367
11368 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11369
11370         * reflection.c (mono_image_get_field_on_inst_token): Don't
11371         inflate the field to encode it's signature. If it's a
11372         VAR or MVAR it should stay that way in the signature.
11373         Fixes #399047.
11374
11375 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11376
11377         * reflection.c (resolve_object): Release memory of inflated types.
11378
11379 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11380
11381         * loader.c (mono_method_get_signature_full): Remove assert about
11382         loading a methodspec to a generic method. We have such methods, such as
11383         System.Threading.Interlocked::CompareExchange<T>.
11384         This assert was removed since it crashes the verifier when it checks
11385         methods calling CompareExchange<T>.
11386
11387 2008-06-10  Marek Safar  <marek.safar@gmail.com>
11388
11389         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
11390         of Type array and not MonoType.
11391
11392 2008-06-10  Marek Habersack  <mhabersack@novell.com>
11393
11394         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
11395         <lupus@ximian.com>
11396
11397 2008-06-10  Martin Baulig  <martin@ximian.com>
11398
11399         * debug-mono-symfile.h
11400         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
11401         changes to the file format, but we were generating incorrect
11402         source file indices in the line number table due to a bug, which
11403         made backtraces report an incorrect source file.
11404
11405 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11406
11407         * mono-debug.c: Moved mono_debug_free_method_jit_info from
11408         mini/debug-mini.c to here.
11409
11410         * mono-debug.c (il_offset_from_address): Free memory from find_method.
11411
11412         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
11413         use it to release structs returned by mono_debug_find_method.
11414
11415 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
11416
11417         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
11418         since it needs to set method->slot for all interface methods.
11419
11420 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11421
11422         * class-internals.h: Forgot to add.
11423
11424 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11425
11426         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
11427
11428         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
11429         Lookup the custom attributes from property_hash.
11430
11431         * reflection.c (mono_save_custom_attrs): Save the custom attributes
11432         in property_hash. Allocate all data using the image mempool.
11433
11434         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
11435         for dynamic_custom_attrs to checks if the image is dynamic.
11436
11437 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11438
11439         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
11440         assemblies array.
11441         
11442         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
11443         runtime functions while holding the domain assemblies lock.
11444
11445 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11446
11447         * verify.c: Reapplied the last bit of the reverted changes.
11448
11449 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11450
11451         * verify.c: Reapplied more of the reverted changes.
11452
11453 2008-06-09  Martin Baulig  <martin@ximian.com>
11454
11455         * debug-mono-symfile.c (load_symfile): Check the major version
11456         first; if it's wrong, don't print the minor version in the error message.
11457
11458 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11459
11460         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
11461         lock instead of the domain lock to avoid deadlocks, since the thread might
11462         already hold the loader lock.
11463
11464         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
11465         (mono_thread_attach): Ditto.
11466
11467         * monitor.c: Use a TLS variable for holding the current thread id instead
11468         of calling pthread_self ().
11469         (mono_monitor_init_tls): New internal function to initialize the TLS
11470         variable.
11471         (mono_monitor_try_enter_internal): Put the owner == id check after the
11472         owner == 0 check.
11473
11474         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
11475         missed optimizations when using gcc-4.3.
11476
11477 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
11478
11479         * reflection.c (mono_dynamic_image_free): Free the memory
11480         used by MonoGenericParam in MonoDynamicImage::gen_param.
11481
11482         * reflection.c (mono_reflection_setup_generic_class): Allocate
11483         container from mempool.
11484
11485         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
11486         container from mempool.
11487
11488 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11489
11490         * threads.c (mono_set_pending_exception): New internal function to set the
11491         pending exception of the current thread.
11492         (mono_thread_get_and_clear_pending_exception): Check for 
11493         thread->pending_exception as well.
11494
11495         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
11496
11497         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
11498         it can trigger a collection.
11499
11500 2008-06-06  Martin Baulig  <martin@ximian.com>
11501
11502         Merged the `debugger-kahalo' branch.
11503
11504         * mono-debug.h
11505         (MONO_DEBUGGER_VERSION): Bumped to 72.
11506
11507         * debug-mono-symfile.h
11508         (MonoSymbolFileMethodIndexEntry): Removed.
11509         (MonoSymbolFileMethodEntry): New public typedef.
11510         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
11511         (MonoSymbolFileSourceEntry): Remove everything except `index' and
11512         `data_offset'.
11513         (MonoSymbolFileMethodEntry): Removed.
11514         (MonoSymbolFileLexicalBlockEntry): Removed.
11515         (MonoSymbolFileLineNumberEntry): Removed.
11516         (MonoDebugLexicalBlockEntry): Removed.
11517         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
11518         removed `num_il_offsets' and `il_offsets'.
11519         (MonoSymbolFile): Replace `version' with `major_version' and
11520         `minor_version'.
11521         (MONO_SYMBOL_FILE_VERSION): Replace with
11522         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
11523         `MONO_SYMBOL_FILE_MINOR_VERSION'.
11524
11525         * debug-mono-symfile.c
11526         (mono_debug_symfile_lookup_location): Add support for the new line
11527         number table format.
11528
11529 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11530
11531         * metadata.c (free_generic_class): Release the inflated
11532         MonoClass of dynamic generic classes if it's not a generic
11533         type definition.
11534
11535 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11536
11537         * verify.c: Reapplied more of the reverted changes.
11538
11539 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11540
11541         * reflection.c (lookup_custom_attr): Clean the cached flag or
11542         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
11543         for SRE types.
11544
11545 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11546
11547         * verify.c: Reapplied a small part of the reverted changes.
11548
11549 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11550
11551         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
11552
11553         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
11554         previously in managed code.
11555         (mono_monitor_exit): Ditto.
11556         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
11557
11558         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
11559         the managed definition.
11560
11561 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
11562
11563         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
11564
11565 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11566
11567         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
11568         
11569         * monitor.c: Add some micro optimizations.
11570
11571         * icall.c (type_from_typename): Handle 'bool'.
11572
11573 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
11574
11575         * verify.c: Implement constructor verification per P III 1.8.1.4.
11576         Fixes #396716.
11577
11578 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11579
11580         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
11581         holding the assemblies lock here too.
11582
11583 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11584
11585         * verify.c: Kill stack_top function.
11586
11587 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11588
11589         * verify.c: Kill stack_get function.
11590
11591 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11592
11593         * verify.c (mono_method_verify): Last change broke the build. Fixed.
11594
11595 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11596
11597         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
11598         more reliable.
11599
11600         * verify.c (mono_method_verify): Inflate params and locals to avoid
11601         mismatch when checking for compatibility.
11602
11603 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
11604
11605         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
11606         Length prefix should be size in bytes. Fix bug #339530.
11607         
11608         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
11609         Length prefix should be size in bytes. Fix bug #339530.
11610
11611         Code is contributed under MIT/X11 license.
11612
11613 2008-06-05  Bill Holmes <billholmes54@gmail.com>
11614
11615         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
11616
11617         Contributed under MIT/X11 license.
11618
11619 2008-06-05  Martin Baulig  <martin@ximian.com>
11620
11621         * mono-debug-debugger.c
11622         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
11623
11624 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
11625
11626         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
11627         while holding the assemblies lock to prevent deadlocks. Handle the case
11628         where the search hook returns NULL but the assembly was still loaded.
11629         Fixes #323696.
11630
11631         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
11632         modify domain state.
11633
11634 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
11635
11636         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
11637         * Makefile.am (pedump_LDADD): Post-process object files and
11638         add dtrace-generated object file, if necessary.
11639
11640         Code is contributed under MIT/X11 license.
11641
11642 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11643
11644         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
11645
11646 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11647
11648         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
11649
11650 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11651
11652         * threads.c: Try to free everything from the delayed free table
11653         when shutting down threads, and set the variable to NULL after the
11654         table is freed so that calling
11655         mono_thread_hazardous_try_free_all() when shutting down the root
11656         domain doesn't crash.
11657
11658 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11659
11660         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
11661         the caller if resulting type was inflated.
11662
11663         * class.c (mono_class_create_from_typespec): Free the MonoType if it
11664         was inflated.
11665
11666         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
11667
11668
11669 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
11670
11671         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
11672         class library tests.
11673
11674         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
11675         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
11676         #396989.
11677
11678 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11679
11680         * domain.c, domain-internals.h: The JIT infos are now freed by the
11681         JIT info table code.  They are freed immediately if there only a
11682         single JIT info table in circulation.  If there is more, the free
11683         is delayed via a queue.
11684
11685         * threads.c, threads-types.h: New hazard pointer function for
11686         freeing all freeable delayed items in one sitting.
11687
11688 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11689
11690         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
11691
11692         * reflection.c (typebuilder_setup_properties): Same.
11693
11694         * reflection.c (typebuilder_setup_events): Same.
11695
11696 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11697
11698         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
11699         and use it for allocating memory.
11700
11701         * reflection.c (mono_marshal_spec_from_builder): Same.
11702
11703         * reflection.c: Change code to use new signatures.
11704
11705         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
11706
11707 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11708
11709         * decimal.c (rescale128): Put back one line which was accidently commented
11710         out.
11711         
11712         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
11713         to cause crashes.
11714
11715 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11716
11717         * reflection.c (mono_reflection_generic_class_initialize): Name must
11718         be always malloc'ed so we can free it later on. Do this for field, property
11719         and event.
11720
11721         * metadata.c (free_generic_class): Free field, property and event names.
11722
11723 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11724
11725         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
11726         instead of g_memdup.
11727
11728         * reflection.c (typebuilder_setup_fields): Same.
11729
11730 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11731
11732         * decimal.c (rescale128): Optimize this function a bit more.
11733
11734 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11735
11736         * metadata.c (free_generic_class): Release some memory from
11737         SRE generic classes.
11738
11739 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11740
11741         * reflection.c (mono_image_get_generic_field_token): No reference
11742         to name is kept, free it.
11743
11744         * reflection.c (mono_reflection_generic_class_initialize): Free
11745         more memory of the inflated field.
11746
11747 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11748
11749         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
11750         code.
11751
11752 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
11753
11754         * reflection.c (mono_dynamic_image_free): Release memory used by
11755         MonoDynamicImage::array_methods elements.
11756
11757         * reflection.c (assembly_add_win32_resources): Release memory after
11758         encoding.
11759
11760 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
11761
11762         * decimal.c (log2_32): Use an optimized version for this function too.
11763         
11764         * decimal.c (log2_64): Fix this on 32 bit machines.
11765
11766 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
11767
11768         * class.c (mono_dup_array_type): Implement allocation using a mempool.
11769
11770         * class.c (mono_metadata_signature_deep_dup): Same.
11771
11772         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
11773         a mempool.
11774
11775         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
11776
11777         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
11778
11779         * metadata-internals.h: Added mono_metadata_signature_dup_full.
11780
11781         * class-internals.h: Update signatures to take a MonoMemPool.
11782
11783 2008-06-02  Dick Porter  <dick@ximian.com>
11784
11785         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
11786         * icall-def.h: Add
11787         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
11788         FormatMessage API to get the error text.  Fixes bug 321827.
11789
11790 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
11791
11792         * decimal.c: Add some micro optimizations to make decimal operations faster.
11793
11794 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
11795
11796         * reflection.c (method_encode_clauses): Take a mempool
11797         as parameter and use it to allocate the clause array.
11798
11799         * reflection.c (mono_image_get_field_on_inst_token): Free
11800         the inflated type after encoding it.
11801
11802         * reflection.c (mono_dynamic_image_free): Free each element
11803         of MonoDynamicImage::gen_params.
11804
11805         * reflection.c (reflection_methodbuilder_to_mono_method):
11806         Allocate the generic param array from the mempool.
11807         Allocate signature params from the mempool.
11808
11809         * reflection.c (mono_reflection_generic_class_initialize):
11810         Free inflated fields after been used.
11811
11812 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
11813
11814         * icall.c: Reapply the memory leak fixes as they no
11815         longer make mono crash.
11816
11817 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
11818
11819         * reflection.c (mono_type_get_object): Don't store the suplied
11820         MonoType with type_hash. A caller which pass a type that
11821         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
11822         might end with a pointer to freed memory.
11823         The solution is to use byval_arg or this_arg from the associated
11824         MonoClass of the supplied type.
11825
11826 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
11827
11828         * icall.c: Revert the rest of the last change as it breaks the build too.
11829
11830 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11831
11832         * icall.c: Revert a leak fix as it's breaking the build.
11833
11834 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11835
11836         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
11837
11838 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11839
11840         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
11841
11842 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11843
11844         * icall.c: Fix some memory leaks.
11845
11846 2008-05-29  Dick Porter  <dick@ximian.com>
11847
11848         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
11849         async socket operations from the pending list when a socket
11850         closes.  Leaving it until the threadpool services the event
11851         exposes a race condition when a socket descriptor is reused.
11852         Fixes bug 377589.
11853
11854 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11855
11856         * object.c: Fix negative index check for array alocation.
11857
11858 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11859
11860         * icall.c, marshal.c: Delegate wrappers should skip visibility.
11861         This check is performed by the verifier for IL created delegates
11862         and by Delegate::CreateDelegate for programatically created ones.
11863         Fixes #372406.
11864
11865 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11866
11867         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
11868         Fix code to use mono_array_size_t instead of int.
11869
11870         Based on patch by Luis F. Ortiz.
11871         Contributed under X11 license.
11872         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11873
11874 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11875
11876         * icall.c: Added ves_icall_System_Array_GetLongLength and
11877         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
11878         arrays.
11879
11880         * icall.h: Export both new functions.
11881
11882         Based on patch by Luis F. Ortiz.
11883         Contributed under X11 license.
11884         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11885
11886 2008-05-28  Martin Baulig  <martin@ximian.com>
11887
11888         The debugger now requires exactly r103463.
11889
11890         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
11891         This version is not supported by the debugger, wait for 72.
11892
11893 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11894
11895         * object.h: Changed array related functions to use
11896         mono_array_size_t instead of guint32. Forgot to commit this file.
11897
11898         Patch by Luis F. Ortiz.
11899         Contributed under X11 license.
11900         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11901
11902
11903 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11904
11905         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
11906         don't define it. Use the number literal instead.
11907
11908 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11909
11910         * icall.c: Changed array related functions to use
11911         mono_array_size_t instead of guint32.
11912
11913         * icall.c (ves_icall_System_Array_GetLength): Check for length
11914         overflow under MONO_BIG_ARRAYS.
11915
11916         Based on patch by Luis F. Ortiz.
11917         Contributed under X11 license.
11918         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11919
11920 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11921
11922         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
11923
11924         Based on patch by Luis F. Ortiz.
11925         Contributed under X11 license.
11926         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11927
11928 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11929
11930         * object.c, object.h: Changed array related functions to use
11931         mono_array_size_t instead of guint32.
11932
11933         Patch by Luis F. Ortiz.
11934         Contributed under X11 license.
11935         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11936
11937 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11938
11939         * object.h: Introduced mono_array_size_t typedef. This must be used
11940         in all places an array length is expected. This is 64bits wide if
11941         MONO_BIG_ARRAYS is enabled.
11942
11943         Patch by Luis F. Ortiz.
11944         Contributed under X11 license.
11945         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11946
11947 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
11948
11949         * security-manager.c class.c: Set the class exception info by calling
11950         mono_class_set_failure ().
11951
11952         * class.c (mono_class_get_exception_data): New accessor function.
11953         (mono_class_set_failure): Store exception_data in the property hash.
11954
11955         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
11956         the struct as a property.
11957
11958         * loader.c (mono_get_method_full): Store the lookup result for method
11959         tokens in method_cache, the others in methodref_cache to decrease the memory
11960         usage of hash tables.
11961
11962         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
11963         (mono_image_init): method_cache is lazy inited now.
11964
11965         * metadata-internals.h (struct _MonoImage): Change method_cache to
11966         a MonoValueHashTable, add a separate methodref_cache.
11967
11968 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
11969
11970         * number-formatter.h: Fix tables to avoid arithemtic overflow in
11971           Double.ToString as exposed by Bug #383531.
11972
11973 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
11974
11975         * number-formatter.h: Make some tables static.
11976
11977         * class.c (mono_method_set_generic_container): New accessor function.
11978         (mono_method_get_generic_container): Ditto.
11979
11980         * class-internals.h (struct _MonoMethod): Remove rarely used 
11981         'generic_container' field, store it in the property hash instead. Add 
11982         'is_generic' boolean field instead.
11983
11984         * image.c (mono_image_init): Initialize property_hash.
11985         (mono_image_close): Destroy property_hash.
11986
11987         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
11988         hold rarely used fields of runtime structures belonging to this image.
11989
11990         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
11991         to get/set method->generic_container.
11992
11993         * loader.c (mono_get_method_from_token): Avoid loading the method header for
11994         generic methods.
11995
11996 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
11997
11998         * class.c (mono_class_inflate_generic_method_full): Don't increase
11999         mono_stats.inflated_method_count for methods found in the cache.
12000
12001         * threads.c (mono_thread_request_interruption): Add a comment about 
12002         QueueUserAPC ().
12003
12004 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12005
12006         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
12007         interface_offsets_packed table.
12008         
12009         * class.c (mono_class_init): Remove some dead code.
12010
12011         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
12012         mono_class_setup_vtable () when CAS is active to detect security problems.
12013
12014 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
12015
12016         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
12017
12018         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
12019         parameters as it's irrelevant for delegate checking.
12020
12021 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12022
12023         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
12024
12025         * class.c (mono_class_init): Control the creation of a generic vtable using
12026         a global which is true by default, but set to false by the runtime startup code.
12027         
12028         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
12029         Disabled for now since it breaks the embedding API.
12030         Move the setup of class->methods for arrays to mono_class_setup_methods ().
12031         (mono_class_setup_methods): Add a memory barrier.
12032
12033         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
12034         when mono_class_init () doesn't compute the generic vtable.
12035         
12036 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12037         * profiler.c: Added mono_profiler_install_statistical_call_chain,
12038         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
12039         to support call chains (backtrace) in the stat profiler.
12040         * profiler.c, profiler-private.h: Likewise.
12041
12042 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12043
12044         * generic-sharing.c: Init generic class when a method of it is
12045         requested via a runtime generic context.
12046
12047 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12048
12049         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
12050
12051         * reflection.c (mono_type_get_object): Add a FIXME.
12052
12053         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
12054
12055         * class.c (mono_class_get_method_by_index): New helper function, returning an
12056         entry in the class->methods array.
12057
12058 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12059
12060         * class.c (mono_class_init): Only do the array optimization for szarrays. 
12061         Avoid creating a generic vtable for generic instances as well.
12062         (mono_class_get_method_from_name_flags): Don't search in the metadata for
12063         generic instances.
12064
12065 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
12066
12067         * loader.c (mono_get_method_constrained): Inflate the signature
12068         with class context. Fix #325283.
12069
12070 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12071
12072         * object.c (mono_class_create_runtime_vtable): Add a comment.
12073
12074         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
12075         where needed.
12076         (setup_interface_offsets): Handle the case when this is called twice for arrays.
12077         (mono_class_setup_vtable_general): Add an assert.
12078         (mono_class_init): Avoid creating a generic vtable for arrays.
12079
12080         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
12081         here, let mono_class_init () do that.
12082
12083         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
12084         interfaces in mscorlib.
12085
12086         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
12087         interfaces. Add some comments.
12088         (mono_class_init): Call mono_class_setup_methods () here since it is no
12089         longer called by mono_class_setup_vtable ().
12090
12091         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
12092         not set in class->vtable.
12093         (mono_class_create_runtime_vtable): Reenable the disabled code.
12094
12095         * object.c (mono_class_create_runtime_vtable): Disable the last change for
12096         now as it causes some test failures.
12097
12098         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
12099         if using the vtable trampoline. Also remove some strange code which put the
12100         generic methods themselves into the vtable slots. Remove the AOT init_vtable
12101         stuff as it is no longer needed.
12102
12103 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
12104
12105         * pedump.c: Give make --verify all option check code as well.
12106         Using --verify code won't check for metadata now.
12107
12108 2008-05-19  Martin Baulig  <martin@ximian.com>
12109
12110         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
12111
12112         * mono-debug.c
12113         (_mono_debug_using_mono_debugger): New global variable; it's set
12114         directly by the debugger, so mono_debug_using_mono_debugger() also
12115         works after attaching.
12116
12117 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
12118
12119         * object.c (mono_class_create_runtime_vtable): Use memory barriers
12120         as we do double checked locking on MonoClass::runtime_info and
12121         MonoClassRuntimeInfo::domain_vtables.
12122
12123 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
12124
12125         * debug-helpers.c (print_field_value): Fix a warning.
12126
12127 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
12128
12129         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
12130         set in the AOT case.
12131
12132 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
12133
12134         * class.c (mono_class_setup_vtable_general): Use memory barriers
12135         as we do double checked locking on MonoClass::vtable.
12136
12137 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
12138
12139         * reflection.c (resolve_object): Inflate only if the generic context
12140         is not null. Fixes #389886.
12141
12142 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
12143
12144         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
12145         instead of g_free.
12146
12147         Code is contributed under MIT/X11 license.
12148
12149 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12150
12151         * class.c: Revert unrelated change.
12152
12153 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12154
12155         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
12156         a generic instantiation, use mono_class_from_mono_type instead of playing
12157         with MonoType directly.
12158
12159 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12160
12161         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
12162         checks must ignore generic instantiations, so mono_class_has_parent is not
12163         suitable. Fixes #390128.
12164
12165 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
12166
12167         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
12168         it to avoid registering tokens during metadata generation. Fixes #390023.
12169
12170 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
12171
12172         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
12173         consistent.
12174
12175         Contributed under MIT/X11 license.
12176
12177 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
12178
12179         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
12180         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
12181         to fixup the EXE image.
12182         (mono_cleanup): Use mono_close_exe_image.
12183         (mono_close_exe_image): New function.
12184         * image.c: Include "marshal.h".
12185         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
12186         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
12187         counting when the image is loaded outside of mono_image_open_full. Set status
12188         based on GetLastError.
12189         * coree.c: Include required headers. Add init_from_coree.
12190         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
12191         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
12192         (_CorExeMain): Set init_from_coree.
12193         (CorExitProcess): Only call ExitProcess for now.
12194         (CorBindToRuntimeEx): New stub implementation.
12195         (CorBindToRuntime): New function.
12196         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
12197         (MonoFixupExe): ILONLY executables require no fixups.
12198         (mono_set_act_ctx): New function to set activation context.
12199         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
12200         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
12201         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
12202         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
12203         as MONO_INTERNAL.
12204         * domain-internals.h: Add mono_close_exe_image.
12205
12206         Contributed under MIT/X11 license.
12207
12208 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
12209
12210         * metadata.c (mono_metadata_compute_size): Correctly calculate field
12211         size for generic param and event tables. Fixes #388977.
12212
12213 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
12214
12215         * loader.c (mono_method_signature): Use memory barriers because of the double
12216         checked locking pattern.
12217
12218         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
12219         aborting or aborted as well. Fixes #376391.
12220         
12221         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
12222         existing runtime state in the Suspend handler during shutdown.
12223
12224 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
12225
12226         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
12227
12228         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
12229         which are starting up or shutting down.
12230
12231         * threads.c (mono_threads_set_shutting_down): Don't return a value since
12232         this function never returns if the runtime is already shutting down.
12233
12234         * icall.c (ves_icall_System_Environment_Exit): Update after 
12235         mono_threads_set_shutting_down () signature change.
12236         
12237 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
12238
12239         * class.c: Added can_access_instantiation to verify if the instantiation
12240         is visible. Fix access check for nested types as they returned TRUE
12241         before doing type and generic instantiation visibility checks.
12242
12243 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
12244
12245         * reflection.c (mono_reflection_create_generic_class): The created type
12246         must have a different container from its TypeBuilder. Otherwise they
12247         will end sharing generic arguments, which is wrong.
12248
12249         Due to the sharing, making a generic instance of the created type using
12250         the TypeBuider generic arguments resulted in the generic type definition
12251         been returned, which is wrong as well.
12252
12253         As a bonus the code was leaking the type_params array. This memory should
12254         be allocated from the image mempool.
12255
12256         This fixes bug #354047.
12257
12258 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
12259
12260         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
12261         to here         as they are now used in assembly.c new code.
12262         Added a skipverification flag to MonoAssembly.
12263         New internal function mono_assembly_has_skip_verification.
12264
12265         * assembly.c: New function mono_assembly_has_skip_verification. It checks
12266         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
12267         part of #387274.
12268
12269 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12270
12271         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
12272         needed. Fixes #387034.
12273
12274         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
12275
12276 2008-05-06  Miguel de Icaza  <miguel@novell.com>
12277
12278         * assembly.c (mono_assembly_load_reference): Prevent crash while
12279         disassembling Silverlight 2.0 executables while we still do not
12280         have GACed libraries.
12281
12282 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12283
12284         * reflection.c: Special case generic type definitions as well. Fixes #383444.
12285
12286 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
12287
12288         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
12289         of the dynamic case. Fixes #387404.
12290
12291 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12292
12293         *verify.c (mono_verifier_is_class_full_trust): If under
12294         verify_all and the verifier mode was not set, only
12295         gac and corlib types are fulltrust. This makes --verify-all
12296         usable to detect unverifiable code, which is the expected
12297         use case.
12298
12299 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12300
12301         * verify.h: Ops, commited the header with debug
12302         enabled.
12303
12304 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12305
12306         * verify.c (merge_stack): Use the new value on unverifiable
12307         stack merges.
12308
12309         * verify.c (verify_type_compatibility_full): Comparison
12310         of nullable types can't use mono_class_is_assignable_from.
12311
12312         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
12313         that makes all verification errors be reported.
12314
12315         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
12316         mono_method_verify.
12317
12318 2008-05-05  Robert Jordan  <robertj@gmx.net>
12319
12320         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
12321         support for value types. See #386415.
12322
12323         * object.c: comments.
12324
12325         Code is contributed under MIT/X11 license.
12326
12327 2008-05-05  Martin Baulig  <martin@ximian.com>
12328
12329         * debug-mono-symfile.h
12330         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
12331         for old pre-terrania symbol files.
12332
12333 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
12334
12335         * mono-config.c: Add ppc64 architecture.
12336
12337         Code is contributed under MIT/X11 license.
12338
12339 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
12340
12341         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
12342           PPC64 uses function descriptors as well.
12343
12344         Code is contributed under MIT/X11 license.
12345
12346 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
12347
12348         * object.c (compute_class_bitmap): Ignore literal static fields.
12349
12350         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
12351         var has an invalid format.
12352         (describe_ptr): Add some sanity checks for the vtable.
12353         (add_nursery_frag): Clear unused nursery fragments.
12354         (major_collection): Clear all remaining nursery fragments.
12355
12356 2008-05-03  Robert Jordan  <robertj@gmx.net>
12357
12358         * image.c, metadata-internals.h: add thunk_invoke_cache.
12359
12360         * marshal.c, marshal.h: implement
12361         mono_marshal_get_thunk_invoke_wrapper ().
12362
12363         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
12364
12365         Code is contributed under MIT/X11 license.
12366
12367 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
12368
12369         * verify.c (do_leave): Empty the stack.
12370
12371 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
12372
12373         * class.c (mono_class_is_assignable_from): Variance
12374         doesn't work between reference and value types. For example,
12375         given type C<T+>, C<int32> is not assignable to C<object>.
12376         Break the argument checking loop on first error. 
12377
12378 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
12379
12380         * icall.c : base64_to_byte_array() needs some more strict
12381           check for sequence of '=' characters. Patch by Santa
12382           Marta (http://deee.g.hatena.ne.jp/santamarta).
12383
12384           Contributed under MIT/X11 license.
12385           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
12386
12387 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
12388
12389         * domain.c: Disable LoadLibrary support to fix Win32 build.
12390
12391         Code is contributed under MIT/X11 license.
12392
12393 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
12394
12395         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
12396         to help with cache behaviour.
12397
12398 2008-05-01  Miguel de Icaza  <miguel@novell.com>
12399
12400         * appdomain.c (mono_domain_from_appdomain): Add new accessor
12401         method. 
12402
12403 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
12404
12405         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
12406
12407 2008-05-01  Dick Porter  <dick@ximian.com>
12408
12409         * process.c (process_get_fileversion): Only pass 16 bits of
12410         language ID to VerLanguageName.  Fixes bug 381204.
12411
12412 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
12413
12414         * verify.c (mono_method_verify): Fix the comparison
12415         operator for code bounds check.
12416
12417 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
12418
12419         * verify.c (mono_method_verify): Check the bounds of
12420         all access of the code array.
12421
12422 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
12423
12424         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
12425
12426 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
12427
12428         * image.c (mono_image_strong_name_position): Fix return value when the rva is
12429         not valid.
12430
12431 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
12432
12433         * loader.c (mono_get_method_from_token, mono_method_signature): Add
12434         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
12435         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
12436         fixup main EXE images when using mono.exe for mixed-mode assembly support.
12437         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
12438         mono_runtime_load.
12439         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
12440         runtime initialization from metadata.
12441         * assembly.c: Remove obsolete ceGetModuleFileNameA.
12442         (mono_set_rootdir): Use mono_get_module_file_name.
12443         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
12444         handles.
12445         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
12446         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
12447         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
12448         MonoCLIImageInfo. Add support for module handles.
12449         (load_cli_header): Update mono_cli_rva_image_map signature.
12450         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
12451         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
12452         (mono_image_rva_map): Add support for module handles.
12453         (mono_image_ensure_section_idx): Add support for module handles.
12454         (mono_image_close): Add support for module handles.
12455         (do_load_header): Add support for module handles.
12456         (mono_image_open_from_module_handle): New function for internal use.
12457         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
12458         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
12459         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
12460         handles.
12461         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
12462         * image.h: Add mono_image_fixup_vtable.
12463         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
12464         support.
12465         * coree.h: New file.
12466         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
12467         unsupported native code.
12468         (mono_marshal_set_callconv_from_modopt): New function splitted from
12469         mono_marshal_get_managed_wrapper.
12470         (mono_marshal_get_managed_wrapper): Use
12471         mono_marshal_set_callconv_from_modopt.
12472         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
12473         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
12474         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
12475         that results in a deadlock when the runtime is loaded in _CorDllMain.
12476         * Makefile.am: Add coree.c and coree.h.
12477
12478         Contributed under MIT/X11 license.
12479
12480 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12481
12482         * generic-sharing.c: Search for type arguments in array element
12483         types as well.
12484
12485 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12486
12487         * class-internals.h, generic-sharing.c: New, small runtime generic context.
12488
12489         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
12490
12491         * object.c: Don't setup the RGCTX when the vtable is created,
12492         because we're setting it up lazily now.
12493
12494 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
12495
12496         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
12497         64 bit support.
12498
12499 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
12500
12501         * verify.c (verify_class_for_overlapping_reference_fields): 
12502         If class is under fulltrust allow reference types to overllap
12503         if they have the same RVA.
12504
12505 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
12506
12507         * pedump.c: Added new flag valid-only, that makes the verifier
12508         behaves just like --security=validil. It won't fail type load
12509         due to unverifiable restrictions.
12510
12511 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
12512
12513         * class-internals.h (struct MonoMethod): Added a verification_success
12514         field to cache verifier executions. Reduced MonoMethod:slot size by
12515         one bit.
12516
12517 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12518
12519         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
12520         instead of a 'vt' argument to save an indirection and to allow these to be used
12521         for valuetypes.
12522         (scan_vtype): New helper function to scan an area using a gc descriptor.
12523         (mono_gc_wbarrier_value_copy): Implement this.
12524         (handle_remset): Add support for REMSET_VTYPE.
12525         (find_in_remset_loc): Ditto.
12526         (mono_gc_base_init): Allow some debugging options to be controlled through the
12527         use of the MONO_GC_DEBUG env variable.
12528         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
12529         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
12530
12531 2008-04-23  Martin Baulig  <martin@ximian.com>
12532
12533         * domain.c (mono_domain_create): Move the call to
12534         mono_debug_domain_create() down, after allocating the domain id.
12535
12536 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
12537
12538         verify.c (verify_class_for_overlapping_reference_fields): Skip
12539         static fields while verifying for overlapping fields as they
12540         don't matter at all.
12541
12542 2008-04-23  Marek Habersack  <mhabersack@novell.com>
12543
12544         * domain-internals.h: added a declaration of
12545         mono_make_shadow_copy.
12546
12547         * assembly.c (mono_assembly_open_full): shadow copying of
12548         assemblies moved to here, so that all the assemblies within the
12549         application domain's private binary directories can be
12550         processed. Fixes bug #380546
12551
12552         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
12553         mono_make_shadow_copy and made non-static. The decision whether
12554         to shadow-copy an assembly is made based on its location - it's
12555         copied if it's in one of the private application domain binary
12556         directories and its different to the target file in the shadow
12557         directory. Fixes bug #380546
12558
12559 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12560
12561         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
12562
12563         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
12564         types.
12565
12566         * reflection.c (mono_image_create_token): Handle 
12567         Method/ConstructorOnTypeBuilderInst.
12568         (resolve_object): Ditto.
12569         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
12570         so it can be called from resolve_object. Also handle the case when the inflated
12571         class already has its methods setup.
12572
12573 2008-04-21  Martin Baulig  <martin@ximian.com>
12574
12575         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
12576
12577 2008-04-20  Geoff Norton  <gnorton@novell.com>
12578
12579         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
12580         pointer dereference.
12581
12582 2008-04-15  Marek Habersack  <mhabersack@novell.com>
12583
12584         * appdomain.c (try_load_from): if IOMAP is in effect, call the
12585         portability API to look up the assembly file. Fixes behavior in
12586         situations when the application has a bin/ directory, but the
12587         assembly search patch refers to Bin/ (and thus the requested file
12588         name is Bin/SomeLibrary.dll). Fixes bug #379888
12589
12590 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
12591
12592         verify.c (mono_type_is_generic_argument): Extracted this check
12593         from a dozen places to here.
12594
12595         verify.c: Fixed all issues related to boxing generic arguments
12596         and their constraints.
12597
12598 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
12599
12600         verify.c (mono_class_interface_implements_interface): Fix win32 build.
12601
12602 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12603
12604         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
12605         isn't finished yet. Fixes #363447.
12606
12607 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
12608
12609         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
12610         Fixes #346419.
12611
12612 2008-04-13  Jb Evain  <jbevain@novell.com>
12613
12614         * domain.c: update the 2.1 profile versions.
12615         Merged from the Moonlight 2 branch.
12616
12617 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
12618
12619         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
12620         mscorlibs for the non-refonly case as well.
12621
12622         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
12623         in mono_assembly_load_from_full (). Fixes #378924.
12624
12625 2008-04-11  Geoff Norton  <gnorton@novell.com>
12626
12627         * icall.c: The global extern environ doesn't exist on Mac.  We
12628         need to call NSGetEnviron instead.
12629
12630 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12631
12632         verify.c: Add generic method constraint verification.
12633
12634 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12635
12636         class.c (mono_class_inflate_generic_method_full): Add a long
12637         explanation to the is_mb_open hack. Remove the FIXME.
12638
12639 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12640
12641         * verify.c (mono_method_verify): Mark all unknown opcodes
12642         as invalid. Mark jmp as unverifiable.
12643
12644 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12645
12646         * verify.c: Add code to do type constraint verification on class instances.
12647
12648         * verify.c (mono_verifier_verify_class): Use the type constraint 
12649         verification code.
12650
12651 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12652
12653         * class.c (mono_class_get_field_default_value): Don't pass cindex
12654         as hint to mono_metadata_get_constant_index. The local is not initialized
12655         and should contain garbage most of the time. This could only work
12656         with a lot of luck.
12657
12658 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
12659
12660         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
12661
12662 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
12663
12664         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
12665
12666         * class.c (mono_class_from_generic_parameter): Save the token of the
12667         generic param in MonoClass::sizes.generic_param_token.
12668
12669         * reflection.c (mono_custom_attrs_from_class): If the class type is
12670         VAR or MVAR retrieve the attributes of the generic param.
12671
12672 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12673
12674         * class.c (mono_class_init): Do class verification if the verifier
12675         is enabled.
12676
12677 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12678
12679         * verify-internal.h: Added mono_verifier_verify_class.
12680
12681         * verify.c: Added mono_verifier_verify_class. It checks for
12682         classes with explicit layout that have overlapping reference fields.
12683
12684         * pedump.c: Init the verifier state prior to verification. Fixed
12685         command line arguments.
12686
12687 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12688
12689         * Makefile.am: Added verify-internals.h, hopefully fix the build.
12690
12691 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12692
12693         * verify-internals.h: Fix a warning.
12694
12695 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
12696
12697         * verify-internals.h: New header with the verifier configuration
12698         extracted from mini.c.
12699
12700         * verify.c: Implemented the new functions exported by verify-internals.h.
12701
12702 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
12703
12704         * verify.c: Add proper verification of ckfinite.
12705
12706 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12707
12708         * verify.c (do_conversion): Improved error message to something
12709         more meanfull.
12710
12711         * verify.c (check_is_valid_type_for_field_ops): Fix to work
12712         with primitive types.
12713
12714 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12715
12716         * verify.c: Added tail prefix checking. Marked icall
12717         as unverifible.
12718
12719 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12720
12721         * verify.c: Fix the detection of branches to the middle
12722         of an instruction.
12723
12724 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
12725
12726         * verify.c: Implemented verification of volatile. and
12727         unaligned. prefix. Check if a type is valid after retrieving it.
12728
12729 2008-04-01  Dick Porter  <dick@ximian.com>
12730
12731         * process.c (process_get_fileversion): If there's no string block,
12732         set the file language to en_US.  Fixes the other new part of bug
12733         374600.
12734
12735 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
12736
12737         * class.c: New functions mono_method_can_access_field_full and
12738         mono_method_can_access_method_full. They perform type visibility
12739         and type site check.
12740
12741         * class-internal.h: Added exported functions.
12742
12743         * verify.c: Use new functions to implement proper visibility checks.
12744
12745 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
12746
12747         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
12748
12749 2008-03-28  Dick Porter  <dick@ximian.com>
12750
12751         * process.c (process_get_fileversion): Use the first language ID
12752         we see, rather than insisting on an invariant language.  Fixes bug
12753         374600.
12754
12755 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
12756
12757         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
12758         the streams to fix reading of invalid memory later.
12759
12760         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
12761         to ease debugging.
12762
12763 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12764
12765         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
12766         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
12767
12768 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
12769         * threads.h: Added MonoThreadManageCallback type and
12770         mono_thread_set_manage_callback prototype
12771         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
12772         (used to store the mono_thread_manage callback).
12773         * threads.c: Added mono_thread_set_manage_callback, and handle
12774         "MonoThread->manage_callback" in build_wait_tids.
12775
12776 2008-03-26  Dick Porter  <dick@ximian.com>
12777
12778         * process.c (process_get_fileversion): Set FileVersionInfo strings
12779         to Empty when the resource doesn't have the particular info.
12780         Fixes bug 355717.
12781
12782 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
12783
12784         * verify.c (mono_method_verify): Proper prefix validation.
12785
12786 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12787
12788         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
12789         itself in a separate argument instead of throwing them. Fixes #373448.
12790
12791         * appdomain.c: Bump corlib version.
12792
12793 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
12794
12795         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
12796
12797 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
12798
12799         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
12800         version macros.
12801
12802 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12803
12804         * generic-sharing.c, class-internals.h: Code for putting
12805         reflection types into the runtime generic context.
12806
12807 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
12808
12809         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
12810         Fixes #340662. 
12811
12812
12813 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
12814
12815         * verify.c (VerifyContext): Added instruction prefix data to the struct.
12816
12817         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
12818
12819         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
12820
12821         * verify.c (do_cast): Let the result value keep the boxed status.
12822
12823         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
12824
12825 2008-03-17  Jb Evain  <jbevain@novell.com>
12826
12827         * reflection.c: when running on a 2.0 runtime, emit
12828         unconditionally the #~ header version as 2.0, and the
12829         CLI header version as 2.5, for symmetry's sake with csc.
12830
12831 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
12832
12833         * class.c: Remove the unused cache_interface_offsets stuff.
12834
12835         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
12836         profiler.c: Fix warnings.
12837
12838 2008-03-16  Mark Probst  <mark.probst@gmail.com>
12839
12840         * generic-sharing.c, class-internals.h: Support for putting
12841         methods into the runtime generic context.
12842
12843 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
12844
12845         * class.c (mono_class_setup_fields): Ignore calls made to this function for
12846         classes which are generic instances of not-yet finished typebuilders. Fixes
12847         #351172.
12848
12849         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
12850
12851 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
12852
12853         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
12854
12855         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
12856         field, replace it with a hash table in MonoDynamicImage.
12857
12858         * reflection.c (inflate_mono_method): Access the generic definition object from
12859         image->generic_def_objects instead of imethod->reflection_info.
12860
12861         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
12862
12863         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
12864         
12865         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
12866         function in reflection.c so it is easier to keep in sync with the dynamic image
12867         creation code.
12868
12869         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
12870         mono_image_close ().
12871
12872 2008-03-15  Mark Probst  <mark.probst@gmail.com>
12873
12874         * class.c (mono_class_generic_sharing_enabled): Disable generic
12875         sharing for all architectures except AMD64 and x86 to fix build.
12876
12877 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
12878
12879         * verify.c: Use the generic definition MonoGenericContext when available.
12880         Remove code for checking generics instance compatibility in favor of
12881         mono_class_is_assignable_from.
12882
12883 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12884
12885         * marshal.c, marshal.h, metadata-internals.h, image.c,
12886         wrapper-types.h: New wrapper for invoking a shared static method
12887         without having to pass the runtime generic context argument.
12888
12889 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
12890
12891         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
12892
12893 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12894
12895         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
12896         
12897         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
12898         create a token from a FieldOnTypeBuilderInst.
12899         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
12900         (resolve_object): Ditto.
12901
12902         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
12903         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
12904
12905 2008-03-14  Martin Baulig  <martin@ximian.com>
12906
12907         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
12908
12909         * debug-mono-symfile.h
12910         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
12911         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
12912
12913 2008-03-10  Martin Baulig  <martin@ximian.com>
12914
12915         * debug-mono-symfile.h
12916         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
12917         `lexical_block_table_offset'.
12918         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
12919         `lexical_blocks'.
12920         (MonoSymbolFile): Added `version'.
12921
12922         * mono-debug.h
12923         (MonoDebugLexicalBlockEntry): Removed.
12924         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
12925         `lexical_blocks'.
12926
12927         * mono-debug.c (mono_debug_add_method): Don't compute lexical
12928         blocks here; the debugger now does this internally.
12929
12930 2008-02-27  Martin Baulig  <martin@ximian.com>
12931
12932         * object.c (mono_runtime_exec_main): Call
12933         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
12934         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
12935
12936 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
12937
12938         * verify.c (verify_type_compatibility_full): Allow native int to be converted
12939         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
12940
12941 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
12942
12943         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
12944         ldftn with a virtual method.
12945
12946 2008-03-13  Geoff Norton  <gnorton@novell.com>
12947
12948         * decimal.c:  Only include memory.h if the platform has it.
12949
12950 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
12951
12952         * assembly.c, class.c, metadata-internals.h: make sure public key
12953         tokesns are compared in a case-insensitive way. Also, all
12954         the lookups in the GAC use a lowercase public key token
12955         (gaacutil already does the lowercasing on install). Fixes
12956         bug #369541.
12957
12958 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
12959
12960         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
12961         and return value.
12962
12963 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
12964
12965         * image.c: when someone loads a mscorlib from a file, return the
12966         currently loaded mscorlib (fixes bug #369253).
12967
12968 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
12969
12970         * class.c: handle types with no parents by forcing them to have
12971         System.Object as a parent and marking them as broken (this currently
12972         allows the first part of bug #369173 to work as well, likely because
12973         we don't check for typeload exceptions everywhere yet).
12974
12975 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
12976
12977         * class.c: more complete check that types belong to corlib
12978         (fixes second part of bug #369173).
12979
12980 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
12981
12982         * generic-sharing.c:  Including glib.h for the MSVC builds to define
12983           "inline" to "__inline" before including mono-membar.h.
12984           
12985         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
12986           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
12987           MSVC builds.
12988
12989         Contributed under MIT/X11 license.
12990
12991 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
12992
12993         * verify.c (do_invoke_method): Remove return type validation.
12994
12995         * verify.c (do_ret): Do return type validation at return site instead of
12996         call site.
12997
12998 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
12999
13000         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
13001
13002         * verify.c: Some todos cleaned and improved a few error messages.
13003
13004 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
13005
13006         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
13007
13008 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13009
13010         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
13011         system types correctly.
13012
13013         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
13014         function.
13015
13016 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13017
13018         * assembly.c (build_assembly_name): Fix a warning.
13019
13020 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
13021
13022         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
13023         the called function takes an object type argument. Fixes storing or
13024         valuetypes across remoting as well as reducing memory usage.
13025         * image.c, metadata-internals.h: remove now unused ldfld_remote and
13026         stfld_remote wrapper caches.
13027
13028 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13029
13030         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
13031         is not found.
13032
13033         * reflection.c (mono_image_register_token): New helper function to save
13034         a token->object mapping.        
13035
13036         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
13037         managed code.
13038
13039         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
13040         one dimension arrays. Fixes #367670.
13041         (mono_reflection_get_type_internal): Ditto.
13042
13043 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
13044
13045         * marshal.c: mono_load_remote_field_new() always returns object.
13046         so use the proper signature (fixes bug #366445).
13047
13048 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13049         
13050         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
13051         add an 'inline_failure' flag instead.
13052
13053 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13054
13055         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
13056         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
13057         contains the location of "this", used for exception handling.
13058
13059 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13060
13061         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
13062         their size on all platforms for perf reasons.
13063
13064 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13065
13066         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
13067         object-internal.h
13068
13069         * object-internal.h: Same.
13070
13071 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13072
13073         * reflection.h: Fix the build I just broke.
13074
13075 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13076
13077         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
13078         Test if a token is valid, this remove explicit usage of 
13079         MonoDynamicImage::tokens from the verifier code.
13080
13081         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
13082
13083         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
13084         instead of direct access to MonoDynamicImage::tokens.
13085
13086 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13087
13088         * verify.c (token_bounds_check): Fix the build I just broke.
13089
13090 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13091
13092         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
13093
13094         * verify.c (verifier_load_method): Fixed the errors message.
13095
13096         * verify.c (mono_method_verify): Fixed a debug message.
13097
13098 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
13099
13100         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
13101         mono-perfcounters.h, class-internals.h: support for predefined
13102         writable counters, query of categories and counters, bugfixes.
13103
13104 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
13105
13106         * verify.c (do_refanytype): Verify the refanytype opcode.
13107
13108         * verify.c (mono_method_verify): Use do_refanytype.
13109
13110 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
13111
13112         * verify.c (do_mkrefany): Verify the mkrefany opcode.
13113
13114         * verify.c (mono_method_verify): Use do_mkrefany.
13115
13116 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
13117
13118         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
13119         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
13120         implementation.
13121
13122 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13123
13124         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
13125         the type load exception.
13126
13127 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
13128
13129         * verify.c: Added a few FIXME for method signatures
13130
13131         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
13132         of mono_method_get_signature and get vararg call working. Removed unused
13133         checks for return value.
13134
13135         * verify.c (do_refanyval): Verify the refanyval opcode.
13136
13137         * verify.c (mono_method_verify): Implemented verification of arglist and
13138         use do_refanyval.
13139
13140 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13141
13142         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
13143         vtypes to marshal.c.
13144
13145         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
13146         it works for AOT as well.
13147
13148 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
13149
13150         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
13151         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
13152         the system time is adjusted.
13153
13154 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
13155
13156         * icall.c, icall-def.h: use the new time functions (fixes the
13157         non-monotonic behaviour of TickCount).
13158
13159 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13160
13161         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
13162         it breaks the build.
13163         
13164         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
13165         cattr is not finished yet.
13166
13167 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
13168
13169         * verify.c: Proper token validation for field, method and type.
13170
13171 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
13172
13173         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
13174
13175         * loader.c (method_from_memberref): Generate type load error instead of method missing
13176         if the type is not found.
13177
13178 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13179
13180         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
13181         some of the conversions caused the generation of a marshal directive exception.
13182
13183 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
13184
13185         verify.c: Report which exception should be thrown by the JIT.
13186         Added a lot of FIXME notes.
13187
13188 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13189
13190         * generic-sharing.c: Runtime generic context slots are not
13191         instantiated on init anymore.  Instead, provide function to do the
13192         instantiating on demand.
13193
13194         * class-internals.h: Added vtable to runtime generic context.
13195         Macros for encoding direct and indirect slot offsets in one
13196         guint32.
13197
13198 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13199
13200         * object.c, generic-sharing.c: Moved some generic sharing code
13201         from object.c to generic-sharing.c.
13202
13203         * generic-sharing.c: Added support for extensible runtime generic
13204         context.
13205
13206         * metadata-internals.h: Two new hash tables in MonoImage for
13207         extensible runtime generic context support.
13208
13209         * domain.c: Unregister generic vtables upon domain unloading.
13210
13211         * image.c: Destroy new hash tables upon image unloading.
13212
13213         * metadata.c: Unregister generic subclasses upon image unloading.
13214
13215         * class-internals.h: New data structure for runtime generic
13216         context template.  New fields in the runtime generic context for
13217         extensible part.
13218
13219         * Makefile.am: Added generic-sharing.c.
13220
13221 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
13222
13223         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
13224         there is a pending loader exception, raise it.
13225
13226         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
13227         same.
13228
13229         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
13230         same.
13231
13232         Fixes #363450.
13233
13234 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13235
13236         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
13237
13238         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
13239         
13240         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
13241         ref-only requests for compatibility with MS.
13242
13243 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
13244
13245         * reflection.c (mono_custom_attrs_from_method): Don't silently
13246         return an empty list for generic method instances.
13247         (mono_custom_attrs_from_param): Likewise.
13248
13249 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
13250             Raja R Harinath  <harinath@hurrynot.org>
13251
13252         Fix #354757
13253         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
13254         * class.c (mono_class_inflate_generic_method_full): Initialize it
13255         when a fully-open method is instantiated.
13256         * metadata.c (inflated_method_equal, inflated_method_hash): Update
13257         to new field.
13258         * reflection.c (inflate_mono_method): Don't create a temporary context.
13259
13260 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
13261
13262         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
13263         Compute correct value, to prepare for imethod->reflection_info going away.
13264
13265 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13266
13267         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
13268
13269 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
13270
13271         * verify.c: Implement skip visibility flag.
13272
13273 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
13274
13275         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
13276         which contains an extra field to tell the kind of exception that should be thrown.
13277
13278         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
13279
13280 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
13281
13282         * loader.c (mono_method_get_param_names): Initialize 'klass' after
13283         'method' is updated.
13284
13285 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
13286
13287         * class.c (mono_class_layout_fields): Set class->min_align for classes using
13288         explicit layout as well. Fixes #360375.
13289
13290 2008-02-11  Geoff Norton  <gnorton@novell.com>
13291
13292         * loader.c: Guard and dereference against inflated generic methods
13293
13294 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
13295
13296         * class.c: Include Retargetable spec in assembly name.
13297         * assembly.c: Always include PublicKeyToken spec in assembly name
13298         (with value "null" if assembly is not signed), and include
13299         Retargetable spec.
13300         * icall-def.h: Added icall for Assembly.get_fullname.
13301         * icall.c: Added icall returning the fullname of an assembly.
13302
13303 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13304
13305         * class.c (mono_class_setup_vtable_general): Add a missing call to
13306         mono_class_setup_methods () which is needed in the AOT case.
13307
13308 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
13309
13310         * verify.c (mono_type_get_stack_name): Added. Return the name for the
13311         stack type of the given MonoType.
13312
13313         * verify.c (verify_type_compatibility_full): Handle the void type.
13314
13315         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
13316         way stack merging works.
13317
13318         * verify.c (store_local): Improved verification message.
13319
13320         * verify.c (do_branch_op): If the merging is invalid, the method
13321         is unverifiable and not invalid. Improved error message.
13322
13323         * verify.c (merge_stacks): Properly merge a boxed valuetype and
13324         a reference type diferent than System.Object. Improved error
13325         message.
13326
13327 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
13328
13329         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
13330
13331         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
13332         type of an enum even if the argument is byref.
13333
13334         * verify.c: Replace all explicit uses of enumtype and enum_basetype
13335         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
13336
13337         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
13338
13339         *verify.c (verify_type_compatibility_full): Make enum types
13340         compatible with their base types.
13341
13342         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
13343         types are compatible for the special case of a boxed valuetype and
13344         System.Object.
13345
13346         * verify.c (verify_stack_type_compatibility): The function
13347         is_compatible_boxed_valuetype was extracted from here.
13348
13349         * verify.c (push_arg): Only set ctx->has_this_store if the method
13350         is not static.
13351
13352         * verify.c (do_ldelem): Fixed a typo in an error message and added
13353         strict check for mixing int32 and native int as the array type
13354         and ldelem type.
13355
13356         * verify.c (merge_stacks): Consider boxed valuetypes in the
13357         compatibility checks.
13358
13359 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
13360         * profiler.h: (MonoGCEvent): Added start-stop the world events.
13361
13362 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
13363         *class.c: use_new_interface_vtable_code: renamed the env var to have
13364         a "MONO_" prefix, and fix the logic to enable it by default.
13365
13366 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
13367         *class.c:
13368         mono_class_setup_vtable_general: rewrote the way in which interface
13369         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
13370         makes the code more maintainable.
13371         For now the old code is still there, and can be activated setting
13372         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
13373
13374 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
13375
13376         * verify.c: guarded some debug functions around and #ifdef.
13377
13378         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
13379
13380 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13381
13382         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
13383         changes for now since they seem to break too many things.
13384
13385 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13386
13387         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
13388         mono_marshal_find_nonzero_bit_offset): Added macro and function
13389         for finding the byte- and bit-offset of a bitfield within a
13390         struct.
13391
13392 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13393
13394         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
13395         (mono_marshal_get_struct_to_ptr): Ditto.
13396
13397         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
13398         cctor_signature.
13399
13400 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13401
13402         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
13403         between methods for non-corlib types.
13404
13405 2008-02-02  Geoff Norton  <gnorton@novell.com>
13406
13407         * loader.c (mono_method_get_param_names): Populate the parameter name for 
13408         generic parameters as well. (Fixes #342536)
13409
13410 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
13411
13412         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
13413
13414         * verify.c (do_invoke_method): Fix for calling with byref structs.
13415
13416         * verify.c (do_cast): push a boxed value type based on the type token and not
13417         the type of stack.
13418
13419 2008-01-31  William Holmes  <billholmes54@gmail.com>
13420
13421         * process.c (process_module_string_read): Check the size returned form 
13422           VerQueryValue to avoid out of memory exception. 
13423
13424 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13425
13426         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
13427         Handle properly modules which are not in the moduleref table. Fixes
13428         #356938.
13429
13430 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13431
13432         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
13433         the dynamic case which is now in managed code.
13434         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
13435
13436         * marshal.c (mono_string_to_bstr): Fix a warning.
13437         (init_com_provider_ms): Ditto.
13438
13439         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
13440
13441         * exception.c (mono_get_exception_out_of_memory): New helper function.
13442
13443 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
13444
13445         * marshal.c: Add support for BSTR marshalling
13446         using other COM systems.
13447
13448         Code is contributed under MIT/X11 license.
13449
13450 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13451
13452         * object.c (mono_runtime_invoke_array): reverted previous
13453         commit as it breaks the build.
13454
13455 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13456
13457         * object.c (mono_runtime_invoke_array): Verify arguments for
13458         invalid types. Fixes #348522.
13459
13460 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13461
13462         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
13463         non-final virtual calls using call. 
13464
13465         * verify.c (do_invoke): fixed some TODOs.
13466
13467         * verify.c (push_arg): set has_this_store for "ldarga 0".
13468
13469 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13470
13471         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
13472         which belong to an inflated class. Fixes #356531.
13473
13474 2008-01-26  Robert Jordan  <robertj@gmx.net>
13475
13476         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
13477         which resort to FindFirstFile when a certain error condition
13478         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
13479         Code is contributed under MIT/X11 license.
13480
13481 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
13482
13483         * marshal.c (emit_marshal_string): Fix out string marshalling
13484         to use specified encoding. Fixes #323900.
13485
13486         Code is contributed under MIT/X11 license.
13487
13488 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
13489
13490         * class.c (mono_class_inflate_generic_method_full): Don't modify
13491         iresult->context after cache check.
13492
13493 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
13494
13495         * class.c (mono_class_inflate_generic_method_full): Change the
13496         struct assignments to memcpy for better visibility and add some comments.
13497
13498 2008-01-23  Dick Porter  <dick@ximian.com>
13499
13500         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
13501         procedure, and make it work on windows.
13502
13503 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
13504
13505         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
13506         a MonoReflectionTypeBuilder since it is always of that type.
13507
13508         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
13509
13510         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
13511
13512         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
13513         
13514         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
13515
13516         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
13517
13518         * reflection.c (mono_reflection_create_runtime_class): Remove already created
13519         instantiations from the type cache.
13520
13521 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13522
13523         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
13524
13525         * verify.c (do_unbox_value): push a controled mutability managed pointer.
13526
13527 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13528
13529         * verify.c (do_ldstr): added, verifies if the #US token is valid.
13530
13531         * verify.c (mono_method_verify): removed old TODO
13532
13533 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13534
13535         * verify.c (do_newobj): add visibility check.
13536
13537 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13538
13539         * verify.c (do_load_function_ptr): add visibility check.
13540
13541 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
13542         *class.c:
13543         mono_generic_class_get_class: hook profiler events.
13544         mono_field_get_offset: added to support heap-shot in the new profiler.
13545         *class.h: exported mono_field_get_offset.
13546         * reflection.c:
13547         mono_reflection_setup_internal_class: hook profiler events.
13548
13549 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13550
13551         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
13552         argument here too and use it to avoid checking for pending exceptions if 
13553         possible.
13554
13555 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
13556
13557         * assembly.c (build_assembly_name): add arg for passing the assembly
13558         flags. Do not consider a PublicKey with value "null" valid.
13559         (mono_assembly_name_parse_full): added boolean argument that will be
13560         set if the assembly name contains a PublicKeyToken spec. Added support
13561         for the Retargetable spec for which only Yes or No are allowed as valid
13562         value. Consider assembly name invalid if Retargetable spec is set, but
13563         either version, culture or public key (token) are not specified.
13564         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
13565         with implementation in assembly.c.
13566         * icall.c (fill_reflection_assembly_name): also copy assembly flags
13567         from MonoAssemblyName.
13568         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
13569         introduced argument for mono_assembly_name_parse_full to know if the
13570         assembly name has a PublicKeyToken spec, and if it has instruct
13571         fill_reflection_assembly_name to use default value for keyToken (if
13572         PublicKeyToken is null).
13573
13574 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
13575
13576         * verify.c (mono_method_verify): fixed ovf ops with
13577         float values. They are unverifiable now.
13578
13579 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
13580
13581         * class.c (set_failure_from_loader_error): add BadImageException to the
13582         list of exceptions that can cause a type to fail to load.
13583
13584         * class.c (mono_class_get_exception_for_failure): same.
13585
13586 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
13587
13588         * verify.c (in_any_exception_block): added, check if offset
13589         is part of any exception handling clause.
13590
13591         * verify.c (get_stack_type): added VAR and MVAR types.
13592
13593         * verify.c (do_stobj): better error messages.
13594
13595         * verify.c (do_cpobj): added, check cpobj.
13596
13597         * verify.c (do_initobj): added, check initobj.
13598
13599         * verify.c (do_sizeof): added, check sizeof.
13600
13601         * verify.c (do_localloc): added, check localloc.
13602
13603         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
13604
13605 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13606
13607         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
13608         save_lmf/restore_lmf opcodes.
13609
13610         * threads.c (mono_threads_install_notify_pending_exc): New function to
13611         install a callback notifying the JIT there is a pending exception on a thread.
13612         (mono_thread_request_interruption): Call the new callback.
13613         (mono_thread_get_and_clear_pending_exception): New function to return the
13614         exception pending on a thread.
13615
13616         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
13617         to turn off checking for pending exceptions.
13618         (mono_marshal_get_native_wrapper): Ditto.
13619
13620 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13621
13622         * threads-types.h: Get rid of the unnecessary extern declarations.
13623
13624 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
13625
13626         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
13627         return field from parent class if not private.
13628         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
13629         returns fields from parent class if they are not private.
13630         (method_nonpublic): added function to determine if a given method
13631         should be considered non-public. Returns false for private methods
13632         on parent class, and internal methods from parent on the 1.0 profile.
13633         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
13634         use method_nonpublic function to determine whether method should be
13635         returned.
13636         (property_accessor_public): use newly introduced method_nonpublic
13637         function to determine whether accessor is non-public. 
13638         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
13639         event from parent class if not private. Only return static event if
13640         Static flag is set, and only return static event from parent class if
13641         FlattenHierarchy flag is set.
13642         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
13643         include non-private events from parent class.
13644
13645 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13646
13647         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
13648         warning.
13649
13650 2008-01-16  Wade Berrier <wberrier@novell.com>
13651
13652         * security.c: Add assembly.h header to appease some warnings
13653
13654 2008-01-16  Dick Porter  <dick@ximian.com>
13655
13656         * process.c (process_module_string_read): Remove trailing null
13657         when saving string.
13658
13659 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13660
13661         * class-internals.h: A new data structure describing the layout of
13662         a runtime generic context (MonoRuntimeGenericContextTemplate).
13663
13664         * metadata-internals.h: Added a hash table to MonoDomain that maps
13665         from open generic classes to their runtime generic context
13666         templates.
13667
13668         * object.c: Building of the runtime generic context, including
13669         proper handling of generic type arguments of superclasses.
13670         Building of the runtime generic context according to the template.
13671
13672 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13673
13674         * class.c (mono_class_setup_fields): Set field.count for generic instances.
13675         Fixes #350856.
13676
13677         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
13678         mono_portability_find_file (). Fixes #325466.
13679         (mono_image_get_public_key): Fix a warning.
13680
13681 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13682
13683         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
13684         Fixes #353550.
13685         (mono_class_from_name_case): Ditto.
13686
13687 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
13688
13689         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
13690           common storage for the tables used in the System/NumberFormatter class.
13691
13692 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
13693
13694         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
13695
13696 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
13697
13698         * verify.c (get_boxable_mono_type): check if the token is valid.
13699
13700         * verify.c (set_stack_value): changed to add an error if an
13701         invalid type is set on stack. Changed all callers due to signature change.
13702
13703         * verify.c (do_stobj): implement stobj validation.
13704
13705 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13706
13707         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
13708         set container->is_method, it was set earlier.
13709
13710         * metadata.c (type_in_image): Handle MVARs which belong to not finished
13711         generic methods.
13712
13713         * reflection.c (mono_reflection_initialize_generic_parameter): Set
13714         is_method of the generic container to TRUE for methods.
13715
13716 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13717
13718         * metadata.c (type_in_image): Handle type parameters properly.
13719
13720         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
13721         memory ownership of this structure.
13722
13723 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
13724
13725         * verify.c (get_boxable_mono_type): make typedref types been just
13726         unverifiable. check for void type.
13727
13728         * verify.c (do_unbox_any): added, verify opcode unbox.any.
13729
13730         * verify.c (do_load_function_ptr): accept method spec tokens.
13731
13732 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13733
13734         * marshal.c (mono_class_native_size): Always set *align even if this is called
13735         recursively.
13736
13737 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
13738
13739         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
13740         out-of-date.
13741
13742 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
13743
13744         * verify.c: removed some old unused tables. A huge bunch of small fixes
13745         to things found while testing the verifier with mono basic.
13746
13747         * verify.c (dump_stack_value): dump null literal flag to.
13748
13749         * verify.c (verify_type_compatibility_full): fix comparison
13750         for types that have a generic super type.
13751
13752         * verify.c (verify_stack_type_compatibility): fix compatibility
13753         between null literals and reference types. fix compatibility between
13754         boxed valuetypes and object. fix corner case test for enums.
13755
13756         * verify.c (do_cmp_op): proper verification of cgt.un in case
13757         of reference types.
13758
13759         * verify.c (do_invoke_method): fix error message.
13760
13761         * verify.c (do_store_indirect
13762
13763         * verify.c (check_is_valid_type_for_field_ops): proper verification
13764         of managed pointers to valuetypes and boxed valuetypes. proper verification
13765         of null literals.
13766
13767         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
13768         allow token to be a reference type.
13769
13770         * verify.c (do_cast): proper handling of boxes valuetypes.
13771
13772         * verify.c (do_stelem): proper handling of storing a boxed valuetype
13773         in object[].
13774
13775         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
13776         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
13777         fixed the decoding of unbox_any
13778
13779 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13780
13781         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
13782
13783 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
13784
13785         * verify.c (do_newobj): do delegate verification.
13786
13787         * verify.c (verify_delegate_compatibility): perform delegate
13788         verification.
13789
13790         * verify.c (verify_ldftn_delegate): perform tests related to
13791         ldftn delegates.
13792
13793         * verify.c (mono_delegate_signature_equal): perform the
13794         slightly diferent signature comparison required by delegates.
13795
13796         * metadata.c (mono_metadata_type_equal_full): added and exported
13797         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
13798         allows signature only comparison.
13799
13800         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
13801         as MONO_INTERNAL.
13802
13803 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
13804
13805         * verify.c: added a bunch of stack_slot_* functions to
13806         make access to stack slot type easier. This is required to
13807         allow optional flags, like null literal, boxed value and
13808         this pointer.
13809         All access paths to IlStackDesc::stype have been changed 
13810         to use these new funcions.
13811         Removed a bunch of unused functions and cleared all warnings.
13812         This patch introduces the usage of the this pointer and 
13813         boxed value flags.
13814
13815 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
13816
13817         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
13818
13819 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13820
13821         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
13822         match managed version.
13823
13824         * appdomain.c: Bump corlib version.
13825         
13826         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
13827         argument.
13828
13829 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
13830
13831         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
13832         Set public key token to zero-length byte array if assembly is not
13833         strongnamed.
13834
13835 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13836
13837         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
13838         writing a vtype array elem.
13839
13840 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
13841
13842         * assembly.c (build_assembly_name): return FALSE if length of token is
13843         not 16 (if not "null").
13844         (mono_assembly_name_parse_full): return FALSE if value of version,
13845         culture, token or key is 0.
13846         * icall.c (fill_reflection_assembly_name): add boolean arguments to
13847         specify whether public key and public key token must be set to default
13848         value (zero-length byte array) if not available. Set versioncompat to
13849         SameMachine. If public key is available or the default is set, then
13850         set PublicKey flag.
13851         (ves_icall_System_Reflection_Assembly_FillName): if no public key
13852         is available, use empty byte array as default value. On the 2.0
13853         profile, use default value for public key token if not set.
13854         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
13855         profile, use default value for public key if not set. On the 2.0
13856         profile, use default value for public key token if not set.
13857         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
13858         default values for public key and public key token.
13859
13860 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13861
13862         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
13863         field to keep it in synch with the managed object.
13864
13865         * marshal.c (emit_marshal_object): Add support for byref marshalling of
13866         delegates. Fixes #351520.
13867
13868         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
13869         contains defined memory.
13870         
13871         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
13872
13873         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
13874         
13875         * sgen-gc.c (check_consistency): New helper function to do a consistency check
13876         of the GC data structures.
13877
13878         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
13879
13880         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
13881         
13882         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
13883         barrier.
13884         (mono_array_clone_in_domain): Ditto.
13885         (mono_array_clone_in_domain): Ditto.
13886
13887         * threads.c (start_wrapper): Register the thread start argument as a GC root.
13888         (cache_culture): Use a write barrier.
13889
13890         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
13891         (ves_icall_get_property_info): Ditto.
13892
13893         * object.h (MONO_STRUCT_SETREF): New macro.
13894
13895         * class-internals.h (MonoStats): Add some GC statistics.
13896
13897         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
13898
13899 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
13900
13901         * exception.c (mono_exception_from_name_two_strings):
13902         Break from loop after method is found.
13903
13904 2008-01-04  Dick Porter  <dick@ximian.com>
13905
13906         * process.c (process_module_string_read): Rename variable to
13907         reflect correct usage, after fixing bug 345972.
13908
13909 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
13910
13911         * verify.c (mono_type_create_fnptr_from_mono_method): 
13912         created a MonoType function pointer instance to be used during
13913         verification. The verifier releases this memory at end.
13914
13915         * verify.c (mono_method_is_constructor): extracted repeated
13916         checks for constructor into a single class.
13917
13918         * verify.c (do_push_field): use new extracted method
13919         for constructor check.
13920
13921         * verify.c (do_newobj): same.
13922
13923         * verify.c (do_ldftn): renamed to do_load_function_ptr
13924         and make it verify ldvirtftn too.
13925
13926         * verify.c (mono_method_verify: proper verification
13927         of ldvirtftn. release created MonoMethod instances.
13928
13929 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
13930
13931         * verify.c (token_bounds_check): added.
13932
13933         * verify.c (do_ldftn): added.
13934
13935         * verify.c (mono_method_verify): proper verificartion of ldftn.
13936
13937 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
13938
13939         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
13940         than the table row count. It's the resposibility of the caller to
13941         make the bounds check and raise the correct error.
13942
13943         * metadata.c (mono_metadata_decode_row_col): Same.
13944
13945         * loader.c (mono_get_method_from_token): perform bounds check
13946         on token for methoddef table.
13947
13948 2007-12-29  Miguel de Icaza  <miguel@novell.com>
13949
13950         * icall.c
13951         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
13952         assert into a negative result, the managed code already coped with
13953         that.
13954
13955         Some folks on Windows reported this error. 
13956
13957 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
13958
13959         * appdomain.c: Bump corlib version.
13960         * icall.c:
13961         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
13962         CultureInfo.CreateCulture to create CultureInfo for name.
13963         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
13964         create CultureInfo for name. Fixes bug #347174.
13965
13966 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
13967
13968         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
13969         flags.
13970
13971         * verify.c (is_valid_branch_instruction): allow branching to the
13972         first instruction of the protected block.
13973
13974         * verify.c (is_valid_cmp_branch_instruction): same.
13975
13976         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
13977         avoid double initialization.
13978
13979         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
13980         detect which cases the eval stack should just be copied.
13981
13982         * verify.c (mono_method_verify): check if the eval stack
13983         is empty when entering a protected block.
13984
13985 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
13986
13987         * verify.c: added is_clause_in_range, is_clause_inside_range,
13988         is_clause_nested and verify_clause_relationship. They perform
13989         the verifications stated in P1 12.4.2.7.
13990
13991         * verify.c (mono_method_verify): remove some unused variables,
13992         add the new exception clause checks, add instruction border
13993         checks for protected block start/end, improved some error 
13994         messages and fixed a bug in the way invalid instruction access
13995         is detected.
13996
13997 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
13998
13999         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
14000         from GC 7.0 if available.
14001
14002         * object.c: Remove an unused define.
14003         
14004         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
14005
14006         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
14007
14008         * null-gc.c (mono_gc_make_descr_for_array): Implement.
14009
14010         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
14011
14012         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
14013         to take the same arguments as the other make_descr functions.
14014
14015         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
14016
14017         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
14018         directly.
14019
14020         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
14021         mini.c.
14022
14023         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
14024         call to boehm-gc.c.
14025
14026         * boehm-gc.c (mono_gc_register_root): Fix a warning.
14027
14028         * null-gc.c (mono_gc_register_root): Fix a warning.
14029
14030         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
14031
14032         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
14033         (mono_gc_base_init): Call GC_init ().
14034
14035         * null-gc.c: Define mono_gc_register_root () as a no-op.
14036
14037         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
14038
14039 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
14040
14041         * verify.c: add prototype for merge_stacks at top
14042
14043         * verify.c (do_switch): added.
14044
14045         * verify.c (merge_stacks): on some cases the stack merging
14046         was not happening properly. Unequal stack sizes at merge
14047         points should be invalid.
14048
14049         * verify.c (mono_method_verify): added more debug info on stack state.
14050         verify switch properly.
14051
14052 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
14053
14054         * method-builder.h: New file, moved the mono_mb_ declarations here from 
14055         marshal.h.
14056
14057         * boehm-gc.c marshal.c: Include method-builder.h.
14058
14059         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
14060
14061         * marshal.c: Remove some code which is now in method-builder.c.
14062
14063 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
14064
14065         * method-builder.c: New file, extraction of the method builder functionality 
14066         from marshal.c.
14067
14068         * marshal.c: Move the mb functions into method-builder.c.
14069
14070         * marshal.h marshal.c: Export some mono_mb_... functions.
14071
14072         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
14073
14074         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
14075         the caller.
14076
14077         * class.c (mono_class_get_full): Check the token type in the dynamic case.
14078
14079         * loader.c (mono_field_from_token): Ditto.      
14080
14081         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
14082         type as well.
14083         
14084         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
14085         Fixes #342565.
14086
14087         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
14088         a helper function for setting it.
14089
14090         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
14091
14092         
14093         * assembly.c: Significally simplify code now that referenced assemblies are 
14094         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
14095
14096         * threads.h: Don't include  the internal threads-types.h header file. Fixes
14097         #349952.
14098
14099 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
14100
14101         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
14102         instructions that were target of branches or are at protected block boundaries.
14103
14104         * verify.c (in_same_block): handle filter clauses.
14105
14106         * verify.c (is_valid_branch_instruction): added. checks the target of
14107         instructions br or brtrue/false.
14108
14109         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
14110         binary branch instructions such as beq and bge.
14111
14112         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
14113         and made it pin the instruction as been part of the exception block.
14114
14115         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
14116         of in_same_block.
14117
14118         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
14119         of in_same_block.
14120
14121         * verify.c (do_ret): ret from a protected block is unverifiable and
14122         not invalid.
14123
14124         * verify.c (do_static_branch): verify br and br.s instructions.
14125
14126         * verify.c (merge_stacks): add extra param to support detection
14127         of branches in the middle of instructions.
14128         
14129         * verify.c (mono_method_verify): verify branches and exception blocks
14130         that target the middle of instructions. Proper verification of br and br.s.
14131
14132 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
14133
14134         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
14135         skip_visibility field.
14136         (reflection_methodbuilder_from_dynamic_method): Ditto.
14137
14138         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
14139         registrations. Fixes #348193.
14140
14141         * threads.h: Move the internal mono_thread_get_pending_exception () to
14142         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
14143
14144 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14145
14146         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
14147         icall registration. Fixes #348193.
14148
14149         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
14150         for corlib classes into object. Fixes #349621.
14151
14152 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
14153
14154         * icall.c (property_accessor_nonpublic): new function to determine
14155         whether an accessor allows a property to be considered non-public.
14156         Returns false for private accessor(s) from parent class, and internal
14157         accessor(s) from parent on 2.0 profile (and higher).
14158         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
14159         to determine whether property should be included if NonPublic flag
14160         is set. Fixes bug #349078.
14161
14162 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
14163
14164         * verify.c (init_stack_with_value): added.
14165
14166         * verify.c (mono_method_verify): extracted common
14167         code for exception initialization into init_stack_with_value.
14168
14169         * verify.c (mono_method_verify): initialize the exception
14170         for handler clauses as well.
14171
14172         * verify.c (mono_method_verify): fix the exception clause
14173         ordering rules, it should use handler end offset and not
14174         start offset.
14175
14176 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
14177
14178         * rawbuffer.c: remove useless warning.
14179
14180 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
14181
14182         * threads.h, threads-types.h: move functions to the correct header
14183         (fixes bug#349952).
14184
14185 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14186
14187         * verify.c (mono_method_verify): proper verification
14188         of exception handling clauses ranges and fallthru in
14189         and out of protected blocks.
14190
14191 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14192
14193         * verify.c (mono_method_verify): fixed compilation issue.
14194
14195 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14196
14197         * verify.c (mono_method_verify): a printf slipped in, changed
14198         to use verifier debug macro.
14199
14200 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
14201
14202         * verify.c (is_correct_leave): check for filter clauses.
14203
14204         * verify.c (do_filter): added.
14205
14206         * verify.c (mono_method_verify): property verification of leave.
14207
14208
14209 2007-12-18  Mark Probst  <mark.probst@gmail.com>
14210
14211         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
14212         Win32 build, until we figure out how to do the proper thing on
14213         Win32.
14214
14215 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
14216
14217         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
14218         by the previous patch.
14219         
14220         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
14221         the assembly resolve handler for refonly assemblies.
14222
14223 2007-12-17  Mark Probst  <mark.probst@gmail.com>
14224
14225         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
14226         Make sure only one thread is allowed to commence shutdown, and
14227         don't allow new threads to be started once shutdown is in
14228         progress.
14229
14230 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
14231
14232         * verify.c (is_correct_endfilter): added.
14233
14234         * verify.c (is_unverifiable_endfilter): added.
14235
14236         * verify.c (do_endfilter): added.
14237
14238         * verify.c (mono_method_verify): property verification of endfilter
14239         and fixed a corner case or endfinally.
14240
14241 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
14242
14243         * verify.h: new flags to support fail fast of unverifiable code and
14244         do non-strict verification. Non-strict verification is required to
14245         have MS runtime compatibility. There are a huge amount of unverifiable
14246         code that it accepts as verifiable. The strict mode verifies the code
14247         as the specs says.
14248         Non-strict mode will be required in cases where code needs to be
14249         accepted as verifiable but fails under strict mode.
14250
14251         * pedump.c: added support to fail fast and non-strict verification.
14252
14253         * verify.c: added support for both fail fast and non-strict verification.
14254
14255 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
14256
14257         * verify.c (is_correct_endfinally): added.
14258
14259         * verify.c (mono_method_verify): property verification of endfinally.
14260
14261 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14262
14263         * verify.c (in_any_block): check for filter clauses.
14264
14265         * verify.c (is_correct_rethrow): added.
14266
14267         * verify.c (mono_method_verify): property verification of rethrow.
14268
14269         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
14270
14271 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14272
14273         * verify.c (do_throw): added.
14274
14275         * verify.c (mono_method_verify): property verification of throw
14276
14277 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
14278
14279         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
14280         assemblies. Fixes #346425.
14281
14282 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
14283
14284         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
14285         FieldBuilders.
14286
14287         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
14288
14289         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
14290         prevent asserts when this is called with a token which might not be valid.
14291
14292         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
14293         lookup_dynamic_token_class with valid_token == FALSE.
14294
14295         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
14296
14297         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
14298
14299         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
14300         
14301 2007-12-10  Mark Probst  <mark.probst@gmail.com>
14302
14303         * gc.c: Don't delay threadpool thread finalization unless Mono is
14304         shutting down.
14305
14306 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14307
14308         * threads.c: turn an assert into a non-fatal warning.
14309
14310 2007-12-09  Robert Jordan  <robertj@gmx.net>
14311
14312         * icall.c (GetVirtualMethod): Add missing argument validation.
14313
14314 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14315
14316         * verify.c (do_cast): added.
14317
14318         * verify.c (mono_method_verify): property verification of castclass and isinst.
14319
14320
14321 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14322
14323         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
14324
14325         * verify.c (do_stelem): added.
14326
14327         * verify.c (mono_method_verify): property verification of stelem.X.
14328
14329 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14330
14331         * class.c, class-internals.h: Introduce an environment variable
14332         (MONO_GENERIC_SHARING) through which the extent of generic code
14333         sharing can be controlled (share all classes, share only corlib
14334         classes, or share nothing).
14335
14336         * object.c: Only create runtime generic context for classes for
14337         which sharing is enabled.
14338
14339 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14340
14341         * verify.c (do_ldelem): refactor it to work with ldelem.any.
14342
14343         * verify.c (mono_method_verify): property verification of ldelem.any.
14344
14345 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14346
14347         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
14348         added ldelem.X opcodes.
14349
14350         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
14351
14352         * verify.c: proper verification of ldelem.X 
14353
14354 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14355
14356         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
14357
14358 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
14359
14360         * verify.c (mono_method_verify): null literal requires special handling,
14361         the value pushed on stack need to be flagged as so.
14362
14363         * verify.c (do_ldelema): Verify ldelema properly.
14364
14365 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
14366
14367         * verify.c: Verify ldlen properly.
14368
14369 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
14370
14371         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
14372         to the target object's type. Fixes #346160.
14373
14374 2007-12-05  Dick Porter  <dick@ximian.com>
14375
14376         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
14377         Solaris needs the same workaround as BSD-derived systems.  Fixes
14378         bug 323524, patch by Burkhard Linke
14379         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
14380
14381 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
14382
14383         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
14384         handle to use when error dialog is shown; otherwise, update mask
14385         to show no error dialog when an error occurs.
14386
14387 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14388
14389         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
14390
14391         * class.c (mono_class_get_field_default_value): New helper function to initialize
14392         field->def_type and field->data.
14393
14394 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14395
14396         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
14397         the general one.
14398
14399         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
14400
14401         * marshal.c: Avoid depending on delegate->method_info being set.
14402
14403         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
14404         
14405         * object.c (mono_delegate_ctor): Set delegate->method.
14406
14407         * object-internals.h (struct _MonoDelegate): Add 'method' field.
14408
14409         * appdomain.c: Bump corlib version.
14410
14411 2007-11-27  Raja R Harinath  <harinath@gmail.com>
14412
14413         * metadata.c (mono_generic_inst_equal_full): Short-circuit
14414         equality check if we're comparing canonicalized MonoGenericInsts.
14415
14416 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14417
14418         * class.c (generic_array_methods): Call mono_class_setup_methods () before
14419         accessing class->methods.
14420
14421 2007-11-22  Dick Porter  <dick@ximian.com>
14422
14423         * threads.c: Ensure that the synch_cs is set before trying to use
14424         it.
14425
14426 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
14427
14428         * profiler.c: r89126 broke the statistial profiler, unbreak.
14429
14430 2007-11-22  Martin Baulig  <martin@ximian.com>
14431
14432         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
14433
14434         * mono-debug.c
14435         (mono_debug_debugger_version): Bump to 3.
14436         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
14437         -> mono_debugger_class_initialized().
14438
14439         * mono-debug-debugger.c
14440         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
14441
14442         * class.c
14443         (mono_debugger_start_class_init_func): Removed.
14444         (mono_debugger_class_loaded_methods_func): Added.
14445         (mono_class_setup_methods): Call it here.
14446
14447 2007-11-22  Martin Baulig  <martin@ximian.com>
14448
14449         * mono-debug.c
14450         (mono_debug_add_delegate_trampoline): New public method.
14451         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
14452
14453         * mono-debug.h
14454         (MonoSymbolTable): Added `global_data_table'.
14455         (MonoDebuggerTypeKind): Removed.
14456
14457 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
14458
14459         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
14460         these methods.
14461
14462         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
14463         
14464 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
14465
14466         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
14467
14468 2007-11-20  Martin Baulig  <martin@ximian.com>
14469
14470         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
14471
14472         * mono-debug-debugger.c
14473         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
14474         (mono_debugger_remove_breakpoint): Likewise.
14475         (mono_debugger_check_breakpoints): Likewise.
14476         (mono_debugger_register_class_init_callback): New public method.
14477         (mono_debugger_remove_class_init_callback): Likewise.
14478         (mono_debugger_add_type): Likewise.
14479
14480         * mono-debug-debugger.h
14481         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
14482
14483 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
14484
14485         * class.c: more interface implementations needed for the
14486         array enumerator (fixes bug #341112).
14487
14488 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
14489
14490         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
14491         fix ParamName of ArgumentNullExceptions.
14492
14493 2007-11-17  Miguel de Icaza  <miguel@novell.com>
14494
14495         * reflection.c (mono_reflection_encode_sighelper): Generate the
14496         modopts and modreqs.   I have a useless test that crashes monodis,
14497         but that shows the code working.
14498
14499 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14500
14501         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
14502         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
14503
14504 2007-11-15  Dick Porter  <dick@ximian.com>
14505
14506         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
14507         When joining a thread, it's the thread that's calling Join that
14508         gets WaitSleepJoin state not the target.  Fixes the standalone
14509         test case in bug 334740, and hopefully the whole bug too.
14510
14511 2007-11-15  Dick Porter  <dick@ximian.com>
14512
14513         * process.c: Read file version info from the files pointed at by
14514         process modules, not the current process.  Fixes bug 315969.
14515
14516         Use windows typedef names in some places to fix warnings on the
14517         windows build.
14518
14519 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14520
14521         * image.c, metadata-internals.h: Added a generic_class_cache hash
14522         to MonoImage for looking up generic classes when sharing generics.
14523
14524 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14525
14526         * sgen-gc.c: warning cleanups.
14527
14528 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
14529
14530         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
14531         inherited properties.
14532
14533 2007-11-14  Mark Probst  <mark.probst@gmail.com>
14534
14535         * object.c, class-internals.h: Added more information to the
14536         runtime generic context.
14537
14538 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14539
14540         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
14541         instead of just the target method. Generalize the abstract method handling to
14542         handle any non-static method.
14543
14544         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
14545         mono_marshal_get_delegate_invoke () signature change.
14546
14547 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14548
14549         * class.c, class-internals.h: Made
14550         mono_type_get_basic_type_from_generic () public.  Fixed member
14551         access check for shared generics.
14552
14553         * loader.c: Don't insert field into field cache if it's part of a
14554         non-inflated generic class.
14555
14556         * domain.c, domain-internals.h: The generic sharing context is now
14557         part of the jit info data structure.  Added two accessor
14558         functions.
14559
14560 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14561
14562         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
14563         the array Get/Set/Address methods, since the JIT inlines them.
14564
14565         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
14566
14567         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
14568         (mono_image_init): Initialize runtime_invoke_direct_cache.      
14569
14570         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
14571         mono_marshal_get_delegate_invoke signature change.
14572
14573         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
14574         an additional argument. Add support for invoking abstract methods.
14575
14576         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
14577
14578         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
14579
14580 2007-11-09  Mark Probst  <mark.probst@gmail.com>
14581
14582         * class.c: Do field layout for open generic classes as well.
14583
14584 2007-11-09  Mark Probst  <mark.probst@gmail.com>
14585
14586         * gc.c, gc-internal.h: Don't finalize threadpool threads with
14587         other objects, because the threadpool is still around.  Put them
14588         in a list instead and after finalizing all other objects in the
14589         root domain shut down the thread pool and then finalize the
14590         threads.  Fixes bug #337383.
14591
14592         * threads.c, thread-types.h: New mono_thread_create_internal()
14593         function for marking a thread with the threadpool flag before it
14594         started.  Set synch_cs to NULL after freeing it.
14595
14596         * threadpool.c: Mark threadpool threads before they start.
14597
14598 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14599
14600         * reflection.h, reflection.c: don't export random functions
14601         and lazy load dbnull and missing objects.
14602
14603 2007-11-07  Jonathan Chambers <joncham@gmail.com>
14604
14605         * class.c: Initialize COM types if COM interfaces
14606         are present (not just COM classes).
14607         
14608         Code is contributed under MIT/X11 license.
14609
14610 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14611         * reflection.c:
14612         create_dynamic_mono_image: hook module profiler events (dynamic case).
14613         mono_image_basic_init: hook assembly profiler events (dynamic case).
14614
14615 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14616         * profiler.c:
14617         simple_appdomain_unload: completely terminate the profiler
14618         instead of only processing the statistical samples.
14619         simple_shutdown: make sure this is really called exactly once,
14620         even in multithreaded applications, and always listen to
14621         appdomain events.
14622         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
14623         here, the "[un]load" functions will do it.
14624         Fixes bugs #333791 and #325261.
14625
14626 2007-11-07  Geoff Norton  <gnorton@novell.com>
14627
14628         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
14629         rather than depend on __APPLE__.
14630
14631 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14632
14633         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
14634
14635 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
14636
14637         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
14638         UTF16 MonoString. Fix the crash from bug #335488
14639
14640 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
14641
14642         * marshal.c: Correct (for non-Win32 OS) length != size in 
14643         mono_string_from_bstr. Fix #339530.
14644
14645 2007-11-06  Geoff Norton  <gnorton@novell.com>
14646
14647         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
14648         to succeed
14649
14650 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
14651
14652         * process.c: Added run-time GetProcessId API detection for Windows.
14653
14654 2007-11-04  Miguel de Icaza  <miguel@novell.com>
14655
14656         * reflection.c  (mono_param_get_objects): If a parameter has the
14657         attribute [System.Runtime.InteropServices.Optional] we should
14658         set the DefaultValue of the ParameterInfo to be
14659         System.Reflection.Missing instead of DBNull.
14660
14661         See bug #339013.
14662
14663         (mono_get_reflection_missing_object): New method,
14664         returns the System.Reflection.Missing.Value singleton instance.
14665
14666 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
14667
14668         * culture-info-table.h : regenerated.
14669
14670 2007-11-02  Jonathan Chambers <joncham@gmail.com>
14671
14672         * icall.c: Use GetEnvironmentStrings on windows
14673         so we are using the same environment block as 
14674         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
14675         #333740.
14676         
14677         Code is contributed under MIT/X11 license.
14678
14679 2007-10-31  Martin Baulig  <martin@ximian.com>
14680
14681         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
14682
14683         * mono-debug-debugger.h
14684         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
14685
14686 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
14687
14688         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
14689         classes.
14690
14691 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
14692
14693         * culture-info-table.h : regenerated.
14694
14695 2007-10-30  Robert Jordan  <robertj@gmx.net>
14696
14697         * icall-def.h, icall.c:
14698         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
14699
14700         Code is contributed under MIT/X11 license.
14701
14702 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
14703
14704         * class.c (mono_class_setup_vtable): Find the inflated methods in the
14705         inflated class instead of inflating them again.
14706         
14707         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
14708         dynamic case.
14709
14710         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
14711         Call setup_supertypes () after klass->parent is set.
14712         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
14713
14714         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
14715         for inflated instances of not yet created dynamic generic classes.
14716         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
14717         times from inflated_method.
14718         (methodbuilder_to_mono_method): Ditto.
14719
14720 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
14721
14722         * gc.c: code cleanup and removed old untested option of not creating the
14723         finalizer thread.
14724
14725 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
14726
14727         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
14728         creating a jump trampoline for dynamic methods.
14729
14730 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
14731
14732         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
14733         generic TypeBuilders when called from another method of the same type (bug #335131).
14734
14735
14736 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
14737
14738         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
14739         doesn't seem to work perfectly.
14740         
14741         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
14742         called multiple times.
14743         (methodbuilder_to_mono_method): Ditto.
14744         (resolve_object): Inflate FieldBuilder's.
14745
14746 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14747
14748         * string-icalls.c, string-icalls.h, appdomain.c: patch from
14749         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
14750         RemoveEmptyEntries in the string.Split implementation (bug #322375).
14751
14752 2007-10-26  Dick Porter  <dick@ximian.com>
14753
14754         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
14755         Thread initialisation changes
14756
14757 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
14758
14759         * verify.c: fix compatibility check between arrays and System.Array
14760
14761 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
14762
14763         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
14764         too. Fixes #336999.
14765
14766 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14767
14768         * object.c (mono_value_box): Use typed allocation here.
14769
14770 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14771
14772         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
14773         trampoline instead of compiling the method right away.
14774
14775         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
14776
14777 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
14778
14779         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
14780         related fields for dynamic classes. Fixes #334493.
14781
14782 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
14783
14784         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
14785         
14786         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
14787
14788         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
14789         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
14790
14791         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
14792
14793         * reflection.c (create_generic_typespec): Initialize klass->generic_container
14794         if needed.
14795         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
14796
14797 2007-10-18  Jonathan Chambers <joncham@gmail.com>
14798
14799         * marshal.c: Use correct key when removing item
14800         from ccw_hash.
14801         
14802         Code is contributed under MIT/X11 license.
14803
14804 2007-10-17  William Holmes  <billholmes54@gmail.com>
14805
14806         *marshal.c: Adding a case to marshal booleans to U1
14807
14808         Code is contributed under MIT/X11 license.
14809
14810 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
14811
14812         * class.c (mono_class_from_name): Search the modules compromising dynamic
14813         assemblies. Fixes #331601.
14814
14815 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
14816
14817         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
14818         exception if the type name contains an assembly component. Fixes #334203.
14819
14820         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
14821         modules inside dynamic assemblies. Fixes #334200.
14822         
14823         * reflection.c: Set image->public_key and image->public_key_length;
14824
14825         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
14826         fields.
14827
14828         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
14829         
14830 2007-10-16  Mark Probst  <mark.probst@gmail.com>
14831
14832         * metadata.c: Implemented correct comparing of generic classes.
14833         An inflated generic class can be equal to a non-inflated one if it
14834         is inflated with generic type variables as type arguments.  Fixes
14835         bug #333798.
14836
14837 2007-10-15  Dick Porter  <dick@ximian.com>
14838
14839         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
14840         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
14841         81646.
14842
14843         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
14844         instead of a monitor lock.  This means that monitor_try_enter and
14845         co can set the thread state safely.
14846         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
14847         thread_interrupt_requested, so interrupt actually works.
14848
14849         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
14850         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
14851         state accessor function
14852
14853 2007-10-15  Martin Baulig  <martin@ximian.com>
14854
14855         * mono-debug.h
14856         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
14857         the debugger with the current runtime.
14858
14859 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
14860
14861         * object.c, object-internals.h: added the ability to set a single
14862         trampoline for all the slots in a vtable.
14863
14864 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14865
14866         * marshal.c: deal with a possible race condition during multicast
14867         delegate invocation.
14868
14869 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14870
14871         * class.c: ensure value type methods don't have the synchronized
14872         flag set.
14873
14874 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14875
14876         * string-icalls.c, string-icalls.h: reverted unapproved patch that
14877         breaks the build.
14878
14879 2007-10-11  Joel Reed  <joelwreed@comcast.com>
14880
14881         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
14882         to take an options parameter so that empty entries can be removed during
14883         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
14884
14885 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14886
14887         * marshal.c: make sure we don't store the signature from a dynamic
14888         method into the runtime invoke cache (bug #327189).
14889
14890 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
14891
14892         * marshal.c: make sure the wrapper methods are properly initialized.
14893
14894 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14895
14896         * metadata.c, metadata-internals.h: Generalized
14897         mono_type_stack_size() to mono_type_stack_size_internal() which
14898         takes an additional argument specifying whether it allows open
14899         types.
14900
14901 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
14902
14903         * verify.c (do_invoke_method): handle typedbyref params
14904         correctly and check for unverifiable return values.
14905
14906         * verify.c (do_newobj): fix a warning.
14907
14908 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
14909
14910         * verify.c: don't tread typedbyref as allways unverifable,
14911         so uses, like (ld/st)loc.0 are valid. verify for the cases
14912         that it matters, like boxing related operations.
14913
14914 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
14915
14916         * verify.c: add verification of the newobj opcode. verification
14917         of delegate instantation still missing due ldftn and virldftn not
14918         pushing the function type on stack
14919
14920 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14921
14922         * class-internals.h: Runtime generic context data structure
14923         definition.
14924
14925         * object.c: Initialization of runtime generic context at runtime
14926         vtable creation time.
14927
14928 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
14929         * class.c (mono_class_create_from_typedef,
14930         mono_class_from_generic_parameter, mono_ptr_class_get,
14931         mono_fnptr_class_get, mono_bounded_array_class_get)
14932         * domain.c (mono_domain_create, mono_domain_free)
14933         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
14934         * image.c (do_mono_image_load, mono_image_close):
14935         Hooked up load-unload profiler events.
14936
14937 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14938
14939         * domain.c: track statistics about the actual amount of native code
14940         allocated.
14941
14942 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14943
14944         * class.c: the valuetype enumerators don't have the additional
14945         supertypes interfaces.
14946
14947 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
14948
14949         * class.c: need more interfaces setup for the IEnumerator<T>
14950         object created for arrays (tests/ienumerator-interfaces.2.cs).
14951
14952 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
14953
14954         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
14955
14956 2007-10-05  Alp Toker  <alp@atoker.com>
14957
14958         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
14959         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
14960         #315863.
14961
14962 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
14963
14964         * verify.c (verify_type_compatibility_full): verification of
14965         compatibility improved, validates correctly non-strict checks between
14966         native int and I4 types different than (unsigned)int32.
14967
14968         * verify.c (do_store_indirect): added, do all verification of
14969         ldind.X opcodes. 
14970
14971         * verify.c (get_load_indirect_mono_type): renamed to
14972         get_indirect_op_mono_type, as it now returns the MonoType for 
14973         ldind.X and stind.X opcodes.
14974
14975 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
14976
14977         * reflection.c: Fix the encoding of generic type definition for
14978         TypeBuilders.
14979
14980         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
14981         mono_image_typedef_or_ref but allows to specify if typespec lookups should
14982         be made. Typespec check is done prior to typeref cache lookup.
14983
14984         * reflection.c (mono_image_typedef_or_ref): now just delegate to
14985         mono_image_typedef_or_ref_full.
14986
14987         * reflection.c (encode_generic_class): encode the generic class
14988         directly instead of calling encode_type.
14989
14990         * reflection.c (encode_type): encode the generic type definition
14991         MonoClass as a generic instantiation.
14992
14993         * reflection.c (create_typespec): cache typespec tokens in
14994         the assembly->typespec cache. Don't create typespec for a generic
14995         instance MonoClass. Create typespec for the generic type defintion.
14996
14997         * reflection.c (create_generic_typespec): encode the generic
14998         class directly instead of calling encode_type.
14999
15000         * reflection.c (mono_image_create_token): encode the generic
15001         type definition not using a typespec for MonoType instances.
15002
15003
15004 2007-10-04  Raja R Harinath  <rharinath@novell.com>
15005
15006         Fix #328812
15007         * class.c (mono_image_init_name_cache): Don't return nested
15008         'protected internal' classes.
15009         (mono_class_from_name_case): Likewise.
15010
15011 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
15012
15013         * icall-def.h, icall.c : get_bundled_machine_config() is now the
15014           common function used by both DefaultConfig in System.dll and
15015           InternalConfigurationHost in System.Configuration.dll.
15016
15017 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15018
15019         * class.c: automatically add to vectors only a few essential explicit
15020         generic interfaces. The rest of the interfaces that arrays should
15021         provide are currently implicitly added (but still not lazily, see the
15022         design in the discussion of bug#325495 for the details of what is
15023         needed for that). Additionally, implicit interfaces are assigned the
15024         same vtable slot as the explicit interfaces (as they are compatible):
15025         this enables huge memory savings since we don't need to instantiate
15026         as many memthods and as large vtables anymore. Also, Since
15027         GetEnumerator<T> returns an instance of a type that is required to
15028         support a similarly large set of interfaces as arrays, we add
15029         implicit interfaces and interface offset sharing support to those
15030         types, too. This change adds all the required interfaces so that
15031         the anonarray.cs test case in the bug report works (we don't add
15032         all the interfaces to arrays of arrays 3-level deep and more because
15033         of the memory requirements explained in the bug and since they are much
15034         less common: the lazy-loading support will enabled them to work, too).
15035
15036 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
15037
15038         * verify.c (merge_stacks): major clean up, all type compatibility
15039         checks are done by verify_type_compatibility. This fix my earlier lack
15040         of understanding of the CLR type system and merge_stacks no longer looks
15041         scary.
15042
15043         * verify.c: fixed some bad spelling.
15044
15045 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
15046
15047         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
15048         a given stack slock.
15049         
15050         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
15051         verify_type_compatibility_full. This removed a near indentical function and fixed
15052         handling of Int32 and IntPtr across all opcodes.
15053
15054 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15055
15056         * class.c: only vectors have the additional generic interfaces.
15057
15058 2007-10-01  Jonathan Chambers <joncham@gmail.com>
15059
15060         * mono-config.c: Use g_strcasecmp instead of
15061         strcasecmp like everywhere else to fix
15062         compilation with MSVC.
15063         
15064         Code is contributed under MIT/X11 license.
15065
15066 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15067
15068         * object.c, object-internals.h: refactored the IMT code to enable
15069         building a single slot at a time and lazily creating the IMT trampolines
15070         and thunks.
15071
15072 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
15073
15074         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
15075
15076         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
15077         Fixes #328501.
15078         
15079 2007-09-29  Raja R Harinath  <harinath@gmail.com>
15080
15081         * loader.c (method_from_methodspec): Rearrange to avoid
15082         un-necessary exposition.  Don't assert out if the method's
15083         declaring type is a generic type definition.
15084
15085 2007-09-28  Martin Baulig  <martin@ximian.com>
15086
15087         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
15088
15089 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15090
15091         * class-internals.h: optimize field layout of MonoClass to
15092         requires less cachelines at runtime and save a few bytes on 64 bit
15093         systems.
15094
15095 2007-09-28  Jb Evain  <jbevain@novell.com>
15096
15097         * reflection.c: when encoding type names in custom attributes,
15098         if the type is a closed generic type, its generic arguments
15099         have to be serialized as AssemblyQualifiedName, so that when
15100         they are deserialized, it's possible to re-create them properly.
15101         Fixes #329450.
15102
15103
15104 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
15105
15106         * object.c, class-internals.h: added delegate-creation counter.
15107
15108 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15109
15110         * class.c: cleanup of the code that synthetizes interfaces for
15111         arrays in 2.0: saves quit a bit of corlib mempool memory.
15112         Code to fix bug #325495 ifdeffed out for now until the issues
15113         with memory usage and O(n^2) behaviour are fixed.
15114
15115 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
15116
15117         * marshal.c: when possible, do not duplicate the name of the methods
15118         in the method builder and in the generated MonoMethod.
15119
15120 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
15121         * verify.c: added support for type checking ldind_* opcodes.
15122
15123 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
15124
15125         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
15126         which is used to distinguish the fully open instantiation of a TypeBuilder
15127         with the rest. This temporary hack is required to restore the property that
15128         the fully open instantiation is the same type of the generic type definition.
15129
15130         * class-internals.h (mono_generic_class_is_generic_type_definition):
15131         new function as part of the internal API.
15132
15133         * class.c (inflate_generic_type): return NULL when the generic inst is
15134         fully open. The fully open generic type is now the same as the generic type
15135         definition for non TypeBuilder types.
15136
15137         * class.c (mono_generic_class_get_class): removed assert since it is
15138         no longer valid, gklass->cached_class can point to the generic type definition.
15139
15140         * class.c (mono_generic_class_is_generic_type_definition): new.
15141
15142         * metadata.c (mono_generic_class_hash): added is_tb_open field
15143         to the hash calculation.
15144
15145         * metadata.c (free_generic_class): if the generic class is associated
15146         with the generic type definition, its field will come from the mempool and
15147         must not be freed.
15148
15149         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
15150         new, this function identifies the corner case of a TypeBuilder fully open
15151         instantiation.
15152
15153         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
15154         for lookup. Set gclass->cached_class to be the container class in case of
15155         the fully open instantiation of non TypeBuilder types.
15156
15157         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
15158         to compare generic classes.
15159
15160         * reflection.c (method_encode_methodspec): remove assert that
15161         no longer is valid.
15162
15163         * reflection.c (mono_reflection_generic_class_initialize): add
15164         an aditional assert to ensure the proper type is used.
15165
15166 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
15167
15168         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
15169         to enjoy it.
15170
15171 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
15172
15173         * verify.c (push_arg): Fixed support for ldarga
15174         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
15175         MonoType used as first arg in case of instance calls.
15176
15177 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
15178
15179         * verify.c: Support for verifying VAR and MVAR types, 
15180
15181 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
15182
15183         * icall.c (ves_icall_get_property_info): Set the reflected type of the
15184         accessors correctly.
15185
15186 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15187
15188         * threads.c: support OSX and other systems in
15189         mono_thread_get_stack_bounds (bug #328026).
15190
15191 2007-09-25  Martin Baulig  <martin@ximian.com>
15192
15193         * mono-debug.h
15194         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
15195
15196 2007-09-24  Martin Baulig  <martin@ximian.com>
15197
15198         * mono-debug.h
15199         (MonoDebugClassEntry): Moved the definition of this struct into
15200         mono-debug.c to make it private.
15201
15202         * mono-debug.c
15203         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
15204         type table per symbol file, we don't need to store the symfile id
15205         any longer.
15206
15207 2007-09-24  Martin Baulig  <martin@ximian.com>
15208
15209         Create one type table per symbol file, since a `MonoClass *' gets
15210         invalid when its image is unloaded.
15211
15212         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
15213         (MonoDebugHandle): Added `type_table'.
15214
15215 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15216
15217         * mempool.c, mempool.h: added mono_mempool_new_size () API
15218         to be able to specify a smaller initial size for the pool.
15219         Adjusted the code to slowly increase pool size before using
15220         the previous default size.
15221         * image.c: use a small initial size for image mempools.
15222
15223 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
15224
15225         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
15226         Fixes ##320990.
15227
15228         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
15229         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
15230
15231 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
15232
15233         * metadata.c (mono_type_create_from_typespec): Remove an invalid
15234         free. Fixes #327438.
15235
15236 2007-09-21  Raja R Harinath  <harinath@gmail.com>
15237
15238         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
15239         generic instantiations, etc.
15240         <MONO_TYPE_ARRAY>: Likewise.
15241
15242 2007-09-21  Martin Baulig  <martin@ximian.com>
15243
15244         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
15245         these structs were never defined.
15246         (MonoDebugHandle): Removed the `_priv' field, it was never used.
15247
15248 2007-09-21  Martin Baulig  <martin@ximian.com>
15249
15250         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
15251
15252 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
15253
15254         * image.c: removed the guid hash tables: we can get the same info
15255         without the additional memory usage hit (partially fixes also bug #327052).
15256
15257 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15258
15259         * profiler.h, profiler-private.h, profiler.c: add a new profiler
15260         event to handle unloading methods. After the event is called, the
15261         corresponding MonoMethod* must be considered invalid.
15262         * loader.c (mono_free_method): call the new mono_profiler_method_free
15263         event.
15264
15265 2007-09-20  Mark Probst  <mark.probst@gmail.com>
15266
15267         * domain-internals.h: New flag in MonoJitInfo which marks shared
15268         generic methods.  New hash table (shared_generics_hash) in
15269         MonoDomain to keep track of shared generic methods.  Prototypes
15270         for functions to register and lookup shared generic methods.
15271
15272         * domain.c: Support for registering and looking up shared generic
15273         methods via a hash table (shared_generics_hash) in MonoDomain.
15274
15275         * class-internals.h: New exception to signal failure of shared
15276         compilation of a generic method.  New counters for generics
15277         sharing in MonoStats.
15278
15279 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15280
15281         * image.c, metadata-internals.h: don't keep a file descriptor open
15282         for loaded assemblies (bug#325988).
15283
15284 2007-09-19  Raja R Harinath  <rharinath@novell.com>
15285
15286         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
15287         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
15288         use the corresponding datatypes.
15289         (type_in_image): Update to changes.
15290         (CleanForImageUserData): Simplify.
15291         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
15292         Avoid quadratic behaviour in handling the "stolen" list by
15293         separating the filter predicate out, and by prepending the stolen
15294         items rather than appending them.
15295         (steal_ginst_in_image): Likewise.
15296         (mono_metadata_clean_for_image): Update to changes.
15297
15298 2007-09-19  Martin Baulig  <martin@ximian.com>
15299
15300         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
15301
15302 2007-09-19  Martin Baulig  <martin@ximian.com>
15303
15304         * mono-debug.c (mono_debug_cleanup): Don't call
15305         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
15306
15307 2007-09-19  Raja R Harinath  <harinath@gmail.com>
15308
15309         Fix crash on 'make run-test' in mcs/errors
15310         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
15311         Avoid more potential allocations in mono_class_from_mono_type.
15312         (ginst_in_image): Update to changes.
15313         (gclass_in_image): Rearrange slightly.
15314
15315 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15316
15317         * class.c (mono_class_init): Move the code that sets up class->methods to 
15318         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
15319
15320         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
15321         canonical instance of an inflated generic signature.
15322         (mono_type_create_from_typespec): Remove an invalid free.
15323
15324         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
15325
15326 2007-09-18  Marek Habersack  <mhabersack@novell.com>
15327
15328         * domain-internals.h: added a declaration of the
15329         mono_assembly_load_full_nosearch internal function.
15330
15331         * assembly.c (mono_assembly_load_with_partial_name): use
15332         mono_try_assembly_resolve return value properly.
15333         (mono_assembly_load_full_nosearch): copied the function body from
15334         mono_assembly_load_full, without the code to invoke assembly
15335         search hooks.
15336         (mono_assembly_load_full): calls the above new function and if the
15337         assembly is not resolved, invokes the search hooks.
15338
15339         * appdomain.c (mono_runtime_init): restore the global postload
15340         assembly search handlers.
15341
15342 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15343
15344         * class.c (mono_class_init): Make sure class->methods and class->properties
15345         are never NULL in the generics case.
15346
15347         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
15348
15349 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
15350
15351         * metadata.c (free_generic_class): Disable some code to fix the build.
15352
15353         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
15354
15355         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
15356         from the image mempool.
15357
15358         * metadata.c (free_generic_class): Free more data from the inflated class.
15359
15360         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
15361
15362         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
15363         mempool.
15364         (mono_type_create_from_typespec): Ditto.
15365
15366         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
15367         MonoImage to the caller.
15368         (mono_init_internal): Save the opened image in a global variable.
15369         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
15370
15371         * reflection.c (resolve_object): Fix a leak.
15372
15373         * metadata.c: Fix the freeing of data in the generics caches.
15374         
15375         * metadata.c (free_generic_inst): Comment this out to fix the build.
15376         (free_generic_class): Ditto.
15377
15378         * metadata.c: Free cached generic methods, instantinations and classes when
15379         they are removed from the caches.
15380         (mono_metadata_free_type): Free the type itself.
15381
15382         * class.c: Free the result of mono_class_inflate_generic_type () in a few
15383         places.
15384
15385 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
15386
15387         * boehm-gc.c: restrict managed allocs to __thread supporting
15388         architectures.
15389
15390 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
15391
15392         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
15393         (mono_generic_class_get_class): Fix a leak.
15394
15395         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
15396         mono_metadata_free_type ().
15397         (mono_metadata_inflate_generic_inst): Fix a leak.
15398
15399 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15400
15401         * mono-debug.c (free_header_data): Fix a leak missed earlier.
15402
15403         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
15404         mempool.
15405
15406         * mono-debug.c (mono_debug_close_image): Fix call to 
15407         g_hash_table_remove ().
15408
15409 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
15410
15411         * icall-def.h: redirect all the string ctor to the managed
15412         CreateString () methods.
15413         * string-icalls.c, string-icalls.h: removed dead code for string
15414         ctors and icalls.
15415
15416 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15417
15418         * mono-debug.c: Fix memory leaks.
15419
15420 2007-09-14  Jonathan Chambers <joncham@gmail.com>
15421
15422         * threads-types.h: Implement mono_hazard_pointer_set and 
15423         mono_hazard_pointer_clear macros using do/while(0) to fix
15424         compilation with MSVC.
15425         
15426         Code is contributed under MIT/X11 license.
15427
15428 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15429
15430         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
15431         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
15432
15433 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15434
15435         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
15436         icalls.
15437
15438 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15439
15440         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
15441         managed-code allocated as well.
15442
15443 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15444
15445         * class.c (mono_class_is_assignable_from): Add support for generic variance.
15446
15447 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
15448
15449         * boehm-gc.c: fixed the build after the AOT changes.
15450
15451 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15452
15453         * wrapper-types.h: Add an ALLOC wrapper type.
15454
15455         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
15456         reference managed allocator methods.
15457
15458 2007-09-12  Marek Safar  <marek.safar@gmail.com>
15459
15460         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
15461         of Type array and not MonoType, a fix suggested by Hari.
15462         
15463 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15464
15465         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
15466         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
15467         
15468         Code is contributed under MIT/X11 license.
15469
15470 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15471
15472         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
15473
15474 2007-09-12  Marek Habersack  <mhabersack@novell.com>
15475
15476         * image.c (do_mono_image_open): if assembly file fails to open and
15477         MONO_IOMAP is in effect, try to find the path in a
15478         case-insensitive way.
15479
15480         * appdomain.c (mono_runtime_init): do not install postload hooks -
15481         tests show that MS.NET doesn't use anything of that sort to
15482         trigger the AppDomain.AssemblyResolve event.
15483         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
15484         made non-static.
15485         (mono_runtime_init): init portability helpers here.
15486
15487         * assembly.c (mono_assembly_load_with_partial_name): if other   
15488         attempts fail, trigger the AppDomain.AssemblyResolve event handler
15489         to resolve the assembly.
15490
15491         * domain-internals.h: added mono_try_assembly_resolve and marked
15492         it as internal.
15493
15494 2007-09-11  Jb Evain  <jbevain@novell.com>
15495
15496         * object-internals.h (MonoReflectionDynamicMethod): add
15497         a `MonoReflectionType *owner` field. The owner is used
15498         * reflection.c:
15499         (mono_reflection_create_dynamic_method): use the owner of the dynamic
15500         method as the class declaring the dynamic method.
15501         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
15502         dynamic method to the declaring type of the methodbuilder.
15503
15504 2007-09-11  Mark Probst  <mark.probst@gmail.com>
15505
15506         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
15507         rules for calling methods via reflection.
15508
15509 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
15510
15511         * reflection.c (resolve_object): Add support for MonoGenericClass. 
15512         Inflate MonoType's.
15513
15514 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15515
15516         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
15517         provide a managed method that does fast allocations without needing
15518         a managed->unmanaged transition. Boehm GC implementation currently
15519         enabled for ptrfree objects on sane architectures.
15520
15521 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
15522
15523         * marshal.c, marshal.h: exported a couple of useful functions and
15524         added mono_mb_get_label () to easily handle backward branches.
15525
15526 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
15527
15528         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
15529
15530 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15531
15532         * loader.c (find_method): Fixed the regression introduced while
15533         fixing bug #81466.
15534
15535 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
15536
15537         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
15538         well.
15539         
15540         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
15541         icall.c reflection.c: Pass a MonoGenericContext argument to 
15542         mono_lookup_dynamic_token ().
15543
15544         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
15545         #82744.
15546         
15547 2007-09-09  Robert Jordan  <robertj@gmx.net>
15548
15549         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
15550         for generic methods.
15551
15552         * object.c (mono_object_get_virtual_method): Handle generic methods.
15553         Fixes bug #78882.
15554
15555         Code is contributed under MIT/X11 license.
15556
15557 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
15558
15559         * image.c: fix locking in mono_image_load_file_for_image ().
15560
15561 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
15562
15563         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
15564         used only as a cache: added an icall to fill it.
15565
15566 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
15567
15568         * reflection.h: exposed mono_reflection_free_type_info
15569         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
15570         since mono_reflection_bind_generic_parameters makes a copy of it.
15571         * reflection.c (free_type_info): subinfos should be freed.
15572         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
15573         made non static.
15574         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
15575         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
15576         this fixes #82695 and #81726.
15577    
15578
15579 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
15580
15581         * process.h, process.c:  added support for user profile/info in
15582           ProcessStartInfo. For now only Windows works.
15583
15584 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15585
15586         * metadata.c: consider the generic arguments when comparing
15587         signatures (bug #82614).
15588
15589 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15590
15591         * cil-coff.h, image.c: updated assembly loader to cope with the
15592         PE32+ 64 bit file format.
15593
15594 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15595
15596         * assembly.c, class.c, domain.c, loader.c: remove useless
15597         inclusion of cil-coff.h.
15598
15599 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
15600
15601         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
15602         if interface is marked with CoClassAttribute. 
15603    
15604         Code is contributed under MIT/X11 license.
15605
15606 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
15607
15608         * sgen-gc.c: ensure no object from the to space is copied again or finalized
15609         if it's seen twice in major collections.
15610
15611 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
15612
15613         * sgen-gc.c: big objects are not copied to the gray area, but they
15614         need to be considered for scanning, too, if they are brought alive
15615         by an object ready for finalizations or a survived one.
15616
15617 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15618
15619         * sgen-gc.c: properly account the number of disappearing links when
15620         they are nullified.
15621
15622 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
15623
15624         * sgen-gc.c: share the code to scan the registered roots between the
15625         different types of collections.
15626
15627 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15628
15629         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
15630
15631 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15632
15633         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
15634         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
15635
15636 2007-08-28  Mark Probst  <mark.probst@gmail.com>
15637
15638         * security-manager.c (mono_security_manager_get_methods):
15639         LinkDemandSecurityException now has 2 arguments instead of 3.
15640
15641 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
15642
15643         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
15644         platforms which need it.
15645
15646 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15647
15648         * sgen-gc.c: unregister thread data structures with a pthread_key_t
15649         dtor.
15650
15651 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
15652
15653         * threads.c: free the thread static data on thread exit.
15654
15655 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
15656
15657         * class.c: walk the hierarchy to find the generic definition for
15658         a class (fixes runtime part of bug #82498).
15659
15660 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
15661
15662         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
15663         ...
15664
15665         * image.c (mono_image_close): Here. Hopefully fixes #82510.
15666
15667 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15668
15669         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
15670
15671 2007-08-24  Robert Jordan  <robertj@gmx.net>
15672
15673         * appdomain.c: don't perform the ':'->';' substitution on Win32.
15674
15675 2007-08-24  Jb Evain  <jbevain@novell.com>
15676
15677         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
15678         for byref types.
15679
15680 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15681
15682         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
15683         #82286.
15684
15685 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
15686
15687         * assembly.c: Fix a warning.
15688         
15689 2007-08-23  Marek Habersack  <mhabersack@novell.com>
15690
15691         * appdomain.c: parse the <runtime> section looking for the probing
15692         element with the 'privatePath' attribute, which sets additional
15693         directories in which the runtime should look for assemblies.
15694
15695 2007-08-23  Robert Jordan  <robertj@gmx.net>
15696
15697         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
15698         Fixes #82499.
15699
15700 2007-08-23  Martin Baulig  <martin@ximian.com>
15701
15702         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
15703         _mono_debug_init_corlib() and remove it from the header file.
15704
15705 2007-08-23  Martin Baulig  <martin@ximian.com>
15706
15707         * mono-debug-debugger.c
15708         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
15709         don't notify the debugger about it.
15710
15711         * mono-debug-debugger.h
15712         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
15713
15714 2007-08-23  Robert Jordan  <robertj@gmx.net>
15715
15716         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
15717         Code is contributed under MIT/X11 license.
15718
15719 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15720
15721         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
15722
15723 2007-08-22  Martin Baulig  <martin@ximian.com>
15724
15725         * mono-debug.c: Store debugging info on a per-domain basis and
15726         free it on domain unload.  Add support for unloading symbol files.
15727
15728         * mono-debug.h
15729         (MonoDebugList): New typedef.
15730         (MonoSymbolTable):
15731         - add `data_tables and `type_table'.
15732         - replace 'symbol_files' and `num_symbol_files' with a
15733           `MonoDebugList *'.
15734         (mono_debug_data_table): Removed.
15735         (mono_debug_list_add): New public function.
15736         (mono_debug_list_remove): New public function.
15737         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
15738         (mono_debug_init_2_memory): Renamed into
15739         mono_debug_open_image_from_memory().
15740         (mono_debug_close_image): New public function.
15741         (mono_debug_domain_create): Likewise.
15742         (mono_debug_domain_unload): Likewise.
15743         (MONO_DEBUGGER_VERSION): Bump to 60.
15744
15745         * mono-debug-debugger.h
15746         (MonoDebuggerEvent):
15747         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
15748         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
15749         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
15750         - rename `THREAD_CREATED' and `THREAD_EXITED' into
15751           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
15752         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
15753           meaning.
15754         (mono_debugger_add_symbol_file): Removed.
15755         (mono_debugger_add_type): Removed.
15756         (mono_debugger_lookup_type): Removed.
15757         (mono_debugger_lookup_assembly): Removed.
15758
15759         * domain.c
15760         (mono_domain_create): Call mono_debug_domain_create().
15761         (mono_init_internal): Call mono_debug_init_corlib().
15762
15763         * assembly.c
15764         (mono_assembly_close): Call mono_debug_close_image().
15765
15766 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15767
15768         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
15769         mmap call.
15770
15771 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
15772
15773         * sgen-gc.c: ensure section->pin_queue_end is initialized
15774         correctly when non pinning objects in the section have been found.
15775
15776 2007-08-22  Marek Habersack  <mhabersack@novell.com>
15777
15778         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
15779         containing a list of directories separated by ':'. MSDN docs say
15780         the directories should be separated with ';'. Part of a bugfix for
15781         bug #81446
15782
15783 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
15784
15785         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
15786         it should MonoType and not MonoClass.
15787
15788 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
15789
15790         * culture-info-table.h : regenerated.
15791
15792 2007-08-20  William Holmes  <billholmes54@gmail.com>
15793
15794         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
15795          to call ReplaceFile Kernel32 on windows or in io-layer.
15796         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
15797         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
15798          as an internal call.
15799
15800         Code is contributed under MIT/X11 license.
15801
15802 2007-08-20  Jb Evain  <jbevain@novell.com>
15803
15804         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
15805         and MONO_EXCEPTION_FIELD_ACCESS.
15806
15807         * debug-helpers.[c|h]: new mono_field_full_name function.
15808
15809 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15810
15811         * class.c: Removed class_security_level() and moved it to
15812         security-core-clr.c.
15813
15814         * security-core-clr.c, security-core-clr.h: class_security_level()
15815         is now public and renamed to mono_security_core_clr_class_level().
15816         It also looks for security attributes in the classes a class is
15817         nested in.
15818
15819 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15820
15821         * security-core-clr.c, security-core-clr.h: CoreCLR security
15822         utility functions.
15823
15824         * Makefile.am: Added security-core-clr.[ch].
15825
15826         * security-manager.c, security-manager.h: Functions and enum for
15827         setting and getting the security mode.
15828
15829         * class.c: CoreCLR security checks.
15830
15831 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15832
15833         * icall-def.h, process.c, process.h: implemented icall to get
15834         user/system processor times.
15835
15836 2007-08-17  Mark Probst  <mark.probst@gmail.com>
15837
15838         * domain.c, threads.c, class-internals.h, domain-internals.h: New
15839         reader-lock-free jit_info_table.
15840
15841 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
15842
15843         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
15844
15845         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
15846
15847         * object-internals.h (MonoException): Add missing _data member.
15848
15849 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
15850
15851         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
15852         checking that only methods with matching qname or fqname are picked
15853         from implemented interfaces.
15854
15855 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
15856
15857         * verify.c (do_newarr):added, do type verification of
15858         newarr ops, push the right value on the eval stack.
15859         * verify.c (mono_method_verify): use do_newarr
15860
15861
15862 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
15863
15864         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
15865         factored the common code into get_boxable_mono_type, which
15866         is now using mono_type_get_full, this fixed byref related tests.
15867
15868 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
15869
15870         * class.c: added mono_type_get_full, this function has the same
15871         behavior of mono_class_get_full but the returned MonoType has
15872         all metadata of the associated token in case of a typespec token.
15873         * class.c: added mono_type_retrieve_from_typespec, used by 
15874         mono_type_get_full to retrieve the token type.
15875         * class.c (mono_class_create_from_typespec): changed to use
15876         mono_type_retrieve_from_typespec.
15877         * class.c (mono_ldtoken): changed to use mono_type_get_full
15878         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
15879         * class-internals.h: exported mono_type_get_full for internal use.
15880
15881 2007-08-16  Jb Evain  <jbevain@novell.com>
15882
15883         * domain.c (supported_runtimes): add entry for
15884         the 'moonlight' runtime version.
15885
15886 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15887
15888         * verify.c (mono_method_verify): small typo sliped in.  
15889
15890 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15891
15892         * verify.c (do_unbox_value): added, do type verification of
15893         unboxing ops
15894         * verify.c (mono_method_verify): use do_unbox_value
15895
15896
15897 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15898
15899         * verify.c (dump_stack_value): fixed typo, was printing string
15900         instead of object on stack.
15901         * verify.c (do_box_value): moved the byref check up as it leads
15902         to invalid code and should be done earlier.
15903         * verify.c: improved error messages for and ldobj
15904
15905 2007-08-15  William Holmes  <billholmes54@gmail.com>
15906
15907         * marshal.c (emit_marshal_custom): Omit the call to 
15908           marshal_native_to_managed when calling native to managed 
15909           and the argument is specified as an out argument.
15910
15911         Code is contributed under MIT/X11 license.
15912
15913 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15914
15915         * verify.c: fixed the type checks for generics, function pointers and vectors.
15916         Added type verification for ldobj and ldtoken. The verifier
15917         would segfault if header or signature of a method contained references
15918         to non-existant types.
15919
15920 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
15921
15922         * marshal.c (cominterop_get_ccw): Patch from
15923         Bill Holmes to no walk up interface hierarchy. 
15924         All parent methods should be present in the interface for COM.
15925    
15926         Code is contributed under MIT/X11 license.
15927
15928 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
15929
15930         * marshal.c (emit_marshal_com_interface): Patch from
15931         Bill Holmes to handle COM Interfaces as return values
15932         for native->managed calls.
15933    
15934         Code is contributed under MIT/X11 license.
15935
15936 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
15937
15938         * marshal.c (cominterop_get_idispatch_for_object): Implement
15939         for runtime callable wrappers.
15940    
15941         Code is contributed under MIT/X11 license.
15942
15943 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
15944
15945         * pedump.c (main): changed from mono_init to mono_init_from_assembly
15946         so 2.0 types are accessible
15947
15948
15949 2007-08-13  Miguel de Icaza  <miguel@novell.com>
15950
15951         * domain.c (mono_init_internal): Call mono_assembly_load_friends
15952         once we load mscorlib.   Due to the order in which we initialize,
15953         the mono_assembly_load_full routine that loads mscorlib did not
15954         load friends.   We now load it once we load the
15955         mono_defaults.internals_visible_class class. 
15956
15957         * assembly.c: Expose the mono_load_friend_assemblies method.
15958
15959 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
15960
15961         * verify.c: improved the handling of boxing, better
15962         type checking for unary ops and conversion. Fix bug
15963         regarding managed pointer compatibility checking
15964
15965 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
15966
15967         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
15968
15969         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
15970
15971 2007-08-09  Raja R Harinath  <rharinath@novell.com>
15972
15973         * reflection.c (dup_type): Remove.
15974         * class.c (dup_type): Remove.
15975         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
15976         instead of the dodgy 'dup_type'.
15977         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
15978         handle the case where 'dup_type' needed the second argument.
15979
15980 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
15981
15982         * domain.c: Fix a warning.
15983
15984 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
15985
15986         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
15987         checking that methods with the same fqname are not overridden
15988         with a method from an ancestor.
15989
15990 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
15991
15992         * threads.c (free_thread_static_data_helper): Avoid a crash if
15993         thread->static_data is not yet set.
15994
15995 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
15996
15997         * marshal.c: Use correct image when emitting
15998         native wrapper for COM calls.
15999    
16000         Code is contributed under MIT/X11 license.
16001
16002 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
16003
16004         * icall-def.h, security.c, security.h :
16005           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
16006
16007 2007-08-07  Martin Baulig  <martin@ximian.com>
16008
16009         * mono-debug-debugger.h
16010         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
16011
16012         * domain.c (mono_domain_free): Call
16013         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
16014
16015 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
16016
16017         * verify.c (check_underflow, check_overflow): error message now returns IL offset
16018         * verify.c (in_same_block): code should test if either offset is inside the clauses
16019         * verify.c (mono_method_verify): push the exception into the eval stack of exception
16020         and filter blocks
16021
16022 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
16023
16024         * image.c (mono_image_close): Fix a leak.
16025
16026         * object.c (mono_runtime_invoke_array): Avoid using alloca.
16027
16028         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
16029
16030 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
16031
16032         * domain.c, threads.c, threads-types.h: fix memory retention issue
16033         with thread static variables not being cleared on domain unload.
16034         Reuse thread static slots after domain unload.
16035
16036 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
16037
16038         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
16039         nullable type.
16040
16041         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
16042         now done in mono_runtime_invoke_array.
16043
16044         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
16045         receiver is a nullable type.
16046
16047         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
16048         generic parameter.
16049
16050 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
16051
16052         * marshal.c: Implement COM Objects as return type for 
16053         managed->unmanaged calls. Added Release calls for COM Object
16054         out/return values in managed->unmanaged calls.
16055
16056         Code is contributed under MIT/X11 license.
16057
16058 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
16059
16060         * threads.h, threads-type.h: move the hazard pointer declarations
16061         to the private header.
16062
16063 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
16064
16065         * file-io.c, appdomain.c: memory leak fixes.
16066
16067 2007-08-02  Dick Porter  <dick@ximian.com>
16068
16069         * socket-io.c
16070         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
16071         SO_REUSEADDR setting into io-layer/sockets.c.
16072
16073 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
16074
16075         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
16076         from Object when called on a generic parameter. Fixes #82211.
16077
16078 2007-08-01  Dick Porter  <dick@ximian.com>
16079
16080         * file-io.c (convert_share): Test FileShare values bit-by-bit.
16081         Fixes bug 79250 yet again.
16082
16083 2007-07-30  Martin Baulig  <martin@ximian.com>
16084
16085         Merged the `debugger-dublin' branch.
16086
16087         * mono-debug.h
16088         (MonoDebugDataTable): New typedef.
16089         (MonoDebugMethodAddressList): New typedef.
16090         (MonoDebugWrapperData): Removed.
16091         (MonoDebugSymbolTable): Removed `current_data_table',
16092         `current_data_table_size', `current_data_table_offset'.
16093         (MonoDebugDataItemType): Moved into mono-debug.c.
16094         (MonoDebugMethodJitInfo): Remove `address'.
16095         (mono_debug_data_table): New global variable.
16096         (mono_debug_lookup_method_addresses): New public function.
16097         (mono_debug_find_method): Take a `MonoMethod *', not a
16098         `MonoDebugMethodInfo *'.
16099
16100         * mono-debug.c: Drop support for the old symbol tables.
16101
16102 2007-06-28  Martin Baulig  <martin@ximian.com>
16103
16104         * mono-debug.c (mono_debug_debugger_version): New public variable.
16105
16106 2007-07-31  William Holmes  <billholmes54@gmail.com>
16107
16108         * metadata.c Changed mono_type_create_from_typespec to not insert
16109           the type into the hash map until after
16110           do_mono_metadata_parse_type has completed.
16111         Fixes Bug #82194
16112         Code is contributed under MIT/X11 license.
16113
16114 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
16115
16116         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
16117         generic parameter. Fixes #82211.
16118
16119 2007-07-27  Jb Evain  <jbevain@novell.com>
16120
16121         * pedump.c (dump_metadata, dump_metadata_header): dump
16122         versions contained in the metadata header.
16123
16124 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
16125
16126         * threads.c: register small_id_table with the GC.
16127
16128 2007-07-27  Mark Probst  <mark.probst@gmail.com>
16129
16130         * threads.c, threads.h, class-internals.h, object-internals.h:
16131         Hazard pointers, to be used by lock-free parallel algorithms.
16132
16133 2007-07-26  Dick Porter  <dick@ximian.com>
16134
16135         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
16136         routine on non-windows platforms, as I've not managed to think of
16137         a non-kludgy way of doing this.  Finishes off bug 78739.
16138
16139 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
16140
16141         * object.c: properly setup interface_bitmap in proxy vtables.
16142
16143 2007-07-25  Marek Habersack  <mhabersack@novell.com>
16144
16145         * appdomain.c (get_shadow_assembly_location): do not use TickCount
16146         to create unique shadow copy target directories, use the domain's
16147         serial number instead. Each domain gets a unique target directory
16148         that way.
16149
16150         * domain.c (mono_domain_create): added code to increment domain
16151         shadow copy serial number and cache the value in the current
16152         domain structure.
16153
16154         * domain-internals.h (struct _MonoDomain): added a new field -
16155         shadow_serial to hold the serial number used in generation of
16156         shadow-copy directories. This is to make sure that the directory
16157         name is unique for each and every domain created. We avoid a race
16158         condition with overriding assemblies already in use by other app
16159         domains.
16160
16161 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
16162
16163         * class.c (mono_bounded_array_class_get): fixed memory leak when 
16164         binding generic parameters.
16165
16166 2007-07-24  Raja R Harinath  <rharinath@novell.com>
16167
16168         * metadata.c (do_mono_metadata_parse_generic_class): Use
16169         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
16170         error.
16171
16172 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
16173
16174         * loader.c, class-internals.h, reflection.c: removed the per-method
16175         generics hashtable: we use the global one through the call of
16176         mono_class_inflate_generic_method ().
16177
16178 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
16179
16180         * class.c, metadata.c, class-internals.h: introduce yet another
16181         generics global cache for inflated methods (fixes 98% of the perf
16182         issue in bug #81806).
16183
16184 2007-07-23  Raja R Harinath  <rharinath@novell.com>
16185
16186         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
16187         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
16188         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
16189         return a MonoGenericInst containing (a copy) of those types.
16190         (mono_metadata_inflate_generic_inst): Update to changes.
16191         (mono_metadata_parse_generic_inst): Likewise.
16192         (mono_get_shared_generic_inst): Likewise.
16193         * reflection.c (mono_class_bind_generic_parameters): Likewise.
16194         (mono_reflection_bind_generic_method_parameters): Likewise.
16195         * metadata-internals.h: Likewise.
16196         * icall.c (free_generic_context): Kill.
16197         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
16198
16199         * reflection.c (reflection_methodbuilder_to_mono_method): Use
16200         mono_metadata_type_dup.
16201         * marshal.c (mono_mb_create_method): Likewise.
16202
16203         * metadata.c (mono_metadata_type_dup): Rename from
16204         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
16205         MonoImage.  Handle a few more cases, esp. when no mempool is given.
16206         * marshal.c, metadata-internals.h: Update to changes.
16207
16208 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
16209
16210         * class.c: fixed a small leak for array classes and removed warning.
16211
16212 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
16213
16214         * loader.c (mono_method_get_param_token): Make this work on generic methods.
16215         Return 0x8000000 for return parameters. Fixes #82161.
16216
16217 2007-07-21  Marek Habersack  <grendello@gmail.com>
16218
16219         * appdomain.c (get_shadow_assembly_location): append the current
16220         ticks value to the path. Avoids overwriting the same assemblies by
16221         several threads at the same time.
16222
16223 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
16224         and Raja R Harinath  <rharinath@novell.com>
16225
16226         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
16227         Simplify slightly.
16228         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
16229         property for testing if a method is a generic method definition.
16230
16231 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
16232
16233         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
16234
16235 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16236
16237         * verify.c: used function from private branch, reverted to the one in class.h 
16238
16239 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16240
16241         * verify.c: a typo slipped in and the code wont compile
16242
16243 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16244
16245         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
16246         disabled box instruction as it is doing the wrong thing
16247         improved stack dump messages, now it is easier to debug type related issues
16248
16249
16250 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
16251
16252         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
16253
16254 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16255
16256         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
16257         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
16258         grouped with class and valuetype. This change will simply 
16259         the code as it should be handled just like unmanaged pointers.
16260
16261 2007-07-19  Mark Probst  <mark.probst@gmail.com>
16262
16263         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
16264
16265 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16266
16267         * verify.c: several stack merge issues fixed, reference comparisons now
16268         check the type size. strict type check now works correctly.
16269         added more uses of IS_MANAGED_POINTER macro.
16270         fixed issues pointed by running the test suite against .net.
16271         
16272
16273 2007-07-19  Mark Probst  <mark.probst@gmail.com>
16274
16275         * class.c, loader.c, class-internals.h: Removed the
16276         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
16277         defines.
16278
16279         * icall.c: Better error checking in some internal reflection
16280         methods.
16281
16282 2007-07-18  William Holmes  <billholmes54@gmail.com>
16283
16284         * filewatcher.c : removed unused variable 'filename' in 
16285           ves_icall_System_IO_FSW_SupportsFSW
16286
16287 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
16288
16289         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
16290         obsolete, removed.
16291
16292 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
16293
16294         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
16295         
16296         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
16297
16298 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
16299
16300         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
16301         Implement generics support.
16302         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
16303
16304         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
16305         type_args and method_args arguments.
16306         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
16307         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
16308         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
16309
16310 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
16311
16312         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
16313           It adds a rootimage parameter to mono_reflection_get_type_internal,
16314           adds new function mono_reflection_get_type_with_rootimage and use
16315           the rootimage to resolve the types instead of the current image
16316
16317 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
16318
16319         * culture-info-table.h: Forgot to update after r78304.
16320
16321 2007-07-13  Raja R Harinath  <rharinath@novell.com>
16322
16323         * class.c (mono_class_is_open_constructed_type)
16324         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
16325
16326 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
16327
16328         * class.c (mono_bounded_array_class_get):  method fails if used with
16329         an incomplete TypeBuilder enum (no basetype field), fixed it by 
16330         avoiding calculating the size for such array as it cannot be instantiated.
16331         Fix bug #82015
16332
16333 2007-07-12  Raja R Harinath  <rharinath@novell.com>
16334
16335         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
16336         field.
16337         * metadata.c, reflection.c: Update to changes.
16338
16339 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
16340
16341         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
16342         mono_class_is_valid_enum, they are used to valide a enum when loading.
16343         * reflection.c: used new functions to throw TypeLoadException when and
16344         invalid enum is build with TypeBuilder. Fixes #82018
16345   
16346 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
16347
16348         * object.c: forgot commit of mono_class_setup_methods () to access
16349         iface->methods.
16350         * object-internals.h: added a few more handy fields to
16351         MonoIMTCheckItem.
16352
16353 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
16354
16355         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
16356         iface->methods.
16357
16358 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
16359
16360         * class-internals.h, object-internals.h, object.c: IMT-based
16361         interface invocation core from Massimiliano Mantione
16362         (massi@ximian.com) with a reworked arch-specific interface,
16363         bsearch implementation and a few bugfixes and memory savings by me.
16364
16365 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
16366
16367         * class.c (mono_class_create_from_typedef): mono would segfault if 
16368         an enum did not have a __value field. It now throws a TypeLoadException
16369         for such cases. Fix bug #82022
16370
16371 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
16372
16373         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
16374
16375 2007-07-09  Mark Probst  <mark.probst@gmail.com>
16376
16377         * class.c (mono_class_init): If a class is already inited but has
16378         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
16379
16380 2007-07-09  Mark Probst  <mark.probst@gmail.com>
16381
16382         * class.c: Properly handle the case of an unimplemented interface
16383         method.  Fixes: 81673.
16384
16385 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
16386
16387         * class-internals.h, object.c: cleanup patch from massi: use
16388         MonoVTable->interface_bitmap since the vtable interfaces offset array
16389         is going away.
16390
16391 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
16392
16393         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
16394         GetMDStreamVersion icall instead.
16395
16396 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
16397
16398         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
16399         not use mono_dl_build_path() with a full library name: makes
16400         fallbacks to libgaim and libfam work.
16401
16402 2007-07-06  William Holmes  <billholmes54@gmail.com>
16403
16404         * assembly.c: Added a continue statement in probe_for_partial_name when
16405          parse_assembly_directory_name fails.  Fixes : 82002
16406
16407 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
16408
16409         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
16410         and added a verification  for TYPEDBYREF.
16411         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
16412         make native int interchangeable with int32 and some small cleanup and formating.
16413         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
16414         handle byref of byref.
16415         * verify.c (push_local): handle byref of byref.
16416         * verify.c (do_binop): invalid mix of values is unverifiable
16417         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
16418         added visibility checks
16419         * verify.c (field related method): added visibility checks
16420         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
16421
16422 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
16423
16424         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
16425         string.
16426
16427 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
16428
16429         * profiler.c (mono_profiler_load): Fix an off-by-one error.
16430
16431         * marshal.c (emit_marshal_string): When returning a string from managed code,
16432         allways make a copy even for unicode strings. Fixes #81990.
16433
16434 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
16435
16436         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
16437         of byref generic inst types (bug #81997).
16438
16439 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
16440
16441         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
16442         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
16443
16444 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
16445
16446         * marshal.c (emit_marshal_string): Add support for unicode strings in
16447         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
16448
16449 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
16450
16451         * verify.c: field load/store are now verified, missing only access checks now
16452
16453 2007-06-28  Martin Baulig  <martin@ximian.com>
16454
16455         * mono-debug.c (mono_debug_debugger_version): New public variable.
16456
16457 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
16458
16459         * locales.c: When constructing DateTimeFormat or NumberFormat for
16460         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
16461         MonoCultureInfo contructed from the current locale is always
16462         read-only and has UseUserOverride set to true. All MonoCultureInfo
16463         instances returned for GetCultures have both IsReadOnly and
16464         UseUserOverride set to true. Fixes part of bug #81930.
16465
16466 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
16467
16468        * icall-def.h: Update System.__ComObject icalls
16469        * marshal.c: Avoid managed transition (and object creation)
16470        when looking up COM interface in RCW.
16471        * marshal.h: Ditto.
16472        
16473        Code is contributed under MIT/X11 license.
16474
16475 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
16476
16477         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
16478         to avoid crashes during assembly unloading.
16479
16480 2007-06-22  Raja R Harinath  <rharinath@novell.com>
16481
16482         Fix MethodInfo.IsGenericMethodDefinition
16483         * reflection.c (mono_reflection_bind_generic_method_parameters):
16484         Rearrange code to ensure we always uses a generic method definition.
16485         * class.c (mono_class_inflate_generic_method_full): Set
16486         'generic_container' field only for generic method definitions.
16487         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
16488         Use presense of 'generic_container' field as indication of being a
16489         generic method definition.
16490
16491 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
16492
16493         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16494
16495         * object-internals.h: Reflect changes in the layout of the managed Delegate
16496         class.
16497         
16498         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
16499         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
16500         runtime memory used by the dynamic method. Fixes #77146.
16501
16502 2007-06-21  Dick Porter  <dick@ximian.com>
16503
16504         * file-io.h: 
16505         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
16506         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
16507         81767.
16508
16509 2007-06-21  Raja R Harinath  <rharinath@novell.com>
16510
16511         * reflection.c (method_encode_methodspec): Add a tripwire.
16512         * class.c (inflate_generic_type): The fully open generic type is
16513         not the same as the generic type definition.
16514
16515 2007-06-21  Martin Baulig  <martin@ximian.com>
16516
16517         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
16518
16519         * mono-debug-debugger.h
16520         (MonoDebuggerBreakpointInfo): Removed.
16521         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
16522         (mono_debugger_remove_breakpoint): Likewise.
16523         (mono_debugger_breakpoint_callback): Likewise.
16524         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
16525
16526 2007-06-21  Raja R Harinath  <rharinath@novell.com>
16527
16528         * metadata.c (mono_metadata_lookup_generic_class): The fully open
16529         generic type is not the same as the generic type definition.
16530         * class.c (mono_generic_class_get_class): Likewise.
16531
16532 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
16533
16534         * icall.c: The second argument to 
16535         System.Reflection.MethodBase.GetMethodFromHandleInternalType
16536         is a MonoType not a MonoClass.
16537
16538 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
16539
16540         * verify.c: support for function pointers in the verifier
16541
16542 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
16543
16544         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
16545
16546 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
16547
16548         * assembly.c: removed Mono.Data.SqliteClient from the list of
16549         forward-compatible assemblies as it breaks the ABI (bug #81899).
16550
16551 2007-06-19  Raja R Harinath  <rharinath@novell.com>
16552
16553         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
16554         lookup/update with the loader lock.
16555         * reflection.c (mono_class_bind_generic_parameters): No need to
16556         protect mono_metadata_lookup_* with the loader lock.
16557         * class.c (inflate_generic_type): Likewise.
16558         
16559         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
16560         on a generic instantiated type.
16561
16562 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
16563
16564         *verify.c: produce meanfull error messages on verification error
16565         *verify.c: fixed some cases of verification errors reported as validation errors
16566         *pedump.c: fixed the error name array, now it shows validation errors properly
16567         *verify.h: fixed the contant that should be used for verification errors
16568
16569 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
16570
16571         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
16572         for bug #77596, 81858 and 80743 (generics data structures on domain
16573         unload).
16574
16575 2007-06-15  Raja R Harinath  <rharinath@novell.com>
16576
16577         Avoid allocating 'MonoGenericContext' on the heap.
16578         * class-internals (_MonoMethodInflated::context): Make field
16579         inline, not a pointer.
16580         * loader.c (method_from_methodspec): Allocate 'new_context' on the
16581         stack.  Use the context embedded within the inflated method as the
16582         hash key, rather than 'new_context'.
16583         * class.c (inflate_generic_context): Simplify.  Return a struct
16584         rather than allocating on the heap.
16585         (mono_class_inflate_generic_method_full): Update to changes.  Now,
16586         doesn't salt away a copy of the context -- simplifying the
16587         lifetime rules of a 'MonoGenericContext *'.
16588         (mono_method_get_context): Return pointer to embedded context.
16589         (setup_generic_array_ifaces): Allocate temporary context on stack.
16590         * reflection.c (inflate_mono_method): Likewise.
16591         (mono_reflection_bind_generic_method_parameters): Likewise.
16592         Use the context embedded within the inflated method as the hash key.
16593
16594         Avoid a source of allocation of 'MonoGenericContext'.
16595         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
16596         and 'cached_context' fields into embedded 'MonoGenericContext' field.
16597         * class.c: Update to changes.
16598         (mono_generic_class_get_context): Simplify drastically.  Now just
16599         returns a pointer to the field.
16600         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
16601         argument as a const pointer.
16602         (mono_metadata_generic_context_equal): Likewise.
16603         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
16604         Update to changes.
16605
16606 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
16607
16608         * verify.c improved the handling of brtrue/brfalse, factored out common code
16609
16610 2007-06-14  Raja R Harinath  <rharinath@novell.com>
16611
16612         Kill MonoGenericMethod.
16613         * class-internals.h (MonoGenericContext::method_inst): Rename from
16614         'gmethod' and convert to a MonoGenericInst.
16615         (MonoGenericMethod): Remove.
16616         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
16617         * loader.c (method_from_methodspec): Update to changes.  Use a
16618         MonoGenericContext as the key to the hashtable.
16619         * metadata.c (mono_metadata_generic_context_equal): Rename from 
16620         'mono_metadata_generic_method_equal' and take MonoGenericContext.
16621         (mono_metadata_generic_context_hash): Likewise from
16622         'mono_metadata_generic_method_hash'.  Change hash function.
16623         (mono_metadata_load_generic_params): Update to changes.
16624         (mono_get_shared_generic_method): Remove.
16625         * metadata-internals.h (mono_get_shared_generic_method): Remove.
16626         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
16627         (inflate_generic_context): Likewise.
16628         (mono_class_inflate_generic_method_full): Likewise.
16629         (setup_generic_array_ifaces): Likewise.
16630         (mono_class_create_from_typespec): Likewise.
16631         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
16632         (method_encode_methodspec): Update callsite.
16633         (reflection_methodbuilder_to_mono_method): Update to changes.
16634         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
16635         MonoGenericContext as the key to the hashtable.
16636         (inflate_mono_method): Update to changes.
16637
16638         * class-internals.h (MonoGenericMethod::container): Remove.
16639         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
16640
16641 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
16642
16643         * profiler-private.h, profiler.c, profiler.h: added API to profile
16644         exception events.
16645
16646 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
16647
16648         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
16649
16650 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
16651
16652         * verify.c: method invocation is now validated, now we verify parameter types on stack.
16653         Fixed overflow and underflow not aborting the verification process.
16654
16655 2007-06-13  Mark Probst  <mark.probst@gmail.com>
16656
16657         * class-internals.h (MonoStats): Added stats entries for dynamic
16658         code allocations.
16659
16660 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
16661
16662         * loader.c (mono_free_method): Free header->locals and header->clauses.
16663
16664         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
16665         dynamic case.
16666
16667         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
16668
16669         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
16670
16671 2007-06-12  Raja R Harinath  <rharinath@novell.com>
16672
16673         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
16674         the tables.
16675
16676 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16677
16678         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
16679
16680 2007-06-11  Raja R Harinath  <harinath@gmail.com>
16681
16682         MonoGenericMethod on a diet
16683         * class-internals.h (_MonoMethodInflated::reflection_info): Move
16684         here ...
16685         (_MonoGenericMethod::reflection_info): ... from here.
16686         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
16687         Update to changes.
16688         * reflection.c (inflate_mono_method): Likewise.
16689         (mono_reflection_bind_generic_method_parameters): Likewise.
16690
16691 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16692
16693         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
16694         *verify.c: factored long ldarg forms to share code with short forms
16695
16696 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16697
16698         *verify.c: fixed code formating factored some duplicate code
16699         into a new function
16700
16701         *verify.h: fixed binary incompatibility introduced earlier
16702
16703         *pedump.c: fixed formating
16704
16705 2007-06-11  Raja R Harinath  <harinath@gmail.com>
16706
16707         Fix assertion when disassembling Mono.C5.dll
16708         * loader.c (method_from_methodspec): Avoid inflating a method
16709         twice with the same context.  If the methodref is inflated, use
16710         the declaring method instead.
16711
16712         * class.c (mono_class_from_generic_parameter): Fix case similar to
16713         bug #81830 handled below, but for method containers.
16714
16715 2007-06-10  Raja R Harinath  <harinath@gmail.com>
16716
16717         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
16718         get_shared_generic_class.  Directly inflate the instance.
16719         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
16720         (inflate_generic_class): Delete.
16721         (get_shared_generic_class): Delete.  Move setting of
16722         'cached_class' and 'cached_context' ...
16723         * metadata.c (mono_metadata_lookup_generic_class): ... here.
16724
16725         * metadata.c (mono_metadata_lookup_generic_class): Change
16726         signature to take the components of a MonoGenericClass rather than
16727         an allocated MonoGenericClass.  Change semantics to be intern-like.
16728         * reflection.c (mono_class_bind_generic_parameters): Update to
16729         changes.  Make locking region tighter.
16730         * class.c (inflate_generic_class): Update to changes.
16731         (get_shared_generic_class): Likewise.
16732         * metadata-internals.h: Likewise.
16733
16734         * reflection.c (mono_class_bind_generic_parameters): Take and
16735         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
16736         (mono_reflection_bind_generic_parameters): Use
16737         'mono_class_bind_generic_parameters' rather than duplicate the code.
16738         * class.c (mono_bounded_array_class_get): Update to changes.
16739         * object-internals.h: Likewise.
16740
16741         * reflection.c (mono_class_bind_generic_parameters): Only support
16742         parameterizing generic type definitions.  Remove support for other
16743         open types.
16744
16745 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
16746
16747         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
16748
16749         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
16750         in the dynamic case.
16751
16752 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
16753
16754         * threads.c: When cleaning up thread, reset the Background bit.
16755         Fixes bug #81720.
16756
16757 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
16758
16759        * metadata.c: Move variable declarations to top of scope.
16760        * verify.c: Move variable declarations to top of scope.
16761
16762        Code is contributed under MIT/X11 license.
16763
16764 2007-06-08  Raja R Harinath  <rharinath@novell.com>
16765
16766         * reflection.c (mono_class_bind_generic_parameters): Replace
16767         open-coded loop with mono_metadata_inflate_generic_inst.
16768
16769         * class.c (get_shared_generic_class): Don't call
16770         mono_get_shared_generic_inst.  Use the container's own
16771         'class_inst'.
16772
16773         * metadata.c (mono_metadata_load_generic_params): Move
16774         initialization of 'context' field here from ...
16775         * class.c (mono_class_create_from_typedef): ... here, and ...
16776         * loader.c (mono_get_method_from_token): ... here.
16777
16778         * class.c (get_shared_generic_class): Rename from
16779         mono_get_shared_generic_class and make static.
16780         (mono_get_shared_generic_inst): Move to metadata.c.
16781         * loader.c (mono_get_shared_generic_method): Likewise.
16782         * class-internals.h, metadata-internals.h: Update to changes.
16783
16784         Fix #81830
16785         * class.c (mono_class_from_generic_parameter): Don't assume a
16786         generic container owner exists.  Generic containers from monodis
16787         don't have any.
16788
16789 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
16790
16791         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
16792         * verify.h: new typedefs to returns the non-verifiable status
16793         * verify.c: initial implementation of generics, stack merging and object compatibility check
16794
16795 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16796
16797         * class.c, image.c, class-internals.h (MonoImage): class_cache is
16798         a MonoInternalHashTable again (fixed bug in internal hash table
16799         code).
16800
16801 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16802
16803         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
16804         MonoInternalHashTable again (fixed bug in internal hash table
16805         code).
16806
16807 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16808
16809         * class.c, image.c, class-internals.h, domain.c,
16810         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
16811         changes.  Have to figure out what makes them break the SWF
16812         regression.
16813
16814 2007-06-04  Mark Probst  <mark.probst@gmail.com>
16815
16816         * class.c, image.c, class-internals.h (MonoImage): class_cache is
16817         a MonoInternalHashTable now.
16818
16819 2007-06-04  Mark Probst  <mark.probst@gmail.com>
16820
16821         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
16822         MonoInternalHashTable now.
16823
16824 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
16825
16826         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
16827         invoke_impl code.
16828
16829         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
16830
16831         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
16832         dependent trampoline.
16833
16834         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16835
16836         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
16837
16838 2007-05-29  Robert Jordan  <robertj@gmx.net>
16839
16840         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
16841
16842 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
16843
16844         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
16845
16846 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
16847
16848        * marshal.c: Fix interface lookup loops for
16849        cominterop_get_com_slot_for_method and 
16850        cominterop_get_method_interface. Only need to lookup
16851        if type is a class, else use interface type method is on.
16852
16853        Code is contributed under MIT/X11 license.
16854
16855 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
16856
16857         * reflection.c: HasSecurity can be present even if no specially 
16858         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
16859         SecurityAttribute). Fix CAS regression tests on buildbot.
16860
16861 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
16862
16863        * appdomain.c: Add configure checks for header files.
16864        * image.c: Add configure checks for header files.
16865        * file-io.c: Add configure checks for header files.
16866        * debug-mono-symfile.c: Add configure checks for header files.
16867        * threadpool.c: Add configure checks for header files.
16868        * console-io.c: Add configure checks for header files.
16869        * profiler.c: Add configure checks for header files.
16870        * rawbuffer.c: Add configure checks for header files.
16871        * icall.c: Add configure checks for header files.
16872        * rand.c: Add configure checks for header files.
16873        * socket-io.c: Add configure checks for header files.
16874
16875        Code is contributed under MIT/X11 license.
16876
16877 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
16878
16879         * reflection.c (mono_custom_attrs_from_builders): Remove the 
16880         assertion as it breaks the build.
16881         
16882         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
16883
16884         * reflection.c (lookup_custom_attr): Make a copy here too.
16885
16886         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
16887         dynamic images.
16888
16889         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
16890         images.
16891
16892         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
16893         info.
16894
16895 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
16896
16897         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
16898         (load_cattr_value): Ditto.
16899
16900 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
16901
16902         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
16903
16904 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
16905
16906         * threads.c: In "start_wrapper", set apartment_state to MTA if
16907         apartment_state is Unknown and we're running on 2.0 profile or
16908         higher.
16909         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
16910         to main method, then set apartment_state to Unknown on 1.0 profile,
16911         and MTA on 2.0 profile.
16912
16913 2007-05-16  Jb Evain  <jb@nurv.fr>
16914
16915         * class-internals.h (MonoDefaults): Add an attribute_class and
16916           customattribute_data_class.
16917         * domain.c (mono_init_internal): Populate them.
16918         * reflection.c: Use them to remove duplicates. Make a vew
16919         MonoClass variables `static'.
16920
16921 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
16922
16923         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
16924         step in implementing IMT, so that all isinst checks now can go
16925         through the bitmap.
16926         This was needed because vtables for TransparentProxy need to look
16927         like the vtable of the "target" class, so they need to point to
16928         its interface bitmap directly.
16929
16930         * object.c: inside "mono_class_create_runtime_vtable" and
16931         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
16932
16933 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
16934
16935         * object-internals.h
16936           culture-info.h : added territory field in MonoCulture and
16937           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
16938         * locales.c : fill territory field above too.
16939         * culture-info-table.h : regenerated.
16940
16941 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
16942
16943         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
16944         Fixes #81599.
16945
16946 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
16947
16948         * object.c: Always initialize apartment, even if 
16949         there is no custom attributes on entry point.
16950         
16951         Code is contributed under MIT/X11 license.
16952
16953 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
16954
16955         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
16956         * metadata.c: If no encoding is set, check for unicode
16957         on class.
16958         
16959         Code is contributed under MIT/X11 license.
16960
16961 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
16962
16963         * threads.c: Handle if mono_thread_current returns NULL 
16964         
16965         Code is contributed under MIT/X11 license.
16966
16967 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
16968
16969         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
16970         in start_wrapper. Added mono_thread_init_apartment_state and
16971         mono_thread_cleanup_apartment_state.
16972         * object.c: Initialize thread apartment state on main thread
16973         by checking for STAThreadAttribute on entry point.
16974         * object-internals.h: Add apartment_state field to MonoThread.
16975         * threads-types.h: Add unmanaged definition of 
16976         System.Threading.ApartmentState, MonoThreadApartmentState.
16977         
16978         Code is contributed under MIT/X11 license.
16979         
16980 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
16981
16982         * class.c: Fix windows build.
16983         * class-internals.h: Fix windows build.
16984         
16985         Code is contributed under MIT/X11 license.
16986
16987 2007-05-08  Robert Jordan  <robertj@gmx.net>
16988
16989         * process.c (CreateProcess_internal):
16990         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
16991         .CreateNoWindow was specified. Fixes #81496.
16992
16993 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
16994
16995         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
16996         step in implementing IMT, replaced it with two compact arrays
16997         (interfaces_packed and interface_offsets_packed) and a bitmap that
16998         is used for isinst checks (interface_bitmap).
16999
17000         * class.c: (compare_interface_ids): compare function to pass to
17001         bsearch when looking for an interface with a given id.
17002         (mono_class_interface_offset): reimplemented using bsearch on
17003         interfaces_packed, getting the offset from interface_offsets_packed.
17004         (print_implemented_interfaces): utility debugging function.
17005         (setup_interface_offsets): reworked to initialize interfaces_packed,
17006         interface_offsets_packed and interface_bitmap.
17007
17008         * object.c: replaced all accesses to "MonoClass.interface_offsets"
17009         with uses of interfaces_packed and interface_offsets_packed.
17010
17011 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
17012
17013         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
17014         mono_class_interface_offset prototype to wrap all accesses to
17015         "MonoClass.interface_offsets".
17016
17017         * class.c: Implemented mono_class_interface_offset, and wrapped all
17018         accesses to "MonoClass.interface_offsets".
17019
17020         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
17021         "MonoClass.interface_offsets".
17022
17023 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
17024
17025         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
17026         GetMethodFromHandle overloads (bug #78637).
17027
17028 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
17029
17030         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
17031         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
17032
17033 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
17034
17035         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
17036         #81498.
17037
17038         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
17039         gracefully.
17040         (mono_custom_attrs_from_index): Ditto.
17041
17042         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
17043         Fixes #81501.
17044
17045 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
17046
17047         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
17048         is now allocated from a mempool.
17049
17050 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
17051
17052         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
17053         caller holds threads_lock, leading to deadlocks. Fixes #81476.
17054
17055 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
17056
17057         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
17058         mono_loader_clear_error () too late. Fixes #81463.
17059
17060 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
17061
17062         * culture-info-table.h : regenerated.
17063
17064 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
17065
17066         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
17067         is missing.
17068
17069 2007-04-25  Dick Porter  <dick@ximian.com>
17070
17071         * Makefile.am: Put the mingw enforced-optimisation back into the
17072         PLATFORM_WIN32 section.
17073
17074 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
17075
17076         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
17077         patch.
17078
17079         * image.c (mono_image_load_module): New API function to load a module reference.
17080
17081         * image.c (load_modules): Load modules lazily. Fixes #80812.
17082
17083         * class.c (mono_class_from_typeref): Use mono_image_load_module.
17084         
17085         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
17086
17087         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
17088         to mono_image_load_module_dynamic.
17089
17090 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
17091
17092         * marshal.c: Fix calling convention for CCW on non-windows
17093         platforms. STDCALL on windows, CDECL everywhere else to work 
17094         with XPCOM and MainWin COM.
17095         
17096         Code is contributed under MIT/X11 license.
17097
17098 2007-04-23  Martin Baulig  <martin@ximian.com>
17099
17100         Fix #80969.
17101
17102         * loader.c
17103         (method_from_memberref): Added `gboolean *used_context' argument.
17104         (mono_get_method_from_token): Likewise.
17105         (mono_get_method_full): Don't insert the method in the cache when
17106         `used_context' is true.
17107
17108 2007-04-23  Raja R Harinath  <rharinath@novell.com>
17109
17110         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
17111
17112         * reflection.c (mono_reflection_bind_generic_parameters): Don't
17113         create new MonoTypes for returned types.
17114         * class.c (mono_generic_class_get_class): Export mono-internal.
17115         * class-internals.h: Update to changes.
17116
17117 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
17118
17119         * threadpool.c, threadpool.h, icall-def.h: patch from
17120         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
17121
17122 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
17123
17124         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
17125         
17126         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
17127
17128         * threads.c (mono_thread_get_stack_bounds): New helper function.
17129
17130         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
17131         Correctly compute stack bounds when attaching. Fixes #81394.
17132
17133 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
17134
17135         * reflection.c: fix handling of doubles in custom attributes
17136         for the arm-fpa format (bug #81368).
17137
17138 2007-04-18  Raja R Harinath  <rharinath@novell.com>
17139
17140         * reflection.c (assembly_add_win32_resources): Mildly relax an
17141         bounds check to let the end pointer point just past the end of the
17142         allocated buffer.  (may fix #81384)
17143
17144 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
17145
17146         * culture-info-table.h : regenerated.
17147
17148 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
17149
17150         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
17151         the thread is aborted early.
17152
17153 2007-04-05  Dick Porter  <dick@ximian.com>
17154
17155         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
17156         FindFirstFile()/FindNextFile() to find entries.  This lets the
17157         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
17158         81038.
17159
17160         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
17161         the parameters of
17162         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
17163
17164 2007-04-04  Martin Baulig  <martin@ximian.com>
17165
17166         * debug-helpers.c
17167         (mono_method_desc_full_match): Add support for nested classes.
17168
17169 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
17170
17171         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
17172
17173 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
17174
17175         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
17176         waiting for too many threads.
17177
17178 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
17179
17180         * environment.c: Fix return value check on uname so we can get the 
17181         executing version on Solaris operating systems.
17182
17183 2007-03-28  Jb Evain  <jbevain@gmail.com>
17184
17185         * class.c (mono_type_get_name_recurse): Complete the
17186         fix for the creation of assembly qualified names for
17187         pointer types. Fixes #81208.
17188
17189 2007-03-27  Dick Porter  <dick@ximian.com>
17190
17191         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
17192         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
17193         changed.
17194
17195         * threads.c
17196         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
17197         the value of ReleaseMutex().
17198
17199 2007-03-27  Dick Porter  <dick@ximian.com>
17200
17201         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
17202         in little-endian order, not network endian, so must be converted
17203         to host endian here.  Fixes bug 80593.
17204
17205 2007-03-22  Jb Evain  <jbevain@gmail.com>
17206
17207         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
17208         qualified names for pointer types. Fixes #81208.
17209
17210 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
17211
17212         * marshal.c: Add support for PreserveSigAttribute. 
17213         
17214         Code is contributed under MIT/X11 license.
17215
17216 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
17217
17218         * process.c: Fix endianness issues. Fixes #81126.
17219
17220         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
17221         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
17222
17223         * image.c (mono_image_lookup_resource): Make this work on big-endian
17224         machines.Change API contract so the caller needs to free the return value.
17225         
17226         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
17227         API change.
17228         
17229 2007-03-14  Martin Baulig  <martin@ximian.com>
17230
17231         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
17232         mono_type_get_desc() as well.
17233
17234 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
17235
17236         * icall.c:  Fix environ access in VS.  
17237         
17238 2007-03-13  Alp Toker  <alp@atoker.com>
17239
17240         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
17241         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
17242         #63841.
17243
17244 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
17245
17246         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
17247         circular references among dynamic methods. Fixes #81091.
17248
17249         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
17250
17251 2007-03-09  Martin Baulig  <martin@ximian.com>
17252
17253         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
17254
17255 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
17256
17257         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
17258         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
17259         
17260         Code is contributed under MIT/X11 license.
17261         
17262 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
17263
17264         * loader.c: Reapply patch for bug #79424.
17265
17266 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
17267
17268         * metadata.c (mono_type_to_unmanaged): Only convert object to
17269         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
17270
17271 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
17272
17273         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
17274         (and incorrectly set) is_reference field from MonoGenericInst.
17275
17276 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
17277
17278         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
17279         a little earlier.
17280
17281         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
17282
17283         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
17284
17285 2007-03-05  Miguel de Icaza  <miguel@novell.com>
17286
17287         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
17288         FileOptions.1 value to mean "temporary", map that to
17289         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
17290
17291         Fixes 80688
17292
17293 2007-03-03  Marek Habersack  <mhabersack@novell.com>
17294
17295         * appdomain.c: implement MS .Net style shadow copying. Copies of
17296         the assemblies are made in a subdirectory of the dynamic base
17297         directory, the assembly names are preserved.
17298         Copy .mdb and .config files along with the assemblies being shadowed.
17299
17300 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
17301
17302         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
17303         (emit_marshal_handleref): Ditto.
17304
17305         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
17306         on Visual C++. Fixes #80671.
17307
17308 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
17309
17310         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
17311         for clone operations.
17312
17313 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
17314
17315         * marshal.c: Fix warnings.
17316
17317 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
17318
17319         * loader.c: allow case-insensitive matching of the dll name
17320         in dllmap handling when prefixed with "i:".
17321
17322 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
17323
17324         * threads.c: Fix #ifdef for dummy_apc function for VS.
17325
17326 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
17327
17328         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
17329
17330 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
17331         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
17332         giving precedence to the methods with a fully qualified name
17333         (InterfaceName.MethodName) when building the interface sections
17334         of the vtable.
17335
17336 2007-02-16  Dick Porter  <dick@ximian.com>
17337
17338         * threadpool.c (append_job): Fix fast-path array handling, so it's
17339         less likely the array will grow exponentially when the load is
17340         heavy.
17341
17342 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
17343
17344         * metadata-internals.h, loader.c: fix dllmap lookup order
17345         for non-function maps, too, and prepare for fallback code.
17346
17347 2007-02-12  Robert Jordan  <robertj@gmx.net>
17348
17349         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
17350         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
17351         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
17352         GlobalFree. Fixes a part of bug #77075.
17353
17354 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
17355
17356         * loader.c: implemented typedef parent in field memberref.
17357
17358 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
17359
17360         * marshal.c: Fix warnings and remember to call Release on
17361         IUnknown of RCW.
17362         
17363         Code is contributed under MIT/X11 license.
17364
17365 2007-02-10  Miguel de Icaza  <miguel@novell.com>
17366
17367         * class-internals.h: Add MonoHandleRef definition, and
17368         handleref_class to mono_defaults. 
17369
17370         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
17371         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
17372
17373         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
17374         (do nothing on this stage)
17375         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
17376         (emit_marshal_handleref): New method, used for argument handling
17377         of HandleRefs. 
17378
17379 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
17380
17381         * class.c (mono_class_setup_parent): Lazily init com types.
17382         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
17383         init com types.
17384         * object.c (mono_remote_class_vtable): Lazily init com types.
17385         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
17386         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
17387         * domain-internals.h: Expose mono_init_com_types.
17388         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
17389         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
17390         Add support for COM Callable Wrapper marshalling.
17391         * marshal.h: Add icall definitions.
17392         * gc.c: Handle freeing of CCWs in finalizer code.
17393         
17394         Code is contributed under MIT/X11 license.
17395
17396 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
17397
17398         * reflection.c: changed all the signature encoding code to use
17399         a variable-sized buffer.
17400
17401 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
17402
17403         * marshal.c: locking fixes: never take the loader lock
17404         or other runtime locks when holding the marshal lock
17405         (fixes bug#80664).
17406
17407 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
17408
17409         * marshal.c: make the delegate function pointer mapping
17410         work for the moving GC.
17411
17412 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
17413
17414         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
17415         for bug #80618.
17416
17417 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
17418
17419         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
17420         gmodule.
17421
17422 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
17423
17424         * threadpool.c: made the code moving-GC safe.
17425
17426 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
17427
17428         * assembly.c, boehm-gc.c, class-internals.h, class.c,
17429         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
17430         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
17431         warning cleanup.
17432         * reflection.c: warning cleanup, some threading and moving GC fixes.
17433
17434 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
17435
17436         * class.c, loader.c: create the needed Set/Get/Address array methods
17437         as well as the .ctors in mono_class_init (), fixes bug #80567.
17438
17439 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
17440
17441         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
17442         we doesn't decrease its alignment. Should fix the sparc build.
17443
17444 2007-01-24  Dick Porter  <dick@ximian.com>
17445
17446         * socket-io.c
17447         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
17448         Create the returned object if we need to ignore an unsupported
17449         socket option.  Fixes a segfault reported by Atsushi.
17450
17451 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
17452
17453         * class.c, object.c: restrict GC-tracked fields to
17454         UIntPtr fields used inside corlib, so we provide better
17455         type info to the GC and also allow broken packing as in
17456         bug #80580.
17457
17458 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
17459
17460         * sgen-gc.c: removed duplicated function.
17461
17462 2007-01-19  Miguel de Icaza  <miguel@novell.com>
17463
17464         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
17465         value that means that the value is not supported, but that we
17466         should not return a failure, but instead report this as a
17467         successful operation.
17468
17469 2007-01-19  Raja R Harinath  <rharinath@novell.com>
17470
17471         Fix tests/bug79956.2.il
17472         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
17473         (mono_generic_class_get_class): If the generic definition in an
17474         enum, copy over other fields related to it.
17475
17476 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
17477
17478         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
17479         genericinst enums (bug #79215).
17480
17481 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
17482         * class.c: Fix bug 80307.
17483
17484 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
17485
17486         * image.c: if the file table is not present, try to load
17487         all the modules, since we don't have info about them
17488         having or not metadata (bug #80517).
17489         * assembly.c: allow mono_assembly_load_references () to
17490         work for netmodules.
17491
17492 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
17493
17494         * image.c, metadata-internals.h, object.c: execute module
17495         cctors when running on the 2 runtime if present (bug #80487).
17496
17497 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
17498
17499         * icall.c: optimized InitializeArray() on bigendian.
17500
17501 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
17502
17503         * icall.c: fix for the broken ARM FPA double format.
17504
17505 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
17506
17507         * icall.c: handle endian issues for r4 and r8 types, too, in
17508         the InitializeArray() icall.
17509
17510 2007-01-15  Miguel de Icaza  <miguel@novell.com>
17511
17512         * loader.c (mono_loader_error_prepare_exception): Clear the error
17513         once we have extracted the information from it, do this before we
17514         call into the JIT's class loading mechanisms.
17515
17516         * object.c (mono_class_create_runtime_vtable): Do not clear the
17517         loader error before calling mono_class_get_exception_for_failure
17518         as the loader error is needed inside
17519         mono_class_get_exception_for_failure to throw the error (thinko).
17520
17521         Fixes #80521
17522         
17523 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
17524
17525         * reflection.c: align fields rva data so it's faster to load at
17526         runtime.
17527
17528 2007-01-12  Raja R Harinath  <rharinath@novell.com>
17529
17530         Prepare to simplify GenericMethod handling.
17531         * class-internals.h (mono_method_get_context): New accessor function.
17532         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
17533         rather than directly accessing '->context' field.
17534
17535         * class-internals.h (_MonoGenericParam.method): Move ...
17536         (_MonoGenericContainer): ... here.  Add into union with klass field.
17537         * class.c, icall.c, loader.c, metadata.c, reflection.c:
17538         Update to changes.
17539
17540 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
17541
17542         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
17543         the wrapper type enum and reduce relocations.
17544
17545 2007-01-12  Raja R Harinath  <rharinath@novell.com>
17546
17547         * reflection.c (inflate_mono_method): Reuse method instantiation
17548         from the generic method, if available.
17549
17550 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17551
17552         * marshal.c (emit_marshal_variant): Fix conv_arg
17553         type in last commit, based on whether parameter is byref.
17554         
17555 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17556
17557         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
17558         marshalling.
17559         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
17560         MONO_TYPE_OBJECT back for VARIANT support.
17561
17562 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17563
17564         * marshal.c, marshal.h, icall-def.h: Implement 
17565         Marshal.ReAllocCoTaskMem.
17566
17567 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
17568
17569         * marshal.c: memory retention fixes: use the proper
17570         image cache for runtime_invoke method lookups.
17571
17572 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
17573
17574         * mempool.c: added code to help debug mempool allocations.
17575
17576 2007-01-11  Dick Porter  <dick@ximian.com>
17577
17578         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
17579         support (experimenting with faking it with IP_MTU_DISCOVER for
17580         systems that don't have IP_DONTFRAGMENT.)
17581         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
17582         icall.
17583
17584         * icall-def.h: new System.Net.Sockets.Disconnect icall.
17585
17586         * socket-io.h: Add new fields to MonoSocketAsyncResult
17587         corresponding to the new ones in Socket.cs.
17588
17589 2007-01-11  Raja R Harinath  <rharinath@novell.com>
17590
17591         Fix IronPython regression mentioned in #80249
17592         * metadata.c (do_mono_metadata_parse_generic_class): Clear
17593         'cached_context' field, since it may have been initialized as a
17594         side-effect of metadata parsing.
17595
17596         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
17597         (_MonoGenericClass.cached_class): Move here and rename from lone
17598         remaining field of ...
17599         (_MonoInflatedGenericClass): ... this.  Remove.
17600         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
17601         to changes.
17602
17603         Fix mcs/tests/test-128.cs regression.
17604         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
17605         2007-01-10 change below.
17606         [MONO_TYPE_OBJECT]: Recurse into array case.
17607
17608 2007-01-11  Raja R Harinath  <harinath@gmail.com>
17609
17610         * class-internals.h (mono_get_inflated_generic_class): Remove.
17611         * class.c (mono_get_inflated_generic_class): Remove.
17612         (mono_generic_class_get_class): Rename from
17613         mono_class_create_generic.
17614         (mono_class_from_mono_type) [GENERICINST]: Use it.
17615         * reflection.c, metadata.c: Update to changes.  Use
17616         'mono_class_from_mono_type'.
17617
17618 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
17619
17620         * reflection.c: use passed type when encoding an array element
17621         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
17622
17623 2007-01-09  Robert Jordan  <robertj@gmx.net>
17624
17625         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
17626         result arguments (someDelegate.EndInvoke (unrelatedAres)).
17627         Fixes bug #80392.
17628
17629 2007-01-09  Raja R Harinath  <rharinath@novell.com>
17630
17631         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
17632
17633         * object.c (set_value): Avoid aliasing between type->data.klass
17634         and type->data.generic_class.
17635
17636         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
17637
17638 2007-01-08  Raja R Harinath  <rharinath@novell.com>
17639
17640         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
17641         between type->data.klass and type->data.generic_class.
17642
17643 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
17644
17645         * marshal.c: In MS.NET, StringBuilder objects are not copied by
17646         value in out parameters.
17647
17648 2007-01-08  Raja R Harinath  <rharinath@novell.com>
17649
17650         Simplify invariant for MonoGenericClass::klass field.
17651         * class.c (mono_class_create_generic): Verify 'klass' is null.
17652         * metadata.c (do_mono_metadata_parse_generic_class): Don't
17653         initialize 'klass' field.
17654
17655 2007-01-05  Raja R Harinath  <rharinath@novell.com>
17656
17657         Ongoing work to avoid redundant data and simplify invariants.
17658         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
17659         'generic_class', and change type to a GenericInst.
17660         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
17661         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
17662
17663 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
17664
17665         * class.c : skip io-layer under PLATFORM_WIN32.
17666
17667 2007-01-03  Tor Lillqvist  <tml@novell.com>
17668
17669         Fix #80305: In a bundled executable, look in the bundled exe
17670         assembly to determine the runtime version. Add the possibility to
17671         bundle also the machine.config file.
17672         
17673         * assembly.c (mono_assembly_open_from_bundle): Make
17674         non-static. Allow being called even if we have no bundled
17675         assemblies, and return NULL right away in that case.
17676
17677         * domain-internals.h: Declare mono_assembly_open_from_bundle()
17678         here.
17679
17680         * domain.c (app_config_parse): Take an assembly exe file name as
17681         parameter instead of a config file name. Check for a bundled
17682         config file for that assembly by calling
17683         mono_config_string_for_assembly_file() (see below) before looking
17684         for one in the file system.
17685         (get_runtimes_from_exe): Corrsponding change to call of
17686         app_config_parse().
17687         (get_runtimes_from_exe): Check for bundled assembly exe file first
17688         by calling mono_assembly_open_from_bundle(). If no bundled
17689         assembly exe file is found, call mono_image_open() as before to
17690         look it up in the file system.
17691
17692         * mono-config.c: Add variable bundled_machinec_onfig.
17693         (mono_config_string_for_assembly_file): New function.
17694         (mono_config_for_assembly): Move code snippet that looks for a
17695         bundled assembly .config file into the above new function. Call
17696         it.
17697         (mono_register_machine_config, mono_get_machine_config): New
17698         functions to set and retrieve
17699
17700         * assembly.h: Declare mono_register_machine_config().
17701
17702         * mono-config.h: Declare mono_get_machine_config() and
17703         mono_config_string_for_assembly_file().
17704
17705         * icall.c: No declaration of environ necessary on Win32. It is
17706         declared (as a macro expanding to a function call) in stdlib.h.
17707         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
17708         New internal mono function. Returns the value of
17709         mono_get_machine_config() as a Mono string.
17710
17711         * icall-def.h: Add get_bundled_machine_config().
17712
17713 2007-01-04  Raja R Harinath  <rharinath@novell.com>
17714
17715         Remove redundant field
17716         * class-internals.h (_MonoGenericContext.container): Remove field.
17717         * loader.c (mono_method_get_signature_full): Don't parse a
17718         "container" for a signature parse when the signature is inflated
17719         immediately.
17720         (method_from_methodspec): Likewise, for a generic_inst.
17721         * class.c, metadata.c, reflection.c: Update to changes.
17722
17723 2006-01-04  Raja R Harinath  <rharinath@novell.com>
17724
17725         * class-internals.h (_MonoGenericClass): Rename 'context' field to
17726         'cached_context', and change semantics -- it starts off NULL, and
17727         is initialized on demand.
17728         * class.c (mono_generic_class_get_context): New accessor to
17729         replace 'context' field accesses.
17730         (mono_class_get_context): New helper.
17731         (*): Update to changes.
17732         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
17733
17734 2007-01-03  Miguel de Icaza  <miguel@novell.com>
17735
17736         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
17737         before the memcpy.   Fixes Marshal2 regression.
17738
17739 2007-01-02  Jb Evain  <jbevain@gmail.com>
17740
17741         * blob.h: add a MONO_TYPE_ENUM definition
17742         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
17743         fix the encoding of arrays of enums in custom attributes.
17744
17745         Fixes #79666.
17746
17747 2007-01-01  Miguel de Icaza  <miguel@novell.com>
17748
17749         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
17750         string is null terminated, but only cut the string short if it
17751         overflows the buffer.   
17752         
17753         (mono_string_to_byvalstr): Also fix this routine.   The code here
17754         was not properly terminating a string (it was only terminated
17755         because of the previous catch-all memset). 
17756
17757         I left the memset, because I do not know if applications expect
17758         the runtime to clear this region. 
17759
17760         Fixes #79944.
17761
17762         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
17763         Clear the error before returning to unmanaged code to prevent the
17764         runtime from being confused later on (fixes  80420).
17765         (ves_icall_type_from_name): Always call mono_loader_clear_error
17766         after parsing a type that could have failed.
17767         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
17768
17769         * loader.c (mono_loader_clear_error): Fix indentation.
17770
17771 2006-12-28  Martin Baulig  <martin@ximian.com>
17772
17773         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
17774
17775 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17776
17777         * reflection.c: patch from Rolf Bjarne Kvinge to fix
17778         getting a token for an EnumBuilder.
17779
17780 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
17781
17782         * reflection.c: be more careful in case resource generation
17783         fails to create the data array.
17784
17785 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
17786
17787         * sgen-gc.c: write barrier for clone and fix unregister handles.
17788
17789 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17790
17791         * reflection.c: some fixes needed in the generics code for the moving GC.
17792
17793 2006-12-22  Robert Jordan  <robertj@gmx.net>
17794
17795         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
17796         account. Fixes bug #80299.
17797
17798 2006-12-21  Raja R Harinath  <rharinath@novell.com>
17799
17800         Fix WaitHandle usage in delegates.
17801         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
17802         * object.c (mono_wait_handle_new): Use the property set method to
17803         initialize the handle.
17804         (mono_wait_handle_get_handle): New.
17805         * threadpool.c (mono_async_invoke): Use it.
17806         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
17807         Likewise.
17808         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
17809
17810 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
17811
17812         * marshal.c (emit_marshal): Call emit_marshal_variant and
17813         emit_marshal_com_interface when applicable.
17814         (emit_marshal_variant, emit_marshal_com_interface): Add
17815         methods for this case and remove if's from emit_marshal_object.
17816         
17817 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
17818
17819         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
17820
17821 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
17822
17823         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
17824         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
17825         and GlobalFree on Windows. Remove FIXME.
17826
17827 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17828
17829         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
17830         implementation for managed objects.
17831
17832 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
17833
17834         * object.c: implemented code to be used for checking
17835         that no reference field overlaps with non-references.
17836
17837 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
17838
17839         * threadpool.c: fix queue code to be compatible with the
17840         moving GC.
17841
17842 2006-12-18  Miguel de Icaza  <miguel@novell.com>
17843
17844         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
17845         in structures by throwing ArgumentNullException.
17846
17847         (emit_marshal_safehandle): Also when they are null parameters.
17848
17849         (emit_marshal_safehandle): Add support for ref
17850         SafeHandles parameters
17851
17852 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
17853
17854         * profiler.c: updated to use the mono-dl API instead of
17855         gmodule.
17856
17857 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
17858
17859         * profiler.c: updated to use the mono-dl dynamic loading
17860         API instead of gmodule.
17861
17862 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17863
17864         * profiler.c: use readlink, older versions of glib don't have
17865         g_file_read_link ().
17866
17867 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
17868
17869         * profiler.c: try to detect the path to mono if libc fails to provide
17870         a useful name (bug #80286).
17871
17872 2006-12-16  Raja R Harinath  <rharinath@novell.com>
17873
17874         Fix #80242
17875         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
17876         instance, use the generic type definition instead.
17877         (ves_icall_Type_GetNestedTypes): Likewise.
17878         * class.c (mono_class_create_generic): Always set the
17879         nested_classes of a generic instance to NULL, even if the generic
17880         type definition has nested types.
17881
17882 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
17883
17884         * marshal.c (mono_string_from_bstr): Revert previous Windows change
17885         and fix on Linux.
17886         
17887 2006-12-15  Miguel de Icaza  <miguel@novell.com>
17888
17889         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
17890         my arguments were in the wrong order.   I also fixed the Windows
17891         version which seems to have had the same issue.
17892
17893         (mono_free_bstr): On Unix, this is g_free.
17894         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
17895         conversions (for the tests in corlib to pass).
17896
17897 2006-12-14  Miguel de Icaza  <miguel@novell.com>
17898
17899         * marshal.c (emit_ptr_to_object_conv): For now, ignore
17900         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
17901         exception if a ref SafeHandle in a struct has changed).
17902         
17903         (emit_struct_conv): Do not perform layout checks for classes
17904         derived from SafeHandle, as those are specially handled. 
17905
17906         (emit_object_to_ptr_conv): Add support for
17907         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
17908
17909         (emit_marshal_safehandle): Implement conversion of return values
17910         of safehandles (MARSHAL_ACTION_CONV_RESULT).
17911         
17912         * threads.c: WaitHandle now is compiled with two different handles
17913         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
17914         for 2.0.
17915         
17916         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
17917         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
17918         these routines to cope with both kinds of fields.
17919
17920 2006-12-12  Miguel de Icaza  <miguel@novell.com>
17921
17922         * metadata.c (mono_type_to_unmanaged): Handle the case where
17923         type->data.klass is a SafeHandle, and in that case, return the
17924         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
17925         MONO_MARSHAL_CONV_SAFEHANDLE. 
17926
17927 2006-12-11  Miguel de Icaza  <miguel@novell.com>
17928
17929         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
17930         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
17931         calling emit_marshal_object.
17932
17933         (emit_marshal_safehandle): Implement marshalling of
17934         SafeHandle parameters (no ref support yet).
17935
17936         (MarshalAction): Document the defines as I implement
17937         them for SafeHandle.
17938
17939         (emit_marshal_object): indentation police.
17940
17941         * class-internals.h: Define MonoSafeHandle.
17942         Add safehandle_class to MonoDefaults type.
17943
17944         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
17945         list of classes to check for fields. 
17946
17947         * domain.c (mono_init_internal): Add SafeHandle to the list of
17948         mono_defaults loaded.
17949
17950 2006-12-15  Raja R Harinath  <rharinath@novell.com>
17951
17952         Fix #80253
17953         * reflection.c (mono_reflection_bind_generic_parameters): If the
17954         generic type definition is a type builder, ensure that it is fully
17955         initialized before instantiating it.  Kill some dead code.
17956
17957 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17958
17959         * object.c: clear the loader_error () before loading
17960         more metadata stuff (bug #80258).
17961
17962 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
17963
17964         * icall.c, icall-defs.h: type modifiers icalls for
17965         parameters and properties.
17966
17967 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
17968
17969         * object.c, icall.c: fixed warnings.
17970
17971 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
17972
17973         * marshal.c: fixed a couple of leaks and coding style in a few places.
17974
17975 2006-12-08  Dick Porter  <dick@ximian.com>
17976
17977         * process.c: Cope with NULL ProcessStartInfo arguments on windows
17978         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
17979         80173.
17980
17981 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
17982
17983         * process.c: ProcessStartInfo may have only filename set and
17984         arguments can be NULL.
17985
17986 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
17987
17988         * icall.c: fix leak found by Robert Jordan.
17989
17990 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
17991
17992         * marshal.c, marshal.h: generate managed method to access an element
17993         of a multi-dimensional array.
17994
17995 2006-11-30  Paolo Molaro (lupus@ximian.com)
17996
17997         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
17998
17999 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
18000
18001         * icall.c: back out GetFields () fix until the serialization code is
18002         fixed to not depend on the incorrect behaviour.
18003
18004 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
18005
18006         * profiler.c: provide defaults if none are set.
18007
18008 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
18009
18010         * Makefile.am, attrdefs.h: new public header file with
18011         constants for attributes for use by embedders.
18012
18013 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18014
18015         * icall.c: GetFields () fix for bug #80064.
18016
18017 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
18018
18019         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
18020         removed long unused icalls.
18021
18022 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
18023   
18024         * marshal.c: 
18025                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
18026                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
18027                 can be generated without a delegate class.
18028                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
18029         
18030         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
18031
18032 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18033
18034         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
18035         #80069.
18036
18037 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
18038
18039         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
18040         icall-def.h: added icalls needed by System.GC.
18041
18042 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
18043
18044         * loader.c: ensure the class in catch clauses is handled
18045         correctly for generics methods (fixes bug#79980).
18046
18047 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
18048
18049         * monitor.h, monitor.c: added mono_locks_dump () function
18050         to help debug deadlocks involving managed locks.
18051
18052 2006-11-13  Dick Porter  <dick@ximian.com>
18053
18054         * file-io.c (get_file_attributes): If the file is a symlink try
18055         and get the stat data for the target, but also add the
18056         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
18057         the specs for the windows symlink support, but will probably have
18058         to be reworked when I have test data from a vista machine.  Fixes
18059         bug 79887.
18060
18061 2006-11-13  Dick Porter  <dick@ximian.com>
18062
18063         * gc.c (mono_domain_finalize): 
18064         * marshal.c (mono_delegate_begin_invoke): 
18065         * threadpool.c (socket_io_init, mono_thread_pool_init)
18066         (mono_thread_pool_finish): 
18067         * monitor.c (mono_monitor_try_enter_internal): 
18068         * threads.c (mono_thread_resume, mono_thread_init)
18069         (mono_thread_suspend_all_other_threads)
18070         (mono_thread_execute_interruption): 
18071         * appdomain.c (mono_domain_unload): Check for NULL error returns
18072         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
18073         75733.
18074
18075 2006-11-11  Miguel de Icaza  <miguel@novell.com>
18076
18077         * process.c
18078         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
18079         Only close the handle if the value of the handle is not
18080         INVALID_HANDLE_VALUE.  This just makes the process a bit more
18081         robust.
18082
18083         Improvement for #75733, so that we do not run into this problem. 
18084
18085         
18086         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
18087         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
18088         internal variables.  Fixes #79462 
18089         
18090
18091 2006-11-09  Dick Porter  <dick@ximian.com>
18092
18093         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
18094         Use poll() not select().  Fixes bug 79397.
18095
18096 2006-11-09  Raja R Harinath  <rharinath@novell.com>
18097
18098         Fix #79872
18099         * assembly.c (mono_assembly_load_from_full): Check that the given
18100         image has an assembly manifest.
18101
18102 2006-11-09  Ankit Jain  <jankit@novell.com>
18103
18104         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
18105         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
18106         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
18107
18108 2006-11-07  Dick Porter  <dick@ximian.com>
18109
18110         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
18111         Put the old resolver behaviour back for pre-2.0 profiles.
18112
18113 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
18114
18115         * threadpool.c: precise GC and locking fixes.
18116
18117 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
18118
18119         * class.c: don't load types that have an explicit unaligned
18120         managed reference. Provide better info in the TypeLoad exception.
18121         Part of the fix for bug #79744.
18122         * object.c: use the correct check for class type load issues.
18123
18124 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
18125
18126         * class.c: enforce alignment of fields with managed references
18127         even when Pack=1 is forced by the user (bug #77788).
18128
18129 2006-11-03  Dick Porter  <dick@ximian.com>
18130
18131         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
18132         If the address reverse lookup fails, return it as the hostname
18133         anyway.  Fixes bug 79721.
18134
18135 2006-11-03  Dick Porter  <dick@ximian.com>
18136
18137         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
18138         Fix build on Windows.
18139
18140 2006-11-02  Dick Porter  <dick@ximian.com>
18141
18142         * icall-def.h: 
18143         * object-internals.h: 
18144         * exception.c (mono_get_exception_thread_interrupted): 
18145         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
18146         Fixes bug 74525.
18147
18148         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
18149         Check for pending Thread.Interrupt.
18150
18151 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
18152         * loader.c: Fixed bug 79684.
18153
18154 2006-10-27  Dick Porter  <dick@ximian.com>
18155
18156         * file-io.c (get_file_attributes): Force symlinks to directories
18157         to be returned as a regular file.  Fixes bug 79733.
18158 2006-10-26  Dick Porter  <dick@ximian.com>
18159
18160         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
18161         CreateFile to open a directory then we need to set the
18162         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
18163
18164 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
18165
18166         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
18167         friends.
18168
18169 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18170
18171         * sgengc.c: small cleanup of timer code.
18172
18173 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
18174
18175         * sgen-gc.c: fix some warnings and start adding support for
18176         complete object removal on domain unload.
18177
18178 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
18179
18180         * assembly.c: build_assembly_name should not consider a version
18181         number without build or revision number invalid. Fixes bug #79715.
18182
18183 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
18184
18185         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
18186         call kernel32 function OutputDebugString directly.
18187         
18188         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
18189         
18190 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
18191
18192         * reflection.c: small cleanup, using a function to insert a MonoString
18193         in the string heap.
18194
18195 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
18196
18197         * reflection.c: moving GC fixes.
18198
18199 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
18200
18201         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
18202         all the objects with finalizers belonging to an unloading appdomain.
18203
18204 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
18205
18206         * sgen-gc.c: added ability to allocate even when the nursery is fully
18207         pinned and fixed a couple of bugs.
18208
18209 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
18210
18211         * threads.h: Revert the last change for now.
18212
18213         * threads.h (mono_thread_get_pending_exception): Rename this to
18214         mono_thread_get_undeniable_exception ().
18215
18216 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
18217
18218         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
18219         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
18220         when fname does not refer to valid assembly. This result in a more
18221         meaningful error message.
18222         * exception.c: added mono_get_exception_bad_image_format2 which 
18223         constructs a BadImageFormatException using the ctor taking a custom
18224         message and the file name. Passing in a NULL msg results in a default
18225         message.
18226         * exception.h: define mono_get_exception_bad_image_format2 function.
18227         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
18228         when file name pointed to an invalid IL image. Use 
18229         mono_get_exception_file_not_found2 to construct FileNotFoundException,
18230         as this results in a more meaningful error message.
18231
18232 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
18233
18234         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
18235         #79465.
18236
18237 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
18238
18239         * metadata.c (mono_type_size): Change the align parameter to guint32 for
18240         consistency with the other _size functions.
18241         (mono_type_stack_size): Ditto.
18242
18243         * class.c object.c icall.c: Fix warnings caused by the above change.
18244
18245         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
18246
18247         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
18248
18249         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
18250
18251 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
18252
18253         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
18254         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
18255         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
18256         threadpool.h, threads-types.h: mark more internal functions.
18257
18258 2006-10-11  Dick Porter  <dick@ximian.com>
18259
18260         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
18261         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
18262         reproduce the bug even before applying the fix.)
18263
18264 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
18265
18266         * reflection.c: allow retrieving attributes for arguments in generic
18267         methods (bug #79241).
18268
18269 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
18270
18271         * debug-mono-symfile.c: properly check fopen () result (found by
18272         coverity).
18273
18274 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
18275
18276         * reflection.c: make error message clearer and fixed two
18277         issuelets found by Coverity.
18278
18279 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
18280
18281         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
18282
18283 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
18284
18285         * object-internals.h, gc-internal.h, profiler-private.h:
18286         mark internal functions.
18287
18288 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
18289
18290         * reflection.c: put data in the text section.
18291         * icall.c: recognize more types in type_from_typename ().
18292         * process.c, marshal.c: added some GC FIXMEs.
18293
18294 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
18295
18296         * loader.c: check for NULL before initializing.
18297
18298 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
18299
18300         * gc.c (finalizer_thread): Use a non-alertable wait here.
18301
18302         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
18303         until the correct solution is found.
18304
18305 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
18306
18307         * reflection.c (mono_module_get_object): Avoid an assert when operating on
18308         modules with no metadata. Fixes #79596.
18309
18310         * image.c (load_metadata_ptrs): Put back the error message when
18311         the #- heap is encountered since the support is not complete yet.
18312
18313 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
18314
18315         * gc.c: do not allow the user to SuppressFinalize () a
18316         delegate because it would leak the trampoline if present.
18317
18318 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
18319
18320         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
18321         PropertyPtr table.
18322
18323 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
18324
18325         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
18326
18327         * metadata.c (mono_metadata_get_param_attrs): Ditto.
18328
18329         * row-indexes.h: Add definitions for *Ptr tables.
18330
18331         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
18332
18333         * metadata.c (mono_metadata_translate_token_index): New helper function to
18334         translate table indexes used in uncompressed metadata.
18335         (mono_metadata_decode_table_row): Ditto.
18336         (mono_metadata_decode_table_row_col): Ditto.
18337
18338         * metadata.c: Add table schema for *Ptr tables.
18339
18340         * class.c loader.c: Use the new helper function to access the affected metadata
18341         tables.
18342         
18343         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
18344         #38532.
18345         
18346 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
18347
18348         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
18349         sequences which can be unbounded in size. Fixes #79583.
18350
18351 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
18352
18353         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
18354         static initialization.
18355
18356         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
18357
18358         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
18359
18360         * domain.c (mono_domain_free): Free up type_init_exception_hash.
18361
18362         * object.c (mono_runtime_class_init): Implement correct semantics when a static
18363         ctor fails, i.e. throw the same exception on subsequent accesses.
18364         
18365 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
18366
18367         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
18368         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
18369         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
18370         Handle marshalling of interfaces and VARIANTs contained in structs.
18371         
18372         Code is contributed under MIT/X11 license.
18373         
18374 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
18375
18376         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
18377         
18378         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
18379         mempool.
18380
18381 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18382
18383         * console-io.c: ignore previous SIGINT handler.
18384
18385 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
18386
18387         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
18388         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
18389         #79460, #79461, #79485.
18390
18391         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
18392
18393         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
18394         #79217.
18395
18396 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
18397
18398         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
18399         could be generated from it.
18400
18401 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
18402
18403         * rand.c: fix read loop to correctly handle EINTR.
18404
18405 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18406
18407         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
18408         internal calls are defined to keep methods closer to the declaring
18409         type and allow a significant reduction in runtime relocations and
18410         memory usage.
18411
18412 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
18413
18414         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
18415         exception message to have FileNotFoundException use the default
18416         assembly load error message. Fixes bug #79426.
18417         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
18418
18419 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18420
18421         * threadpool.c: (start_thread_or_queue) use the root domain when
18422         creating the thread instead of the async object one.
18423
18424 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
18425
18426         * class.c, object.c, class-internals.h, reflection.c:
18427         for arrays, store element_size inside MonoClass (speedup
18428         for array object creation).
18429
18430 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
18431
18432         * icall.c: fixed CodeBase to use the file name and not the module
18433         name (bug #79365).
18434
18435 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
18436
18437         * mono-debug.c, mono-debug.h: export find_method as
18438         mono_debug_find_method ().
18439
18440 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18441
18442         * debug-helpers.c, class-internals.h: added a few functions useful
18443         when debugging under gdb.
18444
18445 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18446
18447         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
18448         characters that need special handling.
18449
18450 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
18451
18452         * mono-config.c: make the os/cpu specification more flexible,
18453         allowing lists and negation.
18454
18455 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
18456
18457         * marshal.c: COM Interop fixes. Handle case where method->klass.
18458         is interface. Handle BSTR/MonoString when null. Use CDECL as 
18459         calling convention on non-windows platforms. This is for
18460         compatibility with XPCOM and MainWin COM.
18461         
18462         Code is contributed under MIT/X11 license.
18463         
18464
18465 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
18466
18467         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
18468         correctly. Fixes #79217.
18469
18470         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
18471
18472 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
18473
18474         * mono-config.c: allow both an os and cpu attribute for dllmap
18475         and dllentry elemnets to enable a single config file to be used
18476         for multiple architectures.
18477
18478 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
18479
18480         * loader.c: MonoLoaderError was cleared too soon on load failure.
18481         Fixes bug #79424.
18482
18483 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
18484
18485         * icall.c: use the defining class vtable when accessing a
18486         static field, not a pobblibly derived class.
18487
18488 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
18489
18490         * icall.c string-icalls.c: Remove references to unicode.h.
18491
18492         * unicode.h unicode.c Makefile.am: Remove these unused source files.
18493
18494         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
18495
18496         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
18497         indicating the image where custom marshaller types should be looked up.
18498         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
18499         custom marshallers, instead of corlib. Fixes #79425.
18500
18501 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
18502
18503         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
18504
18505 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
18506
18507         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
18508         Implement Environment.ProcessorCount.
18509         
18510         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
18511         Implement Environment.ProcessorCount.
18512         
18513         * icall.c: 
18514         Add Environment.ProcessorCount icall.
18515         
18516         Patch by Jason McFall.
18517
18518 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18519
18520         * assembly.c: don't append .exe/.dll when the filename already contains
18521         one of those extensions.
18522
18523 2006-09-12  Martin Baulig  <martin@ximian.com>
18524
18525         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
18526         to array interfaces.
18527
18528 2006-09-11  Martin Baulig  <martin@ximian.com>
18529
18530         * reflection.c (mono_image_build_metadata): Create the
18531         MethodImpl's after emitting all types and methods, so we don't
18532         need another fixup pass for them.
18533
18534 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
18535
18536         * class.c (mono_class_from_name_case): Fix regression introduced by the last
18537         change.
18538
18539 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
18540
18541         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
18542         unload.
18543
18544 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
18545
18546         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
18547         args is not set. Fixes #78926.
18548
18549 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
18550
18551         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
18552
18553         * image.c (load_class_names): Move this to class.c, and rename it to 
18554         'mono_image_init_name_cache'.
18555         (load_modules): Fix a warning.
18556
18557         * class.c icall.c image.c: Initialize image->name_cache lazily.
18558
18559         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
18560         on its name using information in the AOT file.
18561
18562         * class.c (mono_class_from_name): Use the new hook function.
18563
18564 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
18565
18566         * reflection.c (mono_param_get_objects): Handle enum default parameter values
18567         correctly.
18568
18569         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
18570         Fixes #79289.
18571         
18572 2006-09-06  Martin Baulig  <martin@ximian.com>
18573
18574         * icall.c (mono_lookup_internal_call): Small fix.
18575
18576 2006-09-05  Raja R Harinath  <rharinath@novell.com>
18577
18578         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
18579         double g_free.
18580
18581 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
18582
18583         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
18584         when --debug is specified.
18585
18586 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
18587
18588         * class.c (setup_generic_array_ifaces): Fix a warning.
18589
18590 2006-09-04  Miguel de Icaza  <miguel@novell.com>
18591
18592         * Temporarily remove the patch to assemly.c that checks the
18593         assembly versions as it breaks our gacutil.
18594
18595 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
18596
18597         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
18598
18599         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
18600         a net 1.0 runtime.
18601
18602         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
18603         created using the default ctor. Fixes #79152.
18604         (mono_string_builder_to_utf16): Ditto.
18605
18606 2006-09-01  Martin Baulig  <martin@ximian.com>
18607
18608         Fix handling of the generic array interfaces.
18609
18610         * class-internals.h
18611         (MonoDefaults): Removed `generic_array_class' and added
18612         `generic_ilist' class.
18613
18614         * class.c
18615         (mono_bounded_array_class_get): Add the new generic array interfaces.
18616         (setup_generic_array_ifaces): New static method; create vtable
18617         entries for each method in the generic array interfaces.
18618
18619         * metadata.c
18620         (select_container): Allow "parent-less" generic methods.
18621
18622         * marshal.c
18623         (mono_marshal_get_generic_array_helper): New public method.
18624
18625         * icall.c
18626         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
18627         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
18628         moved the interncall into System.Array.
18629
18630 2006-09-01  Raja R Harinath  <rharinath@novell.com>
18631
18632         A few more cases of avoiding work on types with ->byref set.
18633         Has the real fix for #79238
18634         * icall.c (is_generic_parameter): New helper.
18635         (ves_icall_Type_GetGenericParameterPosition): Use it.
18636         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
18637         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
18638         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
18639         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
18640         reference types.
18641         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
18642         reference types.
18643         (ves_icall_Type_get_IsGenericInstance): Likewise.
18644         (ves_icall_Type_get_IsGenericType): Likewise.
18645
18646 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
18647
18648         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
18649         class if possible.
18650
18651         * mempool.h (mono_mempool_get_allocated): New helper function.
18652
18653         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
18654         change.
18655
18656         * mempool.c: Fix warnings and the calculation of stats.
18657
18658         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
18659
18660         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
18661
18662         * loader.c (mono_get_method_from_token): Update method_count stat.
18663
18664         * class-internals.h (MonoStats): Add some stats.
18665
18666 2006-08-31 Robert Jordan  <robertj@gmx.net>
18667
18668         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
18669         with managed variants.
18670         All code is contributed under the MIT/X11 license.
18671         
18672 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
18673
18674         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
18675         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
18676
18677         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
18678
18679         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
18680         with cycles in classes.
18681
18682         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
18683
18684         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
18685         missing a [MarshalAs] directive. Fixes #79203.
18686
18687         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
18688         klass->marshal_info. Fixes #79217.
18689
18690 2006-08-30  Martin Baulig  <martin@ximian.com>
18691
18692         Committing a patch from Joachim Ante <joe@otee.dk>:
18693         Add support for binary data symbol stores.
18694
18695         * debug-mono-symfile.c
18696         (mono_debug_open_mono_symbol_file): Renamed into
18697         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
18698         arguments.
18699
18700         * mono-debug.c
18701         (mono_debug_open_image): Added `raw_contents' and `size' args.
18702         (mono_debug_init_2_memory): New public function.
18703
18704 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
18705
18706         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
18707
18708 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18709
18710         * appdomain.c: implement support for ShadowCopyFiles.
18711
18712 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
18713
18714         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
18715         when value is NULL (and should remove CID #51).
18716
18717 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18718
18719         * image.c: moved 2 functions to ../utils.
18720
18721 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
18722
18723         * gc.c: cope with the target object of a GC handle being NULL
18724         (bug #78877).
18725
18726 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
18727
18728         * class.c: recursively check parent's explicit implementations
18729         of interface methods (fixes bug #79125).
18730
18731 2006-08-19  Miguel de Icaza  <miguel@novell.com>
18732
18733         * filewatcher.c: Avoid warnings when building, do not redefine
18734         constants that are defined.
18735
18736         Remove warnings.
18737
18738 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18739
18740         * image.c: don't fail when the link points to an absolute path.
18741
18742 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
18743
18744         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
18745         Fix CID #3.
18746
18747 2006-08-17  Miguel de Icaza  <miguel@novell.com>
18748
18749         * image.c (full_path): A new method used to obtain the actual path
18750         of an assembly even in the presence of symbolic links.  
18751
18752         This is necessary for the case where we are running a binary that
18753         has been GACed, but we are using the "published" path name
18754         ($prefix/mono/1.0/blah.exe) which happens to point to the real
18755         file in the GAC.
18756
18757         This was the source of the failure for the `xsp' command with the
18758         recent AppDomain changes, as far as the runtime was concerned,
18759         there were two different assemblies: $prefix/mono/1.0/blah.exe and
18760         $prefix/mono/gac/blah/version/blah.exe.
18761
18762         (do_mono_image_open): use full path
18763
18764 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18765
18766         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
18767
18768 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
18769
18770         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
18771         domain_id is supplied. Fix CID #241 and corlib's unit tests.
18772
18773 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18774
18775         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
18776         small structures. Fixes #78990.
18777
18778 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18779
18780         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
18781
18782         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
18783
18784 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18785
18786         * appdomain.c:
18787         * marshal.c: don't load all the assemblies from a domain into newly
18788         created ones. The new domains might have different rules and load
18789         assemblies from different locations. Fixes bug #76757.
18790
18791         Patch by Lluis. Conflicts resolved by Brian Crowell.
18792
18793 2006-08-16  Alp Toker  <alp@atoker.com>
18794
18795         * socket-io.c: First half of the fix for #79084.
18796         Set sa_size to the length of the content, not that of the struct.
18797         Don't add NULL suffix to the content, this should be done in
18798         managed code if needed.
18799
18800 2006-08-14  Raja R Harinath  <rharinath@novell.com>
18801
18802         Fix part of #79012
18803         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
18804         mono_metadata_parse_type returns NULL.
18805
18806 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
18807
18808         * normalization-tables.h : new file for string normalization data.
18809         * locales.c, locales.h, icall.c :
18810           added load_normalization_resource() for string normalization,
18811           and icall as well.
18812         * Makefile.am : added normalization-tables.h to the sources.
18813
18814 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
18815
18816         * marshal.c: Add more helper functions to reduce code duplication and use them
18817         everywhere.
18818
18819 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
18820
18821         * marshal.c: Fix non-x86 stdcall warnings.
18822         
18823         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
18824         them everywhere.
18825
18826 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
18827
18828         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
18829         type check on multi-dimensional arrays. Fixes #79000.
18830
18831 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
18832
18833         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
18834         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
18835         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
18836         * class-internals.h: add is_com_object to class structure.
18837         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
18838         null checks to COM object marshalling. Fix .ctor call on RCW.
18839         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
18840         
18841         All code is contributed under the MIT/X11 license.
18842
18843 2006-08-09  Dick Porter  <dick@ximian.com>
18844
18845         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
18846         racing mono_monitor_allocator_lock() somewhere, so don't delete
18847         the critical section for now.  Found by running and exiting
18848         monodevelop.
18849
18850 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
18851
18852         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
18853         (ves_icall_System_ComObject_FindInterface): Ditto.
18854         (ves_icall_System_ComObject_CacheInterface): Ditto.
18855
18856         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
18857         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
18858
18859 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18860
18861         * threadpool.c: treat pipes from process asynchronous reads as sockets
18862         when reading from them, so we get select/poll or epoll to wait for
18863         data.
18864
18865 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
18866
18867         * loader.c: Fix a typo (CID #233) in the null check.
18868
18869 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
18870
18871         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
18872         Hopefully fixes #78949.
18873         
18874         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
18875         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
18876         bytes. Fixes #78972.
18877
18878 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18879
18880         * filewatcher.c: we need to set errno here.
18881
18882 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18883
18884         * filewatcher.c: let Win32Exception get the error value.
18885
18886 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18887
18888         * filewatcher.c: translate errno into win32 errors for Win32Exception
18889         to know what happened.
18890
18891 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
18892
18893         * threadpool.c: Fix more warnings.
18894
18895         * assembly.c (search_loaded): Fix warnings.
18896
18897         * threadpool.c (mono_thread_pool_finish): Fix warnings.
18898         (mono_async_invoke): Ditto.
18899
18900 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
18901
18902         * object.c (mono_remote_class_vtable): Need to create proxy vtable
18903         entries for __ComObject type in addition to ComImport types.
18904         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
18905         about hash table.
18906         
18907         All code is contributed under the MIT/X11 license.
18908
18909 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
18910
18911         * image.c: avoid tentative loading of modulerefs that contain
18912         no metadata (P/Invoke library names).
18913
18914 2006-07-28  Dick Porter  <dick@ximian.com>
18915
18916         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
18917         mono_loader_lock() somewhere, so don't delete the critical section
18918         for now.  Found by running and exiting monodevelop.
18919
18920 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18921
18922         * filewatcher.c: define the inotify syscalls when we're building on
18923         linux and have sys/syscall.h. The build system might not have support
18924         for inotify but the target system might have it.
18925
18926 2006-07-26  Miguel de Icaza  <miguel@novell.com>
18927
18928         * domain.c: Documentation updates.
18929
18930         * loader.c (mono_free_method): Do not release the method
18931         information if we are being profiled, as profilers will use this
18932         information at shut down to present some data to the user.
18933
18934         This is needed so that the profiler does not crash, as the
18935         profiler tends to keep MonoMethods around, and they might become
18936         invalid if we free these.
18937
18938         (mono_get_method_constrained): Return the original CIL stream
18939         method as well, so verification can be performed against it.
18940
18941 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18942
18943         * filewatcher.[ch]: support for inotify file system watcher.
18944         * icall.c: add new internal calls for the inotify file system watcher.
18945
18946 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18947
18948         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
18949         #78888.
18950
18951 2006-07-20  Dick Porter  <dick@ximian.com>
18952
18953         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
18954         warning.
18955
18956 2006-07-20  Dick Porter  <dick@ximian.com>
18957
18958         * threads.c (start_wrapper): Do the thread cleanup while we still
18959         hold a reference to its object.  Fixes bug 78123.
18960
18961 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
18962
18963         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
18964         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
18965           "managed-to-managed".
18966         * icall.c: Redirect string constructors that take sbyte* to
18967           ves_icall_System_String_ctor_RedirectToCreateString.
18968         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
18969           to CreateString () methods with matching signature.
18970         * reflection.c: Use original security informations for
18971           MONO_WRAPPER_MANAGED_TO_MANAGED.
18972         * security-manager.c: Use original security informations for
18973           MONO_WRAPPER_MANAGED_TO_MANAGED.
18974         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
18975           that is a placeholder and only its address should be used.
18976         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
18977           that is a placeholder and only its address should be used.
18978
18979 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
18980
18981         Begin implementing COM Interop.
18982         * appdomain.c: Increment corlib version.
18983         * class.c: Set ComImport classes' parent to __ComObject.
18984         * loader.c: Mark cominterop methods as such.
18985         * domain.c: Add __ComObject class to MonoDefaults structure.
18986         * image.c: Add 2 hashtables to the image for COM Interop related methods
18987         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
18988         using the mempool allocator
18989         
18990         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
18991         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
18992         declaration for mono_metadata_type_dup_mp.
18993         
18994         * debug-helpers.c: Added strings for two additional wrapper types
18995         * object.c: Create proxy objects for ComImport classes
18996         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
18997         and added __ComObject class to MonoDefaults structure.
18998         
18999         * object-internals.h: Finish MonoRealProxy definition, and add definition of
19000         MonoComInteropProxy and MonoComObject.
19001         
19002         * marshal.c: Added support for COM Interop
19003         (signature_cominterop): Converts managed signature to corresponding
19004         unmanaged COM signature.
19005         (cominterop_get_function_pointer): gets unmanaged function pointer via
19006         COM object vtable
19007         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
19008         (cominterop_get_method_interface): returns interface type that method is defined on
19009         (mono_mb_emit_cominterop_call): emits native call to function pointer
19010         gotten from vtable
19011         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
19012         that matches signature of unmanaged function.
19013         (cominterop_get_native_wrapper): wrapper around adjusted method call.
19014         (cominterop_get_invoke): forwards call from proxy to __ComObject
19015         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
19016         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
19017         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
19018         
19019         * marshal.h: Added Marshal icall declarations.
19020         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
19021         so we can access them in finalizer
19022         
19023 2006-07-14  Dick Porter  <dick@ximian.com>
19024
19025         * object.c (mono_type_initialization_cleanup): Fix a race
19026         condition by temporarily commenting out the critical section
19027         deletion.
19028
19029 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
19030
19031         * reflection.c (create_custom_attr): Fix some warnings.
19032         (create_custom_attr_data): Ditto.
19033         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
19034         types. Fixes #78855.
19035
19036 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
19037
19038         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
19039
19040         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
19041
19042 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
19043
19044         * reflection.c (resolve_object): Add support for DynamicMethod.
19045
19046         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
19047         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
19048
19049 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
19050
19051         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
19052         don't leak GPtrArray's pdata has we have no use (nor free) for it.
19053
19054 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
19055
19056         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
19057         Fixes #77888.
19058
19059 2006-06-30  Raja R Harinath  <rharinath@novell.com>
19060
19061         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
19062         slightly: remove a shadow local variable.
19063
19064 2006-06-29  Raja R Harinath  <rharinath@novell.com>
19065
19066         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
19067         definition that introduces the virtual function slot.
19068         Also fix Coverity #105.
19069
19070 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
19071
19072         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
19073         for dynamic assemblies. Fixes #78724.
19074
19075 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
19076
19077         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
19078         Fixes #78722.
19079
19080 2006-06-21  Martin Baulig  <martin@ximian.com>
19081
19082         * reflection.c
19083         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
19084         fixes #76484.
19085
19086 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
19087
19088         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
19089
19090 2006-06-20  Raja R Harinath  <rharinath@novell.com>
19091
19092         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
19093         nor TYPEREFs.
19094         * class.c (mono_class_create_from_typespec): Add 'context' argument.
19095         Inflate result if necessary.
19096         (mono_class_get_full): Remove old version.  Rename from
19097         'mono_class_get' and add 'context' argument.  Pass it to
19098         ..._create_from_typespec.
19099         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
19100         (mono_ldtoken): Revert change below.
19101
19102 2006-06-20  Martin Baulig  <martin@ximian.com>
19103
19104         * class.c (mono_ldtoken): Don't pass the generic context to
19105         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
19106
19107 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
19108
19109         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
19110         and later freeing it. Fixes #78638.
19111
19112 2006-06-15  Miguel de Icaza  <miguel@novell.com>
19113
19114         * icall.c (mono_class_get_throw): Revert over-zealous error
19115         throwing, the caller for mono_class_get_throw will cope with
19116         errors when classes are not properly initialized already.
19117
19118         The code still copes with loader exceptions though.
19119
19120         Fixes the regression in reftype1 and reftype3 from the CAS tests.
19121         
19122 2006-06-14  Miguel de Icaza  <miguel@novell.com>
19123
19124         Fixes the `make run1' version of RuntimeAbort (to be commited,
19125         source is in Bugzilla).
19126         
19127         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
19128         FALSE on class loading failure instead of returning true.
19129
19130         * class.c (mono_class_create_from_typedef): It is possible for
19131         mono_metadata_interfaces_from_typedef_full to fail if a class is
19132         not found, cope with this.
19133         
19134
19135 2006-06-14  Dick Porter  <dick@ximian.com>
19136
19137         * socket-io.c: 
19138         * process.c: Fix a bunch of signed/unsigned warnings from gcc
19139         4.1.1
19140
19141 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
19142
19143         * culture-info-table.h : oops, forgot to make it nsync with r61548.
19144
19145 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
19146
19147         * icall.c: Another fix for building mono in Visual Studio.
19148
19149 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
19150
19151         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
19152         
19153 2006-06-09  Martin Baulig  <martin@ximian.com>
19154
19155         * debug-mono-symfile.c: Put this back and really fix it this
19156         time. Sorry for all the trouble.
19157
19158 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
19159
19160         * icall.c (mono_class_get_throw): Fix a warning.
19161         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
19162         ReflectionTypeLoadException if needed. Fixes #78606.
19163
19164         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
19165         (mono_class_init): Ditto.
19166
19167         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
19168         ref_only exceptions.
19169         (mono_loader_clear_error): Make this work even if there is no error.
19170
19171 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
19172
19173         * object-internals.h marshal.c marshal.h icall.c: Implement method 
19174         Marshal.GetComSlotForMethodInfo using internal call.
19175
19176 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
19177
19178         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
19179         a function for signalling it.
19180
19181         * class.c (mono_class_from_typeref): Use the new kind of loader error when
19182         a referenced assembly is not found.
19183
19184         * loader.c (mono_loader_error_prepare_exception): Add support for 
19185         LOADER_ERROR_ASSEMBLY. Fix formatting.
19186
19187 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
19188
19189         * domain.c appdomain.c class-internals.h marshal.c: Add support 
19190         for VARIANT marshalling on windows and increment corlib version
19191         since Variant struct was added.
19192
19193 2006-06-03  Miguel de Icaza  <miguel@novell.com>
19194
19195         * debug-mono-symfile.c: Revert Martin's previous patch which broke
19196         stack trace line information:
19197
19198         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
19199         (Martin) when looking up B which is between A and C, return A not C.
19200
19201         Bug is #78573.
19202
19203         Thanks to Alexander Olk for tracking this down.
19204
19205 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
19206
19207         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
19208         
19209         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
19210         avoid clobbering its value.
19211         (mono_string_to_lpstr): Fix a warning on windows.
19212
19213 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
19214
19215         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
19216
19217         * reflection.c loader.c: Removed references to 'dummy' flag.
19218
19219         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
19220
19221         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
19222         it gets GC tracking.
19223
19224         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
19225         GC tracking.
19226         
19227         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
19228
19229         * marshal.c threadpool.c: Update callers of mono_async_result_new.
19230
19231         * appdomain.c: Bump corlib version.
19232
19233 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
19234
19235         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
19236         CEE_STIND_REF when working with object references.
19237
19238 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
19239
19240         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
19241         Fixes #78539.
19242
19243 2006-05-30  Miguel de Icaza  <miguel@novell.com>
19244
19245         * loader.c (method_from_memberref): Fix argument value for
19246         mono_loader_set_error_method_load (I was passing the MonoClass
19247         instead of the class name char *).
19248
19249 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
19250
19251         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
19252         CEE_STIND_REF when working with object references.
19253
19254 2006-05-30  Martin Baulig  <martin@ximian.com>
19255
19256         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
19257         mono_method_full_name() change and replace the ':' with a '.'
19258         here.
19259
19260 2006-05-30  Martin Baulig  <martin@ximian.com>
19261
19262         * debug-mono-symfile.c
19263         (mono_debug_symfile_lookup_location): Fix the algorithm:
19264         when looking up B which is between A and C, return A not C.
19265
19266 2006-05-29  Martin Baulig  <martin@ximian.com>
19267
19268         * mono-debug.h
19269         (MonoDebugMethodInfo): Make the typedef public.
19270         (MonoDebugSourceLocation): New public struct.
19271
19272         * mono-debug.c
19273         (mono_debug_source_location_from_address): Removed.
19274         (mono_debug_source_location_from_il_offset): Removed.
19275         (mono_debug_il_offset_from_address): Removed.
19276         (mono_debug_address_from_il_offset): Removed.
19277         (mono_debug_lookup_method): New public function.
19278         (mono_debug_lookup_source_location): New public function; replaces
19279         the old mono_debug_source_location_from_*() functions; see the
19280         inline documentation.
19281         (mono_debug_free_source_location): New public function.
19282         (mono_debug_print_stack_frame): New public function; see the
19283         inline documentation.
19284
19285         * debug-mono-symfile.c
19286         (mono_debug_find_source_location): Renamed into
19287         mono_debug_symfile_lookup_location(); only take a
19288         `MonoDebugMethodInfo *' and an `offset' argument; added inline
19289         documentation.
19290         (mono_debug_find_method): Renamed into
19291         mono_debug_symfile_lookup_method().
19292
19293 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
19294
19295         * assembly.c (mono_assembly_open_full): Dont overwrite the status
19296         returned by mono_image_open_full ().
19297
19298         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
19299         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
19300         #78517.
19301
19302         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
19303         #78518.
19304
19305 2006-05-27  Miguel de Icaza  <miguel@novell.com>
19306
19307         * class.c (mono_class_from_typeref): handle missing images
19308         earlier, deals with bug #78418.   Refactor code; 
19309
19310         Fix a warning introduced in my previous commit (some stale code
19311         from before I revisited my patch).
19312
19313         * class.c (mono_class_create_from_typedef): On failure, remove the
19314         class from the MonoImage->class_cache as the class is not
19315         initialized;   Fixes the leak pointed out by Paolo.
19316
19317 2006-05-25  Dick Porter  <dick@ximian.com>
19318
19319         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
19320         DeleteCriticalSections until I figure out which one may still be
19321         sometimes locked when mono_thread_cleanup is called.
19322
19323 2006-05-24  Dick Porter  <dick@ximian.com>
19324
19325         * threads.c (mono_thread_cleanup): Move the threading cleanup out
19326         of mono_thread_manage and back into its own function, so it can be
19327         called after the finalizer thread has finished.
19328
19329         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
19330
19331 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
19332
19333         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
19334         Fixes #78495.
19335
19336         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
19337         with non-blittable elements.
19338         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
19339
19340 2006-05-24  Martin Baulig  <martin@ximian.com>
19341
19342         * mono-debug-debugger.h (MonoDebuggerEvent): Added
19343         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
19344
19345         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
19346         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
19347         `mono_debugger_event_handler' to NULL.
19348
19349 2006-05-24  Martin Baulig  <martin@ximian.com>
19350
19351         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
19352
19353 2006-05-24  Martin Baulig  <martin@ximian.com>
19354
19355         * mono-debug-debugger.h
19356         (mono_debugger_create_notification_function): Added
19357         `MonoCodeManager *' argument.
19358
19359 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
19360
19361         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
19362
19363 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
19364
19365         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
19366         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
19367         implementation.
19368
19369 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
19370
19371         * icall.c: precise GC support: objects can't be stored in unmanaged
19372         memory anymore, even if they are kept alive by other references: since
19373         they can move the GC needs to be able to always find them.
19374
19375 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
19376
19377         * object.c: precise GC support for static fields. Support
19378         for moving GCs: write barriers and pinned allocation for interned
19379         strings.
19380
19381 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
19382
19383         * domain.c, domain-internals.h: precise GC support for the MonoDomain
19384         structure.
19385
19386 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
19387
19388         * class.c, gc.c: sgen and precise GC updates.
19389
19390 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
19391
19392         * marshal.h, marshal.c: added write barrier wrapper and precise type
19393         fixes.
19394
19395 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
19396
19397         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
19398         support.
19399
19400 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
19401
19402         * reflection.c: precise and sgen GC updates.
19403
19404 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
19405
19406         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
19407
19408 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
19409
19410         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
19411
19412 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
19413
19414         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
19415         MONO_TYPE_OBJECT. Fixes #78462.
19416
19417 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
19418
19419         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
19420         and blittable types.
19421
19422 2006-05-17  Miguel de Icaza  <miguel@novell.com>
19423
19424         * class.c (mono_class_get_exception_for_failure): Implement parts
19425         of a TODO: if the loader error is set (instead of the class
19426         error), we return a Loader exception that can be properly thrown
19427         elsewhere.
19428
19429         This was exposed by some Winforms 2.0 code that I tried to run
19430         (Atsushi pointed me to it).
19431
19432 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
19433
19434         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
19435         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
19436         
19437         * marshal.c (emit_marshal_vtype): Add limited support for 
19438         UnmanagedType.LPStruct. Fixes #78427.
19439
19440         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
19441         Applied a patch from kangaroo to fix #77523.
19442
19443 2006-05-17  Martin Baulig  <martin@ximian.com>
19444
19445         * threads.c
19446         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
19447         (debugger_thread_created): Removed.
19448         (debugger_thread_exited): Removed.
19449
19450 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
19451
19452         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
19453
19454         * object-internals.h (MonoReflectionResource): Sync with managed version.
19455
19456 2006-05-12  Wade Berrier <wberrier@novell.com>
19457
19458         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
19459
19460 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
19461
19462         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
19463         functions try to allocate from the image mempool.
19464
19465 2006-05-12  Dick Porter  <dick@ximian.com>
19466
19467         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
19468
19469 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
19470
19471         * object.c: The FieldGetter and FieldSetter methods require the full
19472         name of the class, not only the name. Fixes bug #78277.
19473
19474 2006-05-11  Miguel de Icaza  <miguel@novell.com>
19475
19476         * loader.c (method_from_memberref): Do not pass the NULL klass to
19477         mono_loader_set_error_() methods.  Pass the non-NULL value
19478         (class). 
19479
19480 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
19481
19482         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
19483         (mono_assembly_close): Null out assembly->image->references after freeing it.
19484
19485         * image.c (mono_image_close): Free image->references.
19486         
19487         * reflection.c (mono_image_basic_init): Fix a small memory leak.
19488
19489 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
19490
19491         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
19492         before checking if it's NULL (g_assert).
19493
19494 2006-05-10  Martin Baulig  <martin@ximian.com>
19495
19496         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
19497         I thought I already killed that two months ago, but now it somehow reappeared.
19498
19499 2006-05-10  Martin Baulig  <martin@ximian.com>
19500
19501         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
19502
19503 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
19504
19505         * reflection.c: Allocate memory for dynamically created methods in the image
19506         mempools.
19507
19508 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
19509
19510         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
19511         don't use the ad pointer before checking if it's NULL (g_assert).
19512
19513 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
19514
19515         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
19516         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
19517
19518         * marshal.c: Allocate all signatures from mempools.
19519
19520         * marshal.c: Allocate some more signatures from mempools.
19521
19522 2006-05-09  Miguel de Icaza  <miguel@novell.com>
19523
19524         * object.c (mono_load_remote_field): The code used to provide a
19525         temporary variable for returning results if the user did not
19526         provide a result pointer.  But our temporary variable was allocted
19527         on the satck.
19528
19529         Fix calling code to always pass a result area.   Coverity ID 103.
19530
19531 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
19532
19533         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
19534         value, not the old. Fixes #78312.
19535         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
19536
19537         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
19538         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
19539         per-image cache.
19540
19541         * assembly.c (mono_assembly_close): Free image->references.
19542
19543         * assembly.c (mono_assembly_names_equal): Fix a warning.
19544         (mono_assemblies_cleanup): Cleanup more global data.
19545
19546         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
19547
19548         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
19549         ptr_cache and image->modules.
19550
19551         * image.c (mono_image_init): Allocate array_cache lazily.
19552         
19553 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19554
19555         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
19556         behavior was changed recently and has bad side effects.
19557
19558 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
19559
19560         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
19561         
19562         * assembly.c (mono_assembly_close): Remove a debug printf.
19563
19564         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
19565
19566         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
19567         to also allow for temporary references between mono_image_open ()/close ().
19568
19569         * domain.c (get_runtimes_from_exe): Add a FIXME.        
19570
19571 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
19572
19573         * marshal.c: Fix support for dynamic methods.
19574
19575         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
19576
19577         * marshal.c (mono_marshal_cleanup): New cleanup function.
19578
19579         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
19580         image mempools.
19581
19582         * class.c (mono_class_init): Fix leaking class->nested_classes.
19583
19584         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
19585
19586         * image.c (mono_image_init): Initialize the new cashes.
19587
19588         * image.c (mono_image_close): Destroy the new cashes.
19589
19590         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
19591
19592         * mempool.c (mono_mempool_strdup): New helper function.
19593
19594         * class-internals.h: Add prototype for mono_loader_unlock ().
19595
19596         * domain.c (mono_jit_info_table_find): Fix a warning.
19597         (mono_debugger_check_runtime_version): Ditto.
19598
19599         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
19600         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
19601         functions to these modules.
19602
19603         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
19604         metadata modules.
19605         
19606         * marshal.c (mono_free_bstr): Fix a warning.
19607
19608         * assembly.c (mono_assembly_open_full): Fix another small leak.
19609
19610         * object.c: Fix some unload leaks in the remoting code.
19611
19612         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
19613         function.
19614
19615         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
19616
19617         * reflection.c: Fix some unload leaks in dynamic assemblies.
19618
19619 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
19620
19621         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
19622         * marshal.h: Add BSTR support on Win32
19623         * icall.c: Add BSTR icalls
19624         * metadata.h: Add BSTR enums
19625
19626 2006-04-28  Miguel de Icaza  <miguel@novell.com>
19627
19628         Work to catch the crash from #76795 and turn it into an
19629         exception.   As I stubbed out pieces of the VisualBasic support,
19630         I found a number of places where the code was failing and I added
19631         checks to those places. 
19632         
19633         * metadata.c (do_mono_metadata_parse_generic_class): Make this
19634         function return a status code.  If we fail to parse the signature
19635         from mono_metadata_parse_generic_inst, return FALSE.
19636
19637         * loader.c (mono_get_method_from_token): If we fail to load the
19638         method (mono_class_get) return NULL.   
19639
19640         * (method_from_memberref): Return NULL if we are unable to parse
19641         the method signature
19642
19643         (mono_loader_error_prepare_exception): Since we now use the
19644         loader_error flag internally to stop processing, and obtaining
19645         exceptions that might be thrown will walk this code path the
19646         proper way of going from a MonoLoaderError into a
19647         MonoException was convoluted.   This new routine encapsulates the
19648         process of turning the error into an exception and *clearing* the
19649         error afterwards.
19650         
19651 2006-04-27  Miguel de Icaza  <miguel@novell.com>
19652
19653         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
19654         with missing assemblies), and to cope with:
19655
19656                 * Missing fieldref from a non-existing assembly.
19657                 * Missing methodref from a non-existing assembly.
19658
19659         The first batch of work to address *some* of the issues from 76661.
19660         
19661         * object.c (mono_class_create_runtime_vtable): If we fail to
19662         initialize the class raise the exception here. 
19663
19664         * metadata.c (mono_class_get_overrides_full): If any methods fail
19665         to load return the failure to the caller.
19666
19667         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
19668         flagging assemblies that failed to load.   
19669
19670         Do not crash if we are unable to load the assembly.
19671
19672         (mono_assembly_close): Do nothing with REFERENCE_MISSING
19673         assemblies. 
19674
19675         * loader.c (mono_loader_set_error_type_load): Change the
19676         convention to always pass unallocated strings, so we make our own
19677         copies (I know our own code had duplicated strings before, but
19678         this keeps the normal conventions).
19679         (method_from_memberref): Call mono_loader_set_error_method_load
19680         for all possible failures of loading the class. 
19681         Remove assert, turn into a loader error.
19682
19683         (mono_loader_error_to_exception): Move this routine from mini
19684         (mini_loader_error_to_exception) there was no need to have that in
19685         mini. 
19686
19687         * class.c (mono_class_from_typeref): If we were not able to load
19688         the assembly with mono_assembly_load_reference, call the
19689         mono_loader_set_error_type_load to register the problem.
19690
19691         (mono_class_setup_fields): If we fail to load the type from
19692         mono_metadata_parse_type_full, call mono_class_set_failure and
19693         break from the loop.
19694
19695         If class->exception_type is set, we do not layout the fields as
19696         that might crash the runtime, and instead return (from breaking
19697         from the previous loop).
19698
19699         (mono_class_setup_vtable): This now returns a boolean indicating
19700         whether the table was properly setup.   The decision is driven by
19701         mono_class_get_overrides_full which might run into non-existing
19702         methods. 
19703         
19704         (mono_class_init): Returns TRUE on success or FALSE if there was a
19705         problem in loading the type (incorrect assemblies, missing
19706         assemblies, methods, etc).
19707
19708         When we call mono_class_setup_fields we also check for a potential
19709         error inside this call (either a class exception or a general
19710         loader exception).
19711
19712         (mono_class_create_from_typedef): If the parent fails to load
19713         (calling mono_class_get_full) return NULL.
19714         
19715         ** Important **
19716
19717         calls to mono_metadata_parse_type_full should be checked
19718         everywhere and set the mono_class_set_failure
19719         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
19720
19721         The current patch checks the places where my manually constructed
19722         tests show the errors are showing up, but we should do it
19723         everywhere. 
19724
19725         ** Important2 **
19726
19727         mono_class_init return values should be tested everywhere, like
19728         the previous case this is something that we should audit
19729         everywhere and not only on the cases exposed by the tests I
19730         created. 
19731
19732 2006-04-26  Miguel de Icaza  <miguel@novell.com>
19733
19734         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
19735         boolean parameter and instead pass the information on `options'
19736         parameter (FileOptions).
19737
19738         * icall.c: Register the new signature for MonoIO.Open.
19739
19740         * debug-helpers.c (dis_one): Trying to understand how coverity
19741         works.  Fix Run 5, item 78.
19742
19743 2006-04-26  Dick Porter  <dick@ximian.com>
19744
19745         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
19746         dereference.
19747
19748 2006-04-25  Martin Baulig  <martin@ximian.com>
19749
19750         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
19751
19752         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
19753         debugger_thread_created().
19754         (debugger_gc_push_all_stacks): Don't handle the main thread in any
19755         special way.
19756         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
19757         (mono_debugger_finalize_threads): New function; undo the effects
19758         of mono_debugger_init_threads().
19759         (mono_debugger_create_all_threads): Removed.
19760
19761 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
19762
19763         * image.c (mono_image_close): Tidy up trace messages.
19764
19765         * assembly.c (mono_assembly_close): Ditto.
19766
19767         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
19768         no longer references an already freed assembly. Fixes #78168.
19769
19770 2006-04-21  Dick Porter  <dick@ximian.com>
19771
19772         * threads.c (mono_thread_detach): Fix reference counting when
19773         detaching threads.
19774
19775 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
19776
19777         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
19778         #78155.
19779
19780 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
19781
19782         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
19783         (mono_type_to_stind): Ditto.
19784
19785         * marshal.c: Use the new helper functions to simplify code.
19786
19787         * image.c (mono_image_close): Add some code for help debug assembly unloading
19788         problems.
19789
19790         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
19791         image mempool.
19792
19793         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
19794         assembly was already loaded in another appdomain. Fixes #78083.
19795
19796 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
19797
19798         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
19799         referenced assemblies.
19800         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
19801
19802         * domain.c (mono_domain_free): Add a trace message.
19803
19804         * appdomain.c (add_assemblies_to_domain): Ditto.        
19805
19806         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
19807         field.  
19808
19809 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
19810
19811         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
19812
19813 2006-04-12  Martin Baulig  <martin@ximian.com>
19814
19815         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
19816         `USE_INCLUDED_LIBGC'.   
19817
19818 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
19819
19820         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
19821         the patch contains ../ and a small directory name later. Hopefully fixes
19822         #78035.
19823
19824 2006-04-10  Martin Baulig  <martin@ximian.com>
19825
19826         Clean up the debugger's thread-handling code.
19827
19828         The debugger's thread-handling code has been moved from
19829         ../mini/debug-debugger.c to threads.c.  We now iterate directly
19830         over the `threads' hash, keep track of exiting threads and also
19831         use proper locking.
19832
19833         We can now debug XSP and XSP based applications with the debugger.
19834
19835         * object-internals.h (MonoThread): Added `gpointer end_stack'.
19836
19837         * threads.h
19838         (MonoThreadCallbacks): Removed; this was only used by the debugger.
19839         (mono_install_thread_callbacks): Likewise.      
19840
19841         * threads.c (mono_thread_callbacks): Removed.
19842         (debugger_thread_created, debugger_thread_exited): New static functions.
19843         (start_wrapper): Call debugger_thread_created().
19844         (thread_cleanup): Call debugger_thread_exited().
19845         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
19846         (mono_debugger_init_threads): New public function.
19847         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
19848         iterate directly over the `threads' hash and also use proper locking.
19849
19850         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
19851
19852         * mono-debug-debugger.h
19853         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
19854
19855 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
19856
19857         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
19858         argument type=array. Fixes #78057.
19859
19860 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
19861
19862         * culture-info-table.h : regenerated. Fixed bug #69652.
19863
19864 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
19865
19866         * loader.c metadata.c: Reapply a variant r59116.
19867         
19868         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
19869
19870         * class.c (mono_class_setup_interface_offsets): New internal function.
19871
19872         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
19873         interfaces too. Fixes #77398.
19874
19875         * reflection.c (encode_cattr_value): Add support for 
19876         parameter type=object, argument type=array.
19877         (load_cattr_value): Ditto. Fixes #77916.
19878
19879         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
19880         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
19881
19882         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
19883         a byval char array and CharSet is Ansi.
19884
19885         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
19886
19887 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
19888
19889         * metadata.c: Add some locking comments.
19890         
19891         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
19892         mempool.
19893         (mono_metadata_free_method_signature): Don't free the signature itself.
19894
19895         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
19896
19897         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
19898         reference the same MonoImage.
19899         (mono_assembly_load_from_full): Add an assert.
19900
19901 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
19902
19903         * image.c (mono_image_close): Don't put the image we are about to free into the
19904         loaded_images_guid_hash.
19905
19906         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
19907         to reduce code duplication.
19908
19909         * marshal.c: Register the native functions called by this module as icalls, to
19910         somewhat centralize the creation of MonoMethodSignature's.
19911
19912         * loader.c (mono_method_signature): Add a cache for method signatures.
19913
19914         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
19915         the parameter attributes of a method.
19916         (mono_metadata_parse_method_signature_full): Refactored the computation of
19917         parameter attributes into a separate function. Also avoid one allocation in
19918         most cases.
19919
19920         * assembly.c (mono_assembly_close): Ditto.
19921
19922         * image.c (mono_image_close): Log trace messages with INFO level.
19923
19924         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
19925
19926         * image.c reflection.c: Correct reference counting of image modules.
19927         
19928         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
19929         of this function from the image mempool.
19930         
19931         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
19932         to allow more cached types to be used.
19933
19934         * mono-debug.c (mono_debug_add_method): Appled patch from
19935         David S. Miller  <davem@sunset.davemloft.net>: Access 
19936         minfo->lexical_blocks[] entry elements using read32().
19937
19938 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
19939
19940         * loader.c (mono_free_method): No longer free the method header for non-dynamic
19941         methods as it is allocated from the mempool.
19942
19943         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
19944         image mempool.
19945
19946         * metadata-internals.h: Add comments describing the reference counting scheme
19947         used for MonoImage and MonoAssembly.
19948
19949         * image.c assembly.c reflection.c: Rework reference counting of images and 
19950         assemblies so they are freed when the runtime is shut down. Free some 
19951         additional memory structures when an image is unloaded.
19952         
19953 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
19954
19955         * class.c loader.c reflection.c: Allocate more data structures in
19956         the image mempool.
19957
19958 2006-03-31  Miguel de Icaza  <miguel@novell.com>
19959
19960         * icall.c
19961         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
19962         build on pre glib 2.4 systems.
19963
19964 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
19965
19966         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
19967
19968         * icall.c: Fix some warnings.
19969
19970 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
19971
19972         * culture-info-table.h : regenerated.
19973
19974 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
19975
19976         * threads.c, object-internals.h, verify.c: changed the culture caching
19977         code to use a normal MonoArray for storage so the GC can keep track of
19978         them easily. Fixed bits of the cache logic, too and simplified the
19979         code.
19980
19981 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
19982
19983         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
19984         thread for non-Boehm GCs.
19985
19986 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
19987
19988         * domain.c, object.c, domain-internals.h: reduce the amount of memory
19989         needed to keep track of the data for static fields.
19990
19991 2006-03-29  Raja R Harinath  <rharinath@novell.com>
19992
19993         Fix #75172
19994         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
19995         for interface classes.  Use 'num_methods' instead.
19996         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
19997         before using '->vtable_size' field.
19998
19999 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
20000
20001         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
20002         doesn't contain managed pointers, so use a normal hashtable.
20003
20004 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
20005
20006         * reflection.c, class-internals.h, domain.c: fixed handling of types
20007         used as values for objects in custom attributes (bug #77915):
20008
20009 2006-03-24  Martin Baulig  <martin@ximian.com>
20010
20011         * class.c (mono_class_setup_fields): Added support for generic
20012         instances; fixes #77580.
20013
20014 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20015
20016         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
20017
20018 2006-03-24  Dick Porter  <dick@ximian.com>
20019
20020         * file-io.c (get_file_attributes): More stat macro breakage.
20021         Fixes bug 77759.
20022
20023 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
20024
20025         * profiler.c: added the file=filename option in the default profiler
20026         to output the profile data to filename.
20027
20028 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20029
20030         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
20031         bug #77877.
20032
20033 2006-03-22  Martin Baulig  <martin@ximian.com>
20034
20035         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
20036         allocated `MonoClassField *' in `fb->handle'.
20037
20038 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
20039
20040         * class.c, image.c, metadata-internals.h: implemented new mechanism to
20041         allocate interface ID to save memory and allow better ID reuse on
20042         appdomain unload. setup_generic_vtable () removal from Martin.
20043
20044 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
20045
20046         * object.h, appdomain.c, domain.c, exception.c, icall.c,
20047         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
20048         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
20049         write barriers for reference stores with managed objects accessed with
20050         C structures in the runtime and in embedding programs.
20051
20052 2006-03-20  Raja R Harinath  <rharinath@novell.com>
20053
20054         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
20055         'interface_id' and 'max_interface_id' fields of MonoClasses
20056         representing open generic types.
20057
20058 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
20059
20060         * object.h, object.c, icall.c: added functions to deal with
20061         storing valuetypes that contain references in managed objects.
20062         * reflection.c, string-icalls.c, threads.c, marshal.c: small
20063         fixes and comments around uses of mono_array_addr ().
20064
20065 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
20066
20067         * object.h, icall.c, monitor.c: object.GetHashCode ()
20068         implementation that supports the moving garbage collector.
20069
20070 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
20071
20072         * icall.c, threads-types.h, threads.c: implemented finalizer for
20073         LocalDataStoreSlot.
20074
20075 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
20076
20077         * metadata.c (mono_type_size): Add a fixme.
20078         (mono_type_stack_size): Ditto.
20079
20080         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
20081         'type_forwarders' field.
20082
20083         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
20084         attribute from net 2.0.
20085
20086         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
20087         from class.c.
20088
20089         * class.c (mono_class_setup_fields): Fix a warning.
20090         
20091         * class.c (mono_class_from_name): Add support for assemblyref entries
20092         in the EXPORTEDTYPE table.
20093
20094         * reflection.c: Add support for handling type forwarders under net 2.0.
20095
20096         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
20097         
20098 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
20099
20100         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
20101         overwriting entries in ModuleBuild->types, also clean up the code
20102         a little. Fixes #77774.
20103
20104 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
20105
20106         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
20107         load friend assembly info when present.
20108
20109 2006-03-14  Raja R Harinath  <rharinath@novell.com>
20110
20111         Fix crasher on gtest-158.cs.
20112         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
20113         the return value if the MonoClass we want is yet in an
20114         inconsistent state.
20115         * class.c (mono_class_create_from_typedef): Add an comment
20116         explaining an order dependency between mono_class_setup_parent and
20117         mono_class_setup_mono_type.
20118
20119 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
20120
20121         * class.c: documentation updates and events bug fix.
20122
20123 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
20124
20125         * class.c: some cleanup, locking fixes.
20126
20127 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
20128
20129         * class.c: fix the generics code to setup nested
20130         type info to the instantiated type (bug #77770).
20131
20132 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
20133
20134         * marshal.c: fixed a few type correctness issues.
20135
20136 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
20137
20138         * loader.c: the Set/Get/Addrtess array methods should be public.
20139
20140 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
20141
20142         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
20143         
20144         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
20145         info->wrapper.
20146
20147 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
20148
20149         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
20150
20151         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
20152
20153         * mempool.c (mono_mempool_alloc): Speed this up a bit.
20154         (mono_mempool_alloc0): Ditto.
20155
20156 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20157
20158         * socket-io.c:
20159         (create_object_from_sockaddr): it was allocating 4 extra bytes
20160         for the AF_UNIX data. Fixes bug #77747.
20161
20162 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
20163
20164         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
20165
20166 2006-03-09  Dick Porter  <dick@ximian.com>
20167
20168         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
20169         Fixes bug 76966 again.
20170
20171 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
20172
20173         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
20174         names from r57532
20175         * appdomain.c: Bumped corlib version to 48 (due to r57532)
20176
20177 2006-03-07  Martin Baulig  <martin@ximian.com>
20178
20179         * object.c
20180         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
20181
20182 2006-03-07  Martin Baulig  <martin@ximian.com>
20183
20184         * class.c
20185         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
20186         regression introduced in r56970; see gtest-252.cs.
20187
20188         * loader.c (mono_get_method_constrained): Correctly handle generic
20189         methods; see gtest-253.cs.
20190
20191 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
20192
20193         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
20194
20195 2006-03-04  Martin Baulig  <martin@ximian.com>
20196
20197         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
20198         compute the parent type at runtime, just like we're already doing
20199         it for interfaces.
20200
20201         * reflection.c
20202         (mono_reflection_bind_generic_parameters): Don't compute the
20203         parent type anymore.
20204
20205         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
20206
20207 2006-03-04  Martin Baulig  <martin@ximian.com>
20208
20209         * mono-debug-debugger.h
20210         (mono_debugger_create_notification_function): Allocate memory at
20211         runtime and return a pointer to it.
20212
20213 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
20214
20215         * assembly.c: Fix windows build.
20216         
20217         * assembly.c: Fix build.
20218
20219         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
20220
20221         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
20222         
20223 2006-03-03  Dick Porter  <dick@ximian.com>
20224
20225         * process.c
20226         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
20227         Check parameters before dereferencing them.  Fixes Aaron's part of
20228         bug 77393.
20229
20230 2006-03-03  Raja R Harinath  <rharinath@novell.com>
20231
20232         Fix performance regression.
20233         * loader.c (find_method_in_class): Add 'from_class' argument.
20234         Rename 'klass' argument to 'in_class'.  The signature is compared
20235         against the method in 'in_class', and the corresponding method is
20236         returned from 'from_class'.
20237         (find_method): Walk both 'in_class' and 'from_class' in parallel.
20238         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
20239         type definition and generic instantiation in parallel.
20240         (mono_get_method_constrained): Update to changes.
20241
20242 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
20243
20244         * threads.c: make sure the domain is correct, too when doing
20245         mono_thread_attach ().
20246
20247 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
20248
20249         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
20250         windows. Fixes #77683.
20251
20252 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
20253
20254         * object.h, *: introduced specific way to set elements of an array
20255         of references to be used as write barrier. Still need to audit the
20256         uses of mono_array_addr.
20257
20258 2006-03-01  Miguel de Icaza  <miguel@novell.com>
20259
20260         * object-internals.h: New field to cache the assmebly name, patch
20261         from Tambet Ingo (tambet@ximian.com)
20262
20263 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
20264
20265         * decimal.h, class-internals.h, metadata-internals.h,
20266         file-io.h: mark a few function declarations as internal, to
20267         reduce the number of PLT entries.
20268
20269 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20270
20271         * file-io.c: fix typo in warning message.
20272
20273 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
20274
20275         * loader.c: on unix, lookup the "*A" version of a function
20276         if charset is auto as a second option before failing.
20277
20278 2006-02-28  Raja R Harinath  <rharinath@novell.com>
20279
20280         * class.h (mono_class_inflate_generic_method): Revert to two
20281         argument version.
20282         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
20283         (mono_class_inflate_generic_method_full): Add.
20284         * class.c (mono_class_inflate_generic_method_full): Rename from
20285         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
20286         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
20287         * loader.c, reflection.c: Update to changes.
20288
20289 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
20290
20291         * icall.c: const fixes and small improvements.
20292
20293 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20294
20295         * threadpool.c: for asynchronous connect(), enable the same workaround
20296         for BSD 6 as for the Mac. Fixes bug #77637.
20297
20298 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
20299
20300         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
20301         formatted classes. Fixes #77524.
20302
20303 2006-02-24  Raja R Harinath  <rharinath@novell.com>
20304
20305         * class.c (inflate_generic_type): Add a couple more
20306         micro-optimizations.
20307         (inflate_generic_context): Don't use the 'gmethod' from
20308         'inflate_with'.
20309         (mono_class_inflate_generic_method): If the method has generic
20310         parameters, but the passed-in context doesn't have a 'gmethod',
20311         create one.  Use the possibly simplified generic instantiation
20312         from the declaring class instead of the one passed in.
20313
20314 2006-02-24  Raja R Harinath  <harinath@gmail.com>
20315
20316         Make generic method signature and method header handling lazy.
20317         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
20318         (inflate_generic_header): Likewise.
20319         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
20320         parameter to avoid inflating types.
20321         (mono_get_inflated_method): Empty out.
20322         * class.h (mono_class_inflate_generic_method): Update to changes.
20323         * loader.c (mono_get_method_from_token): Don't parse signature for
20324         generic methods, nor methods of generic classes.
20325         (mono_method_signature): Rename from 'mono_method_signature'.
20326         Inflate signature on demand.
20327         (mono_method_get_header): Inflate method header on demand.
20328         * reflection.c: Update to changes.
20329
20330 2006-02-23  Raja R Harinath  <rharinath@novell.com>
20331
20332         * metadata.c (mono_metadata_inflate_generic_inst): If the
20333         instantiation is closed, don't bother expanding it in the new
20334         context.
20335         * class.c (inflate_generic_class): If the generic instantiation
20336         doesn't change after inflation, return the argument itself.
20337         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
20338         Add bounds checks.
20339         (inflate_generic_context): If neither the generic class nor the
20340         generic method instantiations change, return the original context.
20341         * reflection.c (mono_method_get_object): Do
20342         'mono_get_inflated_method' before accessing the ->klass field.
20343         (inflate_mono_method): Don't create a MonoGenericMethod unless
20344         necessary.
20345         (inflate_method): Don't pass a constructed type as the declaring
20346         type of a methodbuilder.
20347
20348 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
20349
20350         * object.c: fix memory overwrite.
20351
20352 2006-02-22  Dick Porter  <dick@ximian.com>
20353
20354         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
20355         it doesn't work any more.
20356         (mono_threads_request_thread_dump): Fix unused variable warnings.
20357
20358 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
20359
20360         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
20361         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
20362         the public header file.
20363
20364 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
20365
20366         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
20367
20368 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
20369
20370         * class-internals.h, object.c: reduce the size of MonoVTable
20371         and store the interface_offsets array at negative offsets.
20372
20373 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
20374
20375         * metadata.c: tweak table descriptors data structures to reduce
20376         size and runtime relocations.
20377
20378 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
20379
20380         * marshal.c: fix some types and opcodes to be type-safe
20381         in marshaling wrappers.
20382
20383 2006-02-21  Ankit Jain  <jankit@novell.com>
20384
20385         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
20386
20387 2006-02-21  Raja R Harinath  <rharinath@novell.com>
20388
20389         * metadata.c (get_constraints): Relax debugging checks for monodis.
20390
20391 2006-02-21  Ankit Jain  <jankit@novell.com>
20392
20393         * metadata.c (mono_metadata_load_generic_params): Move the code
20394         checking for ambiguous generic params from here to mono/dis/get.c
20395         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
20396
20397 2006-02-21  Raja R Harinath  <harinath@gmail.com>
20398
20399         Fix assertion triggered when compiling nemerle.
20400         * class.c (mono_get_shared_generic_inst): Rename from
20401         get_shared_inst and make non-static.
20402         * loader.c (mono_get_shared_generic_method): New.  Used to create
20403         the MonoGenericContext-equivalent of a MonoGenericContainer.
20404         (mono_get_method_from_token): Initialize the 'context' field of
20405         the created MonoGenericContainer.
20406         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
20407         * metadata.c (get_constraints): Add sanity check.
20408         * class-internals.h: Add new internal methods.
20409
20410         * reflection.c (verify_safe_for_managed_space): New sanity check.
20411         Currently checks that owner-less generic parameters aren't allowed
20412         in managed space.
20413         (mono_type_get_object): Use it.
20414         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
20415         that are now in mono_type_get_object.
20416         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
20417
20418 2006-02-19  Raja R Harinath  <harinath@gmail.com>
20419
20420         * metadata.c (mono_type_create_from_typespec): Rename from
20421         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
20422         argument and caching of types in the generic container.
20423         (unwrap_arrays, find_generic_param): Remove.
20424         * metadata-internals.h: Update.
20425         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
20426
20427 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
20428
20429         * class.c (mono_class_get_exception_for_failure): Fix a warning.
20430
20431         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
20432         return values. Fixes #77581.
20433
20434         * class.c (mono_fnptr_class_get): Switch name and name_space.
20435
20436         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
20437         classes and add support for [In, Out] attributes.
20438         (mono_marshal_free_asany): Ditto. Fixes #77524.
20439
20440 2006-02-18  Raja R Harinath  <harinath@gmail.com>
20441
20442         * class.c (mono_class_from_generic_parameter): Make more robust to
20443         incomplete MonoGenericContainers from monodis.
20444
20445 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
20446
20447         * class-internals.h: added some more exception types.
20448         * class.c, metadata.c: added a few checks to handle missing
20449         types.
20450
20451 2006-02-17  Raja R Harinath  <rharinath@novell.com>
20452
20453         Use owner-less generic-params some more.
20454         * class.c (my_mono_class_from_generic_parameter): Remove.
20455         (mono_class_from_generic_parameter): Handle null image,
20456         param->name and param->owner.
20457         (mono_class_from_mono_type): Update.
20458         (mono_class_create_from_typespec): Remove 'container' parameter.
20459         If that parameter is non-null, the result is always inflated by
20460         'mono_class_get_full' anyway.
20461         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
20462         parameter.
20463         (mono_class_get_full): Update.
20464
20465         * class.c (inflate_generic_type) [GENERICINST]: If the generic
20466         instance is not open, don't bother inflating.
20467         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
20468         parse metadata for inflated classes.
20469         (_mono_class_get): Change GenericContext* parameter to
20470         GenericContainer*.
20471         (mono_class_create_from_typespec): Likewise.  Simplify, and
20472         implement trivially.  All the cases are handled in
20473         mono_class_from_mono_type.  Don't inflate returned class.
20474         (mono_class_get_full): Delegate GENERICINST optimization to
20475         inflate_generic_type.
20476         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
20477
20478 2006-02-16  Dick Porter  <dick@ximian.com>
20479
20480         * socket-io.c (create_object_from_sockaddr): Fix typo.
20481         (create_sockaddr_from_object): Check array lengths before
20482         potentially accessing items off the end.
20483         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
20484         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
20485         (ves_icall_System_Net_Sockets_Socket_Send_internal)
20486         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
20487         length checks to avoid wraparound overflows.
20488         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
20489         contents of the array of sockets
20490         (hostent_to_IPHostEntry2)
20491         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
20492         Check return value of inet_ntop ().
20493         (addrinfo_to_IPHostEntry): Fix typo
20494
20495 2006-02-16  Raja R Harinath  <rharinath@novell.com>
20496
20497         Type metadata parsing doesn't use generic-instantiation information.
20498         * metadata.c (mono_metadata_parse_array_full): Change
20499         MonoGenericContext* parameter to MonoGenericContainer*.
20500         (mono_metadata_parse_type_full): Likewise.
20501         (mono_type_create_from_typespec_full): Likewise.
20502         (mono_metadata_parse_mh_full): Likewise.
20503         (mono_metadata_parse_generic_inst): Likewise.
20504         (do_mono_metadata_parse_generic_class): Likewise.
20505         (do_mono_metadata_parse_type): Likewise.
20506         * metadata-internals.h: Update to changes.
20507         * class.c (mono_class_find_enum_basetype): Likewise.
20508         (mono_class_setup_fields): Likewise.
20509         (mono_class_create_from_typespec): Likewise.
20510         * loader.c (method_from_methodspec): Likewise.
20511         (mono_get_method_from_token): Likewise.
20512         (mono_method_get_header): Likewise.
20513
20514 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
20515
20516         * marshal.c: handle additional GENERICINST case (patch from
20517         Thong Nguyen <tum@veridicus.com>).
20518         Fix a few cases where LDIND_I/STIND_I was used for references.
20519
20520 2006-02-16  Raja R Harinath  <rharinath@novell.com>
20521
20522         * reflection.c (mono_reflection_get_token): Remove unused variable.
20523
20524 2006-02-16  Martin Baulig  <martin@ximian.com>
20525
20526         * reflection.c (mono_reflection_get_token): Add support for fields
20527         in instantiated generic types.
20528
20529         * icall.c
20530         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
20531
20532 2006-02-15  Martin Baulig  <martin@ximian.com>
20533
20534         * icall.c
20535         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
20536         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
20537         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
20538         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
20539
20540 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
20541
20542         * class.c, metadata.c, metadata.h, object.c, icall.c,
20543         marshal.c: changed mono_type_get_underlying_type () to do
20544         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
20545         Fixed handling of instantiated generic valuetypes (bug #75479).
20546
20547 2006-02-15  Raja R Harinath  <rharinath@novell.com>
20548
20549         * metadata.c (mono_metadata_decode_signed_value): Simplify.
20550         Delegate to mono_metadata_decode_value, and work on the returned value.
20551
20552         * icall.c (ves_icall_MonoType_GetGenericArguments):
20553         Add consistency check here too.
20554         
20555 2006-02-15  Ankit Jain  <jankit@novell.com>
20556
20557         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
20558         char/short etc.
20559
20560 2006-02-15  Ankit Jain  <jankit@novell.com>
20561
20562         * metadata.c (mono_metadata_decode_signed_value): New function to decode
20563         signed values, used only for representing lower bounds of arrays.
20564         (mono_metadata_parse_array_full): Use new
20565         mono_metadata_decode_signed_value to decode lower bounds.
20566
20567 2006-02-14  Martin Baulig  <martin@ximian.com>
20568
20569         * reflection.c
20570         (mono_reflection_get_token): Support "MonoGenericMethod" and
20571         "MonoGenericCMethod" and allow generic instances / methods.
20572
20573 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
20574
20575         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
20576         to obtain the terminal size using an ioctl.
20577
20578         * object.c (mono_nullable_init): Revert this as nullable reference
20579         types are not valid.
20580         (mono_nullable_box): Ditto.
20581
20582 2006-02-09  Dick Porter  <dick@ximian.com>
20583
20584         * threads.c (mono_thread_detach): Drop a reference to the thread
20585         we're detaching.
20586
20587 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
20588
20589         * object.c (mono_nullable_init): Handle nullable reference types.
20590         (mono_nullable_box): Ditto. Fixes #77446.
20591
20592 2006-02-07  Martin Baulig  <martin@ximian.com>
20593
20594         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
20595
20596 2006-02-07  Ankit Jain  <jankit@novell.com>
20597
20598         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
20599         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
20600         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
20601         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
20602         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
20603         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
20604
20605 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
20606
20607         * class.c (mono_class_create_generic): Set type_token as well.
20608
20609         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
20610         compatible with MS.
20611
20612 2006-02-02  Martin Baulig  <martin@ximian.com>
20613
20614         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
20615         has never been used so far.
20616
20617 2006-02-02  Martin Baulig  <martin@ximian.com>
20618
20619         * mono-debug-debugger.h: Changed comment at the top of this file;
20620         the header is not installed, but it's safe to #include it from
20621         within the JIT.
20622
20623         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
20624         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
20625
20626 2006-02-02  Martin Baulig  <martin@ximian.com>
20627
20628         * mono-debug.h
20629         (MonoSymbolTable): Removed the `metadata_info' field.
20630
20631         * mono-debug.c
20632         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
20633
20634         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
20635         (mono_debugger_add_builtin_types): Removed.
20636         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
20637         (mono_debugger_create_notification_function): We now operate on a
20638         pre-allocated area; take a `gpointer' and return `void'.
20639
20640         * mono-debug-debugger.c
20641         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
20642         (mono_debugger_add_builtin_types): Removed.
20643
20644 2006-02-02  Martin Baulig  <martin@ximian.com>
20645
20646         * threads.c (mono_debugger_create_all_threads): New public method.
20647
20648 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
20649
20650         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
20651         breaks on several platforms.
20652
20653 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
20654
20655         * assembly.c: the VS.NET build doesn't supply default values for
20656         MONO_ASSEMBLIES and MONO_CFG_DIR.
20657
20658 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
20659
20660         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
20661         helper function.
20662
20663         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
20664
20665         * loader.c (method_from_memberref): Fix a warning.
20666
20667         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
20668
20669         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
20670         with explicit layout. Fixes #77433.
20671
20672 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
20673
20674         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
20675         max_interface_id is initialized before using it. Fixes #77398.
20676         (ves_icall_Type_GetInterfaces): Ditto.
20677
20678 2006-01-30  Raja R Harinath  <rharinath@novell.com>
20679
20680         * metadata.c (mono_metadata_parse_method_signature_full): Don't
20681         allocate memory for parameter attributes when parsing memberref
20682         signatures.
20683         * loader.c (mono_loader_set_error_method_load): Don't warn.
20684         (method_from_memberref): Ensure MissingMethodException gets thrown
20685         if method is not found.  Make warning more informative.
20686
20687 2006-01-29  Raja R Harinath  <harinath@gmail.com>
20688
20689         Fix #77397
20690         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
20691         return true if is byref.
20692         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
20693         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
20694         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
20695
20696 2006-01-27  Raja R Harinath  <rharinath@novell.com>
20697
20698         Fix tests/find-method.2.il
20699         * loader.c (find_method, find_method_in_class): Remove is_inflated
20700         argument.  Revert 2006-01-18 change.
20701         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
20702         is generic, search for method in its generic definition.
20703         * class.c (mono_class_setup_vtable_general): Print generic
20704         arguments of generic types in debugging printf.
20705
20706 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
20707
20708         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
20709
20710         * threads.c (mono_threads_request_thread_dump): New helper function.
20711
20712 2006-01-25  Raja R Harinath  <rharinath@novell.com>
20713
20714         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
20715
20716 2006-01-25  Ankit Jain  <jankit@novell.com>
20717
20718         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
20719         move definition to ..
20720         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
20721         
20722 2006-01-25  Ankit Jain  <jankit@novell.com>
20723             Raja R Harinath  <rharinath@novell.com>
20724
20725         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
20726         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
20727         as necessary.
20728
20729 2006-01-25  Martin Baulig  <martin@ximian.com>
20730
20731         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
20732         `MonoDebuggerThread' into debug-debugger.c.
20733
20734 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
20735
20736         * profiler.c: fix printing of data.
20737
20738 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
20739
20740         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
20741           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
20742
20743 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
20744
20745         * object.c: fix deadlock related to string interning.
20746
20747 2006-01-23  Martin Baulig  <martin@ximian.com>
20748
20749         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
20750
20751         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
20752
20753 2006-01-23  Martin Baulig  <martin@ximian.com>
20754
20755         * mono-debug.h: Moved the prototypes of some functions which are
20756         used by the JIT here from mono-debug-debugger.h.
20757
20758 2006-01-21  Martin Baulig  <martin@ximian.com>
20759
20760         * Makefile.am: Don't install mono-debug-debugger.h.
20761
20762 2006-01-21  Martin Baulig  <martin@ximian.com>
20763
20764         * mono-debug-debugger.h: Enforce the private status of this header
20765         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
20766         Moved some stuff from mono-debugger-jit-wrapper.h here.
20767
20768 2006-01-20  Raja R Harinath  <rharinath@novell.com>
20769
20770         * class.c (mono_class_from_typeref): Add a sanity test to help
20771         catch lack of assembly load/search hooks.
20772
20773 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
20774
20775         * marshal.c (emit_struct_conv): Relax the fields with same offset
20776         check even more. Fixes #77230.
20777
20778 2006-01-18  Martin Baulig  <martin@ximian.com>
20779
20780         * loader.c (find_method_in_class): Added `gboolean is_inflated'
20781         argument; if false, we compare the uninstantiated signatures.
20782         (method_from_memberref): Compare the uninstantiated signatures;
20783         fixes #76417.
20784
20785 2006-01-18  Robert Jordan  <robertj@gmx.net>
20786
20787         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
20788         Clear the weak link. Fixes bug #77170.
20789
20790         * gc.c (mono_gchandle_free):
20791         Reflect *-gc.c changes (tiny optimization).
20792
20793 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
20794
20795         * metadata.c (mono_metadata_signature_dup): Applied patch from
20796         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
20797         Fixes #77288.
20798
20799 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
20800
20801         * marshal.c (emit_struct_conv): Allow fields with the same offset when
20802         marshalling from native to managed code. Fixes #77230.
20803
20804 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20805
20806         * threadpool.c: fix problem (Mac only) when more than one asynchronous
20807         connect. Fixes bug #77020.
20808
20809 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
20810
20811         * class.c: fixed id assignement for nested interfaces (bug #77275).
20812         Added also better info for --print-vtable debugging.
20813
20814 2006-01-12  Martin Baulig  <martin@ximian.com>
20815
20816         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
20817         interfaces on-the-fly; fixes #76625.
20818
20819         * class-internals.h
20820         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
20821         don't need that anymore.
20822
20823 2006-01-12  Miguel de Icaza  <miguel@novell.com>
20824
20825         * socket-io.c
20826         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
20827         To avoid initing the nested_classes when not needed I turned the
20828         PeerCredData as a toplevel internal class, as it has to be shared
20829         anyways. 
20830
20831         Fixes the CASA issue.
20832
20833 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
20834
20835         * domain.c: Accessors for MonoJitInfo
20836
20837         * profiler-private.h: Add jitinfo to the end jit hook
20838
20839         * profiler.[ch]: Define new hooks, called after jitting which give
20840         the MonoJitInfo that was compiled
20841
20842 2006-01-10  Martin Baulig  <martin@ximian.com>
20843
20844         * class.c (mono_class_setup_events): Add support for generic
20845         classes; fixes #76440.
20846
20847 2006-01-06  Raja R Harinath  <rharinath@novell.com>
20848
20849         Fix #77160.
20850         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
20851         on passed-in method.
20852
20853 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
20854
20855         * object.c (mono_runtime_invoke_array): Add Nullable support.
20856
20857         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
20858
20859 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
20860
20861         * file-io.c: Don't consider sockets as directory and avoid an endless
20862         loop. Fix bug #76966.
20863
20864 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
20865
20866         * object.c (mono_nullable_init): New helper function.
20867         (mono_nullable_box): Ditto.
20868
20869         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
20870
20871         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
20872
20873         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
20874         
20875 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
20876
20877         * class.c (mono_class_is_assignable_from): Make T assignable to 
20878         Nullable<T>.
20879
20880 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
20881
20882         * appdomain.c: Bump corlib version to 46.
20883         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
20884         serialization purpose) and changed ves_icall_System_Reflection_
20885         Assembly_get_code_base signature to accept a boolean (to escape, or 
20886         not, the assembly code base).
20887
20888 2005-12-23  Dick Porter  <dick@ximian.com>
20889
20890         * icall.c: 
20891         * threads-types.h: 
20892         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
20893         CreateEvent icall now returns "created" boolean parameter.
20894
20895 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
20896
20897         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
20898         #76967.
20899
20900         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
20901         when attr_klass is an interface. Fixes #77045.
20902
20903 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
20904
20905         * marshal.c (emit_struct_conv): Fix previous patch.
20906         
20907         * marshal.c (emit_struct_conv): Add a check for fields with the same
20908         offset.
20909
20910 2005-12-20  Raja R Harinath  <rharinath@novell.com>
20911
20912         Fix regression in Mono.C5.
20913         * class.c (mono_class_create_generic): If 'klass' is an interface
20914         set up the interface offsets.
20915         (mono_class_is_assignable_from): Don't throw away generic arguments.
20916
20917 2005-12-19  Raja R Harinath  <rharinath@novell.com>
20918
20919         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
20920         type parameters.
20921
20922 2005-12-15  Raja R Harinath  <rharinath@novell.com>
20923
20924         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
20925         dead store.
20926         (do_mono_metadata_parse_generic_class): Don't pass the current
20927         generic context when parsing the type being instantiated: it
20928         cannot use it, anyway.
20929
20930         * loader.c (method_from_memberref): Don't inflate a signature if
20931         it doesn't contain any type parameters.
20932
20933 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
20934
20935         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
20936
20937 2005-12-14  Martin Baulig  <martin@ximian.com>
20938
20939         * class.c
20940         (mono_type_get_name_recurse): Don't return null for type
20941         parameters and open generic classes.
20942         (mono_class_setup_methods): Don't exclude generic instances.
20943         (mono_get_unique_iid): Use different IDs for different
20944         instantiations of the same generic type.
20945         (mono_class_setup_vtable): Only use setup_generic_vtable() for
20946         open generic instances; create a normal vtable for closed generic
20947         instances.
20948         (mono_class_setup_vtable_general): We're now also called for
20949         closed generic instances.
20950
20951         * reflection.c
20952         (mono_reflection_bind_generic_parameters): Correctly use
20953         mono_metadata_lookup_generic_inst() everywhere.
20954
20955 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
20956
20957         * object.c (mono_class_create_runtime_vtable): Call 
20958         mono_class_setup_vtable ().
20959
20960         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
20961         function.
20962         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
20963         #76959.
20964
20965         * loader.c (mono_loader_set_error_type_load): Print the type load
20966         warnings to the console so they are more visible to the user.
20967         (mono_loader_set_error_method_load): Ditto.
20968
20969         * reflection.c (ensure_runtime_vtable): Revert the last change as it
20970         is still broken.
20971         
20972         * reflection.c (ensure_runtime_vtable): Fix build.
20973
20974         * reflection.c (ensure_runtime_vtable): Disable an optimization which
20975         doesn't work in all cases.
20976
20977 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
20978
20979         * object.c (mono_array_new_full): Treat a single dimensional array
20980         with 0 lower bounds as an szarray. Fixes #76973.
20981
20982         * reflection.c (custom_attr_visible): Really fix this.
20983
20984 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
20985
20986         * reflection.c (custom_attr_visible): Allow nested public attributes
20987         as well.
20988
20989         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
20990         interface check.
20991
20992 2005-12-12  Raja R Harinath  <harinath@gmail.com>
20993
20994         * class.c (set_generic_param_owner): Delete.
20995         (mono_class_create_from_typedef): Don't set ->owner field of
20996         generic parameters to "param containers" of enclosing classes.
20997         * reflection.c (mono_reflection_initialize_generic_parameter):
20998         Likewise.
20999
21000 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
21001
21002         * reflection.c (custom_attr_visible): Fix build.
21003
21004 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
21005
21006         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
21007         private attributes.
21008         
21009         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
21010         handling of null parameter defaults.
21011
21012 2005-12-09  Raja R Harinath  <rharinath@novell.com>
21013
21014         * class.c (mono_class_from_generic_parameter): Don't set
21015         klass->generic_container.
21016         (my_mono_class_from_generic_parameter): Likewise.
21017
21018 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
21019
21020         * reflection.c (load_public_key): Fix a warning.
21021         (method_encode_code): Fix unaligned accesses.
21022
21023 2005-12-07  Martin Baulig  <martin@ximian.com>
21024
21025         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
21026
21027         * reflection.c
21028         (write_generic_param_entry): Encode our custom attrs.
21029
21030         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
21031
21032 2005-12-07  Martin Baulig  <martin@ximian.com>
21033
21034         * reflection.c (encode_new_constraint): Removed; we don't use the
21035         `NewConstraintAttribute' anymore.
21036
21037 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
21038
21039         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
21040         not fire a TypeResolve event when Assembly.GetType () is called.
21041
21042 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
21043
21044         Beginning of support for nullable types in the runtime. Parts of
21045         this patch are from Martin.
21046
21047         * appdomain.c (MONO_CORLIB_VERSION): Bump
21048
21049         * domain.c (mono_init_internal): get the nullable type
21050
21051         * class.c (mono_class_is_nullable): New method
21052         (mono_class_get_nullable_param): New mehod
21053         (mono_class_create_generic): In types T? set cast_class to T
21054
21055         * class-internals.h (MonoDefaults): new nullable default class
21056         (mono_class_get_nullable_param, mono_class_get_nullable_param):
21057         new methods.
21058
21059 2005-12-05  Raja R Harinath  <rharinath@novell.com>
21060
21061         * metadata.c (select_container): New.  Refactor code to select the
21062         appropriate GenericContainer given the type of generic parameter
21063         we are looking for.
21064         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
21065         not a MonoGenericContext.  Use select_container.  Update parameters.
21066         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
21067         and MONO_TYPE_MVAR.
21068         (unwrap_arrays): Remove duplicate tests.
21069         (find_generic_param): Rename from 'has_same_context'.  Now walks a
21070         generic instantiated class to find any arguments that are generic
21071         parameters.
21072         (mono_type_create_from_typespec_full): Use find_generic_param to
21073         avoid evicting some generic instantiations from the typespec
21074         cache.
21075
21076 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
21077
21078         * reflection.c: fixed writing of doubles on ARM FPA.
21079
21080 2005-12-02  Robert Jordan  <robertj@gmx.net>
21081
21082         * icall.c: Fixed EventInfo.ReflectedType (#76829).
21083
21084 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21085
21086         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
21087         least on SUSE 10 they are not the same (on debian, they are just the
21088         same thing).
21089
21090 2005-12-01  Raja R Harinath  <rharinath@novell.com>
21091
21092         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
21093         DeclaringType for VARs and MVARs.
21094         * class.c (set_generic_param_owner): Fix initialization of owner
21095         fields.
21096
21097 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
21098
21099         * icall.c: fixed Enum.ToObject() to correctly convert the values.
21100
21101 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21102
21103         * threadpool.c: workaround for a bug that shows up on the Mac:
21104         select()+connect() on a blocking socket is not like it should
21105         be, so we proceed to connect() in that case, wasting the I/O
21106         threadpool thread until connect succeedes. Fixes bug #75436.
21107
21108 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21109
21110         * threadpool.c: fix typo when setting file descriptor states.
21111
21112 2005-11-28  Raja R Harinath  <rharinath@novell.com>
21113
21114         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
21115         * metadata.c (mono_metadata_parse_method_signature_full): Don't
21116         create a temporary signature container.
21117         (mono_metadata_parse_generic_param): Update to changes.
21118         (mono_type_create_from_typespec_full): Update to changes.
21119         * loader.c (method_from_memberref): Don't use a
21120         MonoGenericContainer while parsing a memberref signature.
21121         (method_from_methodspec): Remove dead-store of the 'container'
21122         variable.  It's overwritten before use.
21123
21124         * metadata.c (mono_type_create_from_typespec_full): Make debugging
21125         checks tighter.
21126         (mono_metadata_parse_generic_param): Likewise.
21127         * loader.c (find_method_in_class): Does not need a
21128         MonoGenericContainer.  Use 'mono_method_signature' rather than
21129         'mono_method_signature_full'.
21130         (find_method, mono_get_method_constrained, method_from_memberref):
21131         Update to changes.
21132
21133         * metadata.c (mono_type_create_from_typespec_full): Ensure that
21134         owner-less generic-parameters are never evicted from the typespec
21135         cache.
21136
21137         * loader.c (method_from_memberref): Don't use the current context
21138         when parsing signatures.
21139         (method_from_methodspec, mono_get_method_from_token): Update to changes.
21140
21141         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
21142         side-effects in g_assert.
21143         * loader.c (mono_get_method_from_token): Resolve klass earlier so
21144         that we don't potentially lose information.
21145
21146 2005-11-26  Dick Porter  <dick@ximian.com>
21147
21148         * icall.c:
21149         * threads.c: icalls to implement basic (ie, not named)
21150         System.Threading.Semaphore.
21151
21152 2005-11-24  Dick Porter  <dick@ximian.com>
21153
21154         * process.c
21155         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
21156         Use GetProcessId() if it's available.
21157
21158 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
21159
21160         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
21161
21162 2005-11-23  Raja R Harinath  <rharinath@novell.com>
21163             Ankit Jain  <jankit@novell.com>
21164
21165         * loader.c (mono_get_method_from_token): Initialize 'method' field
21166         of all generic parameters before parsing the signature.  Remove
21167         code that "fixed"-up MVAR references.
21168
21169 2005-11-23  Ankit Jain  <jankit@novell.com>
21170
21171         * metadata.c (mono_metadata_has_generic_params):
21172         (mono_metadata_load_generic_param_constraints):
21173         (mono_metadata_load_generic_params): Move duplicate code ...
21174         (mono_metadata_get_generic_param_row): ... here. Returns the
21175         first row-id in GenericParam table for a given owner (token).
21176         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
21177         prototype.
21178
21179 2005-11-23  Raja R Harinath  <rharinath@novell.com>
21180             Ankit Jain  <jankit@novell.com>
21181
21182         * metadata.c (mono_metadata_class_equal): Pass signature_only when
21183         comparing VARs too.
21184         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
21185         type->data.generic_param only if the type is an MVAR.
21186         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
21187         leak owner-less VARs and MVARs into managed space.
21188
21189 2005-11-21  Martin Baulig  <martin@ximian.com>
21190
21191         * class-internals.h
21192         (MonoMethod): Moved the `generic_container' here from
21193         `MonoMethodNormal' since we now also need it for
21194         `MonoMethodPInvoke';
21195         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
21196         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
21197         an union containing both `MonoMethodNormal' and
21198         `MonoMethodPInvoke'.
21199
21200         * loader.c
21201         (mono_get_method_from_token): Allow implementing generic methods
21202         as interncalls.
21203
21204         * threads.c
21205         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
21206         icall.
21207
21208 2005-11-17  Dick Porter  <dick@ximian.com>
21209
21210         * icall.c: 
21211         * process.h: 
21212         * process.c: Split the Process Start_internal icall into
21213         ShellExecuteEx_internal and CreateProcess_internal, which are
21214         called depending on whether UseShellExecute is true.  Fixes bug
21215         76670.
21216
21217         * appdomain.c (MONO_CORLIB_VERSION): Incremented
21218
21219 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
21220
21221         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
21222         'msize' parameters, use the information in 'mspec' instead.
21223         (emit_object_to_ptr_conv): Ditto.
21224
21225         * marshal.c (emit_struct_conv): Handle explicit layout structs with
21226         fields out of order. Fixes #76733.
21227
21228 2005-11-17  Ankit Jain  <jankit@novell.com>
21229
21230         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
21231
21232 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
21233
21234         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
21235           bug #76575.
21236
21237 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
21238
21239         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
21240         for types with non-auto layout. Fixes #76717.
21241
21242 2005-11-16  Ankit Jain  <jankit@novell.com>
21243
21244         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
21245         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
21246         if generic_context is null.
21247           (mono_metadata_generic_param_equal): param->owner can be null.
21248           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
21249         null.
21250
21251 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
21252
21253         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
21254         the correct value.
21255
21256 2005-11-15  Martin Baulig  <martin@ximian.com>
21257
21258         * object.c (set_value): Use mono_class_from_mono_type() instead of
21259         the hack for generic instances; fixes #76136.
21260
21261 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
21262
21263         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
21264         fields.
21265
21266         * image.c (load_metadata_ptrs): Initialize the new fields.
21267
21268         * reflection.c (create_dynamic_mono_image): Ditto.
21269
21270         * reflection.c (build_compressed_metadata): Use the new fields.
21271
21272         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
21273         icall.
21274
21275         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
21276         icall.
21277         
21278 2005-11-15  Ankit Jain  <jankit@novell.com>
21279             Raja R Harinath  <harinath@gmail.com>
21280
21281         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
21282         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
21283         new per-generic_container cache if the cached MonoType's context matches
21284         the current context.
21285           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
21286         to the expected context.
21287           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
21288
21289 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21290
21291         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
21292         we changed the signature of an icall.
21293         * icall.c: Modify to mono_double_ParseImpl return true/false 
21294         depending on the success, instead of throwing the exception. This will
21295         help us in Double.TryParse methods.
21296         
21297 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
21298
21299         * marshal.c (emit_marshal_object): Throw an exception when
21300         marshalling 'object' instead of crashing. Fixes #76696.
21301
21302 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
21303
21304         * class-internals.h: Add prototype for mono_type_get_full_name ().
21305
21306 2005-11-11  Dick Porter  <dick@ximian.com>
21307
21308         * threads.c (mono_thread_manage): Make sure the main thread has
21309         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
21310
21311 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
21312
21313         * loader.c (mono_loader_set_error_type_load): Log a warning to the
21314         console about the missing type.
21315         (mono_loader_set_error_method_load): Ditto.
21316
21317 2005-11-09  Miguel de Icaza  <miguel@novell.com>
21318
21319         * mono-config.c (mono_get_config_dir): Set the system defaults if
21320         none is specified.
21321
21322         * assembly.c (mono_set_dirs): New API entry point to set the
21323         assembly and the config directory in one call
21324
21325 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
21326
21327         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
21328         the ftnptr was created from a delegate in a domain other than the
21329         current domain. Fixes #75377.
21330
21331         * exception.h exception.c: Add mono_get_exception_not_supported ().
21332
21333 2005-11-08  Martin Baulig  <martin@ximian.com>
21334
21335         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
21336
21337 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
21338
21339         * security-manager.h: Added definitions to deal with strongname key 
21340         pairs bigger (and smaller) than 1024 bits.
21341         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
21342         adjust wrt the public key length being used.
21343
21344 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
21345
21346         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
21347           Windows build (r51396-51397).
21348
21349 2005-11-03  Martin Baulig  <martin@ximian.com>
21350
21351         * class.c (mono_class_setup_vtable_general): Also add generic
21352         methods to the vtable; fixes #76581.
21353
21354 2005-11-01  Miguel de Icaza  <miguel@novell.com>
21355
21356         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
21357         sure that we lookup GetString method from the System.Text.Encoding
21358         class, not the derived class or we get an empty method.
21359
21360         Fixed class #76612.
21361
21362 2005-10-25  Miguel de Icaza  <miguel@novell.com>
21363
21364         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
21365         if it has been previously set (embedders). 
21366
21367         Make mono_set_rootdir available also on Unix.
21368
21369 005-10-24  Robert Jordan  <robertj@gmx.net>
21370
21371         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
21372
21373 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
21374
21375         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
21376         only calls which are made to native code use this flag.
21377
21378         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
21379
21380 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
21381
21382         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
21383         Add support for FieldBuilders.
21384
21385 2005-10-29  Martin Baulig  <martin@ximian.com>
21386
21387         * mono-debug.c
21388         (mono_debug_using_mono_debugger): New public method; returns
21389         whether we're running inside the debugger.
21390
21391 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
21392
21393         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
21394         for Method/Constructor/FieldBuilders.
21395
21396 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
21397
21398         * reflection.c (module_add_cattrs): Save custom attributes for global methods
21399         and fields as well.
21400
21401 2005-10-26  Martin Baulig  <martin@ximian.com>
21402
21403         * mono-debug-debugger.c
21404         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
21405
21406 2005-10-24  Raja R Harinath  <harinath@gmail.com>
21407
21408         * icall.c (base64_to_byte_array): Don't pass an out-of-range
21409         integer to isspace.
21410
21411 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
21412
21413         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
21414         when passing valuetypes byref. Fixes #76502.
21415
21416 2005-10-19  Jackson Harper  <jackson@ximian.com>
21417
21418         * profiler.c: Don't put a . in front of types that are not in a
21419         namespace.
21420
21421 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
21422
21423         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
21424
21425 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
21426
21427         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
21428         #76436.
21429         (mono_marshal_get_ldflda_wrapper): Fix a warning.
21430
21431 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21432
21433         * assembly.c metadata-internals.h icall.c: Define an additional
21434         parameter for mono_assembly_name_parse_full, so we can avoid creating
21435         S.R.AssemblyName.Version when no version info wasn't passed.
21436         
21437 2005-10-09  Miguel de Icaza  <miguel@novell.com>
21438
21439         * class.c (mono_type_get_full_name): Reimplement method that was
21440         removed. 
21441
21442         * image.c: Some docs
21443
21444 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
21445
21446         * profiler.c (output_newobj_profile): Fix printing of Total memory
21447         on x86.
21448
21449 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
21450
21451         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
21452
21453 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
21454
21455         * threads.c: remove debug output.
21456
21457 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
21458
21459         * threads.c (mono_thread_manage): Fix crashes if more than 64
21460         threads need to be aborted. Hopefully fixes #75899.
21461
21462         * assembly.c (mono_stringify_assembly_name): New helper function.
21463
21464         * class.c: Use mono_stringify_assembly_name instead of the similar
21465         static function.
21466
21467         * assembly.h assembly.c: Add support for calling a postload search 
21468         hook if an assembly cannot be loaded.
21469
21470         * appdomain.c: Register new search hooks which call the AssemblyResolve
21471         events in AppDomain. Fixes #75231
21472
21473 2005-10-07  Martin Baulig  <martin@ximian.com>
21474
21475         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
21476         methods without debug info.
21477
21478 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
21479
21480         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
21481         wrappers.
21482
21483 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21484
21485         * file-io.c: now that we return symlinks, use lstat and, when the file
21486         is a symbolic link, stat, to get the file attributes. Also avoid the
21487         conversion to/from utf16/external.
21488
21489 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
21490
21491         * class.c (mono_class_layout_fields): Compute klass->has_references
21492         correctly if an embedded valuetype is not yet initialized. Fixes
21493         #76331.
21494
21495 2005-10-04  Martin Baulig  <martin@ximian.com>
21496
21497         * metadata.c
21498         (mono_metadata_load_generic_param_constraints): New public
21499         function; splitted the constraints loading out from
21500         mono_metadata_load_generic_params().
21501
21502         * class.c (mono_class_create_from_typedef): Call
21503         mono_metadata_load_generic_param_constraints() after setting up
21504         the type and creating our parent; fixes #75329.
21505
21506 2005-10-04  Martin Baulig  <martin@ximian.com>
21507
21508         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
21509         non-dynamic parent classes.
21510
21511 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
21512
21513         * file-io.c : win32 build fix (ETXTBSY seems not found).
21514
21515 2005-10-04  Martin Baulig  <martin@ximian.com>
21516
21517         * reflection.c
21518         (mono_image_get_methodspec_token): Make the cache actually work;
21519         fixes #75974.
21520
21521 2005-10-04  Martin Baulig  <martin@ximian.com>
21522
21523         * class.c (mono_class_name_from_token): Removed the unneccessary
21524         `MonoGenericContext *' argument.
21525
21526 2005-10-04  Martin Baulig  <martin@ximian.com>
21527
21528         * loader.c
21529         (method_from_methodspec): Make the caching work again; fixes the
21530         performance regression from #76262.
21531
21532 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21533
21534         * file-io.c:
21535         * file-io.h:
21536         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
21537         GetFileSystemEntries that performs the same work but without going
21538         into io-layer, locking, etc.
21539
21540 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
21541
21542         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
21543         ThreadState_Stopped as well. Fixes #76047.
21544
21545 2005-09-29  Martin Baulig  <martin@ximian.com>
21546
21547         * class.c
21548         (inflate_generic_context): If the new context has a `gmethod', set
21549         its `container' that that gmethod's `container'.
21550
21551         * metadata.c
21552         (mono_metadata_parse_generic_param): Simplify things;
21553         `generic_container = generic_context->container;' is just fine.
21554
21555         * loader.c (method_from_methodspec): Code cleanups.
21556
21557 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
21558
21559         * decimal.c: fix warning (and let gcc generate correct
21560         code on ARM with optimizations).
21561
21562 2005-09-28  Martin Baulig  <martin@ximian.com>
21563
21564         * loader.c
21565         (method_from_memberref): Added `MonoGenericContext *class_context'
21566         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
21567         (method_from_methodspec): If we're a memberref, use the enclosing
21568         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
21569
21570 2005-09-28  Martin Baulig  <martin@ximian.com>
21571
21572         * object.c (mono_runtime_invoke_array): Added support for
21573         MONO_TYPE_GENERICINST; fixes #75917.
21574
21575 2005-09-27  Martin Baulig  <martin@ximian.com>
21576
21577         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
21578         `k->byval_arg.type' to determine the actual type.
21579
21580         * loader.c (method_from_methodspec): Removed some hacks.
21581
21582 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
21583
21584         * class-internals.h (mono_field_is_deleted): Do the test for
21585         rtspecialname before we check the actual name of the field. This
21586         prevents us from dereferencing a pointer into the string table,
21587         saving us from accessing a few pages
21588
21589         * *.c: Replace the use of {Enter,Leave}CriticalSection with
21590         macros. This will allow a deadlock debugger to easily be plugged
21591         in.
21592
21593 2005-09-27  Martin Baulig  <martin@ximian.com>
21594
21595         * loader.c (method_from_methodspec): Create a "signature"
21596         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
21597
21598 2005-09-27  Martin Baulig  <martin@ximian.com>
21599
21600         * class.c
21601         (inflate_generic_class): Correctly set the new context's
21602         container.
21603
21604         * loader.c
21605         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
21606         instead of a `MonoGenericContext *'.
21607         (mono_method_signature_full): Take a `MonoGenericContainer *'
21608         instead of a `MonoGenericContext *'.
21609
21610         * metadata.c
21611         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
21612         instead of a `MonoGenericContext *'.
21613         (mono_metadata_parse_method_signature_full): Likewise.
21614
21615 2005-09-26  Martin Baulig  <martin@ximian.com>
21616
21617         * class.c
21618         (mono_class_from_generic_parameter): Set `klass->generic_container'
21619         (mono_class_from_generic_parameter): Likewise.
21620         (mono_bounded_array_class_get): We inherit the generic container
21621         from the element class.
21622
21623         * loader.c
21624         (find_method, find_method_in_class): Take a `MonoGenericContext *'
21625         argument rather than computing it here.
21626         (method_from_memberref): Correctly set the generic context before
21627         parsing the signature.  Fixes #75681.
21628
21629 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
21630
21631         * object.c (mono_class_has_special_static_fields): Fix warnings.
21632
21633 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21634
21635         * assembly.c: Add parse_public_key function, to
21636         par the public keys. Also added mono_assembly_name_parse_full,
21637         to define it the parsed key should be freed or not.
21638         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
21639         to parse a long format assembly name.
21640         * metadata-internals.h: Keep mono_assembly_name_parse_full as
21641         private, since calling it to preserve the key requires
21642         freeing it manually.
21643         
21644 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
21645
21646         * locales.c : removed HAVE_ICU part.
21647
21648 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
21649
21650         * object.c (mono_class_create_runtime_vtable): Avoid calling 
21651         field_is_special_static if the klass has no special static fields.
21652
21653         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
21654         (MonoCachedClassInfo): Likewise.
21655
21656         * object.c (mono_class_has_special_static_fields): New helper function.
21657
21658 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21659
21660         * class.c (mono_class_create_from_typedef): Don't call 
21661         interfaces_from_typedef_full for enums.
21662         (mono_class_create_from_typedef): Compute the base types of enums directly
21663         without calling mono_class_setup_fields ().
21664         (mono_class_find_enum_basetype): New helper function.
21665
21666         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
21667         one place inside the string heap.
21668         
21669 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
21670
21671         * class.c: locking fixes, code cleanups, some docs added.
21672         Allocate some data structures in the image mempool.
21673
21674 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21675
21676         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
21677         the example code.
21678         
21679 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
21680
21681         * class-internals.h, class.c, reflection.c: reduce memory taken by
21682         MonoClass.
21683
21684 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
21685
21686         * metadata.c, metadata.h, loader.h: documentation updates, code and
21687         API cleanups.
21688
21689 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21690
21691         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
21692         the example code.
21693
21694         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
21695         page faults caused by the runtime while reading metadata.
21696
21697 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21698
21699         * socket-io.c: the field names were changed 3 months ago and no one
21700         realized until bug #76077 got filed!
21701
21702 2005-09-20  Martin Baulig  <martin@ximian.com>
21703
21704         * icall.c (assembly_icalls): Removed some unused debugger icalls.
21705
21706 2005-09-20  Martin Baulig  <martin@ximian.com>
21707
21708         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
21709         write the rank into the class entry.
21710
21711 2005-09-20  Martin Baulig  <martin@ximian.com>
21712
21713         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
21714
21715 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
21716
21717         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21718
21719         * icall.c (custom_attrs_defined_internal): New icall.
21720
21721         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
21722         function.
21723         (mono_custom_attrs_construct_by_type): New helper function.
21724
21725 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
21726
21727         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
21728         terminate the resulting string. Fixes #76123.
21729
21730 2005-09-16  Martin Baulig  <martin@ximian.com>
21731
21732         * mono-debug.c
21733         (mono_debug_add_method): Ignore inflated methods for the moment.
21734
21735 2005-09-14  Martin Baulig  <martin@ximian.com>
21736
21737         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
21738
21739 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
21740
21741         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
21742         return a success/failure indication.
21743         (mono_metadata_interfaces_from_typedef_full): Ditto.
21744         (get_constraints): Ditto.
21745
21746 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
21747
21748         * marshal.c (emit_marshal_array): Fix handling of null arrays.
21749         
21750         * marshal.c (emit_marshal_array): Add support for returning string
21751         arrays from delegates. Fixes #76063.
21752
21753         * marshal.c: Use the emit_ldloc/stloc macros where possible.
21754
21755 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
21756
21757         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
21758         icall.
21759
21760 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
21761
21762         * reflection.c icall.c: Fix after mono_get_exception_type_load
21763         signature change.
21764
21765         * assembly.c (mono_assembly_get_assemblyref): New helper function.
21766         (mono_assembly_load_reference): Use the new helper.
21767
21768         * class-internals.h (MonoLoaderError): New structure containing 
21769         information about type loading errors.
21770
21771         * class-internals.h loader.c: Add APIs to store per-thread loader
21772         error information.
21773
21774         * loader.c class.c: Set the loader error if needed.
21775
21776         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
21777
21778 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
21779
21780         * decimal.c: fixed to handle the broken ARM fp format.
21781
21782 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
21783
21784         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
21785         broken.
21786
21787 2005-09-06  Martin Baulig  <martin@ximian.com>
21788
21789         * domain.c (supported_runtimes): Added v2.0.50727.
21790
21791 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
21792
21793         * culture-info.h: reduce the size of some structures.
21794
21795 2005-09-05  Martin Baulig  <martin@ximian.com>
21796
21797         Reflect latest API changes in the August CTP.
21798
21799         * icall.c
21800         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
21801         ("MonoType.HasGenericArguments"): Removed.
21802         ("MonoMethod.BindGenericParameters"): Renamed to
21803         "MakeGenericMethod".
21804         ("MethodBuilder.BindGenericParameters"): Renamed to
21805         "MakeGenericMethod".    
21806
21807 2005-09-05  Martin Baulig  <martin@ximian.com>
21808
21809         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
21810
21811 2005-09-05  Martin Baulig  <martin@ximian.com>
21812
21813         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21814
21815         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
21816         generic_container is non-NULL.
21817
21818 2005-09-05  Martin Baulig  <martin@ximian.com>
21819
21820         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21821
21822         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
21823
21824 2005-08-29  Michal Moskal  <malekith@nemerle.org>
21825
21826         * reflection.c (encode_locals,
21827         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
21828         for large generic types.
21829
21830 2005-09-05  Martin Baulig  <martin@ximian.com>
21831
21832         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21833
21834         * class.c (mono_dup_array_type): New public method.
21835         (mono_metadata_signature_deep_dup): New public method.
21836         (dup_type): Correctly duplicate array and function types.
21837
21838 2005-09-05  Martin Baulig  <martin@ximian.com>
21839
21840         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21841
21842         * reflection.c (get_default_param_value_blobs): Handle generic types
21843         and generic methods.
21844
21845 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
21846
21847         * class.c: Fixed error reporting (method/class were inversed) for 
21848         inheritance demands.
21849         * security-manager.c|h: Added the AppDomain when calling the managed
21850         System.Security.SecurityManager.InheritanceDemand method.
21851
21852 2005-09-01  Raja R Harinath  <rharinath@novell.com>
21853
21854         * reflection.c (encode_marshal_blob): 'marshaltype' and
21855         'marshaltyperef' are alternate sources for the custom marshaler
21856         name.
21857
21858 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
21859
21860         * class.c: fix creation of array classes with rank == 1
21861         (patch by Ankit Jain <jankit@novell.com>).
21862
21863 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
21864
21865         * object.c: fix check for creating the bound data for arrays vs
21866         szarrays.
21867
21868 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21869
21870         * object.c: configuration file name is now based on the executable name,
21871         not the image name. Fixes bug #75931.
21872
21873 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
21874
21875         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
21876         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
21877
21878 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
21879
21880         * rand.c: Use wincrypt.h instead of WinCrypt.h.
21881
21882 2005-08-24  Ankit Jain  <jankit@novell.com>
21883             Raja R Harinath  <rharinath@novell.com>
21884
21885         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
21886           called by it recursively.
21887           (mono_class_init): Remove special case in pending_init handling, since it's
21888           superseded by the fix to mono_class_from_typeref.
21889
21890 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
21891
21892         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
21893         BROKEN_THREAD_START stuff.
21894
21895 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
21896
21897         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
21898         trampoline.
21899
21900         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
21901         
21902         * object.c (mono_delegate_ctor): Replace the original function address with
21903         a delegate trampoline.
21904
21905 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
21906
21907         * icall.c: add boolean argument to base64_to_byte_array and 
21908         InternalFromBase64String to control whether a whitespace-only string
21909         is allowed (or should casue a FormatException to be thrown). We need
21910         this as the behavior has changed between MS.NET 1.x and 2.0, and we
21911         to match the MS behaviour in both profiles.
21912         * appdomain.c: Bump corlib version.
21913
21914 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21915
21916         This patch implements a big portion of publisher policy
21917         support, used to bind assembly versions and redirect
21918         one assembly from version A to version B.
21919
21920         * assembly.c:
21921         New GSList loaded_assembly_bindings, for storing the cached
21922         assembly bindings.
21923         (assembly_binding_maps_name): New static function for checking if a 
21924         assembly binding information maps an assembly name.
21925         (mono_assembly_binding_info_free): New function for freeing
21926         assembly binding information resources.
21927         (get_publisher_policy_info): New static function for retrieving 
21928         assembly binding information from a MonoImage.
21929         (compare_versions): New static function for comparing an assembly
21930         binding information data and the version of an assembly name.
21931         (check_policy_versions): New static function for checking if an
21932         assembly binding info mapping an assembly name is valid for it.
21933         (mono_assembly_load_publisher_policy): New static function for
21934         loading the 'policy.major.minor.MyAssembly' image for an assembly
21935         with an assembly name 'aname'.
21936         (mono_assembly_bind_version): New static function for updating
21937         assembly redirection.
21938         (mono_assembly_apply_binding): New static function for applying
21939         assembly binding.
21940         (search_binding_loaded): New static function for searching 
21941         loaded assembly binding infos in the cache domain.
21942         (mono_assembly_load_full): Don't apply assembly binding for
21943         reflection only assemblies.
21944
21945         * metadata-internals.h: Add MonoAssemblyBindingInfo,
21946         which contains information about assembly binding. Also
21947         declare signature for mono_config_parse_publisher_policy ()
21948         function, used to retrieve pub policy info.
21949         
21950         * mono-config.c:
21951         (publisher_policy_start): New static function used to parse publisher 
21952         policy config files.
21953         (publisher_policy_parser): New static MonoParseHandler containing 
21954         the functions used when parsing config files.
21955         (mono_config_parse_publisher_policy): New function for parsing
21956         publisher policy files.
21957         
21958 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
21959
21960         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
21961
21962         * marshal.c (mono_delegate_free_ftnptr): Ditto.
21963
21964         * object.c (mono_get_addr_from_ftnptr): New helper function.
21965
21966         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
21967
21968         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21969
21970 2005-08-19  Dick Porter  <dick@ximian.com>
21971
21972         * threads.c, threads.h, appdomain.c, appdomain.h,
21973         profiler-private.h, monitor.c, object.c, object-internals.h,
21974         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
21975         store the thread ID, so it can hold a 64 bit value if needed.
21976
21977 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
21978
21979         * reflection.c (mono_reflection_create_dynamic_method): Store the
21980         handle class into the method references as well so ldtoken works in
21981         dynamic methods.
21982
21983         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
21984         types.
21985
21986 2005-08-19  Ankit Jain <jankit@novell.com>
21987
21988         Fix #75847.
21989         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
21990           here rather than using the method signature of a arbitrary function
21991           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
21992           two arguments.
21993           Hack done with Harinath.
21994
21995 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21996
21997         * threadpool.c: disable printing stack traces when we get a exception
21998         in a threadpool thread. I need to do more testing to figure out which
21999         cases actually print this. Fixes bug #75828.
22000
22001 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22002
22003         * icall.c: there might be ignored whitespace after the last '='. This
22004         fixes length computation and bug #75840.
22005
22006 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
22007
22008         * assembly.c (mono_assembly_load_full): Consider .exe extension as
22009         well. Fixes #75809.
22010
22011         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
22012         #75784.
22013         
22014         * reflection.c (create_custom_attr_data): Ditto.
22015
22016 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
22017
22018         * locales.c, culture-info.h : removed RegionLCIDMap.
22019         * culture-info-tables.h : regenerated.
22020
22021 2005-08-16  Martin Baulig  <martin@ximian.com>
22022
22023         * class.c (mono_type_get_name_recurse): Small fix.
22024
22025 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
22026
22027         * locales.c : indentation fixie.
22028
22029 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
22030
22031         * object-internals.h,
22032           locales.h,
22033           locales.c,
22034           culture-info.h,
22035           icall.c : added RegionInfo table support.
22036         * culture-info-table.h : regenerated for region support.
22037
22038 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
22039
22040         * reflection.c (resolve_object): handle all kinds of MonoMethod
22041         including generic ones
22042
22043 2005-08-12  Ankit Jain <jankit@novell.com>
22044
22045         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
22046           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
22047
22048 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
22049
22050         * process.c: Don't close a thread handle when it's NULL. This is a
22051         workaround for bug #75733.
22052
22053 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
22054
22055         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
22056
22057 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
22058
22059         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
22060
22061 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22062
22063         * threadpool.c: if a work item in the thread pool has a callback that
22064         catches a exception, don't propagate it after invoking the callback.
22065         Fixes bug #75336.
22066
22067 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
22068
22069         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
22070
22071         * class-internals.h (MonoCachedClassInfo): Add some new fields.
22072
22073         * class.c (mono_class_init): Load field info lazily in the AOT case.    
22074
22075         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
22076
22077 2005-08-03  Ankit Jain  <jankit@novell.com>
22078
22079         Fix #75683.
22080         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
22081           PInvoke calling convention is 0.
22082
22083 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
22084
22085         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
22086         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
22087
22088 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
22089
22090         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
22091         to handle threads not started by the GC (patch by Michael Meeks
22092         <michael.meeks@novell.com>).
22093
22094 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
22095
22096         * reflection.c: Make buffer used in emitting types larger for some
22097         big generic types (patch by Michal Moskal).
22098
22099 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
22100
22101         * mono-debug.c: Fix some (not all) alignment problems.
22102
22103 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22104
22105         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
22106         Invoke mono_image_load_from_data_full passing the refonly
22107         parameter.
22108
22109         * assembly.c
22110         (mono_assembly_open_from_bundle): Add the refonly argument, 
22111         in order to pass it to other methods it calls to.
22112         (do_mono_assembly_open): Add the refonly argument, in order 
22113         to pass it to other methods it calls to.
22114         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
22115         the refonly parameter to it.
22116
22117         * image.c: Add loaded_images_refonly_hash and
22118         loaded_images_refonly_guid_hash to cache the reflection
22119         only loaded images.
22120         (mono_images_init): Initialize the hash tables used for
22121         caching the reflection only images.
22122         (load_modules): Invoke mono_image_open_full passing the refonly
22123         parameter to load the modules the correct way.
22124         (build_guid_table): Add the refonly argument, to re-build the 
22125         correct hash table.
22126         (do_mono_image_open): Added the refonly argument, in order to
22127         define it for the loaded image.
22128         (mono_image_loaded_full): New function, which receives an
22129         additional parameter to look for the image in the refonly or
22130         non-refonly section.
22131         (mono_image_loaded): Updated, using mono_image_loaded_full.
22132         (mono_image_loaded_by_guid_full): The same case that happens
22133         with mono_image_loaded_full.
22134         (mono_image_loaded_by_guid): Likewise.
22135         (register_image): Use the ref_only variable inside MonoImage
22136         to decide in which hash table store the current image.
22137         (mono_image_open_from_data_full): Rename
22138         mono_image_open_from_data to mono_image_open_from_data_full,
22139         adding the refonly argument, to define the ref_only variable 
22140         inside MonoImage.
22141         (mono_image_open_from_data): Return 
22142         mono_image_open_from_data_full.
22143         (mono_image_open_full): Rename mono_image_open to
22144         mono_image_open_full, receiving the new refonly argument,
22145         to pass it to inner methods.
22146         (mono_pe_file_open): Update this function, to open
22147         a MonoImage as a non-refonly image.
22148         (mono_image_close): Use the refonly variable inside
22149         MonoImage to remove the image from the correct caches.
22150
22151         * image.h: Add the signatures of mono_image_open_full,
22152         mono_image_open_from_data_full, mono_image_loaded_full,
22153         mono_image_loaded_by_guid_full.
22154
22155         * metadata-internals.h: Add the ref_only field to 
22156         MonoImage.
22157         
22158 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22159
22160         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
22161         Fix the last behavior, which used to load the assemblies and
22162         extract MonoReflectionAssemblyName information, instead of
22163         extract it from the metadata tables. Needed for Reflection
22164         Only assemblies.
22165         
22166 2005-07-29  Martin Baulig  <martin@ximian.com>
22167
22168         * mono-debug-debugger.c
22169         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
22170         not initialized.
22171
22172         * mono-debug.c
22173         (mono_debug_address_from_il_offset): Check whether we have
22174         debugging support before attempting to take the lock.
22175         (mono_debug_source_location_from_address): Likewise.
22176         (mono_debug_source_location_from_il_offset): Likewise.
22177         (mono_debug_il_offset_from_address): Likewise.
22178         (mono_debug_address_from_il_offset): Likewise.
22179
22180 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
22181
22182         * class.c (mono_class_from_name_case): Add support for dynamic images.
22183         Fixes #75650.
22184
22185         * object.c (mono_class_compute_gc_descriptor): Add a workaround
22186         for #75479.
22187
22188 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
22189         
22190         * reflection.c (mono_method_get_object): Fix warning.
22191
22192 2005-07-28  Martin Baulig  <martin@ximian.com>
22193
22194         * mono-debug.c
22195         (mono_debug_add_wrapper): Also write the wrapper type.
22196
22197 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
22198
22199         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
22200         
22201         * class.c (mono_class_init): Avoid reading nested classes if the AOT
22202         data indicates the class has none.
22203
22204 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
22205
22206         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
22207         loader lock with the debugger lock. Prevents deadlocks for beagle.
22208
22209         Beagle can now run on an smp box for a weekend without any
22210         issues. Woohoo!
22211
22212 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
22213
22214         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
22215         in a module. Fixes #75629.
22216
22217 2005-07-26  Martin Baulig  <martin@ximian.com>
22218
22219         * mono-debug.c (mono_debug_add_wrapper): New static method.
22220         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
22221         interncall or a wrapper.
22222
22223         * mono-debug.h (MonoDebugWrapperData): New public typedef.
22224         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
22225         (MONO_DEBUGGER_VERSION): Bump to 51.
22226
22227         * mono-debug-debugger.c
22228         (mono_debugger_add_type): Removed this empty function.
22229         (mono_debugger_add_method): Likewise.
22230
22231 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
22232
22233         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
22234         before accessing method->slot.
22235
22236 2005-07-21  Jb Evain  <jbevain@gmail.com>
22237
22238         * reflection.c (method_encode_clauses/class): Handle filters clauses.
22239         Fixes #75010.
22240
22241 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
22242
22243         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
22244         #75587.
22245
22246 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
22247
22248         * image.h image.c: Add mono_image_get_guid () API function.
22249
22250 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
22251
22252         There were issues when multiple threads tried to load
22253         assemblies. A deadlock was created between assemblies_mutex and
22254         mono_domain_assemblies_lock. This fixes the issue by making the
22255         assembly ref counting be lock free. See bug 75586.
22256         
22257         * image.c (mono_image_close): The add ref function here was using
22258         Interlocked operations while the unref was using a mutex and a
22259         --. I don't think this was ever a bug that would be exposed in a
22260         non-pendantic way (ie, by an embedder doing a ref on one thread
22261         and an unref on another), but for the sake of correctness, this is
22262         now Interlocked.
22263
22264         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
22265         (mono_assembly_load_reference): Call mono_assembly_addref rather
22266         than touching the refcount ourselves.
22267         (mono_assembly_close): Use InterlockedDecrement to unref the
22268         assembly. Don't acquire the lock unless it is actually needed.
22269
22270 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
22271
22272         * class.c (mono_class_layout_fields): Fix calculation of has_references
22273         for generic types.
22274
22275 2005-07-12  Martin Baulig  <martin@ximian.com>
22276
22277         Applying a patch from Michal Moskal <malekith@nemerle.org>.
22278
22279         * metadata.c
22280         (mono_type_hash): Provide better hashing for generic instances.
22281         (mono_generic_inst_hash): Improve hashing.
22282         (mono_generic_class_hash): Likewise.
22283
22284         * reflection.c (mymono_metadata_type_hash): Improve hashing for
22285         generic instances.
22286
22287 2005-07-12  Martin Baulig  <martin@ximian.com>
22288
22289         * reflection.c (mono_reflection_create_runtime_class): Remove the
22290         hack for generic type definitions and non-`Run' assemblies.
22291         (mono_reflection_bind_generic_parameters): Also use
22292         `klass->wastypebuilder' to check for TypeBuilders.
22293
22294 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
22295
22296         * class.c (mono_class_layout_fields): Fix calculation of has_references
22297         for generic types.
22298
22299         * class.c (inflate_generic_class): Fix a leak.
22300         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
22301         for generic types.
22302
22303 2005-07-11  Martin Baulig  <martin@ximian.com>
22304
22305         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
22306         on error.
22307
22308 2005-07-11  Martin Baulig  <martin@ximian.com>
22309
22310         * loader.c (find_method): Also lookup in
22311         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
22312
22313 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22314
22315         * appdomain.c (mono_domain_unload): Don't free the error message
22316         before passing it to mono_get_exception_...
22317
22318         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
22319         
22320 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
22321
22322         * threads.c: try to better guess an available RT signal (bug #75387).
22323
22324 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22325
22326         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
22327         and CACHE_OBJECT.
22328
22329 2005-07-07  Martin Baulig  <martin@ximian.com>
22330
22331         * class.c (mono_type_get_name_full): Return NULL for
22332         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
22333         fixes #75408.
22334
22335 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22336
22337         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
22338         exit the appdomain as well being aborted.
22339
22340         * threadpool.c: Create all threadpool threads inside the root appdomain, and
22341         change back to the root domain after calling managed code. This enables
22342         appdomains using threadpools to be unloaded.
22343
22344 2005-07-07  Martin Baulig  <martin@ximian.com>
22345
22346         * class-internals.h
22347         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
22348         into `MonoDynamicGenericClass' since we only need it for dynamic
22349         types.
22350
22351         * reflection.c (mono_class_bind_generic_parameters): We don't need
22352         to compute the `parent' here.
22353
22354 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
22355
22356         * culture-info-table.h : regenerated.
22357
22358 2005-07-06  Martin Baulig  <martin@ximian.com>
22359
22360         * icall.c
22361         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
22362
22363         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
22364
22365 2005-07-06  Martin Baulig  <martin@ximian.com>
22366
22367         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
22368         we're doing a signature-only comparision; fixes #74945.
22369
22370 2005-07-06  Martin Baulig  <martin@ximian.com>
22371
22372         * class-internals.h (MonoGenericClass): Moved some things out into
22373         a new `MonoInflatedGenericClass' type.  
22374         (MonoInflatedGenericClass): New type; the `klass' of a
22375         `MonoGenericClass' is now computed lazyly in
22376         mono_get_inflated_generic_class().      
22377
22378         * class.c (mono_get_inflated_generic_class): New public function.
22379         (mono_class_inflate_generic_method): Removed the unused
22380         `MonoClass *' argument.
22381         (setup_generic_vtable): Don't call mono_get_inflated_method() on
22382         all the methods.
22383         (mono_class_create_generic): Make this static and merge it with
22384         mono_class_create_generic_2(); we're now called automatically from
22385         mono_get_inflated_generic_class().
22386
22387         * loader.c (mono_method_signature): Call
22388         mono_get_inflated_method() here.
22389
22390 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
22391
22392         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
22393         type of fields with RVA.
22394
22395         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
22396         for this pseudo class.
22397         (my_mono_class_from_generic_parameter): Likewise.
22398         (mono_class_init): Allow interfaces to have cctors.
22399
22400 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
22401
22402         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
22403         lazily for AOT methods.
22404
22405 2005-07-05  Martin Baulig  <martin@ximian.com>
22406
22407         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
22408         returns FALSE for a successful match, not TRUE.
22409
22410 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
22411
22412         * loader.c (mono_method_get_index): Optimize this a bit.
22413
22414 2005-07-04  Martin Baulig  <martin@ximian.com>
22415
22416         * class.c
22417         (class_compute_field_layout): Move the check for generic type
22418         definitions into mono_class_layout_fields().  Fixes #74684.
22419         (mono_class_from_generic_parameter): Correctly compute
22420         `klass->parent'; fixes #75457.
22421
22422         * reflection.c (register_assembly, register_module): Make sure
22423         `domain->rejobject_hash' is already created.
22424
22425 2005-07-02  Martin Baulig  <martin@ximian.com>
22426
22427         * class-internals.h
22428         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
22429         `MonoDynamicGenericClass'.      
22430
22431 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
22432
22433         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
22434         returned by a field getter is null, since null is a valid value.
22435
22436 2005-07-01  Martin Baulig  <martin@ximian.com>
22437
22438         * reflection.c (mono_reflection_generic_class_initialize): Update
22439         the `dgclass->fields [i].parent' to the correct class.
22440         (mono_image_get_fieldref_token): Use the declaring type, not the
22441         reflected type.
22442
22443 2005-07-01  Martin Baulig  <martin@ximian.com>
22444
22445         * loader.c (find_method): Also look in the interfaces; fixes #75429.
22446
22447 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
22448
22449         * threads.c (thread_cleanup): assert that thread != NULL
22450         (wait_for_tids_or_state_change): We were using the wrong variable
22451         when accessing wait->threads. `i' was always out of the bounds of
22452         the array.
22453
22454 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22455
22456         * loader.c: map user32 and kernel32 to libMonoSupportW
22457
22458 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
22459
22460         * appdomain.c (unload_thread_main): Mark this as WINAPI.
22461
22462 2005-06-28  Martin Baulig  <martin@ximian.com>
22463
22464         * loader.c (method_from_methodspec): Fix #75334.
22465
22466 2005-06-28  Martin Baulig  <martin@ximian.com>
22467
22468         Fix #74953 - Arrays now implement the generic IList<T> interface
22469         on the 2.0 platform.
22470
22471         * class-internals.h (MonoDefaults): Added `generic_array_class'.
22472
22473         * reflection.c (mono_class_bind_generic_parameters): New public
22474         function; similar to mono_reflection_bind_generic_parameters(),
22475         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
22476
22477         * domain.c (mono_init_internal): Try to initialize.
22478         `mono_defaults.generic_array_class' here; this'll only succeed if
22479         we're using the 2.0 corlib.
22480
22481         * icall.c
22482         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
22483         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
22484         (mono_lookup_internal_call): Added support for nested classes.
22485
22486         * loader.c
22487         (mono_get_method_from_token): Set `result->signature->pinvoke' if
22488         we're an interncall and have generic arguments.
22489
22490         * class.c
22491         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
22492         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
22493         instance of System.Array.InternalArray<T> for arrays, so they
22494         implement the generic IList<T> interface.
22495
22496 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
22497
22498         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
22499         (chastamar@yahoo.com). Fixes #75374.    
22500
22501 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
22502
22503         * culture-info-table.h: regenerated.
22504
22505 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22506
22507         * icall.c: handle spaces correctly for base64 strings.
22508
22509 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
22510
22511         * *.c: Kill some warnings.
22512
22513 2005-06-23  Duncan Mak  <duncan@novell.com>
22514
22515         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
22516         that this builds on Solaris 10 (x86).
22517
22518 2005-06-23  Martin Baulig  <martin@ximian.com>
22519
22520         * class.c
22521         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
22522         generic type definitions.
22523
22524 2005-06-23  Martin Baulig  <martin@ximian.com>
22525
22526         Fix #75331.
22527
22528         * metadata.c (mono_class_get_overrides): Renamed to
22529         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
22530         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
22531         pass it to mono_get_method_full().
22532
22533 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
22534
22535         * reflection.c (mono_reflection_create_runtime_class): take the
22536         mono_domain_lock in this method. Prevents deadlocks
22537
22538 2005-06-22  Martin Baulig  <martin@ximian.com>
22539
22540         * loader.c (method_from_methodspec): Fix #75330.
22541
22542 2005-06-22  Martin Baulig  <martin@ximian.com>
22543
22544         * reflection.c (type_get_qualified_name): Use
22545         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
22546         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
22547         argument; use it if we don't have an assembly name.
22548
22549 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
22550
22551         * object.c: In mono_message_init, set "copy out" flag for in
22552         parameters with the [Out] flag.
22553
22554 2005-06-21  Martin Baulig  <martin@ximian.com>
22555
22556         * class.c
22557         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
22558         and MONO_TYPE_PTR.
22559
22560 2005-06-21  Martin Baulig  <martin@ximian.com>
22561
22562         * class.c (mono_class_init): Don't initialize `class->fields' for
22563         generic instances since they're initialized again in
22564         compute_field_layout(). 
22565         (compute_field_layout): Set the field's `generic_info' here; fix
22566         #75320. 
22567
22568 2005-06-21  Martin Baulig  <martin@ximian.com>
22569
22570         * class-internals.h
22571         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
22572
22573         * metadata.c (mono_metadata_generic_method_equal): Also
22574         distinguish the `generic_class'; fixes #75334.
22575
22576 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22577
22578         * domain.c:
22579         * appdomain.c:
22580         * domain-internals.h:
22581         * reflection.c: 'domain_assemblies' field is now protected by its own
22582         lock. Don't call into managed code to run the AssemblyLoad event if we
22583         now there are no registered delegates for it.
22584
22585 2005-06-20  Martin Baulig  <martin@ximian.com>
22586
22587         * class.c (mono_class_is_assignable_from): Use a custom version of
22588         mono_class_has_parent() to make things work for generic instances;
22589         fix #75300.
22590
22591 2005-06-20  Martin Baulig  <martin@ximian.com>
22592
22593         * loader.c (method_from_methodspec): Apply a patch from
22594         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
22595
22596 2005-06-20  Martin Baulig  <martin@ximian.com>
22597
22598         * class.c (mono_class_init): Reverted Zoltan's last change; it
22599         breaks generics.
22600
22601 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
22602
22603         * threads.c (wait_for_tids_or_state_change): Add missing locking.
22604
22605 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22606
22607         * socket-io.c: fix the index in the socket array for writable/error
22608         sockets. Fixes bug #75306.
22609
22610 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
22611
22612         * class.c (mono_class_init): Allow interfaces to have static ctors.
22613
22614 2005-06-17  Martin Baulig  <martin@ximian.com>
22615
22616         * loader.c (method_from_methodspec): Use `context->container' when
22617         parsing the `gmethod->inst'.
22618
22619 2005-06-17  Martin Baulig  <martin@ximian.com>
22620
22621         * class.c (mono_type_get_name_recurse): Don't add the assembly
22622         name for type arguments.
22623
22624 2005-06-15  Martin Baulig  <martin@ximian.com>
22625
22626         * reflection.c (mono_image_get_inflated_method_token): Encode
22627         correct klass; fixes #75260.
22628
22629 2005-06-13 Michal Moskal <malekith@nemerle.org>
22630
22631         * icall.c: Make GetCorrespondingMethod/Constructor take
22632         MonoReflectionMethod method not MonoMethod. Removed
22633         MonoType.GetCorrespondingField, and make
22634         MonoGenericType.GetCorrespondingField take name not
22635         MonoClassField.
22636
22637 2005-06-13  Michal Moskal <malekith@nemerle.org>
22638
22639         * reflection.c (field_encode_signature, encode_locals):
22640          Make sizes of buffers for types larger (for big generic types).
22641          (create_generic_typespec,
22642          mono_reflection_sighelper_get_signature_local,
22643          mono_reflection_sighelper_get_signature_field):
22644          Add asserts for too small buffers.
22645
22646 2005-06-15  Martin Baulig  <martin@ximian.com>
22647
22648         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
22649         if our parent is not a dynamic type.
22650
22651 2005-06-15  Martin Baulig  <martin@ximian.com>
22652
22653         * class-internals.h (MonoTypeNameFormat): New enum.
22654
22655         * class.c
22656         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
22657         (mono_type_get_full_name): Removed.
22658         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
22659         argument instead of the boolean's.
22660
22661         * icall.c (ves_icall_System_MonoType_getFullName):
22662         Added `gboolean assembly_qualified'.    
22663
22664         * reflection.h
22665         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
22666
22667         * reflection.c (mono_reflection_parse_type): Parse the new type
22668         name format.
22669
22670 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22671
22672         * icall.c: no need to convert from utf16 to utf8 and then back again
22673         after the call to GetLogicalDrives.
22674
22675 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22676
22677         * icall.c: frombase64. Fix problems exposed by new tests.
22678
22679 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22680
22681         * icall.c: added internal calls for converting char [] and strings in
22682         base64 into byte [].
22683
22684 2005-06-10  Martin Baulig  <martin@ximian.com>
22685
22686         * class.c (mono_class_create_generic_2): Read the nested classes
22687         from the metadata rather than from `gklass->nested_classes' since
22688         `gklass' might not be initialized yet.
22689
22690 2005-06-09  Duncan Mak  <duncan@novell.com>
22691
22692         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
22693         all public headers. Fixes #74919.
22694
22695 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
22696
22697         * domain.c: The key for proxy_vtable_hash is now a pointer
22698         array. Added new GHashFunc and GCompareFunc functions for this.
22699
22700         * class.h: The list of interfaces in MonoRemoteClass is known in
22701         advance and can't grow (we create a new MonoRemoteClass if needed),
22702         so now the interface array can be allocated together with
22703         MonoRemoteClass.
22704         
22705         * object.c: Added a new method create_remote_class_key.
22706         Fixed mono_remote_class so it does not depend on
22707         mono_upgrade_remote_class.
22708         Removed extend_interface_array.
22709         Added new method clone_remote_class(), which makes a copy of a remote
22710         class and adds a new interface or class to it.
22711         mono_upgrade_remote_class() now creates a new remote class (or gets
22712         it from the cache) if an vtable upgrade is needed. In this way
22713         we make sure that other objects sharing the same remote class
22714         don't get the new vtable with unwanted interfaces.
22715         
22716         * object-internals.h:
22717         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
22718         
22719         * marshal.c: Track changes in mono_upgrade_remote_class().
22720
22721 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
22722         * icall.c: Add runtime methods for obtaining members of inflated
22723         class, which were created from supplied non-inflated members. It
22724         is used in internal Get{Method,Constructor,Field} methods in
22725         System.Type
22726
22727 2005-06-09  Martin Baulig  <martin@ximian.com>
22728
22729         * reflection.c
22730         (mono_reflection_bind_generic_method_parameters): Fix #75169.
22731
22732 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22733         * reflection.c (mono_image_basic_init): Define
22734         Version in MonoDynamicAssembly. 
22735         
22736 2005-06-08  Martin Baulig  <martin@ximian.com>
22737
22738         Fix #75136.
22739
22740         * loader.c
22741         (mono_method_signature_full): New public method; takes a
22742         `MonoGenericContext *'.
22743         (find_method): Use mono_method_signature_full() and pass the
22744         klass'es context to it.
22745
22746         * class.c (mono_class_is_inflated_method): Use
22747         mono_method_signature_full() and pass the context to it.
22748
22749 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
22750
22751         * object.c: add proper locking in mono_remote_class_vtable(),
22752         fixes possible memory corruption.
22753
22754 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
22755
22756         * marshal.c (mono_remoting_marshal_init): set
22757         initialized after initialization.
22758
22759 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
22760
22761         * locales.c : hush.
22762
22763 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
22764
22765         * object.c (extend_interface_array): fix really silly
22766         memory corrupting / comparison bug.
22767
22768 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22769
22770         * reflection.c: Functions added to support the creation
22771         of CustomAttributeData, which includes Attribute data
22772         used by ReflectionOnly methods.
22773
22774         * reflection.h:  mono_reflection_get_custom_attrs_data and
22775          mono_custom_attrs_data_construct added (functions exposed).
22776
22777          * icall.c: Added mono_reflection_get_custom_attrs_data
22778          as icall.
22779         
22780 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
22781
22782         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
22783         lupus's request.
22784
22785 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
22786
22787         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
22788
22789         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
22790         dynamic DllImportAttribute.
22791
22792         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
22793         dynamic DllImportAttribute.
22794
22795         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
22796         Fixes #75162.
22797
22798 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22799
22800         * threads.c: avoid segfault when an unstarted thread is aborted.
22801
22802 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
22803
22804         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
22805         Returns the name and version of the runtime for reporting.
22806
22807 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22808
22809         * appdomain.c: bump corlib version.
22810         * object-internals.h: new field in MonoReflectionAssembly.
22811
22812 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22813
22814         * object-internals.h: Carlos forgot to add this field.
22815
22816 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22817
22818         * icall.c: Added create_version to create instances
22819         of Version of MonoReflectionAssemblyName. This change helps
22820         the AssemblyName tests to keep running fine.
22821         
22822 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
22823   
22824         * object.c (mono_method_return_message_restore): A somehow less
22825         intrusive fix for #75138.
22826
22827 2005-06-03  Raja R Harinath  <rharinath@novell.com>
22828
22829         * object.c (mono_method_return_message_restore): Fix computation
22830         of expected number of out args.
22831
22832 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
22833
22834         * reflection.c (mono_image_get_method_info): Fix the case when the
22835         charset is empty.
22836
22837 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
22838
22839         * object.c: Added missing null check in
22840           mono_method_return_message_restore.
22841
22842 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
22843
22844         * reflection.c (mono_image_get_method_info): Handle the case when
22845         dllentry is empty.
22846
22847 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
22848
22849         * object.c: When creating the vtable for a proxy, take into account
22850         all inherited interfaces, not only the ones registered in
22851         iclass->interfaces. This fixs bug #74996.
22852         Also, in mono_method_return_message_restore, verify that the array
22853         of out args has the expected lengh.
22854
22855 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22856
22857         * socket-io.c: update the timeout in Poll when the call is interrupte.
22858
22859 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22860
22861         * socket-io.c: support abort/suspend in Select_internal after last
22862         change.
22863
22864 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22865
22866         * threadpool.c: remove warning.
22867
22868 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22869
22870         * icall.c:
22871         * socket-io.[ch]: Select_internal uses poll() now when available, thus
22872         removing the 1024 limit from select(). Runtime part of the fix for
22873         bug #71203.
22874
22875 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22876
22877         * socket-io.c: when resolving the addresses for the same
22878         host returned by gethostname(), get the local IPs from the interface
22879         list. Loopback addresses are discarded if the are interfaces up with
22880         non-loopback ones. Fixes bug #63265.
22881
22882 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
22883
22884         * appdomain.c, verify.c, object-internals.h, reflection.c:
22885         bumped corlib number to 36, and added new extra_flags field
22886         to ReflectionMethodBuilder and friends.  Fixes #75060.
22887
22888 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
22889
22890         * gc.c: register a new weak link only if the object is non-null
22891         (fixes bug#75047).
22892
22893 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
22894
22895         * culture-info.h : short time pattern too.
22896
22897 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
22898
22899         * culture-info.h : expand long time pattern string length.
22900
22901 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
22902
22903         * culture-info-table.h : update (more French date format; #72788).
22904
22905 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
22906
22907         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
22908         the method is static. Fixes #75029.
22909
22910 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
22911
22912         * reflection.c: Update the table_idx field of method builders after
22913         saving the module, since it can change. This is a workaround for
22914         bug #74914. 
22915
22916 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
22917
22918         * culture-info-table.h : update (additional French date format).
22919
22920 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
22921
22922         * icall.c (ves_icall_type_Equals): Revert last change.
22923         
22924         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
22925
22926         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
22927
22928 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
22929
22930         * class-internals.h: Added executioncontext_class field to 
22931         MonoDefaults structure.
22932         * domain.c: Cache System.Threading.ExecutionContext class in 
22933         mono_defaults.
22934         * object.c: Capture the ExecutionContext for asynchroneous calls in
22935          mono_async_result_new.
22936         * object-internals.h: Added execution_context and original_context 
22937         fields to MonoAsyncResult. Added execution_context to MonoThread.
22938         * security-manager.c|.h: Added mono_get_context_capture_method to 
22939         return the capture method (if required by the security manager or by
22940         the framework version used).
22941         * threadpool.c: Apply capture (if present) ExecutionContext in 
22942         mono_async_invoke and revert to original context after it completes.
22943
22944 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
22945
22946         * culture-info-table.h : updated (real hacky solution for zh-CHT).
22947
22948 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
22949
22950         * culture-info-table.h : zh-CHT related workaround.
22951
22952 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
22953
22954         * marshal.c (emit_marshal_custom): Add some error checking and call the
22955         methods in the ICustomMarshaler interface. Fixes #74875.
22956         
22957         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
22958         native->managed wrappers.
22959
22960 2005-05-12  Martin Baulig  <martin@ximian.com>
22961
22962         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
22963         here and use the loader lock.
22964
22965         * mono-debug.c: Properly lock when the debugger is not attached.
22966         (mono_debug_init): Release the initial lock if we're not running
22967         in the debugger.
22968
22969 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
22970
22971         * marshal.c (emit_marshal_custom): Pass through NULL values without
22972         calling the custom marshalling routines.
22973
22974         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
22975         conversion in structures. Fixes #74882.
22976
22977 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
22978
22979         * culture-info-table.h : zh-* cultures were missing.
22980
22981 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
22982
22983         * threads.c: Added a new event background_change_event which is signaled
22984         when a thread changes its background mode.
22985         Moved here several checks previously done in managed code. The checks
22986         require the thread lock, and using the thread lock in managed code
22987         can result in deadlocks.
22988         Merged Start_internal and Thread_internal into a single method. Now 
22989         Thread_internal does all work of creating and starting a thread.
22990         Added icalls for setting and getting the state of the object. Moved from
22991         managed code to avoid locking there.
22992         Added wait_for_tids_or_state_change() which is called instad of
22993         wait_for_tids when waiting for non-backround threads to end. This method
22994         will return if one of the threads ends or the background_change_event
22995         is signaled.
22996         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
22997         the background mode. This method signals the background_change_event
22998         event.
22999         * icall.c:
23000         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
23001         removed Start_internal.
23002         
23003 2005-05-11  Martin Baulig  <martin@ximian.com>
23004
23005         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
23006         to order of some fields to get proper alignment on 64-bit machines.
23007
23008 2005-05-11  Martin Baulig  <martin@ximian.com>
23009
23010         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
23011         changes as they're broken and completely fuck up the debugger.
23012
23013         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
23014
23015 2005-05-10  Martin Baulig  <martin@ximian.com>
23016
23017         * reflection.c (mono_reflection_generic_class_initialize): Don't
23018         call mono_class_setup_parent() here.
23019
23020 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23021
23022         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
23023         send/receive timeout use an integer in milliseconds. We were using a
23024         struct timeval.
23025
23026 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23027
23028         * locales.c:
23029         (internal_get_cultures): reserve the first slot of the array for the
23030         InvariantCulture, which will be filled in managed code.
23031
23032 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
23033
23034         * reflection.c (mono_image_fill_module_table): Initialize the
23035         GENERATION field as well.
23036
23037 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23038
23039         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
23040         Monitor.Enter on the object.
23041
23042 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
23043
23044         * threads.c: Enable the wait for running threads when exiting.
23045         * icall.c: Suspend all threads before exiting.
23046
23047 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
23048
23049         * assembly.c (mono_assembly_load_reference): Fix warning.
23050
23051 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23052
23053         * threadpool.c: changed the default number of threads per cpu. From now
23054         on, the default will be 20 + (5 * number of cpus) instead of 50.
23055
23056 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
23057
23058         * loader.c (mono_method_get_signature_full): Add locking here.
23059
23060 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
23061
23062         * appdomain.c: Moved methods for parsing and freeing assembly
23063         names to assembly.c.
23064         * assembly.c, domain-internals.h: Created public methods for parsing
23065         assembly names. Fixed mono_assembly_load_with_partial_name:
23066         it now finds the best match, taking into account the version,
23067         token and culture specified in the partial name. Also return
23068         the latest version if no version information is specified.
23069
23070 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
23071
23072         * threadpool.c: replace check for SocketAsyncCall class.
23073
23074 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23075
23076         * threadpool-internals.h:
23077         * Makefile.am: added threadpool-internals.h
23078
23079         * threadpool.c: call mono_unhandled_exception on exceptions not handled
23080         that happen in threadpool threads (tested on MS).
23081         (mono_thread_pool_remove_socket): new function that dispatch any pending
23082         AIO call on a socket that is closing. By now only epoll really needs it,
23083         as select/poll wake up when the socket closes.
23084
23085
23086         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
23087
23088 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
23089
23090         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
23091
23092 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
23093
23094         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
23095
23096 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
23097
23098         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
23099         has an abort request, convert it into a suspend request.
23100
23101 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
23102
23103         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
23104         warning for the usage of `UnmanagedFunctionPointerAttribute' which
23105         is not supported yet.
23106
23107 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23108
23109         * image.c: register assemblies loaded from data (bundles) in the loaded
23110         assemblies hash. Fixes bug #74772.
23111
23112 2005-04-29  Martin Baulig  <martin@ximian.com>
23113
23114         * class.c (mono_type_get_name_recurse): Update to the new naming
23115         schema from the latest .NET 2.x beta2.
23116         (mono_class_setup_vtable_general): If we're a generic instance,
23117         copy the vtable from our generic type definition and inflate all
23118         the methods in it.
23119
23120         * loader.c (find_method): Update to the new naming schema from the
23121         latest .NET 2.x beta2.
23122
23123 2005-04-29  Raja R Harinath  <harinath@gmail.com>
23124
23125         * class.c (mono_class_init): Add a mono_loader_unlock to the
23126         #74734 fix.
23127
23128 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
23129
23130         * icall.c (ves_icall_System_Environment_Exit): Remove the 
23131         suspend_all_other_threads () call for the time being, since it can hang.
23132
23133         * threads.c (mono_thread_manage): Similarly, disable the waiting for
23134         the background threads to exit, since it can also hang.
23135
23136         * class.c (mono_class_init): Applied patch from Ankit Jain 
23137         (radical@gmail.com). Avoid pending init errors when a field refers
23138         to a nested class using a typeref. Fixes #74734.
23139
23140         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
23141         this for dynamic modules.
23142
23143 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23144
23145         * threads.c: don't wait for threads that are in the process of aborting
23146         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
23147         and waiting for background threads to finish. This makes xsp and
23148         mod-mono-server exit without random length delays and/or hangs.
23149
23150 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23151
23152         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
23153
23154 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
23155
23156         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
23157         dynamic types to prevent infinite loops. Fixes #74727.
23158
23159         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
23160         ..._is_assignable_to.
23161
23162 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
23163
23164         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
23165
23166 2005-04-25  Martin Baulig  <martin@ximian.com>
23167
23168         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
23169
23170         * domain.c
23171         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
23172
23173         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
23174
23175         * reflection.c (build_compressed_metadata): Set metadata header
23176         version to 2.0.
23177
23178 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
23179
23180         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
23181         number into an integral and a decimal part. Fixes #70473.
23182
23183         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
23184
23185 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
23186
23187         * culture-info-table.h : reflected the latest locale-builder output.
23188
23189 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23190
23191         * threadpool.c: check for SuspendRequested too when deciding if
23192         mono_thread_interruption_checkpoint should be called.
23193
23194 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23195
23196         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
23197         * threads.c: remove interruption_mutex and use Interlocked instead. When
23198         suspending all the threads, wait for all the suspended events at once.
23199         If we're shutting down and get an APC that is going to be queued,
23200         call mono_thread_execute_interruption immediately, as the thread might
23201         be sleeping on a pthread condition or mutex.
23202
23203         * icall.c: call mono_runtime_set_shutting_down before suspending the
23204         threads.
23205
23206         Fixes bug #74693. And now xsp is happier when exiting.
23207
23208 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
23209
23210         * loader.c (mono_stack_walk): Fix #74690.
23211
23212 2005-04-22  Martin Baulig  <martin@ximian.com>
23213
23214         * mono-debug.h (MonoDebugMethodJitInfo): Added
23215         `MonoDebugMethodJitInfo *jit'.
23216
23217         * mono-debug.c (mono_debug_read_method): Cache the
23218         MonoDebugMethodJitInfo in `address->jit'.
23219         (mono_debug_free_method_jit_info): New public method.
23220
23221 2005-04-22  Martin Baulig  <martin@ximian.com>
23222
23223         * class.c (mono_class_is_assignable_from): Disallow
23224         type parameter -> interface.
23225
23226 2005-04-21  Dick Porter  <dick@ximian.com>
23227
23228         * threads.c (mono_thread_create): Turn an assertion into an error.
23229
23230 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
23231
23232         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
23233         
23234         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
23235         Fix some gcc 4.0 warnings.
23236
23237 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
23238
23239         * file-io.c: fix alt dir separator char on unix systems
23240         and cleanup (fixes bug #71214).
23241
23242 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
23243
23244         * marshal.c: Use CALLVIRT instead of CALL when dispatching
23245         a call to a remote domain, since the method may be an
23246         interface method in the client domain. This fixes bug #74192.
23247
23248 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23249
23250         * threadpool.c: recv/send are now performed before going back to managed
23251         code to save one transition.
23252
23253 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23254
23255         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
23256
23257         * metadata/threadpool.c: removed hack to workaround the bug above.
23258
23259         Fixes bug #74618.
23260
23261 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
23262
23263         * reflection.c reflection.h: Fix handling of parameter defaults in
23264         dynamic methods. Also fixes handling of parameter attributes.
23265         Fixes #74609.
23266
23267         * mono-debug.c (mono_debug_close_image): Fix warning.
23268
23269 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23270
23271         * socket-io.h: replaced old unused field with new 'blocking'.
23272         * threadpool.c: restore socket blocking state on windows(tm).
23273
23274 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
23275
23276         * icall.c: don't return the codebase in the AssemblyName[] returned by
23277         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
23278         * object-internals.h: Removed FIXME (fields were presents) and fixed
23279         versioncompat declaration.
23280
23281 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23282
23283         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
23284         not closed, so don't cleanup when it happens.
23285
23286 2005-04-13  Chris Toshok  <toshok@ximian.com>
23287
23288         * mono-debug-debugger.h: change prototype for
23289         mono_debugger_lookup_type.
23290
23291         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
23292         this function, although it should probably be named
23293         mono_debugger_init_type.
23294
23295 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23296
23297         * threadpool.c: fix non-AIO case.
23298
23299 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
23300
23301         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
23302         the built-in profiler to measure just JIT compilation times.
23303
23304 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23305
23306         * threadpool.c: the epollfd might be closed by another thread at
23307         any time, so ignore EBADF at treat it as a "we're closing" sign.
23308
23309 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23310
23311         * threadpool.c: release the semaphores with a count equals to the number
23312         of working threads in both IO and regular pools. Fixed typo that messed
23313         up the count of IO pool threads. Don't initialize the pipe handles if
23314         we're using epoll.
23315
23316 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23317
23318         * threadpool.c: some systems don't like a NULL when deleting the socket
23319         from epoll.
23320
23321 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23322
23323         * threadpool.c: fix semaphore allocation.
23324
23325 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23326
23327         * threadpool.c: added epoll() based implementation for asynchronous IO
23328         that is used instead of the default poll() when available.
23329         It can be disabled by setting MONO_DISABLE_AIO.
23330
23331 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23332
23333         * threadpool.c: windows needs 'closesocket' and instead of returning
23334         0 when the stream is closed while in select, it returns -1. Fixes bug
23335         #74573.
23336
23337 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
23338
23339         * class.c (class_compute_field_layout): Fix the regression caused by
23340         the previous try.
23341
23342 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23343
23344         * threadpool.c: separate pool for socket async. IO.
23345         * threadpool.h: mono_max_worker_threads is not a global any more.
23346
23347 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
23348
23349         * class.c (class_compute_field_layout): Fix #74549.
23350
23351 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23352
23353         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
23354         use 2 connected sockets instead.
23355
23356 2005-04-08  Miguel de Icaza  <miguel@novell.com>
23357
23358         * mono-config.c: Add new entry point for mkbundle
23359         mono_config_parse_memory. 
23360
23361 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23362
23363         * threadpool.c: removed another unused function.
23364
23365 2005-04-08  Ankit Jain  <radical@corewars.org>
23366
23367         * reflection.c (get_default_param_value_blobs): Add 'types'
23368         parameter to get the types encoded in the constant table.
23369         (mono_param_get_objects): Use the type from the constant table,
23370         not the type of the parameter, when creating default values.
23371         Handle null default values correctly.
23372
23373 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23374
23375         * file-io.c:
23376         * file-io.h:
23377         * threadpool.c:
23378         * threadpool.h:
23379         * icall.c:
23380         * socket-io.c: removed dead code for async IO.
23381
23382 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23383
23384         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
23385
23386         * threadpool.c: intercept socket async. calls and pass them to a thread
23387         that is polling and dispatching the job items to the threadpool as
23388         socket become ready. Fixes bugs #71217, #71933.
23389
23390         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
23391         between char and short/ushort arrays.
23392
23393         * socket-io.c: remove dead code.
23394
23395 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
23396
23397         * locales.c,
23398           icall.c : removed InternalToUpper_Comp() and
23399           InternalToLower_Comp().
23400
23401 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
23402
23403         * char-conversions.h : The tables were incorrectly generated. Should
23404           be generated against invariant culture.
23405
23406 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
23407
23408         * object.c (mono_runtime_invoke_array): Fix return value when 
23409         passing pre-created valuetype objects to ctors.
23410
23411         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
23412         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
23413         Fixes #74338.
23414
23415 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
23416
23417         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
23418         only used with --security and hides the wrong corlib version error.
23419
23420 2005-03-30  Joshua Tauberer  <tauberer@for.net>
23421
23422         * class.c: Changed mono_class_name_from_token so that types
23423         outside of a namespace don't have an initial period.  Improved
23424         the g_warning message used in _mono_class_get when loading
23425         fails.
23426         * assembly.c: In mono_assembly_load_reference, when an assembly
23427         can't be found, "No such file or directory" is misleading and
23428         unhelpful because a few paths were checked for the presence of
23429         the assembly.  When that happens (ENOENT), display a nicer
23430         message indicating the directories that were searched.  In all
23431         cases, the warning is made easier to read for non-hackers.
23432
23433 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
23434
23435         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
23436         project/solution.
23437         * appdomain.h|domain.c: Removed inline from functions.
23438         * appdomain.c: Reduced warnings when compiling on windows.
23439         * icall.c: Fixed output_debug declaration to gunichar2*.
23440         * mono-config.c: Reduced warnings when compiling on windows.
23441         * rand.c: Added missing "windows.h". Added missing return value.
23442         * rawbuffer.c: Added missing winsock2.h for windows.
23443         * sysmath.h: Added mono-compiler.h header to allow/ease 
23444         compilation with non-GCC compilers.
23445         * threads.c: Fixed declarations to compile with VS.NET C compiler.
23446         Removed cast warnings.
23447
23448         Adapted from the work of J Lothian (for VC6).
23449
23450 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
23451
23452         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
23453         from default_path.
23454
23455 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
23456
23457         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
23458         the 2.0 profile.
23459
23460 2005-03-27  Raja R Harinath  <harinath@gmail.com>
23461
23462         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
23463         has to be in $(exec_prefix).  $(prefix) is for arch-independent
23464         stuff, and it would probably use $(prefix)/share rather than
23465         $(prefix)/lib.
23466
23467 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23468
23469         * console-io.c: added 2 includes that might be missing.
23470
23471 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
23472
23473         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
23474         profile.
23475
23476         * reflection.c (create_custom_attr): Allocate the params array using
23477         alloca so it gets GC tracking.
23478
23479 2005-03-23  Chris Toshok  <toshok@ximian.com>
23480
23481         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
23482         out some spew.
23483
23484 2005-03-24  Raja R Harinath  <rharinath@novell.com>
23485
23486         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
23487         changes to pick up any changes in prefix, etc.
23488
23489 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
23490
23491         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
23492         
23493         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
23494         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
23495
23496 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
23497
23498         * class-internals.h object-internals.h class.c reflection.c: Extend the
23499         mono_lookup_dynamic_token () function to return the class of the
23500         token as well. 
23501
23502         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
23503         well. Fixes #73848.
23504
23505 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
23506
23507         * security-manager.c: Skip inheritance checks for intra-corlib
23508         class inheritance and method overrides. This skips a lot of checks
23509         and (anyway) permissions cannot work until corlib is loaded.
23510
23511 2005-03-23  Martin Baulig  <martin@ximian.com>
23512
23513         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
23514         MONO_TYPE_GENERICINST.  
23515
23516 2005-03-23  Martin Baulig  <martin@ximian.com>
23517
23518         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
23519
23520 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
23521
23522         * class.c: added locking comments to some functions.
23523         Cache the interface offsets arrays (saves about 20 KB
23524         of runtime memory in a typical app).
23525         Reduce the time overhead in mono_class_setup_supertypes ().
23526
23527 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
23528
23529         * icall.c: speedup and fix leaks in GetMethodsByName and
23530         GetPropertiesByName.
23531
23532 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
23533
23534         * reflection.c: some locking fixes.
23535
23536 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
23537
23538         * metadata.c: added missing break in case statement.
23539
23540 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
23541
23542         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
23543         typedbyref return values. Fixes #73941.
23544
23545 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
23546
23547         * security-manager.c|h: Added demandunmanaged method and 
23548         suppressunmanagedcodesecurity class to MonoSecurityManager.
23549         Renamed aptc class to allowpartiallytrustedcallers.
23550
23551 2005-03-17  Martin Baulig  <martin@ximian.com>
23552
23553         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
23554
23555 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23556
23557         * file-io.c: disabled file async. IO using aio_*. It uses the
23558         threadpool now. Workaround for bug #73718.
23559
23560 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
23561
23562         * assembly.h, mono-config.c: added code to deal with bundled configs
23563         for bundled assemblies.
23564
23565 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
23566
23567         * *.c, private.h: cleanup, removing old private.h header file.
23568
23569 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
23570
23571         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
23572         and throw_on_unmappable_char attributes.
23573
23574 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
23575
23576         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
23577         _ProcessName_internal.
23578
23579 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
23580
23581         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
23582         #73631.
23583
23584         * icall.c threads.c threads-types.h: Remove slothash icalls as they
23585         are no longer used.
23586
23587 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
23588
23589         * object.c (compute_class_bitmap): Add support for generics. Fixes
23590         #73527.
23591
23592 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
23593
23594         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
23595
23596 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23597
23598         * filewatcher.c: commented out the code for windows watcher, as we don't
23599         use it (we use the managed implementation instead).
23600
23601 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
23602
23603         * object-internals.h (MonoThread): Remove 'unused1' field.
23604
23605         * appdomain.c: Bump corlib version.
23606
23607         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
23608
23609         * reflection.c (mono_reflection_create_runtime_class): Remove the
23610         AssemblyBuilder.Save optimization since it causes too many problems.
23611
23612 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
23613
23614         * exception.c|h: Added mono_get_exception_reflection_type_load to
23615         create a ReflectionTypeLoadException object.
23616         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
23617         to return NULL is a InheritanceDemand fails during reflection. Updated
23618         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
23619         ReflectionTypeLoadException if an InheritanceDemand fails during 
23620         reflection. Added icall mapping for GetLinkDemandSecurity.
23621         * security-manager.c|h: Added ves_icall_System_Security_
23622         SecurityManager_GetLinkDemandSecurity internal call to return the
23623         class and methods permissions set for a LinkDemand. Removed unused
23624         fields in MonoSecurityManager.
23625
23626 2005-03-10  Martin Baulig  <martin@ximian.com>
23627
23628         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
23629         it's a generic instance.
23630
23631 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
23632
23633         * reflection.c (mono_get_object_from_blob): Applied patch from
23634         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
23635
23636         * class.c (mono_class_is_assignable_from): Another try at fixing 
23637         #73469 without breaking anything.
23638
23639 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
23640
23641         * class.c: (mono_class_is_assignable_from): Revert the last changes
23642         since they don't work with generics.
23643         
23644         * class.c (mono_class_is_assignable_from): Fix build bustage.
23645
23646         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
23647         the managed IsAssignableFrom method. Fixes #73469.
23648
23649         * reflection.c (mono_reflection_call_is_assignable_from): New helper
23650         function.
23651
23652 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
23653
23654         * object.c (mono_load_remote_field_new): Fix returning uninitialized
23655         memory when the remoting callback does not sets the out arguments.
23656         Fixes #73007.
23657
23658         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
23659         by mistake.
23660
23661         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
23662
23663         * object-internals.h (MonoStackFrame): Sync with managed object layout.
23664
23665         * appdomain.c: Bump corlib version.
23666
23667 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
23668
23669         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
23670         function.
23671
23672         * threads.c (mono_thread_attach): Detect threads which are not started
23673         by the GC pthread wrappers.
23674
23675 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
23676
23677         * icall.c: Added new icall for RNG.
23678         * rand.c|h: Added new icall to open the RNG. This allows to share a 
23679         single handle on Linux to access /dev/urandom and fix #73183.
23680
23681 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
23682
23683         * object.c: setting the new vtable in a transparent proxy object must
23684         not change the GC descriptor.
23685
23686 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
23687
23688         * object.c: fixed compilation without GCJ support.
23689         * reflection.c: for runtime-created types ensure klass->has_references
23690         is correct (bug #73215).
23691
23692 2005-03-02  Martin Baulig  <martin@ximian.com>
23693
23694         * class.c (mono_class_is_assignable_from): Make this work if
23695         `oklass' is a generic instance; fixes #72831.
23696
23697 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
23698
23699         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
23700         with hasthis set.
23701         
23702         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
23703
23704         * marshal.c: Reorganize native->managed marshalling code to also use
23705         the emit_marshal_... functions.
23706
23707 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
23708
23709         * object.c: typed allocs have issues with bitmap sizes > 30,
23710         so check for max_set >= 30.
23711
23712 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
23713
23714         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
23715         managed code. Fixes #73012.
23716
23717         * metadata.h (MonoMarshalSpec): Add elem_mult field.
23718
23719         * metadata.c reflection.c: Load/Emit elem_mult as well.
23720         
23721         * metadata.h (MonoMarshalSpec): Add comment.
23722
23723         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
23724
23725         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
23726         num_elem to -1 if not given.
23727
23728         * object-internals.h (MonoReflectionMarshal): Add has_size field.
23729
23730         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
23731         given values.
23732
23733 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
23734
23735         * null-gc.c (mono_gc_free_fixed): Was not compilable.
23736
23737 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
23738
23739         * reflection.c (encode_marshal_blob): Encode param_num field as well.
23740
23741         * object-internals.h (MonoReflectionMarshal): Add param_num field.
23742
23743 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
23744
23745         * object.c: generalized the reference bitmap creation
23746         and added hooks for the new GC.
23747         * class-internals.c: removed the gc_bitmap field from MonoClass.
23748
23749 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
23750
23751         * domain.c: help the compiler to produce better code
23752         in mono_jit_info_table_find ().
23753
23754 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
23755
23756         * object.c: make all allocations look typed.
23757
23758 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
23759
23760         * socket-io.c: load Mono.Posix if it's not loaded already
23761         (fixes bug#73033).
23762
23763 2005-02-24  Martin Baulig  <martin@ximian.com>
23764
23765         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
23766         * reflection.c (dup_type): Likewise.
23767
23768 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
23769
23770         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
23771         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
23772
23773 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
23774
23775         * domain.c, threads.c, object-internals.h: make the critical thread
23776         local vars use the fast access mode (even when we're compiled in
23777         a lib). Provide accessors to be used by the jit during codegen.
23778
23779 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
23780
23781         * appdomain.c: Changed hook functios behavior to include
23782         support for the reflection only assemblies. Some icalls were changed
23783         to support the mentioned assemblies too. Signatures of static methods
23784         try_assembly_resolve and real_load now have an additional parameter:
23785         refonly.
23786
23787         * assembly.c: General changes to mono_assembly_ methods to support
23788         reflection only api. Functions mono_assembly_open, mono_assembly_load,
23789         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
23790         suffix, to support an additional gbool parameter to specify whether
23791         the assembli is reflection only or not. Created some new hook functions 
23792         to add support for reflection only assemblies. Signatures of static 
23793         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
23794         have now an additional parameter: refonly.
23795
23796         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
23797         indicating whether the assembly is reflection only or not.
23798
23799         * exception.c: Add mono_get_exception_invalid_operation.
23800
23801         * icall.c: Throw an InvalidOperationException when trying to invoke
23802         a property/method/event, or trying to set/get the value of a field.
23803         Also add an icall to retrieve the ref_only flag to the
23804         MonoReflectionAssembly.
23805
23806 2005-02-23  Chris Toshok  <toshok@ximian.com>
23807
23808         Part of fix for #72827.
23809         * mono-debug.c (mono_debug_add_method): add lexical block data to
23810         the info we write.  Kind of a hack at the moment - we copy the
23811         lexical block info from the MonoDebugMethodInfo to the
23812         MonoDebugMethodJitInfo here, before writing it.
23813         (mono_debug_read_method): read the lexical block info.
23814
23815         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
23816
23817         * debug-mono-symfile.h: add lexical block support.
23818
23819         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
23820         support.
23821
23822 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
23823
23824         * loader.c (mono_lookup_pinvoke_call): Fix warning.
23825
23826         * object.c (mono_runtime_free_method): Call mono_free_method () and
23827         put the TODOs there.
23828
23829         * loader.c (mono_free_method): Free up most memory allocated for 
23830         dynamic methods.
23831
23832 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
23833
23834         * reflection.c: properly flag a Type argument to a
23835         named custom attr value (bug #72248).
23836
23837 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
23838
23839         * reflection.c: reduce code duplication in named custom
23840         attribute encoding.
23841
23842 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
23843
23844         * reflection.c: properly encode custom attrs of type object
23845         (bug #72649).
23846
23847 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
23848
23849         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
23850
23851 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
23852
23853         * socket-io.c: load System.dll if it's not loaded already
23854         (bug #72850 and #70477).
23855
23856 2005-02-21  Martin Baulig  <martin@ximian.com>
23857
23858         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
23859         generic instances.
23860
23861 2005-02-21  Martin Baulig  <martin@ximian.com>
23862
23863         * reflection.c (mono_image_build_metadata): We also need to
23864         "fixup" the MethodImpl table after we computed the final method
23865         indices.  Call fixup_methodimpl() to do that.
23866         (fixup_methodimpl): New private method.
23867
23868 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
23869
23870         * assembly.c: special case mscorlib.dll (bug#72536),
23871         patch from Carlos Alberto Cortez.
23872
23873 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
23874
23875         * threads-types.h threads.c: Fix build bustage.
23876
23877         * threads.c: Use a union for long<->double conversions.
23878
23879         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
23880         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
23881
23882         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
23883         containing the checkpoint call with NOT_TAKEN.
23884         
23885         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
23886         checkpoint before pushing the arguments, so they won't have to be
23887         spilled to stack.
23888
23889 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
23890
23891         * domain.c, assembly.c, domain-internals.h: make some data
23892         const and relocation-free.
23893
23894 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
23895
23896         * object.c, appdomain.c, class-internals.h: introduce the
23897         MonoClassRuntimeInfo structure to hold the info needed to
23898         use a class at runtime. Made mono_class_vtable() lock-free
23899         for all the appdomains.
23900
23901 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
23902
23903         * metadata-internals.h, image.c: introduce a per-image mempool to
23904         be used for memory that has the same lifetime as the image.
23905
23906 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
23907
23908         * domain.c: In mono_init_internal(), instead of selecting the first
23909         runtime version supported by an executable, get a list of all
23910         supported versions and select the one for which an mscorlib exists
23911         (since even if the runtime supports a given version, it doesn't mean
23912         that the framework for that version is installed).
23913         Modified get_runtimes_from_exe to support this behavior.
23914         In supported_runtimes, added information about additional system
23915         assembly versions.
23916         
23917         * assembly.c: Added support for more than one system assembly version
23918         per runtime version. Updated the assembly list.
23919         In mono_assembly_remap_version, removed the initial version check,
23920         since we don't know to which version we need to compare until we
23921         get the version set on which the assembly is based.
23922         Moved the code for loading corlib into the new method
23923         mono_assembly_load_corlib(), so it can be used by the initialization
23924         code.
23925         
23926         * domain-internals.h: Updated data structures and added declaration
23927         for mono_assembly_load_corlib.
23928
23929 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
23930
23931         * reflection.c (resolve_object): Fix the creation of the signature in 
23932         the SignatureHelper case.
23933
23934         * assembly.c (mono_assembly_remap_version): Fix binary search.
23935         
23936 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
23937  
23938         * class.c: Added inheritance check when a method is overloaded (from a
23939         virtual method or when implementing an interface) and when a class is
23940         inherited. Added functions to set a failure for a class and to 
23941         retreive the exception from a failure.
23942         * class-internals.h: Added fields to MonoClass to keep the exception
23943         information status for inheritance (or other exceptions) to be thrown
23944         later (i.e. not at load time).
23945         * object.c: Throw the inheritance SecurityException when a type is to 
23946         be created with either class or method inheritance violations.
23947         * reflection.c|h: Fix when getting declsec from a class. Removed 
23948         unrequired code for class. Improved sanity in parameter naming.
23949         * security-manager.c|h: Added functions to check for class and method
23950         inheritance.
23951
23952 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
23953
23954         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
23955         and has_finalize in dynamic types as well.
23956
23957 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
23958
23959         * culture-info-table.h : fixed currency format for en-GB (and so on).
23960
23961 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
23962
23963         * gc.c: ensure the GC handles never have 0 as a value.
23964
23965 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
23966
23967         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
23968         a pointer to a struct to unmanaged code. Fixes #72625.
23969
23970 2005-02-16  Martin Baulig  <martin@ximian.com>
23971
23972         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
23973
23974 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
23975
23976         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
23977
23978 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
23979
23980         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
23981
23982         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
23983         UnmanagedFunctionPointerAttribute, use it for determining calling convention
23984         etc. Fixes #71471.
23985
23986         * reflection.c (mono_custom_attrs_get_attr): New helper function.
23987
23988         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
23989
23990 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
23991
23992         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
23993         changes to make the current context a field in MonoThread.
23994
23995 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
23996
23997         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
23998         the last change.
23999         
24000         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
24001         extracted from mono_marshal_get_native_wrapper.
24002
24003         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
24004         to create wrappers around native functions.
24005
24006         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
24007         delegates for arbitrary function pointers. Fixes #71472.
24008
24009 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
24010
24011         * threads.c: cleaned up the code a little.
24012
24013 2005-02-15  Martin Baulig  <martin@ximian.com>
24014
24015         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
24016         the data table.
24017
24018         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
24019         allocate larger chunks if needed.
24020
24021 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
24022
24023         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
24024         in by mistake.
24025
24026 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
24027
24028         * domain.c: keep the domains in an array and ensure the domain ids
24029         are kept small, so they can be used as indexes to domain-specific data
24030         with a small memory overhead.
24031
24032 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
24033
24034         * icall.c: Handle byref types in Type icalls. Fixes #72544.
24035
24036 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
24037
24038         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
24039
24040 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
24041
24042         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
24043
24044         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
24045         values.
24046
24047         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
24048         
24049 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
24050
24051         * domain-internals.h: add the hashtable here.
24052
24053         * class-internals.h: Remove `info' from MonoMethod
24054
24055         * domain.c: Add a new hashtable, jit_trampoline_hash
24056
24057 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
24058
24059         * object.c: don't set the value of static fields
24060         (fixes bug#72494).
24061
24062 2005-02-11  Martin Baulig  <martin@ximian.com>
24063
24064         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
24065         (mono_debug_add_method): Silently ignore the method if it's too big.
24066         (mono_debug_add_type): Likewise.
24067
24068 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
24069
24070         * threads.c, appdomain.c: remove #ifdefs from the code.
24071
24072 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
24073
24074         * metadata-internals.h: Added flags to MonoAssembly to cache the most
24075         common security informations. This allows us to stay in unmanaged code
24076         when doing LinkDemand and it's special cases (except for the first 
24077         time for initialization). The flags a very much used with --security.
24078         * reflection.c|h: Added code to get declarative security attributes 
24079         for LinkDemand and InheritanceDemand. This required to refactor the
24080         existing code for Demand.
24081         * security-manager.c|h: Added new method fields for the special cases
24082         of LinkDemand.
24083
24084 2005-02-10  Martin Baulig  <martin@ximian.com>
24085
24086         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
24087         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
24088
24089 2005-02-10  Martin Baulig  <martin@ximian.com>
24090
24091         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
24092         debugging code; this is almost a complete rewrite.
24093
24094         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
24095
24096 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
24097
24098         * domain.c, object.h: expose mono_string_equal () and 
24099         mono_string_hash ().
24100         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
24101         it's implemented in managed code.
24102
24103 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24104
24105         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
24106         lo leak objects between appdomains.
24107
24108 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24109
24110         * assembly.c: old compilers compilation fix from 
24111         robertj@gmx.net (Robert Jordan).
24112
24113 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
24114
24115         * class-internals.h: Little reminder for the future.
24116
24117         * debug-helpers.c: Fix up wrapper_type_names
24118
24119 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24120
24121         * image.c, metadata-internals.h: when loading an image from a file,
24122         mmap all of it and use the same codepaths as when using a
24123         in-memory image: the code is simpler and we use less memory
24124         (both writable and readonly).
24125
24126 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
24127
24128         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
24129         API to alloc runtime data structures that need to be tracked by the
24130         GC and contain pointers.
24131         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
24132         make the code more readable and eventually use a different GC.
24133
24134 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
24135
24136         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
24137         for out arguments.
24138         
24139 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
24140
24141         * object.c: In release_type_locks(), don't release the cctor lock
24142         if it has already been released. This fixes a crash in the
24143         thread5 test.
24144
24145 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
24146
24147         * gc.c, marshal.c, icall.c: register a delegate for finalization
24148         only when the native function pointer has been allocated for it.
24149
24150 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24151
24152         * object.c: cleaned up some code, allocate objects that are
24153         pointer free with the atomic malloc variant. Allocate memory
24154         for static data from the mempool if it's pointer-free.
24155         Allocate the bounds array at the end of the array data, when needed.
24156         * object-internals.h, object.h: move a private function in a private
24157         header.
24158         * class.c: handle missing case in tracking references in fields.
24159
24160 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
24161
24162         * class.c, class-internals.h: keep track if a type has
24163         reference fields in either the instance or static fields.
24164
24165 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
24166
24167         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
24168         and renamed to MonoRuntimeInfo. Added fields to store the expected
24169         framework assembly version. Changed mono_get_framework_version and
24170         mono_get_runtime_version for a single mono_get_runtime_info method.
24171         
24172         * assembly.c: Added method to remap system assembly versions to the
24173         current executing runtime version. Removed old mapping code.
24174         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
24175         
24176         * icall.c, reflection.c: Track api changes.
24177
24178 2005-02-06  Miguel de Icaza  <miguel@novell.com>
24179
24180         * loader.c (method_from_memberref): Improve error reporting,
24181         produce the class name instead of the typeref/typedef index. 
24182
24183 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
24184
24185         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
24186
24187 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24188
24189         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
24190         stdcall and charset name mangling.  Reorganize the code and add
24191         some tracing stuff.
24192
24193 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
24194
24195         * monodiet.c: More iters!
24196
24197         * marshal.c: Iter usage.
24198
24199         * icall.c: Iter usage.
24200
24201         * object.c: Use iters.
24202
24203         * debug-helpers.c: More iters
24204
24205 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24206
24207         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
24208         under win32.
24209
24210 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
24211
24212         * mono-debug-debugger.c: use iters
24213
24214         * class.c, class-internals.h: mono_class_setup_events is static
24215         now
24216
24217         * All callers: use iters
24218
24219 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24220
24221         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
24222         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
24223
24224 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
24225
24226         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
24227
24228         * marshal.h: Add prototypes for ldfld/stfld_remote.
24229
24230         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
24231         this is called during startup.
24232         
24233 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
24234
24235         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
24236         MonoThreadsSync struct private in monitor.c. Changed the way
24237         MonoThreadsSync is allocated so it's faster and there is no
24238         need to keep track of it with a finalizer and it uses less memory.
24239         This also finally allows us to allocate mono objects as ptrfree when
24240         there are no reference fields.
24241
24242 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
24243
24244         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
24245         disappearing link to the GC interface and use them to simplify
24246         the gchandles code.
24247
24248 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
24249
24250         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
24251         stfld_remote which call mono_load/store_field_new. This allows methods
24252         calling ldfld/stfld wrappers to be AOTed.
24253
24254         * console-io.c: Include sys/filio.h under solaris.
24255         
24256         * console-io.c: Include curses.h if needed correctly.
24257
24258 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
24259         
24260         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
24261         method->klass as well.
24262
24263         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
24264
24265         * class.c (mono_class_init): Switch on lazy initialization of 
24266         methods.
24267
24268         * class.c (mono_class_get_finalizer): Handle the case when the 
24269         finalizer is inherited.
24270
24271 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24272
24273         * console-io.c: <curses.h> is needed by term.h on solaris.
24274
24275 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
24276
24277         * icall.c, class-internals.h, monodiet.c, class.c: Remove
24278         mono_class_setup_properties where possible. Remove this ftn from
24279         the header file, and make it static.
24280
24281 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
24282
24283         * loader.c: Add missing setup_... call.
24284
24285         * class.c: Add missing setup_... calls.
24286
24287         * class.c (mono_class_init): Switch on lazy initialization of 
24288         the generic vtable.
24289         
24290         * class.c (mono_class_init): Fix generics broken by the recent changes.
24291
24292         * monodiet.c (handle_type): Add missing setup_... calls.
24293
24294         * class.c: Back out garbage in previous patch.
24295         
24296         * class.c: Add missing setup_... calls.
24297
24298         * class.c (mono_class_get_method_from_name_flags): Avoid calling
24299         mono_class_setup_methods () if possible.
24300
24301         * class-internals.h (MonoClass): Add 'has_cctor' flag.
24302
24303         * class-internals.h (MonoCachedClassInfo): New structure.
24304
24305         * class.c: Initialize properties and events fields of MonoClass lazily.
24306
24307         * class.c: Add infrastructure for lazily initializing the methods and
24308         vtable fields of MonoClass. Not yet used.
24309
24310         * class.c (mono_class_get_finalizer): New helper function.
24311
24312         * class.c: Add infrastructure for loading some class related data from
24313         an AOT file.
24314
24315         * object.c: Add infrastructure for initializing the vtable from data
24316         in the AOT file.
24317
24318         * gc.c (run_finalize): Use mono_class_get_finalizer ().
24319
24320         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
24321         appropriate initialization function before accessing parts of the
24322         MonoClass structure.
24323
24324         * marshal.c: Fix warnings.
24325         
24326         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
24327
24328         * mono-debug-debugger.c (get_exception_message): Use 
24329         mono_class_get_method_from_name_flags ().
24330
24331 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
24332
24333         * reflection.c, appdomain.c: Replace a few manual searches that
24334         Zoltan missed. (Paolo approved this part of my initial patch).
24335
24336 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
24337
24338         * profiler.c: disable recording statistical events at report time.
24339
24340 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24341
24342         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
24343         to byteswap arrays of enum values, too (bug #72080).
24344
24345 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
24346
24347         * appdomain.c (set_domain_search_path): Allow this to be called if
24348         domain->setup is not yet set.
24349
24350         * loader.c (mono_method_get_index): New helper function.
24351
24352         * loader.c reflection.c: Use mono_method_get_index ().
24353
24354         * class.c (mono_class_get_method_from_name_flags): New helper method.
24355
24356         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
24357         this.
24358
24359         * class.c (mono_class_get_cctor): New helper method.
24360
24361         * string-icalls.c object.c class.c marshal.c reflection.c: Use
24362         mono_class_get_method () to look up methods.
24363
24364 2005-02-01  Miguel de Icaza  <miguel@novell.com>
24365
24366         * console-io.c: Fix the build, this should work on Windows.
24367
24368 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
24369
24370         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
24371         be set to null to keep things valid
24372
24373 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24374
24375         * icall.c: added Console 2.0 icalls.
24376         * Makefile.am: added console-io.[ch]
24377         * console-io.[ch]: internal calls for Console 2.0 API.
24378
24379 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24380
24381         * class.c: make sure we consider all the interfaces
24382         when calculating max_interface_id (bug found by
24383         Jeroen Frijters running ikvm).
24384
24385 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
24386
24387         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
24388         valuetype fields to null.
24389
24390         * object.c (set_value): Ditto. Fixes #71669.    
24391
24392 2005-01-31  Martin Baulig  <martin@ximian.com>
24393
24394         * metadata.c (mono_metadata_has_generic_params): New public
24395         function; checks whether something is a generic method.
24396
24397 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
24398
24399         * appdomain.c: fix infinite recursion when adding assemblies.
24400
24401 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
24402
24403         * object.c: Fix small typo to return all items for Environment.
24404         GetCommandLineArgs.
24405
24406 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
24407
24408         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
24409         reflection.c: more domain and assembly-unload related fixes
24410         and memory leaks plugs.
24411
24412 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
24413
24414         * 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.
24415
24416 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
24417
24418         * loader.c (mono_method_signature): Make this method lazy
24419         (mono_get_method_from_token): Don't computate the signature here.
24420
24421         Doing this saves quite a bit of memory. I got 90 kb on starting up
24422         monodoc. It should also save some disk reads on startup.
24423
24424         * *: MonoMethod->signature might be NULL now. You *MUST* use
24425         mono_method_signature.
24426
24427 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
24428
24429         * object.c (mono_runtime_get_main_args): Return an array from the
24430         current domain here. Fixes #71938.
24431
24432 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
24433
24434         * monitor.c: formatting changes to comply with the
24435         mono coding style and remove #ifdefs from the code.
24436
24437 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
24438
24439         * metadata.c, private.h: remove some unneeded data
24440         and use a more compact representation for table schemas.
24441
24442 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
24443
24444         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
24445         to get a better distribution in hash tables.
24446         * *.c: use mono_aligned_addr_hash() where appropriate.
24447         * assembly.c: make var static.
24448
24449 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
24450
24451         * domain-internals.h: Put MonoJitInfo on a diet.
24452
24453         * domain.c: Fix a warning.
24454
24455 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24456
24457         * gc.c: rework the gc handles code to reuse handles
24458         when freed.
24459
24460 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
24461
24462         * domain.c: fixed long standing bug in mono_string_equal() which
24463         was brought to light with the ldstr changes.
24464
24465 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
24466
24467         * reflection.c: Remove warning by adding missing include for marshal.h
24468
24469 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24470
24471         * domain.c, object.c: change the ldstr_table to hold
24472         MonoString* as keys: makes the runtime isinterned lookup
24473         faster and simplifies memory management.
24474
24475 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
24476  
24477         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
24478         possible to add imperative security checks before calling the icall.
24479         * reflection.c: Return security attributes on the original MonoMethod
24480         (and not the wrapped one). This fix permissions on icalls.
24481
24482 2005-01-25  Dick Porter  <dick@ximian.com>
24483
24484         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
24485         the check for mktime() support actually test the mktime() return
24486         value.  "Fixes" bug 71682, though the output is still different to
24487         MS.
24488
24489 2005-01-25  Martin Baulig  <martin@ximian.com>
24490
24491         * class.c (mono_class_is_assignable_from): Make this work for
24492         generic instances.
24493
24494 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
24495
24496         * marshal.c (mono_string_utf8_to_builder)
24497         (mono_string_builder_to_utf16): We might not have ownership of the
24498         string. In thise case, we need to create a new buffer.
24499
24500         * object-internals.h (mono_stringbuilder_capacity): sb->str might
24501         be null, in which case, use the default capacity.
24502
24503 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24504
24505         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
24506         GC events to the profiler.
24507
24508 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
24509
24510         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
24511         if you don't want the GC to run.
24512
24513 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
24514
24515         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
24516         start providing a GC API and keeping different implementations in
24517         their own file.
24518         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
24519
24520 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
24521
24522         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
24523         mmap rather than allocating a huge buffer.
24524         (mono_debug_close_mono_symbol_file): Free the buffer allocated
24525         above.
24526
24527 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
24528
24529         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
24530         and CheckExecutionRights.
24531         * reflection.c|h: Keep the index of the declarative security to be 
24532         used, instead of the pointer, when AOT compiler is used. Also add 
24533         class initialization when requesting demands.
24534         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
24535         CheckExecutionRights. Both properties are now FALSE by default, and
24536         unmodifiable, unless the --security option is used.
24537
24538 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24539
24540         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
24541         reflection.c: properly refcount images and assemblies, many leaks fixed.
24542
24543 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24544
24545         * threadpool.c: increase the timeout for threads in the thread pool to
24546         10s.  Fixes bug #67159.
24547
24548 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
24549
24550         * class-internals.h: Sun's compiler insists on explicit
24551         signed on bit fields to handle then correctly.
24552
24553 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
24554
24555         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
24556         Make the size of the array fit only the number of invalid path
24557         chars that we have.
24558
24559         * class.c (_mono_class_get): Improve the error reporting when a
24560         class referenced is not found, to assist debugging. 
24561
24562 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
24563
24564         * threads.c: fix off-by-one error.
24565         * domain.c: free data allocated in the domain.
24566
24567 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
24568
24569         * reflection.c (mono_method_body_get_object): Fill out exception info
24570         as well.
24571
24572         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
24573         structure.
24574         
24575 2005-01-19  Martin Baulig  <martin@ximian.com>
24576
24577         * loader.c (mono_get_method_constrained): Make this work again.
24578
24579 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
24580
24581         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
24582         guint16 to match the managed side.
24583
24584         * reflection.c (mono_reflection_body_get_object): Fill out local
24585         variables array.
24586
24587         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
24588         as well.
24589
24590         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
24591         'local_var_sig_token'.
24592
24593 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
24594
24595         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
24596         System.Drawing.
24597
24598         * reflection.c (mono_method_body_get_object): Handle abstract and
24599         runtime methods.
24600
24601 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
24602
24603         * marshal.c, loader.c, class-internals.h, reflection.c:
24604         store the emthod data for a wrapper in an array instead of a list.
24605
24606 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
24607
24608         * marshal.c: change the code to allocate memory more
24609         conservatively for method wrappers.
24610
24611 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
24612
24613         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
24614         fields from MonoClass to the marshal info structure where they belong.
24615
24616 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24617
24618         * class.c, object.c, class-internals.h, marshal.c: rearrange
24619         some fields and tweak some types to lower memory usage.
24620
24621 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
24622
24623         * threads.c (signal_thread_state_change): Handle the case when the
24624         target thread is the current thread.
24625
24626         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
24627
24628         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
24629         emit_ptr_to_object_conv. 
24630
24631         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
24632         marshalling. Fixes #71352.
24633
24634 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
24635
24636         * metadata.h, blob.h: move table enum to blob.h so it can be included
24637         in any header.
24638         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
24639         cut the size of MonoImage/MonoDynamicImage.
24640
24641 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
24642
24643         * profiler.c (mono_profiler_install_simple): Fix default arguments.
24644
24645 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
24646
24647         * reflection.c, reflection.h, icall.c: add a function to check
24648         if an attribute type is defined for a metadata object.
24649
24650 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
24651
24652         * object-internals.h: Added some needed fields from StringBuilder class.
24653         * marshal.c: Set the maxCapacity when creating a StringBuilder.
24654
24655 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
24656
24657         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
24658         threads before shutting down the runtime.
24659
24660         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
24661
24662 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
24663
24664         * object-internal.h, threads.c: implement stacksize and 
24665         parameterized thread start functionality (requires
24666         matching corlib). Marked broken code for later removal.
24667
24668 2005-01-12  Martin Baulig  <martin@ximian.com>
24669
24670         * class-internals.h (MonoGenericClass): Moved the `initialized'
24671         flag to MonoDynamicGenericClass, removed `init_pending'.
24672         (MonoGenericInst): Added `is_reference' flag.
24673
24674 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
24675
24676         * reflection.c (mono_image_create_pefile): Only set the pe_offset
24677         inside the MSDOS header. Fixes #71201.
24678
24679         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
24680         gc thread.
24681         (mono_domain_finalize): Ditto.
24682
24683 2005-01-12  Martin Baulig  <martin@ximian.com>
24684
24685         * class.c (mono_get_shared_generic_class): Use the cache for
24686         non-dynamic generic classes.
24687
24688         * class-internals.h (mono_class_create_generic_2): Removed
24689         function prototype, this function is now static inside class.c.
24690
24691         * class.c (mono_class_create_generic_2): Made this static, only
24692         call it from mono_class_init() and mono_class_setup_parent().
24693         (collect_implemented_interfaces_aux): Call mono_class_init() on
24694         the interfaces we collect.
24695         (mono_class_setup_vtable): Call mono_class_init (class->parent).
24696
24697 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
24698
24699         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
24700         it a real thread handle.
24701
24702         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
24703         MonoJitExceptionInfo, since each catch clause needs its own variable.
24704         
24705 2005-01-11  Dick Porter  <dick@ximian.com>
24706
24707         * image.c (mono_pe_file_open): New variant on mono_image_open()
24708         that does not set up the CLI metadata; used for FileVersionInfo so
24709         it can get the data for windows binaries too.
24710         
24711         * process.c (process_read_string_block): Don't read off the end of
24712         the StringTable block.
24713
24714         These both fix bug 70766.
24715
24716 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
24717
24718         * gc.c: set some fields to NULL at GC cleanup time.
24719         * threads.c: if we quit the main thread, call exit ().
24720
24721 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
24722
24723         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
24724
24725 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
24726
24727         * threads.h, threads.c, object.c: added accessor and settor for
24728         main_thread. Handle it specially when exiting from it: wait
24729         for other foreground threads to exit.
24730
24731 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
24732
24733         * process.c, verify.c: remove some bloat.
24734
24735 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
24736
24737         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
24738         the calling convention to cdecl under win32.
24739
24740 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
24741
24742         * object.c (mono_object_get_size): New function to get the size of
24743         an object instance.
24744
24745         * profiler.c (simple_allocation): Use above.
24746
24747 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
24748
24749         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
24750         ves_icall_System_AppDomain_getRootDomain (as it's not required to
24751         get an appdomain by it's id and we can't assume the root's id is 0).
24752         * domain-internals.h: Change the function prototype to match.
24753         * icall.c: Change the icall table for AppDomain.
24754
24755 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
24756
24757         * locales.c (string_invariant_compare_char): Only compute
24758         GUnicodeTypes in the case where we need them.  Test for ordinality
24759         first and return if so.
24760
24761         From the commit:
24762
24763                 /*
24764                  * FIXME: here we must use the information from c1type and c2type
24765                  * to find out the proper collation, even on the InvariantCulture, the
24766                  * sorting is not done by computing the unicode values, but their
24767                  * actual sort order.
24768                  */
24769
24770 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
24771
24772         * loader.c: for P/Invoke methods, allow the "Internal" shared
24773         library name to refer to the calling process symbol namespace.
24774
24775 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
24776
24777         * Makefile.am: Add the security manager to the build.
24778         * security-manager.c|h: New. Initialization of the security manager.
24779
24780 2005-01-07  Dick Porter  <dick@ximian.com>
24781
24782         * threads.c: 
24783         * monitor.c: Update thread state during Monitor and WaitHandle
24784         waits.  Fixes bug 71031.
24785
24786 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
24787
24788         * reflection.c (property_encode_signature): Correctly handle when the
24789         property has no methods.
24790
24791 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
24792
24793         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
24794         
24795         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
24796         fields from mb, not rmb. Fixes #71017.
24797
24798         * marshal.c (emit_ptr_to_str_conv): Add support for 
24799         ByValTStr -> string conversion. Fixes #71015.
24800
24801         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
24802
24803         * mempool.c (mono_mempool_contains_addr): New helper function.
24804
24805 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
24806
24807         * metadata.c (mono_metadata_compute_size): Fix size calculation of
24808         HasSematics encoded fields.
24809         
24810         * metadata.c (mono_type_to_unmanaged): Improve error message for 
24811         invalid string marshalling.
24812
24813         * metadata.c: Fix warnings.
24814         
24815 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24816
24817         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
24818         profiler support.
24819
24820 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
24821
24822         * domain.c object.c domain-internals.h: Revert part of r38077 since the
24823         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
24824         tests.
24825
24826 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
24827
24828         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
24829         so methods containing these can be AOTed.
24830
24831 2005-01-03  Martin Baulig  <martin@ximian.com>
24832
24833         * loader.c (find_method): Removed the hack for generic instances.
24834         (method_from_memberref): If our parent is a generic instance, pass
24835         its generic type definition to find_method() and then inflate the
24836         method.
24837         (mono_get_method_constrained): Pass the generic type definition to
24838         find_method() and inflate the method later.
24839
24840         * class-internals.h (MonoStats): Added `generic_class_count'.
24841
24842         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
24843         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
24844
24845         * reflection.c (mono_custom_attrs_from_params): Don't ignore
24846         generic type definitions.
24847
24848 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
24849
24850         * loader.c icall.c: Fix warnings.
24851
24852 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
24853
24854         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
24855         blittable types. Fixes #70864.
24856
24857 2004-12-29  Martin Baulig  <martin@ximian.com>
24858
24859         * icall.c
24860         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
24861
24862         * reflection.c (mono_method_get_object): Create a
24863         "System.Reflection.MonoGenericMethod" for inflated methods; don't
24864         call mono_get_inflated_method().
24865
24866         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
24867
24868 2004-12-27  Martin Baulig  <martin@ximian.com>
24869
24870         * class-internals.h (MonoMethod): Added `is_inflated' flag.
24871         (MonoMethodInflated): Added `inflated' field.
24872
24873         * class.c (mono_class_inflate_generic_method): Don't really
24874         inflate the method here; just set the `is_inflated' flag in the
24875         MonoMethod.
24876         (mono_class_get_inflated_method): Actually inflate the method here
24877         if it's not already inflated; we use the MonoMethodInflated's new
24878         `inflated' field as a cache.
24879
24880 2004-12-26  Martin Baulig  <martin@ximian.com>
24881
24882         * class.c
24883         (inflate_generic_class): Moved some code out of inflate_generic_type().
24884         (mono_class_inflate_generic_method): If we're already inflated,
24885         inflate the context and use the declaring method; ie. make sure
24886         the declaring method of an inflated method is always the generic
24887         method definition.
24888         (mono_class_create_from_typedef): Create
24889         `class->generic_container->context->gclass'.
24890
24891 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
24892
24893         * metadata-internals.h, marshal.c, reflection.c: More
24894         MonoGHashTable->GHashTable.
24895
24896         * domain-internals.h, class.c: Change MonoGHashTable's into
24897         GHashTables for some cases where no gc stuff is used
24898
24899         All users: update apis
24900
24901 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
24902
24903         * metadata.c (builtin_types): Make this `const'. Makes this get
24904         put into the shareable section.
24905         (mono_metadata_init): Casts to make gcc happy.
24906
24907 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
24908
24909         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
24910
24911 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
24912
24913         * icall.c: Added an internal call to retrieve the position and length
24914         of assembly-level declarative security attributes (RequestMinimum, 
24915         RequestOptional and RequestRefuse). This is used by the Assembly class
24916         to re-create the corresponding permission sets.
24917
24918 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
24919
24920         * marshal.c: fix the stelemref wrapper to be type correct
24921         (and faster).
24922
24923 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
24924
24925         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
24926         to do key & 0x7fffffff. Hashtable already does this. It just
24927         results in longer code.
24928
24929 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
24930
24931         * appdomain.c: Bump corlib version.
24932         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
24933         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
24934         * reflection.c|h: Add functions to get declarative security infos
24935         (blob position and length) for assemblies, classes and methods.
24936
24937 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
24938
24939         * reflection.c: sort the constant table (bug #70693).
24940
24941 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
24942
24943         * object-internals.h, threads.c, domain.c: add accessors for
24944         the MonoThread and MonoDomain tls keys.
24945
24946 2004-12-18  Martin Baulig  <martin@ximian.com>
24947
24948         * class.c (inflate_generic_type): If we're inflating a generic
24949         instance, set `ngclass->context->container = context->container';
24950         ie. the container we inflated into.
24951
24952         * metadata.c (mono_metadata_parse_generic_param): Reflect above
24953         inflate_generic_type() changes.
24954
24955 2004-12-17  Martin Baulig  <martin@ximian.com>
24956
24957         * class-internals.h
24958         (MonoGenericClass): Replaced `MonoType *generic_type' with
24959         `MonoClass *generic_class'.  Removed `dynamic_info'; if
24960         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
24961         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
24962
24963 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
24964
24965         * exception.c (mono_exception_from_token): New helper function.
24966
24967 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
24968
24969         * assembly.c (mono_assembly_load_with_partial_name): Call 
24970         mono_assembly_loaded before invoking the preload hooks. Fixes
24971         #70564.
24972
24973         * object-internals.h (MonoThread): Change culture_info and 
24974         ui_culture_info into an array.
24975
24976         * threads.c: Cache culture info objects from more than one appdomain.
24977
24978         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
24979         current UI culture.
24980
24981 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
24982
24983         * threads.h threads.c appdomain.c: Clear the culture_info field of
24984         all threads during unloading if they point to an object in the dying
24985         appdomain.
24986
24987 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
24988
24989         * culture-info.h (TextInfoEntry): New struct
24990         * object-internals.h: sync with managed
24991         * locales.c: fill the `text_info_data' field
24992         * culture-info-tables.h: update
24993
24994 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
24995
24996         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
24997         collector.
24998
24999 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
25000
25001         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
25002         (ves_icall_ModuleBuilder_getMethodToken): Ditto
25003
25004 2004-12-12  Martin Baulig  <martin@ximian.com>
25005
25006         * mono-debug-debugger.c (write_type): If we're an enum and the
25007         builtin types have already been initialized, call mono_class_init().
25008
25009 2004-12-11  Martin Baulig  <martin@ximian.com>
25010
25011         * metadata.c (mono_metadata_load_generic_params): Added
25012         `MonoGenericContainer *parent_container' argument; automatically
25013         compute `container->is_method'; pass the correct owner to
25014         get_constraints().      
25015
25016         * reflection.c (compare_genericparam): Sort the GenericParam table
25017         according to increasing owners. 
25018
25019 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
25020
25021         * profiler.c: allow disabling the default profiler.
25022
25023 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
25024
25025         * decimal.c, icall.c: allow disabling System.Decimal support.
25026
25027 2004-12-09  Marek Safar <marek.safar@seznam.cz>
25028
25029         * reflection.c: Add support for null attribute arguments.
25030
25031 2004-12-09  Martin Baulig  <martin@ximian.com>
25032
25033         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
25034         names to get rid of compiler warnings.
25035
25036 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
25037
25038         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
25039         mono_marshal_load_type_info (). Fixes #69625.
25040         (mono_marshal_get_ptr_to_struct): Likewise.
25041
25042 2004-12-08  Martin Baulig  <martin@ximian.com>
25043
25044         * mono-debug.h: Bumped version number to 47.
25045
25046         * mono-debug-debugger.c
25047         (mono_debugger_event_handler, mono_debugger_event): Take two
25048         guint64 arguments insteed of a gpointer and a guint32.  
25049
25050 2004-12-08  Martin Baulig  <martin@ximian.com>
25051
25052         * debug-mono-symfile.h
25053         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
25054         `address' to `native_offset'.
25055
25056 2004-12-08  Martin Baulig  <martin@ximian.com>
25057
25058         * class.c (mono_class_create_from_typespec): Only inflate if we
25059         either have `context->gclass' or `context->gmethod'.
25060
25061 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
25062
25063         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
25064
25065         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
25066
25067         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
25068
25069         * reflection.c (mono_assembly_get_object): Remove the workaround put
25070         in for the release.
25071         
25072         * appdomain.c: Use the corlib_internal field from MonoAssembly.
25073
25074         * appdomain.c: Bump corlib version.
25075
25076         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
25077         be visible in other appdomains.
25078
25079 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
25080
25081         * threads.c: Interlocked inc and dec for longs were messed up,
25082         use a KISS based impl for this. Fixes 70234
25083
25084 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
25085
25086         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
25087
25088 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
25089
25090         * icall.c: fix to follow policy not to allow struct
25091         arguments in icalls.
25092
25093 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25094
25095         * process.c: make the patch that handles spaces in file paths work
25096         on mono/windows too.
25097
25098 2004-12-06  Martin Baulig  <martin@ximian.com>
25099
25100         * class.c (mono_class_create_generic): Call
25101         mono_class_setup_supertypes() if we're dynamic.
25102         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
25103
25104 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
25105
25106         * object-internals.h: Add new fields to MonoThread.
25107
25108         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
25109
25110         * icall.c threads-types.h threads.c: Add new icalls.
25111
25112         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
25113
25114         * object-internals.h (MonoReflectionAssembly): Sync object layout with
25115         managed side.
25116
25117         * appdomain.c: Bump corlib version.
25118
25119         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
25120         internal assemblies. Fixes #69181.
25121
25122 2004-12-05  Martin Baulig  <martin@ximian.com>
25123
25124         * class.c (mono_class_inflate_generic_signature): Make this a
25125         no-op if `context' is NULL or we don't have any type parameters;
25126         also copy `sentinelpos'.        
25127
25128 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
25129
25130         * image.c: Add unbox_wrapper_cache.
25131
25132         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
25133
25134         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
25135         function generator.
25136         
25137         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
25138         Fixes #70173.
25139
25140         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
25141         
25142 2004-12-04  Martin Baulig  <martin@ximian.com>
25143
25144         * loader.c (mono_method_get_signature_full): New public function;
25145         like mono_method_get_signature(), but with an additional
25146         `MonoGenericContext *' argument.
25147
25148         * class.c (mono_class_inflate_generic_signature): Formerly known
25149         as inflate_generic_signature(); make this public.
25150
25151 2004-12-04  Martin Baulig  <martin@ximian.com>
25152
25153         * metadata.c
25154         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
25155         instead of a `MonoGenericContainer *'.  
25156         (mono_metadata_parse_array_full): Likewise.
25157         (mono_metadata_parse_signature_full): Likewise.
25158         (mono_metadata_parse_method_signature_full): Likewise.
25159         (mono_metadata_parse_generic_inst): Likewise.
25160         (mono_metadata_parse_generic_param): Likewise.
25161         (mono_metadata_parse_mh_full): Likewise.
25162         (mono_type_create_from_typespec_full): Likewise.
25163
25164 2004-12-03  Martin Baulig  <martin@ximian.com>
25165
25166         * class-internals.h (MonoGenericContainer): Replaced the
25167         `MonoGenericContext * pointer with a `MonoGenericContext'
25168         structure and made it the first element.
25169
25170 2004-12-03  Martin Baulig  <martin@ximian.com>
25171
25172         * class.c
25173         (inflate_generic_type): Set the `context->container' when creating
25174         a new MonoGenericContext.
25175         (mono_class_inflate_generic_method): Likewise.
25176         (mono_class_create_from_typespec): Just use `context->container'
25177         to get the container.
25178
25179         * loader.c (method_from_methodspec): Set `context->parent' from
25180         `context->container' - and if that's a method container, use its
25181         parent.  Also set the `context->container' when creating a new
25182         MonoGenericContext.
25183         (mono_get_method_from_token): Use just `context->container' to get
25184         the container.
25185
25186         * metadata.c (do_mono_metadata_parse_generic_class): Also set
25187         `gclass->context->container'.
25188
25189         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
25190         the `context->container' when creating a new MonoGenericContext.
25191
25192 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
25193
25194         * reflection.c (compare_genericparam): Sort params with identical
25195         owner by their number. Fixes gen-111 on sparc.
25196
25197 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
25198
25199         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
25200         around the domain changes.
25201
25202         * appdomain.c (mono_domain_unload): Handle the case when the thread
25203         calling Unload is itself being aborted during unloading. Fixes #70022.
25204
25205         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
25206
25207         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
25208         checkpoint_func as an icall so it gets a wrapper.
25209         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
25210         in the cross-appdomain wrappers too.
25211
25212         * threads.c (mono_thread_has_appdomain_ref): Make this public.
25213
25214         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
25215
25216         * reflection.c: Fix some memory leaks.
25217         
25218 2004-12-02  Martin Baulig  <martin@ximian.com>
25219
25220         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
25221
25222         * metadata.c (generic_class_cache): New static hashtable.
25223         (mono_metadata_lookup_generic_class): New public method.
25224
25225 2004-12-02  Martin Baulig  <martin@ximian.com>
25226
25227         * class.c (mono_class_create_from_typedef): Call
25228         mono_class_setup_parent() and mono_class_create_mono_type() before
25229         parsing the interfaces.
25230
25231 2004-12-02  Martin Baulig  <martin@ximian.com>
25232
25233         * metadata.c (generic_inst_cache): New static hashtable.
25234         (mono_metadata_lookup_generic_inst): New public function.
25235         (mono_metadata_inflate_generic_inst): New public function.
25236         (mono_metadata_parse_generic_inst): New public function.
25237         (do_mono_metadata_parse_generic_class): Use the new
25238         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
25239         since this'll also use the cache.
25240
25241         * reflection.c (mono_reflection_bind_generic_method_parameters):
25242         Use mono_metadata_lookup_generic_inst() to use the new cache.
25243
25244         * class.c (inflate_mono_type): Use
25245         mono_metadata_inflate_generic_inst() to inflate a generic
25246         instance; this'll also use the new cache.
25247
25248         * loader.c (method_from_methodspec): Use
25249         mono_metadata_parse_generic_inst() and
25250         mono_metadata_inflate_generic_inst() rather than parsing it
25251         manually, so we can use the new cache.
25252
25253 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
25254
25255         * threads.c (wait_for_tids): Do not incorrectly free threads when 
25256         the wait times out.
25257
25258 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
25259
25260         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
25261         iter->args based on whether parameters are passed in registers (i.e.
25262         MONO_ARCH_REGPARMS is defined)
25263
25264 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
25265
25266         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
25267         the exception message. Fixes #70070.
25268         (method_from_methodspec): Fix warnings.
25269
25270 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25271
25272         * process.c: (complete_path) return the path quoted
25273
25274 2004-12-01  Martin Baulig  <martin@ximian.com>
25275
25276         * class-internals.h (MonoGenericInst): New structure.
25277         (MonoGenericClass): Replaced `type_argc', `type_argv' and
25278         `is_open' with `MonoGenericInst *inst'.
25279         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
25280         `is_open' with `MonoGenericInst *inst'.
25281
25282 2004-11-30  Martin Baulig  <martin@ximian.com>
25283
25284         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
25285
25286         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
25287         to `generic_class_cache'.
25288
25289         * metadata.c
25290         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
25291         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
25292         (mono_generic_inst_is_valuetype): Renamed to
25293         mono_generic_class_is_valuetype().
25294
25295         * class-internals.h
25296         (MonoGenericInst): Renamed to MonoGenericClass.
25297         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
25298         (MonoClass): Renamed `generic_inst' to `generic_class'.
25299         (MonoGenericContext): Renamed `ginst' to `gclass'.
25300
25301         * object-internals.h
25302         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
25303
25304         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
25305         mono_reflection_generic_class_initialize().
25306
25307         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
25308         now known as "System.Reflection.MonoGenericClass".
25309         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
25310
25311 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
25312
25313         * class-internals.h: Added a flag field to MonoClass to cache the
25314         declarative security attributes actions associated with the class.
25315         * domain-internals.h: Added booleans to MonoJitInfo to cache the
25316         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
25317         applicable to the JITted method.
25318         * reflection.c|h: Added functions to extract (as flags) which security
25319         actions are available (declaratively) for a method, class or assembly.
25320         * metadata.c|h: Added functions to search the declarative security
25321         table in the metadata.
25322         
25323 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
25324
25325         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
25326         EXPORTEDTYPES are already in the class name cache, so there is no
25327         need to add extra code here to look at them. Just removes a bit of
25328         cruft.
25329
25330         (ves_icall_System_Environment_get_TickCount): No need for #if
25331         WINDOWS. We already have the code in io-layer.
25332
25333 2004-11-28  Martin Baulig  <martin@ximian.com>
25334
25335         * loader.c
25336         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
25337         Fixes gen-112.cs.
25338
25339 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
25340
25341         * assembly.c (do_mono_assembly_open): Instead of having a
25342         conditional WITH_BUNDLE, incorporate support for bundles here, by
25343         having a global `bundles' variable holding a pointer to the actual
25344         bundles. 
25345
25346         (mono_register_bundled_assemblies): New API call used by the
25347         bundle code. 
25348
25349         See mkbundle.1 for details.
25350         
25351 2004-11-27  Martin Baulig  <martin@ximian.com>
25352
25353         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
25354         the vtable for generic methods.
25355
25356 2004-11-26  Martin Baulig  <martin@ximian.com>
25357
25358         * metadata.c
25359         (mono_metadata_generic_method_hash): New public function.
25360         (mono_metadata_generic_method_equal): Likewise.
25361
25362         * class-internals.h
25363         (MonoGenericContainer): Added `GHashTable *method_hash'.
25364
25365         * reflection.c (ReflectionMethodBuilder): Added
25366         `MonoGenericContainer *generic_container'.
25367         (reflection_methodbuilder_to_mono_method): Don't create a new
25368         MonoGenericContainer each time we're called.
25369         (mono_reflection_bind_generic_method_parameters): Use
25370         `container->method_hash' to cache the results so we don't create a
25371         different method if we're called several times with the same
25372         arguments.
25373
25374         * loader.c (method_from_methodspec): Use the new
25375         `container->method_hash' here, too.
25376
25377 2004-11-26  Martin Baulig  <martin@ximian.com>
25378
25379         * class.c (inflate_generic_signature): Correctly compute
25380         `res->has_type_parameters'.
25381         (mono_class_vtable): Use the `has_type_parameters' flag to
25382         determine whether we're a generic method.
25383
25384         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
25385
25386 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
25387
25388         * object.c (mono_runtime_run_main): Fix a small memory leak.
25389
25390 2004-11-25  Martin Baulig  <martin@ximian.com>
25391
25392         * class.c (set_generic_param_owner): Fixed the loop.
25393
25394 2004-11-25  Martin Baulig  <martin@ximian.com>
25395
25396         * object.c (mono_class_vtable): Don't create any JIT wrappers for
25397         generic methods.
25398
25399 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
25400
25401         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
25402         names. Fixes #69787.
25403
25404 2004-11-24  Martin Baulig  <martin@ximian.com>
25405
25406         * class.c (mono_class_create_generic_2): If we don't have a
25407         `ginst->parent', inflate `gklass->parent' to get our parent.
25408
25409 2004-11-24  Martin Baulig  <martin@ximian.com>
25410
25411         * reflection.c (compare_genericparam): Correctly sort the
25412         GenericParam table; fixes #69779.
25413
25414 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
25415
25416         * reflection.c: When writing a PE file, don't create a huge
25417         buffer in memory. Just write the arrays we have to the file.
25418         This reduces memory usage.
25419
25420         * metadata-internals.h: MonoDynamicStream pefile is no longer used
25421         globally.
25422
25423 2004-11-17  Martin Baulig  <martin@ximian.com>
25424
25425         * class.c (mono_class_init): Don't setup `class->parent' for
25426         dynamic instances; moved this to mono_class_generic_2().
25427         (mono_class_create_generic): Also set `klass->inited' for dynamic
25428         generic instances.
25429         (mono_class_create_generic_2): Don't do anything for dynamic
25430         generic instances.  Set `klass->parent' here and also call
25431         mono_class_setup_parent() here. 
25432
25433         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
25434         `MonoType *parent' argument; set `ginst->parent' before calling
25435         mono_class_create_generic_2(), so we set the correct parent.
25436
25437 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
25438
25439         * reflection.c: allow getting attributes from ModuleBuilder
25440         (used by ikvm).
25441
25442 2004-11-17  Martin Baulig  <martin@ximian.com>
25443
25444         * class.c (mono_class_create_from_typedef): If a type parameter is
25445         inherited from an outer class, set its owner to that class.
25446
25447 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
25448
25449         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
25450           for (int*) written size. This fixes bug #69592.
25451
25452 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
25453
25454         * icall.c: Added IsAuthenticodePresnet internal call.
25455         * image.c|h: New function that check a MonoImage for an Authenticode
25456         signature in the certificate PE data directory.
25457         * security.c|h: New internal call to ask the runtime if an 
25458         Authenticode signature seems referenced in the PE header.
25459
25460 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
25461
25462         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
25463
25464         * reflection.c (mono_image_create_pefile): Free the assembly streams
25465         after writing out the assembly file.
25466
25467         * object.c (mono_runtime_run_main): Fix small memory leak.
25468
25469         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
25470         property access modifiers. Fixes #69389.
25471
25472 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
25473
25474         * domain.c, object.c, object-internals.h, domain-internals.h,
25475         object.h, marshal.c: keep dynamic code info per domain.
25476
25477 2004-11-15  Martin Baulig  <martin@ximian.com>
25478
25479         * class.c (mono_type_get_name_recurse): Put type arguments in
25480         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
25481         see bug #68387.
25482
25483 2004-11-15  Martin Baulig  <martin@ximian.com>
25484
25485         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
25486         (mono_class_setup_vtable): When computing `the_cname' for a
25487         generic instance, don't include the namespace since we'd otherwise
25488         add it twice.
25489
25490 2004-11-15  Martin Baulig  <martin@ximian.com>
25491
25492         * class.c (mono_class_create_generic): Changed return type to void.
25493         (mono_class_create_generic_2): New public function; setup
25494         `class->method', `class->field' and `class->interfaces' here
25495         instead of in mono_class_init().
25496
25497         * class.h (mono_class_create_generic): Moved to class-internals.h.
25498
25499 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
25500
25501         * reflection.c (mono_image_create_pefile): take a file HANDLE.
25502         rather than writing to memory, write to this file. Right now,
25503         we are just writting into a buffer, and copying that. However
25504         we can avoid the buffer later.
25505
25506         (mono_dynamic_stream_reset): new function
25507
25508         * icall.c, object-internals.h: update for the above.
25509
25510 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
25511
25512         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
25513         have been using gc'd memory. First it is slower, unlikely
25514         the comment in the source code said, secondly, it increases
25515         our footprint to do it in the gc.
25516
25517         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
25518         the method so that it does not have to copy to managed code.
25519
25520 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
25521
25522         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
25523
25524 2004-11-12  Martin Baulig  <martin@localhost>
25525
25526         * reflection.c (mono_image_create_token): Allow generic method
25527         definitions here, since they may appear in an `.override'; see
25528         gen-98/gen-99 for an example.
25529
25530 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
25531
25532         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
25533         #69365.
25534
25535         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
25536         descriptive.
25537
25538 2004-11-11  Martin Baulig  <martin@ximian.com>
25539
25540         * class.c (mono_class_setup_vtable): In an explicit interface
25541         implementation, the method name now includes the arity.
25542
25543 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
25544
25545         * object.c (mono_array_full_copy): Fix warning.
25546
25547 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
25548
25549         * appdomain.c: Removed look_for_method_by_name(). Use the new method
25550         mono_class_get_method_from_name() instead.
25551         
25552         * class-internals.h: Added two new types of wrappers. 
25553         Added MonoRemotingTarget enum. Added new trampoline function type, which
25554         takes an additional MonoRemotingTarget value as parameter, so it is
25555         possible to request a trampoline for a specific target.
25556         
25557         * class.c: Added new mono_class_get_method_from_name() method.
25558         
25559         * class.h: In MonoRemoteClass, we can have now to vtables, one for
25560         general remoting sinks and one specific for cross domain calls.
25561         
25562         * debug-helpers.c: Added new wrapper names.
25563         
25564         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
25565         of a remote class.
25566         
25567         * image.c: Porperly delete value objects form the remoting invoke hashtable.
25568         
25569         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
25570         with several other methods (mono_marshal_get_xappdomain_dispatch,
25571         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
25572         and others) can generate a fast remoting wrapper for cross domain calls.
25573         More information can be found in docs/remoting.
25574         Other changes: Removed mono_find_method_by_name, and used
25575         mono_class_get_method_from_name instead.
25576         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
25577         is stored in the remoting invoke hashtable.
25578         
25579         * marshal.h: published the new method for getting the xdomain wrapper,
25580         and also added a method for getting the adequate wrapper for a given
25581         method and target.
25582         
25583         * object-internals.h, object.c: Added a couple of methods for capying and
25584         cloning arrays.
25585         Modified mono_install_remoting_trampoline, which takes the new remoting
25586         trampoline that has a remoting target as parameter.
25587         mono_class_proxy_vtable now also takes a remoting target as parameter, and
25588         will return the most suitable vtable for the target.
25589         Added mono_remote_class_vtable, which returns the vtable of a remote class
25590         (which can be the normal remoting vtable or the xdomain vtable).
25591         
25592         * threads.c: the xdomain invoke and dispatch wrappers must also be
25593         protected against interruptions.
25594
25595 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25596
25597         * icall.c: use memmove in BlockCopyInternal when the source and
25598         destination arrays are the same.
25599
25600 2004-11-09  Martin Baulig  <martin@ximian.com>
25601
25602         * class-internals.h (MonoGenericContainer): Removed `method' and
25603         `signature', replaced them with `is_method' and `is_signature'
25604         flags.  Added `context'.
25605
25606         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
25607         instead of a `MonoGenericContainer *'.
25608
25609         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
25610         for dynamic type parameters.
25611         (mono_metadata_load_generic_params): Setup `container->context'.
25612
25613         * reflection.c (mono_reflection_setup_generic_class): Setup
25614         `tb->generic_container->context'.
25615         (do_mono_reflection_bind_generic_parameters): Use
25616         mono_class_inflate_generic_type() to correctly inflate types,
25617         rather than using our own hack just for MONO_TYPE_VAR.
25618
25619 2004-11-09  Martin Baulig  <martin@ximian.com>
25620
25621         * class.c (mono_class_inflate_generic_method): Small fix; don't
25622         crash here.
25623
25624         * icall.c
25625         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
25626         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
25627         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
25628         (ves_icall_Type_BindGenericParameters): Likewise.
25629         (ves_icall_Type_get_IsGenericInstance): Likewise.
25630         (ves_icall_Type_GetGenericParameterPosition): Likewise.
25631         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
25632         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
25633         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
25634
25635 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
25636
25637         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
25638         assembly versions and public key tokens. Fixes #69113.
25639
25640 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
25641
25642         * metadata.c: fix bug introduced with the type cache changes
25643         on 2004-11-06.
25644
25645 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
25646
25647         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
25648         the MonoClass pointer instead of the token in exception clauses.
25649         * reflection.c: updates for the above and make the code not depend
25650         on the structure of MonoExceptionClause.
25651
25652 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
25653
25654         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
25655         Add support for dynamic assemblies. Fixes #69114.
25656
25657         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
25658
25659 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
25660
25661         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
25662         since most only those methods use it. the code member of
25663         MonoMethodPInvoke was dead, so that can be removed too. Also,
25664         remove inline_count (again, not used), and move slot so that it
25665         can share bits with some other flags. This saves 8 bytes in the
25666         structure and gives us about 50 kb back for mcs helloworld.cs
25667
25668         * *.[ch]: Do naming changes for the above.
25669
25670         * loader.c (mono_method_get_header): Lazily init the header
25671         on first access.
25672         (mono_get_method_from_token): don't init the header here
25673         (mono_free_method): the header may never be allocated
25674
25675         Overall, this saves 150 kb of unmanaged allocations
25676         for mcs helloworld.cs. That accounts for 10% of the unmanaged
25677         memory at runtime.
25678         
25679         * loader.c, loader.h (mono_method_get_header): new accessor.
25680
25681         * *.[ch]: use the above method. Prepares us to lazily load
25682         the header.
25683
25684         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
25685         three warnings, which are actual bugs (see 69206).
25686
25687         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
25688         unused. Saves a cool 4 bytes / method.
25689
25690 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
25691
25692         * metadata.c (builtin_types): Add types for System.Object here.
25693         (mono_metadata_parse_type_full): Cache MonoType*'s that are
25694         for a class or valuetype from klass->this_arg or klass->byval_arg.
25695
25696         On mcs for a hello world, this gets us down from 21836 MonoType's
25697         to 14560.
25698
25699         (mono_metadata_free_type): Account for the above change.
25700
25701 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
25702
25703         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
25704         exception instead of asserting if name is null.
25705         (ves_icall_System_AppDomain_GetData): Ditto.
25706
25707 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
25708
25709         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
25710         EnumBuilder.
25711
25712         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
25713         Return NULL when the domain does not have entry_assembly set.
25714
25715         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
25716         Add a 'resource_modules' argument.
25717         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
25718
25719         * reflection.c (mono_reflection_create_runtime_class): Move setting
25720         of wastypebuilder here, so mono_get_type_object () returns a MonoType
25721         for enums too.
25722
25723         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
25724         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
25725         Throw an ArgumentNullException if 'ptr' is null.
25726
25727         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
25728         assemblies here. Fixes #69020.
25729
25730 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
25731
25732         * reflection.c (build_compressed_metadata): Fix the previous patch for
25733         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
25734         the stack.
25735
25736 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
25737
25738         * assembly.c (mono_assembly_names_equal): Allow a match if one of
25739         the cultures is false. Fixes #69090.
25740
25741         * reflection.c (build_compressed_metadata): Fix invalid memory read 
25742         detected by valgrind.
25743         
25744         * reflection.c (mono_reflection_get_type): Avoid triggering a 
25745         TypeResolve multiple times for the same type. Fixes #65577.
25746
25747 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
25748
25749         * marshal.c: Avoid using ldftn to call managed functions. It is
25750         much slower than just a call.
25751
25752         * reflection.c (mono_module_get_object): free the basename we
25753         allocate here from glib.
25754         
25755         * reflection.c (ensure_runtime_vtable): make sure to free
25756         overrides.  Also, we were allocating an array of MonoMethod not an
25757         array of MonoMethod*.
25758
25759         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
25760
25761         * image.c (mono_image_close): free image->guid here.
25762
25763 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
25764
25765         * reflection.c: Fix some spec conformance issues with the PE file
25766         structures so mcs compiled apps run on the Net 2.0 beta.
25767
25768 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
25769
25770         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
25771         Implement this. Fixes #67264.
25772
25773         * debug-helpers.h debug-helpers.c marshal.c: Move 
25774         mono_find_method_by_name to debug-helpers.c.
25775
25776 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
25777
25778         * object.c (mono_release_type_locks): type_initialization_hash is
25779         a GHashTable.
25780
25781         * reflection.c object.c object-internals.h: Fix warnings.
25782
25783         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
25784         without accessors. Fixes #61561.
25785
25786         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
25787         application base from the root domain if not set. Fixes #65641.
25788         (mono_runtime_init): Fix warning.
25789
25790 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25791
25792         * appdomain.c: call mono_thread_pool_init.
25793         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
25794         of worker threads based on the number of CPUs and the environment
25795         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
25796         for non-windows (windows) systems.
25797
25798 2004-10-27  Chris Toshok  <toshok@ximian.com>
25799
25800         * mono-debug-debugger.c (write_class): don't call mono_class_init
25801         here, as even with the check for (!klass->init_pending), we get
25802         into a situation where we're hitting cycles in class
25803         initialization.  Fixes #68816.
25804
25805 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
25806
25807         * image.c: Avoid overwriting values in the loaded_images_hash when an
25808         assembly is loaded multiple times. Fixes #61152.
25809
25810         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
25811         so multiple satellite assemblies for the same name can be loaded.
25812         Fixes #68259.
25813
25814         * mono_domain_assembly_preload: Actually return the loaded assembly, 
25815         not NULL.
25816
25817         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
25818         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
25819
25820         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
25821         pending finalizers are not invoked after the appdomain has been 
25822         unloaded. Fixes #67862.
25823
25824 2004-10-22  Martin Baulig  <martin@ximian.com>
25825
25826         * mono-debug-debugger.c
25827         (mono_debugger_runtime_invoke): Don't box valuetypes.
25828
25829 2004-10-22  Chris Toshok  <toshok@ximian.com>
25830
25831         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
25832         don't hide private methods.
25833
25834 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
25835
25836         * icall.c: Allows the runtime to "share" (when known) the public key
25837         token of an assembly. This avoid the need to recalculate the token 
25838         (from the public key) in managed code.
25839
25840 2004-10-21  Chris Toshok  <toshok@ximian.com>
25841
25842         * debug-helpers.c (append_class_name): argh, revert last patch.
25843         
25844 2004-10-21  Chris Toshok  <toshok@ximian.com>
25845
25846         * debug-helpers.c (append_class_name): use '+' as the delimiter,
25847         not '/', so that it matches what the debugger uses to look up
25848         methods.
25849
25850 2004-10-21  Martin Baulig  <martin@ximian.com>
25851
25852         * mono-debug-debugger.c (mono_debugger_throw_exception): New
25853         public method; this is called each time an exception is thrown and
25854         allows the debugger to use exception catch points.
25855
25856 2004-10-21  Martin Baulig  <martin@ximian.com>
25857
25858         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
25859         the stack pointer and the exception object in some struct and pass
25860         that to the debugger.
25861
25862 2004-10-21  Chris Toshok  <toshok@ximian.com>
25863
25864         * mono-debug-debugger.c (do_write_class): add instance/static
25865         event support.  We don't expose "raise" or "other" yet.
25866         (event_is_static): new method.
25867
25868 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
25869
25870         * mono-debug-debugger.c
25871         (mono_debugger_handle_exception): Remove
25872         bogus return value for fussy compilers.
25873
25874 2004-10-20  Martin Baulig  <martin@ximian.com>
25875
25876         * mono-debug-debugger.c
25877         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
25878         (mono_debugger_handled_exception): Likewise.
25879
25880 2004-10-20  Martin Baulig  <martin@ximian.com>
25881
25882         * mono-debug-debugger.h (MonoDebuggerEvent): Added
25883         MONO_DEBUGGER_EVENT_EXCEPTION.
25884
25885         * mono-debug-debugger.c (mono_debugger_handle_exception): New
25886         public function to send the debugger a notification for an
25887         exception and inform it about a catch/finally clause.
25888
25889 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
25890
25891         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
25892         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
25893         fix 2.95 build. 
25894
25895         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
25896
25897 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
25898
25899         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
25900         marshalled as [In,Out]. Fixes #58325.
25901
25902 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
25903
25904         * reflection.c (mono_method_body_get_object): Implement some fields.
25905
25906 2004-10-12  Martin Baulig  <martin@ximian.com>
25907
25908         * reflection.c (mono_reflection_bind_generic_parameters): Small
25909         fix, correctly retrieve our parent from a generic instance.
25910
25911 2004-10-12  Martin Baulig  <martin@ximian.com>
25912
25913         * metadata.c (mono_metadata_generic_param_equal): We always have
25914         an owner.
25915
25916         * class.c
25917         (mono_class_from_generic_parameter): We need to have an owner.
25918         (my_mono_class_from_generic_parameter): Likewise.
25919
25920         * reflection.c (mono_reflection_setup_generic_class): Renamed to
25921         mono_reflection_create_generic_class() and added a new
25922         mono_reflection_setup_generic_class().  
25923         (mono_reflection_initialize_generic_param): If we're a nested
25924         generic type and inherited from the containing class, set our
25925         owner to the outer class.
25926
25927 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
25928
25929         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
25930
25931         * reflection.c (mono_method_body_get_object): New function to create
25932         a MethodBody object.
25933
25934         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
25935
25936 2004-10-11  Martin Baulig  <martin@ximian.com>
25937
25938         * metadata.c (_mono_metadata_type_equal): Renamed to
25939         do_mono_metadata_type_equal() and made static.
25940
25941 2004-10-11  Martin Baulig  <martin@ximian.com>
25942
25943         * appdomain.c: Bump corlib version number to 28.
25944
25945 2004-10-10  Martin Baulig  <martin@ximian.com>
25946
25947         * class-internals.h
25948         (MonoGenericInst): Added `MonoGenericContainer *container'.
25949         (MonoGenericMethod): Likewise.
25950         (MonoGenericContext): Likewise.
25951         (MonoGenericParam): Added `MonoGenericContainer *owner'.
25952
25953         * metadata.c
25954         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
25955         (do_mono_metadata_parse_generic_inst): Likewise.
25956         (mono_metadata_parse_type_full): New public method.  This is the actual
25957         mono_metadata_parse_type() implementation - with an additional
25958         `MonoGenericContainer *' argument.
25959         (mono_metadata_parse_array_full): Likewise.
25960         (mono_metadata_parse_signature_full): Likewise.
25961         (mono_metadata_parse_method_signature_full): Likewise.
25962         (mono_metadata_parse_mh_full): Likewise.
25963         (mono_type_create_from_typespec): Likewise.
25964         (mono_metadata_interfaces_from_typedef_full): New public method;
25965         this is similar to the other _full() methods, but we take a
25966         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
25967         (mono_metadata_parse_generic_param): Take an additional
25968         `MonoGenericContainer *' argument and lookup the MonoGenericParam
25969         from that container.
25970         (mono_metadata_generic_param_equal): New static method to compare
25971         two type parameters.
25972         (_mono_metadata_type_equal): New static method; takes an
25973         additional `gboolean signature_only' argument - if true, we don't
25974         compare the owners of generic parameters.
25975         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
25976         with a TRUE argument - do a signature-only comparision.
25977
25978         * loader.c: Use the new _full() methods and pass the
25979         MonoGenericContainer to them.
25980
25981         * object-internals.h (MonoReflectionTypeBuilder): Added
25982         `MonoGenericContainer *generic_container' field.
25983         (MonoReflectionMethodBuilder): Likewise.
25984
25985 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
25986
25987         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
25988         case initial images of dynamic assemblies.
25989
25990         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
25991
25992         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
25993
25994         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
25995         length of event->other array.
25996         (typebuilder_setup_events): Ditto.
25997
25998         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
25999         'assembly_by_name' and add an 'assemblies' list.
26000
26001         * assembly.h assembly.c: Add a new search hook for determining whenever
26002         an assembly is already loaded. Use this instead of searching in the
26003         loaded_assemblies list.
26004
26005         * domain.c appdomain.c: Implement the new search hook so loaded 
26006         assemblies are now scoped by appdomain. Fixes #67727.
26007
26008 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
26009
26010         * threads.c (mono_thread_attach): Initialize synch_lock field so
26011         mono_thread_detach works again.
26012
26013         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
26014         'lib' too. Fixes #63130.
26015
26016 2004-10-06  Jackson Harper  <jackson@ximian.com>
26017
26018         * culture-info-tables.h: regenerated.
26019
26020 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
26021
26022         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
26023         implemented by other interfaces in the result. Fixes #65764.
26024         
26025         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
26026         Handle unloadable modules without crashing.
26027
26028         * image.c (load_modules): Revert the previous patch since modules must
26029         have a fixed index inside the array.
26030         
26031         * image.c (load_modules): Don't include native modules in the modules
26032         array.
26033
26034 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
26035
26036         * reflection.h: Add param_defaults field.
26037
26038         * reflection.c: Add support for parameter defaults in dynamic methods.
26039         Fixes #64595.
26040
26041         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
26042         an empty string when a type has no namespace. Fixes #64230.
26043
26044 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
26045
26046         * tabledefs.h: Added "internal" security actions to support non-CAS
26047         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
26048         Note: they do not seems to be used anymore in 2.0 (new metadata format)
26049
26050 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
26051
26052         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
26053         constructor of abstract class. Fixes #61689.
26054
26055 2004-10-04  Martin Baulig  <martin@ximian.com>
26056
26057         * class-internals.h (MonoGenericContainer): New type.
26058         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
26059         `MonoGenericContainer *generic_container'.
26060         (MonoClass): Replaced `gen_params' and `num_gen_params' with
26061         `MonoGenericContainer *generic_container'.
26062
26063         * metadata.c (mono_metadata_load_generic_params): Return a
26064         `MonoGenericContainer *' instead of a `MonoGenericParam *';
26065         removed the `num' argument.
26066
26067 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
26068
26069         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
26070         for dynamic images.
26071
26072         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
26073         machine fields.
26074
26075         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
26076
26077         * reflection.c: Save pe_kind and machine values into the generated
26078         image file.
26079
26080         * appdomain.c: Bump corlib version number.
26081
26082         * object-internals.h: Reorganize layout of LocalBuilder.
26083
26084         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
26085         New helper function.
26086
26087         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
26088         created MonoType for dynamic types. Fixes #66180.
26089
26090 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
26091
26092         * threadpool.c: the ares hashtable needs a critical section around it.
26093         this prevents some nasty segfaults
26094
26095 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
26096
26097         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
26098         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
26099         bug 67324).
26100         
26101 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
26102
26103         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
26104         
26105 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
26106
26107         * image.c: Always canonicalize image file names, to avoid loading
26108         the same assembly twice when referenced using a relative path.
26109
26110 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
26111
26112         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
26113
26114         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
26115
26116         * marshal.c: Fix warnings.
26117
26118 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
26119
26120         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
26121         attempting to marshal the delegate_trampoline as the method_addr.
26122         This patch has a static hashtable of marshalled delegates so that 
26123         we can map delegate_trampoline addresses back to delegates.  This
26124         allows a delegate passed to managed code to be passed back into native
26125         code.  Fixes #67039
26126
26127 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
26128
26129         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
26130
26131         * reflection.c (method_encode_code): Align method headers properly.
26132         Fixes #66025.
26133
26134 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
26135
26136         * marshal.c: In the runtime invoke wrapper, reset the abort
26137         exception if it is cached. This avoids the automatic rethrowal of 
26138         the exception after the catch of the wrapper. Also check for pending
26139         interruptions before calling the managed method. This is done using
26140         the new method emit_thread_force_interrupt_checkpoint, since the
26141         normal checkpoint method is ignored when running the invoke wrapper.
26142         * object.c: If the abort exception is rethrown, set the abort_exc
26143         field of the thread, so it will be rethrown aftere every catch.
26144         * threadpool.c: Only run an interruption checkpoint if what has been
26145         requested is a stop of the thread (aborts will be ignored).
26146         * threads.c: By default, a thread will now never be interrumped while
26147         running the runtime invoke wrapper (this ensures that runtime_invoke
26148         will always return to the caller if an exception pointer is provided).
26149         There is a new special method mono_thread_force_interruption_checkpoint()
26150         to force an interruption checkpoint even if running a protected
26151         wrapper, which is used by the same runtime invoke wrapper to do a check
26152         at a safe point.
26153
26154 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
26155
26156         * object.c, object-internals.h: Implemented mono_release_type_locks,
26157         which releases the cctor locks held by a thread.
26158         * threads.c, threads.h: In thread_cleanup, release cctor locks held
26159         by a thread. Added mono_thread_exit() method to be used to safely stop
26160         a thread.
26161
26162 2004-09-28  Raja R Harinath  <rharinath@novell.com>
26163
26164         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
26165         Move null check before dereference.  Avoid indexing beyond the end
26166         of the 'modules' array.
26167
26168 2004-09-28  Raja R Harinath  <rharinath@novell.com>
26169
26170         * metadata-internals.h (MonoImage): Add module_count field.
26171         * image.c (load_modules): Set image->module_count.
26172         (mono_image_load_file_for_image): Use image->module_count.
26173         * reflection.c (mono_image_load_module): Append to image->modules array 
26174         of dynamic assembly.
26175         (mono_module_get_object): Fix loop to actually increment index.
26176         Use image->module_count.
26177         * assembly.c (mono_assembly_load_references): Use image->module_count.
26178         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
26179         Likewise.
26180
26181 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
26182
26183         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
26184         Avoid assert on generic types.
26185
26186 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
26187
26188         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
26189
26190         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
26191
26192         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
26193         function to convert a MarshalSpec structure to its managed counterpart.
26194
26195         * reflection.c: Fix warnings.
26196         
26197         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
26198         field.
26199
26200         * icall.c (mono_create_icall_signature): Fix build.
26201
26202 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
26203
26204         * icall.c: Add MakePointType icall.
26205
26206         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
26207         warnings.
26208
26209 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26210
26211         * threadpool.c: reuse allocated slots in the queue.
26212
26213 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
26214
26215         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
26216
26217         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
26218
26219         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
26220         previous change.
26221
26222         * tabledefs.h: Add constants for pinvoke attributes BestFit and
26223         ThrowOnUnmappableChar.
26224
26225         * icall.c (ves_icall_Type_GetPacking): New icall.
26226
26227 2004-09-24  Martin Baulig  <martin@ximian.com>
26228
26229         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
26230
26231 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26232
26233         * appdomain.c:
26234         (mono_domain_set): allow setting a domain that is being unloaded.
26235         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
26236         being unloaded.
26237
26238 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
26239
26240         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
26241         the GetCustomAttributes icall.
26242
26243 2004-09-23  Martin Baulig  <martin@ximian.com>
26244
26245         * object-internals.h (MonoReflectionGenericParam): Replaced
26246         'has_ctor_constraint', `has_reference_type' and `has_value_type'
26247         with `guint32 attrs'.
26248
26249 2004-09-23  Martin Baulig  <martin@ximian.com>
26250
26251         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
26252
26253 2004-09-23  Martin Baulig  <martin@ximian.com>
26254
26255         * object-internals.h (GenericParameterAttributes): New enum.
26256
26257 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
26258
26259         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
26260         
26261         * class.c (init_events): Fill out event->other field.
26262
26263         * class.c: Fix warnings.
26264
26265         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
26266
26267 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
26268
26269         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
26270         walk which doesn't supply the IL offset.
26271
26272 2004-09-22  Martin Baulig  <martin@ximian.com>
26273
26274         * reflection.c (mono_reflection_setup_internal_class): If we're
26275         System.ValueType, System.Object or System.Enum, set
26276         `klass->instance_size' and create the vtable.
26277         (mono_reflection_create_internal_class): If we're an enum type,
26278         get the base class from our current corlib.
26279
26280 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
26281
26282         * reflection.h (MonoResolveTokenError): New type.
26283
26284         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
26285         icall.
26286
26287         * icall.c: Add an 'error' argument to the ResolveToken icalls.
26288
26289 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
26290
26291         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
26292         Support also calling constructors, but only for already allocated objects.
26293
26294 2004-09-17  Geoff Norton <gnorton@customerdna.com>
26295
26296         * reflection.c (type_get_qualified_name): If the klass is null
26297         return the typename to avoid a NullRefEx.
26298         (encode_cattr_value): Get the qualified name of the boxed type,
26299         not the underlying enumtype.  Fixes #62984.
26300
26301 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
26302
26303         * marshal.c: Fix problems with previous checkin.
26304
26305 2004-09-21    <vargaz@freemail.hu>
26306
26307         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
26308         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
26309
26310         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
26311
26312 2004-09-21  Geoff Norton <gnorton@customerdna.com>
26313
26314         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
26315         should only return a type for pointers, arrays, and passbyref types.
26316         Fixes bug #63841.
26317
26318 2004-09-21  Martin Baulig  <martin@ximian.com>
26319
26320         * domain.c (mono_debugger_check_runtime_version): New public
26321         function.
26322
26323         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
26324
26325 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
26326
26327         * reflection.c: Added missing sort to the declarative security 
26328         attributes table. MS implementation stops seeing the attributes if the
26329         token number regress in the table (as shown by ildasm and permview).
26330
26331 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
26332
26333         * object-internals.h (MonoReflectionModule): Add 'token' field.
26334         
26335         * reflection.c (mono_reflection_get_token): Add support for Module
26336         and Assembly.
26337         (mono_module_get_object): Set 'token' field.
26338         (mono_module_file_get_object): Set 'token' field.
26339
26340         * icall.c: Add new Assembly and Module icalls.
26341
26342         * appdomain.c: Bump corlib version.
26343
26344 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
26345
26346         * loader.h loader.c class.h class.c: Add helper functions for obtaining
26347         tokens of metadata objects.
26348
26349         * reflection.h reflection.c (mono_reflection_get_token): New function
26350         to obtain the token of a metadata object.
26351
26352         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
26353
26354 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
26355
26356         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
26357         
26358         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
26359
26360 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
26361
26362         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
26363         * object-internals.h: Added 3 MonoArray* members to MonoReflection
26364         AssemblyBuilder to access the permissions set in the class lib.
26365         * reflection.c: Added security attributes encoding step in 
26366         mono_image_build_metadata.
26367         * tabledefs.h: Added new security actions defined in 2.0:
26368         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
26369
26370 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
26371
26372         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
26373         macro parameter.
26374
26375 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
26376  
26377         * locales.c: nullify the ICU_collator member of CompareInfo when it is
26378           finalized. There where random SIGSEVs at program termination, when
26379           an object being finalized was trying to do a string comparison and
26380           the current culture was already finalized.
26381  
26382 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26383
26384         * threads.c: call thread_cleanup before finishing the thread if we get
26385         there.
26386
26387 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
26388
26389         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
26390         assemblies from the parent. Fixes #65665.
26391
26392 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
26393
26394         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
26395         modifiers.
26396
26397 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
26398
26399         * reflection.h: add prototype for mono_get_dbnull_object
26400         * reflection.c: add prototypes for get_default_param_value_blobs 
26401         and mono_get_object_from_blob for fussier compilers
26402
26403 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
26404  
26405         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
26406         false deadlock checks in class initialization.
26407  
26408 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
26409
26410         * image.c (mono_image_addref): Fix comment.
26411
26412         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
26413         possible.
26414
26415 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
26416
26417         * reflection.c (mono_param_get_objects): Modified to return
26418         ParameterInfo.DefaultValue object.
26419
26420         (get_default_param_value_blobs):
26421         (mono_get_object_from_blob):
26422         (mono_get_dbnull_object): New helper routines. 
26423
26424         * object.c (mono_get_constant_value_from_blob): New helper routine
26425         carved out from get_default_field_value ()
26426
26427         * object-internals.h (mono_get_constant_value_from_blob): Added
26428         function declaration.
26429
26430 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
26431
26432         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
26433         referenced assemblies. Fixes #62135.
26434
26435         * exception.h exception.c (mono_get_exception_file_not_found2): New
26436         helper function.
26437
26438 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
26439
26440         * class.h class.c: Add mono_type_get_underlying_type ().
26441
26442 2004-09-09  Geoff Norton <gnorton@customerndna.com>
26443
26444         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
26445         Fix GetTypes() to support dynamically created assemblies.
26446
26447 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
26448
26449         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
26450         
26451         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
26452         previous patch.
26453
26454         * reflection.h reflection.c loader.c: Allow dynamic construction of
26455         pinvoke methods. Fixes #65571.
26456         
26457         * reflection.c (mono_reflection_get_type): Revert previous change since
26458         it causes regressions.
26459
26460 2004-09-08  Martin Baulig  <martin@ximian.com>
26461
26462         * class.c (class_compute_field_layout): Don't call
26463         mono_class_layout_fields() for open generic instances.
26464
26465 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
26466         * threads.c appdomain.c: fix typo in GC macro
26467
26468 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26469
26470         * threads.c: don't call mono_thread_detach() in start_wrapper(),
26471         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
26472
26473 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
26474
26475         * image.c (mono_image_close): Applied patch from 
26476         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
26477         assembly is loaded multiple times from data.
26478         
26479         * image.c (mono_image_open): Fix warning.
26480
26481 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26482
26483         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
26484         once. Fixes #58334.
26485         
26486         * reflection.c (mono_reflection_create_runtime_class): Initialize
26487         klass->nested_classes. Fixes #61224.
26488
26489 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
26490
26491         * threads.c: sched_yield() on exit, to allow threads to quit.
26492
26493 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26494
26495         * object.c (mono_unhandled_exception): Remove leftover debug code.
26496
26497 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
26498
26499         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
26500
26501 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26502
26503         * marshal.c (emit_marshal_array): Really null terminate string arrays.
26504         
26505         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
26506
26507 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26508
26509         * marshal.c (emit_marshal_array): Null terminate string arrays.
26510         
26511         * marshal.c (raise_auto_layout_exception): Fix warning.
26512
26513         * reflection.c (mono_param_get_objects): Initialize the default value
26514         with DBNull.Value, not null. Fixes #62123.
26515
26516 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
26517
26518         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
26519         throw an exception with a cute explanation.
26520
26521 2004-09-06  Dick Porter  <dick@ximian.com>
26522
26523         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
26524         Close the new process's thread handle, as we don't use it.  The
26525         handle stays around forever otherwise.
26526
26527 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26528
26529         * object.c (arith_overflow): Fix warning.
26530
26531         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
26532         calling conventions in method refs. Fixes #65352.
26533
26534         * reflection.c: Fix warnings.
26535
26536 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
26537
26538         * icall.c: Add a new icall for Array.Clear
26539
26540 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
26541
26542         * object.c: When allocating an array, we have to throw
26543         an overflow exception if any of the lengths are < 0.
26544
26545 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26546
26547         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
26548         properly. Also move implementation of string array marshalling to 
26549         managed code. Fixes #42316.
26550
26551 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26552
26553         * assembly.c: provide more information when loading an assembly fails.
26554
26555 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26556
26557         * filewatcher.c: don't expect the development fam package to be
26558         installed.
26559
26560 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
26561
26562         * marshal.c: Make a copy of the signature cookie since it will be
26563         freed by the caller.
26564         
26565         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
26566
26567         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
26568
26569         * metadata.c (mono_metadata_free_marshal_spec): New function to free
26570         marshal specs.
26571
26572         * marshal.c: More refactoring.
26573         
26574         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
26575         smaller functions.
26576
26577 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
26578
26579         * object.c: In mono_message_invoke, fill the output parameter array after
26580           calling the managed method (it was done before the call). This fixes
26581           bug #59299.
26582
26583 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
26584
26585         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
26586         as well.
26587
26588 2004-09-02  Martin Baulig  <martin@ximian.com>
26589
26590         * class.c (mono_class_instance_size): Don't allow generic type
26591         definitions or open generic instances.
26592         (mono_class_array_element_size): If we're a value type, call
26593         mono_class_instance_size() on the original class.
26594
26595         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
26596         handle generic instances.
26597
26598         * mono-debug-debugger.c (write_type): Handle generic instances
26599         like classes.
26600
26601 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
26602
26603         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
26604         the allocation request fails. Fixes #65089.
26605
26606         * object.c (mono_runtime_free_method): Do not call mono_free_method.
26607         
26608         * object.c (mono_runtime_free_method): New function to free a dynamic
26609         method.
26610
26611         * marshal.c (mono_delegate_free_ftnptr): New function to free the
26612         delegate trampoline.
26613
26614         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
26615         with hasthis as dynamic,
26616
26617         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
26618
26619         * domain.c (mono_jit_info_table_remove): New function to remove an
26620         entry from the jit info table.
26621
26622         * class-internals.h (MonoMethod): Add 'dynamic' field.
26623
26624         * loader.c: Fix warnings.
26625
26626 2004-09-01  Martin Baulig  <martin@ximian.com>
26627
26628         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
26629         instead of mono_debugger_lock() because the latter one is a no-op
26630         unless running in the debugger.
26631
26632 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
26633
26634         * class.c (class_compute_field_layout): Classes with auto-layout or
26635         reference fields are not blittable.
26636         
26637 2004-09-01  Dick Porter  <dick@ximian.com>
26638
26639         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
26640         mono_image_get_filename() to get the assembly location.
26641
26642         * icall.c:
26643         * metadata.h: Fix compile warnings
26644
26645 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
26646
26647         * class.c (class_compute_field_layout): System.Object is blittable.
26648
26649         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
26650         as in/out. Fixes #59909.
26651
26652 2004-09-01  Martin Baulig  <martin@ximian.com>
26653
26654         * metadata.h (MONO_TYPE_ISREFERENCE): Call
26655         mono_metadata_generic_inst_is_valuetype() if we're a generic
26656         instance to check whether our underlying type is a reference type.
26657
26658 2004-09-01  Martin Baulig  <martin@ximian.com>
26659
26660         * metadata.c (mono_type_size): If we're a generic instance, call
26661         mono_class_value_size() for value types.
26662
26663 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
26664
26665         * marshal.c: Implement more custom marshalling functionality. Fixes
26666         #64915.
26667
26668 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
26669
26670         * mono-debug.c, debug-mono-symfile.c: add some locking love.
26671
26672 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
26673
26674         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
26675
26676         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
26677
26678         * icall.c: Fix some warnings.
26679
26680         * threads.c (abort_appdomain_thread): Fix unref errors.
26681         (mono_thread_current): Fix THREAD_DEBUG define.
26682
26683 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
26684
26685         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
26686
26687         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
26688
26689 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
26690
26691         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
26692         string arrays.
26693
26694 2004-08-28  Martin Baulig  <martin@ximian.com>
26695
26696         * metadata.c
26697         (mono_metadata_generic_inst_is_valuetype): New public function.
26698
26699         * metadata.h (MONO_TYPE_ISSTRUCT): Call
26700         mono_metadata_generic_inst_is_valuetype() if we're a generic
26701         instance to check whether our underlying type is a valuetype.
26702
26703 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
26704
26705         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
26706         #63768.
26707
26708 2004-08-25  Martin Baulig  <martin@ximian.com>
26709
26710         * loader.c (mono_get_method_from_token): Abstract methods can also
26711         be generic and thus have type parameters.
26712
26713         * metadata-internals.h
26714         (MonoDynamicImage): Added `GPtrArray *gen_params'.
26715
26716         * reflection.c (mono_image_get_generic_param_info): Don't create a
26717         metadata row, just add an entry to the `gen_params' array.
26718         (build_compressed_metadata): Sort the `gen_params' array and then
26719         actually create the metadata.
26720
26721 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26722
26723         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
26724
26725 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
26726
26727         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
26728
26729 2004-08-24  Martin Baulig  <martin@ximian.com>
26730
26731         * class.cs (mono_class_is_subclass_of): Like an interface, a
26732         generic instance also derives from System.Object.
26733
26734 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
26735
26736         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
26737         custom modifiers to be in any order. Fixes #61990.
26738
26739 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
26740
26741         * object.c: Register mono_object_new_fast icall.
26742         
26743         * object.c (mono_class_get_allocation_ftn): Return to calling
26744         mono_object_new_fast, since it seems faster to compute the object 
26745         size in unmanaged code than passing it as a parameter.
26746
26747         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
26748
26749         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
26750         this function with Boehm as the oom handler, so we don't have to check
26751         the result of GC_malloc.
26752
26753         * object.c: Remove checks for oom.
26754
26755         * object.h object.c (mono_class_get_allocation_ftn): New function to
26756         return the icall which can be used to allocate an instance of a given
26757         class. 
26758
26759         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
26760
26761         * class-internals.h: Add 'enabled' field.
26762
26763 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
26764
26765         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
26766
26767 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
26768         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
26769         value 0x0010.
26770
26771 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
26772
26773         * appdomain.c: use the Tls function for appdomain too,
26774         at Zoltan's request. Actually return in mono_context_get
26775
26776         * appdomain.c, profiler.c, threads.c: use __thread
26777
26778 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
26779
26780         * appdomain.c threads.c: Call GC_CreateThread on windows.
26781
26782         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
26783         multiple libraries since this don't work on windows.
26784
26785 2004-08-18  Martin Baulig  <martin@ximian.com>
26786
26787         * class-internals.h
26788         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
26789         MonoMethodHeader.
26790
26791         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
26792         MonoMethodNormal since we also need it for abstract and interface
26793         methods.
26794
26795         * reflection.c
26796         (build_compressed_metadata): Sort the GenericParam table.
26797         (mono_image_create_token): Added `gboolean create_methodspec'
26798         argument; this is false when generating a MethodImpl token.
26799         (reflection_methodbuilder_to_mono_method): Abstract and interface
26800         methods may also have generic parameters.
26801
26802 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
26803
26804         * appdomain.c: thread local alloc
26805
26806 2004-08-17  Martin Baulig  <martin@ximian.com>
26807
26808         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
26809
26810         * icall.c
26811         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
26812         argument.
26813
26814         * class.c (mono_type_get_full_name): New public function.
26815         (mono_type_get_name): Don't include the type arguments.
26816
26817 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
26818
26819         * Makefile.am: Build static versions of libmetadata and libmonoruntime
26820         for inclusion into the mono executable.
26821
26822 2004-08-16  Martin Baulig  <martin@ximian.com>
26823
26824         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
26825         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
26826
26827 2004-08-14  Martin Baulig  <martin@ximian.com>
26828
26829         * class.c (dup_type): Also copy the `byref' field.
26830
26831 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
26832
26833         * reflection.c (create_dynamic_mono_image): Revert the last change 
26834         since it breaks bootstrap.
26835
26836 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
26837
26838         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
26839
26840         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
26841         not free them with g_free.
26842
26843 2004-08-11  Martin Baulig  <martin@ximian.com>
26844
26845         * reflection.c (mono_reflection_setup_internal_class): Also call
26846         mono_class_setup_mono_type() if we already have a `tb->type.type'.
26847
26848 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
26849
26850         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
26851         called during default (first) AppDomain creation. Keep track of
26852         Evidence when loading assemblies.
26853
26854 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
26855
26856         * opcodes.c, opcodes.h: reduce runtime relocations.
26857
26858 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
26859
26860         * culture-info.h, locales.c: fixes and chages to sue the new
26861         optimized format of the locale data.
26862         * culture-info-tables.h: regenerated.
26863
26864 2004-08-06  Geoff Norton <gnorton@customerdna.com>
26865         
26866         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
26867
26868 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
26869
26870         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
26871         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
26872         * domain-internals.h: icall declaration.
26873         * icall.c: icall registration.
26874         * object-internals.h: New fields in MonoAssembly for CAS.
26875
26876 2004-08-05  Duncan Mak  <duncan@ximian.com>
26877
26878         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
26879         CEE_LDELEM_ANY.
26880
26881 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
26882
26883         * reflection.c: fix to deal with object[] arrays in custom ctors
26884         (bug #62550).
26885
26886 2004-08-05  Martin Baulig  <martin@ximian.com>
26887
26888         * class.c (mono_class_array_element_size): Added support for
26889         generic instances and correctly handle "recursive" types.
26890
26891 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
26892
26893         * assembly.c: Fix warnings.
26894
26895 2004-08-04  Martin Baulig  <martin@ximian.com>
26896
26897         * class.c
26898         (mono_type_get_name_recurse): Added `gboolean include_arity'
26899         argument specifying whether or not we should include the generic
26900         arity in the type name.
26901         (_mono_type_get_name): New static function.
26902         (mono_class_setup_vtable): If we're a generic instance, don't
26903         include the generic arity in the names of explicit method
26904         implementations.        
26905
26906 2004-08-03  Martin Baulig  <martin@ximian.com>
26907
26908         * class.c (mono_type_get_name_recurse): Enclose the generic type
26909         arguments in `<', '>'.
26910
26911 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
26912
26913         * gc.c: make GC warning messages use the trace API, they are just
26914         noise to most of the users.
26915
26916 2004-08-03  Martin Baulig  <martin@ximian.com>
26917
26918         * debug-mono-symfile.c (read_string): Correctly read the string.
26919
26920 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
26921
26922         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
26923         
26924         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
26925         icalls.
26926         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
26927
26928 2004-07-30  Martin Baulig  <martin@ximian.com>
26929
26930         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
26931         Reflect latest symbol writer changes.   
26932
26933 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
26934
26935         * object.c: always create an object if null is passed
26936         to Invoke() where a valuetype is expected.
26937
26938 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
26939
26940         * marshal.c (mono_marshal_init): make managed
26941         signatures match native ones better for 64bits.
26942
26943 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26944
26945         * appdomain.c: hack to build correctly the private bin path on windows.
26946         Fixes bug #61991.
26947
26948 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
26949
26950         * assembly.c: Load mscorlib from the correct framework directory
26951           (mono/<version>/mscorlib.dll).
26952         * appdomain.h: Added prototypes for new functions.
26953         * internals.h: Added some prototypes.
26954         * domain.c: When initializing the runtime, get from the executable and
26955           the configuration files the runtime version that the app supports.
26956           Added support methods for reading app.exe.config. Added list of versions
26957           supported by the JIT. Added two new methods: mono_init_from_assembly,
26958           which initializes the runtime and determines the required version from
26959           the provided exe file, and mono_init_version, which initializes
26960           the runtime using the provided version.
26961         * icall.c: Get machine.config from version-specific directory.
26962         * reflection.c: When generating an image, embed the version number
26963           of the current runtime.
26964
26965 2004-07-28  Dick Porter  <dick@ximian.com>
26966
26967         * socket-io.c
26968         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
26969         returned sockaddr size before creating the remote address object.
26970         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
26971         61608.
26972
26973 2004-07-28  Dick Porter  <dick@ximian.com>
26974
26975         * locales.c (string_invariant_compare_char): Fix invariant char
26976         compares between upper and lower cases.  Fixes bug 61458.
26977
26978 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
26979         
26980         * marshal.c: actually cache stelem.ref wrappers.
26981         
26982 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
26983
26984         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
26985         sections and remove the mono_cli_rva_map () function.
26986
26987 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
26988
26989         * debug-mono-symfile.c: fix one more endianess issue, from a patch
26990         by Geoff Norton (<gnorton@customerdna.com>).
26991
26992 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
26993
26994         * class.c: fix class loads for pointer types (typeof(int) !=
26995         typeof(int*)).
26996
26997 2004-07-27  Martin Baulig  <martin@ximian.com>
26998
26999         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
27000         reading the debugging information from an external ".mdb" file.
27001
27002 2004-07-24  Martin Baulig  <martin@ximian.com>
27003
27004         * reflection.c (mono_image_get_type_info): Only write a class
27005         layout entry if we actually have a size or a packing size.
27006
27007 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
27008
27009         * reflection.c (type_get_fully_qualified_name): 
27010         insert cast to get type checking of ?: with non-gcc compilers
27011
27012 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
27013
27014         * rand.c: use g_getenv for both lookups of
27015         MONO_EGD_SOCKET
27016
27017 2004-07-17  Martin Baulig  <martin@ximian.com>
27018
27019         * reflection.c (mono_reflection_bind_generic_method_parameters):
27020         Set `gmethod->reflection_info'.
27021
27022 2004-07-17  Martin Baulig  <martin@ximian.com>
27023
27024         * class.c (mono_class_create_from_typedef): Insert the newly
27025         created class into the hash table before computing the interfaces
27026         since we could be called recursively.
27027
27028 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
27029
27030         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
27031         function to implement stelem.ref in managed code
27032         * class-internals.h, debug-helpers.c: a new wrapper type
27033         for the above.
27034
27035 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
27036
27037         * gc.c: allow GC handles to work even when no GC is compiled in.
27038         Fix part of bug #61134 (GetAddrOfPinnedObject).
27039
27040 2004-07-13  Peter Williams  <peter@newton.cx>
27041  
27042         * process.c (complete_path): Make sure we don't attempt to execute
27043         directories.
27044  
27045 2004-07-12  Geoff Norton <gnorton@customerdna.com>
27046
27047         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
27048           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
27049           and will add/subtract the hour if needed
27050
27051 2004-07-12  Martin Baulig  <martin@ximian.com>
27052
27053         * reflection.c (mono_field_get_object): If we have
27054         `field->generic_info', take the attributes from
27055         `field->generic_info->generic_type'.    
27056
27057 2004-07-12  Martin Baulig  <martin@ximian.com>
27058
27059         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
27060         This function must be called before initializing the runtime.
27061         (mono_debug_init_1): New function; call this after initializing
27062         the runtime, but before loading the assembly.  It tells the
27063         debugger to load corlib and the builtin types.
27064
27065         * mono-debug-debugger.c: Did some larger changes in the debugging
27066         code; support recursive class declarations, make sure we actually
27067         add all classes.
27068
27069 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27070
27071         * debug-helpers.c: undo my previous patch and fixed the real issue in
27072         ../mini/exceptions-x86.c
27073
27074 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27075
27076         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
27077         when no HOME env. variable was set and a NullRef was thrown in a .cctor
27078         called from other .cctors.
27079
27080 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
27081
27082         * loader.c: Removed the mono_loader_wine_init hack now that we are
27083         doing a managed version of Windows.Forms.
27084
27085 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
27086
27087         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
27088         threadpool.c, threads.c: remove static data from rootset.
27089
27090 2004-07-09  Dick Porter  <dick@ximian.com>
27091
27092         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
27093         Don't do any more processing if the matched length was 0.  It was
27094         increasing the size of the string before.  Fixes bug 61167.
27095
27096 2004-07-09  Dick Porter  <dick@ximian.com>
27097
27098         * socket-io.h:
27099         * socket-io.c
27100         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
27101         Add support for SO_PEERCRED if its available.
27102
27103 2004-07-09  Peter Bartok <pbartok@novell.com>
27104         * loader.c: winelib.exe.so error message is now only displayed if
27105         MONO_DEBUG is set. To help us avoid questions when people are trying
27106         out the new Managed.Windows.Forms.
27107
27108 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
27109
27110         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
27111         for isinst and castclass wrappers.
27112
27113         * class-internals.h icall.c: Move registration and lookup of JIT icalls
27114         to libmetadata from the JIT, so they could be used by the marshalling
27115         code and the interpreter.
27116
27117         * marshal.c: Register marshalling related JIT icalls here instead of
27118         in mini.c. Use CEE_MONO_ICALL instead of the family of 
27119         CEE_MONO_PROC<x> opcodes to call marshalling functions.
27120
27121         * metadata.h: Remove unneeded marshalling conversions.
27122
27123         * opcodes.c: Update for new opcodes.
27124         
27125 2004-07-08  Martin Baulig  <martin@ximian.com>
27126
27127         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
27128         (mono_debug_get_domain_data): Make this function static.
27129
27130 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
27131
27132         * gc.c, object.h: add nice GC handle API for embedders.
27133
27134 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
27135
27136         * reflection.c: more changes for the new api
27137
27138         * object.c: When we reflect on a field w/ a constant value, it
27139         will not have a memory location, so we must access metadata. Also,
27140         allow easier reading of strings so that we can read them from
27141         the constant data.
27142
27143         * class.c (mono_class_layout_fields): no need for literal fields here.
27144
27145         * class-internals.h: api changes for const fields
27146
27147         * icall.c (ves_icall_get_enum_info): use new apis for const fields
27148
27149 2004-07-06  Martin Baulig  <martin@ximian.com>
27150
27151         * mono-debug.h: Increment version number to 44.
27152
27153         * mono-debug.c (mono_debug_add_wrapper): The second argument is
27154         now a gpointer, rewrote this whole method.
27155
27156         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
27157         function.  Add information about the wrapper in a new "misc table".
27158
27159         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
27160         for the new misc table.
27161
27162 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
27163
27164         * metadata-internals.h image.c: Add a cache for helper signatures.
27165
27166         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
27167
27168 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
27169
27170         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
27171         delegates from a delegate. Fixes #61033.
27172         
27173         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
27174         marshalling of stringbuilder arrays. Fixes #59900.
27175
27176 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
27177
27178         * icall.c: Add EnumBuilder:setup_enum_type icall.
27179
27180 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
27181
27182         * icall.c: Added a new icall for the property version of
27183         OffsetOfStringData.
27184
27185 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
27186
27187         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
27188         it has a constant size across platforms.
27189
27190         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
27191         stack trace.
27192
27193 2004-06-29  Martin Baulig  <martin@ximian.com>
27194
27195         * mono-debug.c (mono_debug_add_method): Protect the whole function
27196         in mono_debugger_lock(), not just parts of it.
27197
27198 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
27199
27200         * reflection.c: make sure padding bytes in heaps are zeroed.
27201
27202 2004-06-24  David Waite  <mass@akuma.org>
27203
27204         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
27205         image.c, loader.c, locales.c, marshal.c, metadata.c,
27206         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
27207         string-icalls.c, threads.c: change to C90-style comments from C99 /
27208         C++ -style
27209
27210 2004-06-24  Dick Porter  <dick@ximian.com>
27211
27212         * threads.c
27213         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
27214         return createdNew.  Fixes bug 60412.
27215
27216         * threads-types.h: 
27217         * icall.c: Add createdNew parameter to CreateMutex icall
27218
27219 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
27220
27221         * reflection.c, object-internals.h: save default value in params.
27222
27223 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27224
27225         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
27226         no need to build a new path combining that with the application base.
27227         Fixes bug #60442.
27228
27229 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
27230
27231         * reflection.c: fixed minor standard compliance issues.
27232
27233 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
27234
27235         * reflection.c: fixed issue with encoding some custom attributes
27236         (arrays in properties and fields, bug #60411).
27237
27238 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27239
27240         * reflection.c: fix start address when copying the public key token.
27241
27242 2004-06-23  Martin Baulig  <martin@ximian.com>
27243
27244         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
27245         the `exc' object in a static object to put it into the GC's root set.
27246
27247 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
27248
27249         * reflection.c: make mono_reflection_setup_internal_class ()
27250         callable a second time to setup a new parent class.
27251
27252 2004-06-23  Dick Porter  <dick@ximian.com>
27253
27254         * threads.c: Check for WAIT_IO_COMPLETION return values.
27255
27256 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
27257
27258         * appdomain.c: Removed the g_free on the public key token. Now copy 
27259         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
27260         * assembly.c: Added public key token string value when loading 
27261         assemblies. Fix bug #60439.
27262         * icall.c: Added missing informations (like public key) in 
27263         GetReferencedAssemblies. Fix #60519.
27264         * image.h: Changed definition for public key token from const char*
27265         public_tok_value to guchar public_key_token [17];
27266         * reflection.c: Updated for changes to public key token.
27267
27268 2004-06-22  Lluis Sanchez Gual
27269
27270         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
27271         for the field in base classes.
27272
27273 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
27274
27275         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
27276         mark headers as not supported, they are installed only for use by the
27277         debugger.
27278
27279 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
27280
27281         * *.c, *.h: avoid namespace pollution in public headers.
27282
27283 2004-06-21  Martin Baulig  <martin@ximian.com>
27284
27285         * exception.c (mono_get_exception_security): It's in
27286         "System.Security", not in "System".
27287
27288         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
27289         the exception classes.
27290
27291 2004-06-21  Martin Baulig  <martin@ximian.com>
27292
27293         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
27294         Protect the exception object from being finalized.
27295
27296 2004-06-21  Martin Baulig  <martin@ximian.com>
27297
27298         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
27299         public function.
27300
27301 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
27302
27303         * reflection.c: Load the assembly in mono_reflection_type_from_name,
27304         if it was not loaded before. Fix parts of #60439.
27305
27306 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
27307
27308         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
27309         code that was broken since Ben's change: wrappers are now
27310         dependent on the method signature only again.
27311
27312 2004-06-21  Martin Baulig  <martin@ximian.com>
27313
27314         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
27315         added interface support.
27316
27317 2004-06-21  Martin Baulig  <martin@ximian.com>
27318
27319         * class.c (mono_vtable_get_static_field_data): New public method.
27320
27321 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
27322
27323         * filewatcher.c : Windows build fix to be compliant with API changes.
27324
27325 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
27326
27327         * class.h, class.c: more accessors.
27328         * metadata.h, metadata.c: prepare for hiding MonoType and
27329         MonoMethodSignature: people should use the accessors from now on
27330         outside of the tree.
27331
27332 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
27333
27334         * *.c, *.h: more API cleanups.
27335
27336 2004-06-18  Jackson Harper  <jackson@ximian.com>
27337
27338         * assembly.c: Trace loading assemblies.
27339         * loader.c: Trace loading native libraries.
27340         * mono-config.c: Trace loading config files.
27341         
27342 2004-06-18  Dick Porter  <dick@ximian.com>
27343
27344         * locales.c: Tell ICU the lengths of strings, it can cope with
27345         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
27346
27347 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
27348
27349         * image.c: swapped name/filename;
27350
27351 2004-06-18  Martin Baulig  <martin@ximian.com>
27352
27353         * mono-debug-debugger.c (write_class): Write the parent class at
27354         the end of the header.
27355
27356 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
27357
27358         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
27359
27360 2004-06-17  Raja R Harinath  <rharinath@novell.com>
27361
27362         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
27363         (bundle_obj): New conditional define.
27364         (BUILT_SOURCES): Remove.
27365         ($(bundle_srcs)): Make parallel-make safe.
27366         (libmonoruntime_la_LIBADD): Make unconditional.
27367         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
27368         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
27369
27370 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
27371
27372         * culture-info-tables.h: It was inconsistent with the latest
27373           supp info files.
27374
27375 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
27376
27377         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
27378         be loaded.
27379
27380         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
27381         with gcc 2.95.
27382
27383 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
27384
27385         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
27386         cleaned up public header threads.h.
27387
27388 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
27389
27390         * Makefile.am, *.c, *.h: more API cleanups.
27391
27392 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
27393
27394         * Makefile.am: removed monosn from compilation.
27395         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
27396         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
27397         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
27398         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
27399         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
27400         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
27401
27402 2004-06-15  Jackson Harper  <jackson@ximian.com>
27403
27404         * assembly.c: Make locales lower case when searching the GAC for
27405         assemblies. gacutil will always make locales lowercase when
27406         installing so this effectively makes them case insensitive.
27407         
27408 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
27409
27410         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
27411         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
27412           parameter which allows to choose whether the wait can be interrupted or 
27413           not. Also added the method mono_monitor_enter(), which locks the monitor
27414           using an infinite wait and without allowing interruption.
27415           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
27416           interrupted.
27417         * object.h: Added new fields in MonoThread. suspend_event holds the event
27418           used to susped/resume the thread. synch_lock is the lock object to use for
27419           modifying the thread state.
27420         * threads.c: Use the new synch_lock object for locking, instead of "this",
27421           which can generate deadlocks.
27422           Moved thread state change in Thread.Sleep and Thread.Join from managed
27423           to unmanaged code. This avoids a deadlock when the thread was suspended
27424           just after acquiring the thread lock.
27425           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
27426           Implemented Thread.Suspend using an event instead of ThreadSuspend,
27427           which is not fully implemented in the io-layer.
27428         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
27429
27430 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
27431
27432         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
27433         threads-types.h: more API cleanups.
27434
27435 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
27436
27437         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
27438         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
27439         threadpool.c, threads.c: first pass at the exported API cleanup.
27440
27441 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
27442
27443         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
27444
27445 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27446
27447         * icall.c: added internalGetHome.
27448
27449 2004-06-14  Dick Porter  <dick@ximian.com>
27450
27451         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
27452         possible to return successfully when '.' or '..' were the only
27453         entries in a directory, but were skipped.  The MonoIOStat was not
27454         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
27455         Fixes bug 59574.
27456
27457 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
27458
27459         * reflection.c: make binaries run on .Net 1.1 by default.
27460
27461 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
27462
27463         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
27464
27465 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
27466
27467         * marshal.c: keep track of struct size with explicit layout
27468         (bug #59979).
27469
27470 2004-06-12  Martin Baulig  <martin@ximian.com>
27471
27472         * mono-debug-debugger.c: Comment out a debugging g_message().
27473
27474 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
27475
27476         * reflection.c, reflection.h: do not free custom attrs that are cached.
27477         * icall.c: use braces to make code clearer.
27478
27479 2004-06-11  Martin Baulig  <martin@ximian.com>
27480
27481         * class.h (MonoInflatedField): New type.
27482         (MonoClassField): Replaced `MonoType *generic_type' with
27483         `MonoInflatedField *generic_info'.
27484
27485         * icall.c
27486         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
27487
27488 2004-06-11  Martin Baulig  <martin@ximian.com>
27489
27490         * reflection.c (mono_image_create_method_token): Correctly encode
27491         varargs methods.
27492
27493 2004-06-11  Martin Baulig  <martin@ximian.com>
27494
27495         * metadata.c (mono_metadata_parse_method_signature): When parsing
27496         a MethodDef which has VarArgs, also set sentinelpos if we don't
27497         have any parameters.
27498
27499 2004-06-11  Martin Baulig  <martin@ximian.com>
27500
27501         * verify.c (mono_method_verify): In CEE_CALL, use
27502         mono_method_get_signature() to get the method's signature, unless
27503         we're a PInvoke method.
27504
27505 2004-06-10  Jackson Harper  <jackson@ximian.com>
27506
27507         * assembly.c: Use <path>/lib/mono/gac for the extra paths
27508         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
27509         logical name as the supplied path is just a prefix to the gac not
27510         the direct path to it.
27511         
27512 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
27513
27514         * reflection.c: make the token for a created method match
27515         the token of the MethodBuilder it was created from
27516         (IKVM requires this behaviour now).
27517
27518 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
27519
27520         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
27521         reflection.c, socket-io.c: leak fixes.
27522
27523 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
27524
27525         * icall.c: handle sentinel pos in vararg methods in position different
27526         from 0.
27527
27528 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27529
27530         * culture-info-tables.h: freshly generated.
27531
27532 2004-06-09  Martin Baulig  <martin@ximian.com>
27533
27534         * loader.c (mono_get_method_constrained): Call `mono_class_init
27535         (constrained_class)'.   
27536
27537 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
27538
27539         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
27540         any methods. Fixes #59629.
27541
27542 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27543
27544         * culture-info-tables.h: reflecting locale-builder updates.
27545
27546 2004-06-08  Dick Porter  <dick@ximian.com>
27547
27548         * object.h:
27549         * locales.c: Fixed compile warnings, including a real bug in
27550         CompareInfo_internal_compare.
27551         
27552 2004-06-08  Dick Porter  <dick@ximian.com>
27553
27554         * locales.c
27555         (ves_icall_System_Globalization_CompareInfo_internal_index):
27556         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
27557         Double-check the resuls of usearches, because ICU currently
27558         ignores most of the collator settings here.  Fixes bug 59720.
27559         
27560 2004-06-08  Dick Porter  <dick@ximian.com>
27561
27562         * locales.c
27563         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
27564         Fix memory leak and segfault-causing typo.  No idea how this one
27565         lasted so long without being noticed.
27566
27567 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
27568
27569         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
27570         any methods. Fixes #59629.
27571
27572 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27573
27574         * assembly.c:
27575         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
27576         own the critical section before). Removed dead code (that's done
27577         in the preload hook).
27578
27579         (mono_assembly_load_with_partial_name): call the preload hook.
27580
27581 2004-06-08  Martin Baulig  <martin@ximian.com>
27582
27583         * metadata.c (mono_metadata_signature_alloc): Default
27584         `sentinelpos' to -1.
27585
27586         * reflection.c (mono_image_get_array_token): Likewise.
27587
27588 2004-06-08  Martin Baulig  <martin@ximian.com>
27589
27590         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
27591
27592         * metadata.c (mono_metadata_parse_method_signature): When parsing
27593         a MethodDef which has VarArgs, set sentinelpos.
27594
27595         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
27596         `gint16' since we're using -1 for non-varargs methods.
27597
27598         * reflection.c
27599         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
27600         (method_encode_signature): Added varargs support.
27601         (method_builder_encode_signature): Likewise.
27602         (mono_image_get_varargs_method_token): New static method.
27603         (mono_image_create_method_token): New public method; this is
27604         called via an icall instead of mono_image_create_token() when
27605         calling a varargs method.       
27606
27607 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
27608
27609         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
27610
27611 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27612
27613         * culture-info-tables.h : Reflecting the latest locale-builder that
27614           fixed empty array representation ({} to {0}).
27615
27616 2004-06-07  Jackson Harper  <jackson@ximian.com>
27617
27618         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
27619         looking up extra gac paths. This allows MONO_GAC_PATH to act
27620         exactly like a prefix.
27621         
27622 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
27623
27624         * reflection.c (mono_reflection_type_from_name): Make a copy of the
27625         type name before modifying it. Fixes #59405.
27626
27627 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27628
27629         * culture-info.h: added fields for "all datetime patterns".
27630         * locales.c: (  ves_icall_System_Globalization_CultureInfo
27631           _construct_datetime_format ()): fill xxx_patterns fields.
27632         * object.h: added fields for "all datetime patterns" to
27633           MonoDateTimeFormatInfo.
27634         * culture-info-tables.h: reflecting locale-builder updates.
27635
27636 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
27637
27638         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
27639         the event has no add and remove methods. Fixes #59629.
27640
27641 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
27642
27643         * object.c: Fixed possible integer overflow when allocating large
27644         strings.
27645
27646 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
27647
27648         * culture-info-tables.h: reflecting locale-builder updates.
27649
27650 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
27651
27652         * culture-info-tables.h: reflecting locale-builder updates.
27653
27654 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
27655
27656         * culture-info-tables.h: reflecting locale-builder updates.
27657
27658 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
27659
27660         * threads.c: Made Thread.Sleep abortable.
27661
27662 2004-06-02  Martin Baulig  <martin@ximian.com>
27663
27664         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
27665
27666         * debug-mono-symfile.h: Bumped symbol file version number to 37.
27667
27668 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
27669
27670         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
27671
27672 2004-05-30  Jackson Harper  <jackson@ximian.com>
27673
27674         * reflection.c: Do not hardcode assembly versions or public key
27675         tokens anymore. All of this except the corlib section was dead
27676         code anyways.
27677         
27678 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
27679
27680         * object.c (mono_runtime_invoke_array): Automatically create boxed
27681         objects for byref valuetypes if needed. Fixes #59300.
27682         
27683         * object.c (mono_method_return_message_restore): Handle 
27684         MONO_TYPE_OBJECT as well.
27685
27686 2004-05-28  Jackson Harper  <jackson@ximian.com>
27687
27688         * reflection.c: The modified type encoding was causing build
27689         problems. Reverted for now.
27690         
27691 2004-05-28  Jackson Harper  <jackson@ximian.com>
27692
27693         * reflection.c/h: Take an assembly ref so that we dont create
27694         fully qualified names when encoding types in the same assembly as
27695         the custom attribute being emitted.
27696         * appdomain.c: Increment version number.
27697         
27698 2004-05-26  Duncan Mak  <duncan@ximian.com>
27699
27700         * icall.c
27701         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
27702         Set the full version number (major, minor, build, revision).
27703
27704 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
27705
27706         * marshal.c (emit_struct_conv): increment src/dst after blit
27707         (mono_marshal_get_managed_wrapper,
27708         mono_marshal_get_native_wrapper): make sure we have marshalling
27709         info before marshalling params (info computation affects
27710         blittable)
27711
27712         * class.c (class_compute_field_layout): correctly deal with
27713         blittable
27714         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
27715         value types (as per what windows dows by default)
27716         (mono_class_setup_mono_type): System.ValueType is blittable
27717         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
27718         blittable
27719
27720         * marshal.c (mono_marshal_load_type_info): flag types  as
27721         non-blittable if the native layout doesn't match the managed
27722         layout
27723
27724 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27725
27726         * appdomain.c: don't add stuff in the private search path that is
27727         above the application base. If application base is not set, there's
27728         no private search path.
27729
27730 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
27731
27732         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
27733         byref struct arguments in native->managed marshalling.
27734
27735 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
27736
27737         * marshal.c (mono_marshal_get_runtime_invoke): correctly
27738         cache methods using signature (special case for methods
27739         that are value type or string class)
27740         
27741         * image.c (mono_image_close): clean up allocated GSList's
27742         in runtime_invoke_cache.
27743
27744 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27745
27746         * mono-config.c: set the correct path for mono_cfg_dir on windows when
27747         there's no MONO_CFG_DIR environment variable defined.
27748
27749 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27750
27751         * threads.c: windows version must be >= 0x0500 to include OpenThread.
27752
27753 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
27754
27755         * threadpool.c: Really wait for 500ms after the async call, even if the wait
27756           is interrumped.
27757         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
27758           before waiting for it, and call CloseHandle after the wait to unref it.
27759           This will make sure that handles are not disposed too early.
27760
27761 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27762
27763         * appdomain.c:
27764         * appdomain.h:
27765         * icall.c: removed
27766         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
27767         needed now.
27768
27769         * object.c: se the application_base only for the domain that runs
27770         Main. Fixes bug #59216,
27771
27772 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27773
27774         * appdomain.c:
27775         * object.c: only the domain in which Main is run have
27776         SetupInformation.ConfigurationFile set, so moved a few lines from
27777         appdomain.c to object.c.
27778
27779 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27780
27781         * appdomain.c: we tried to load [name].(dll|exe), but according
27782         to bug #57710, we must also try [culture]/[name].(dll|exe) and
27783         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
27784         There's a test case attached to bug #58922.
27785
27786 2004-05-27  Dick Porter  <dick@ximian.com>
27787
27788         * icall.c:
27789         * file-io.c: Implemented icalls for locking and unlocking regions
27790         in a file.
27791         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
27792         FALSE on error (fixes both compiler warning and real bug.)
27793
27794 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
27795
27796         * culture-info-tables.h: reflecting locale-builder updates.
27797
27798           (Added missing ChangeLog entry for 05/26)
27799
27800 2004-05-27  Jackson Harper  <jackson@ximian.com>
27801
27802         * locales.c: Fix some cut and paste errors.
27803         
27804 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27805
27806         * mono-config.c: set the correct path for config. directory on windows.
27807
27808 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
27809
27810         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
27811           on win32.
27812
27813 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
27814
27815         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
27816         from pinvoke functions.
27817         
27818         * marshal.c (mono_ftnptr_to_delegate): Implement this.
27819
27820 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
27821
27822         * culture-info-tables.h: reflecting locale-builder updates.
27823
27824 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
27825
27826         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
27827         #59086.
27828
27829 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
27830
27831         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
27832         * icall.c: Modified icalls for RNG.
27833         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
27834         Windows (CryptoAPI).
27835
27836 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
27837
27838         * locales.c: Fix build.
27839
27840 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
27841
27842         * culture-info-tables.h: reflecting locale-builder updates.
27843
27844 2004-05-25  Jackson Harper  <jackson@ximian.com>
27845
27846         * locales.c: When creating the current culture use the $LANGs
27847         specific culture. So DateTimeFormat and NumberFormat entries are created.
27848         
27849 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
27850
27851         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
27852         a char array as parameter.
27853
27854 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
27855
27856         * image.c: In mono_image_open(), always use an absolute path name to
27857           look for already loaded images.
27858
27859 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
27860
27861         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
27862         missing in the windows build (like older cygwin include files).
27863
27864 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
27865
27866         * icall.c: Fixed check for possible integer overflow in Buffer_
27867         BlockCopy icall. Replaced comments style // by /* */.
27868
27869 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
27870
27871         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
27872         
27873         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
27874         check after MONO_VTADDR. Fixes pinvoke2.exe.
27875
27876         * marshal.h marshal.c metadata.h: Add beginnings of support for
27877         ftnptr -> delegate marshalling.
27878
27879 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
27880
27881         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
27882         * threads.c: Fix warnings.
27883
27884 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
27885
27886         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
27887         * icall.c: Registered icalls for Suspend and Resume.
27888         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
27889           Thread.Abort.
27890         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
27891         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
27892         * process.c: Use WaitForSingleObjectEx.
27893         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
27894           checkpoints.
27895         * threads.c, threads.h: Make use of new Ex wait methods. Improved
27896           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
27897           for Suspend and Resume. Added new mono_thread_stop, used for stoping
27898           background threads. Added basic support for Abort in Windows.
27899           Start new threads using a managed delegate invoke wrapper. This wrapper
27900           has an interruption checkpoint that is needed since an interruption
27901           can be requested before the thread leaves the unmanaged code that starts 
27902           the thread.
27903         * marshal.c: Added interruption checkpoint after every native call, and
27904           also before managed calls for wrappers called from unmanaged code to
27905           go into managed code.
27906         * object.h: Added new field in MonoThread to keep track of interruption
27907           requests.
27908
27909 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
27910
27911         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
27912         calls.
27913
27914 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27915
27916         * appdomain.c:
27917         * assembly.c:
27918         * gc.c:
27919         * locales.c:
27920         * mono-config.c:
27921         * rand.c: getenv -> g_getenv (windows!)
27922
27923         * process.c: complete_path is also used on non-windows platforms.
27924
27925 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27926
27927         * icall.c: new signature for Process_Start.
27928
27929         * process.[ch]: new signature for Process_Start. If we're on windows
27930         and UseShellExecute is false, we have to search for the program by
27931         ourselves if we don't get a full path.
27932
27933 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
27934
27935         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
27936         marshalling and call CleanUpNativeData if needed. Fixes #58646.
27937
27938 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27939
27940         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
27941         Fixes bug #58373.
27942
27943 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27944
27945         * process.c: use double quotes to quote program name and arguments on
27946         windows. Fixes bug #58575.
27947
27948 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27949
27950         * file-io.c: don't return "." and ".." when using windows Find*File.
27951
27952 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
27953
27954         * marshal.c: Don't pass wrappers to message init because method 
27955         addressed used to lookup metadata. part of remoting[2|3] fix.
27956
27957 2004-05-15  Jackson Harper  <jackson@ximian.com>
27958
27959         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
27960         path is essentially the same as MONO_PATH except that it points to
27961         GACs instead of lib directories.
27962         * loader.h: The user gac is gone so we dont need function to
27963         enable/disable it.
27964         * mono-config.c: user gac option is now gone.
27965         
27966 2004-05-15  Jackson Harper  <jackson@ximian.com>
27967
27968         * culture-info.h: Make defines more consistent, add calendar data
27969         to the culture info table.
27970         * culture-info-tables.h: Add basic calendar data. Basically
27971         everyone gets default gregorian until all the data is
27972         updated.
27973         * locales.c: Use the new consistent defines. Set calendar data for
27974         culture info objects.
27975         * object.h: add a field for calendar data to CultureInfo
27976         
27977 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
27978
27979         * image.c: image->runtime_invoke_cache is keyed on signatures now.
27980         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
27981         a signature.
27982         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
27983         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
27984         an extra param that is the pointer of the method to invoke. The IL for
27985         the invoke method is no longer specific to the method, but to the
27986         signature of the method. Thus, we can share the same code for multiple
27987         methods. This reduces the number of methods that have to be compiled.
27988
27989 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
27990
27991         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
27992
27993         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
27994
27995         * icall.c: Optimize Buffer.BlockCopy.
27996
27997 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27998
27999         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
28000         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
28001         quote). Changed them to "MMMM yyyy".
28002
28003 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
28004
28005         * rand.c
28006         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
28007
28008 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
28009
28010         * reflection.h: Updated after changes to managed structures.
28011
28012         * appdomain.c: Bump corlib version.
28013
28014 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28015
28016         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
28017         windows.
28018
28019 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28020
28021         * Makefile.am: link to ../os/libmonoos.la on windows.
28022
28023         * assembly.c:
28024                 -If MONO_DEBUG, warn about non-existing directories in
28025                 MONO_PATH.
28026                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
28027                 compile time variable.
28028                 -Removed init_default_path and call mono_set_rootdir from
28029                 libmonoos.a instead (windows only).
28030
28031         * assembly.h: declare mono_assembly_getrootdir().
28032
28033         * domain.c:
28034         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
28035
28036         * loader.c: s/getenv/g_getenv/
28037
28038 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
28039
28040         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
28041
28042         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
28043
28044         * metadata.h: Add new marshalling conversions.
28045
28046         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
28047         function.
28048
28049         * reflection.c (mono_reflection_get_type): Lookup the type in all
28050         modules of a multi-module assembly. Fixes #58291.
28051
28052 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
28053
28054         * threads.c: Before aborting a background, set the StopRequested
28055         state.  This avoids throwing the Abort exception.
28056         In mono_thread_manage, don't continue with the shutdown until all
28057         aborted threads have actually stopped.
28058
28059 2004-05-10  Jackson Harper  <jackson@ximian.com>
28060
28061         * locales.c: Remove the modifier from culture names.
28062         
28063 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28064
28065         * Makefile.am: monosn is not installed any more. It has been deprecated
28066         in favor of sn.
28067
28068 2004-05-07  Jackson Harper  <jackson@ximian.com>
28069
28070         * locales.c
28071         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
28072         Fix array construction, add bailout if the length is 0.
28073
28074 2004-05-07  Dick Porter  <dick@ximian.com>
28075
28076         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
28077         machine doesn't have a DNS entry.  Patch by Urs Muff
28078         (umuff@quark.com), fixes bug 57928.
28079
28080 2004-05-06  Jackson Harper  <jackson@ximian.com>
28081
28082         * reflection.c: Handle null PublicTokens properly. alloc mem for
28083         assembly names culture so we dont crash when freeing it.
28084         
28085 2004-05-06  Jackson Harper  <jackson@ximian.com>
28086
28087         * assembly.c: Check the usergac when loading with partial names.
28088         
28089 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
28090
28091         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
28092         does nothing for now (not required for Linux/Windows) but the class
28093         library can call it (and a newer or modified runtime could need it).
28094         * icall.c: Registred icall.
28095
28096 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28097
28098         * loader.c: prints a message on module loading error we set MONO_DEBUG
28099         environment variable.
28100
28101 2004-05-05  Jackson Harper  <jackson@ximian.com>
28102
28103         * appdomain.c: Handle PublicKeyToken=null properly.
28104         
28105 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
28106
28107         * environment.c|h: Added icall ves_icall_System_Environment_
28108         GetOSVersionString to get the current OS version as a string.
28109         * icall.c: Registred icall.
28110
28111 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
28112
28113         * object.c: in mono_object_get_virtual_method(), take into account that
28114         non-virtual methods don't have a slot in the vtable. Check needed when
28115         the object is a proxy.
28116
28117 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
28118
28119         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
28120         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
28121
28122         * object.c (mono_class_compute_gc_descriptor): Fix warning.
28123
28124         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
28125         passed when a valuetype is expected.
28126
28127         * object.c (mono_unhandled_exception): Only set the exit code if the
28128         exception happens in the main thread. Fixes thread5.exe.
28129
28130         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
28131         invalid names. Fixes #58047.
28132
28133 2004-05-03  Jackson Harper  <jackson@ximian.com>
28134
28135         * assembly.c: This line was committed accidently and is unneeded.
28136         
28137 2004-05-03  Jackson Harper  <jackson@ximian.com>
28138
28139         * icall.c: Add new icall for Assembly::LoadWithPartialName
28140         * assembly.c/.h: new function that probes the GAC to load partial
28141         assembly names by Paolo Molaro.
28142         
28143 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28144
28145         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
28146         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
28147         (type_get_fully_qualified_name): Added PublicKeyToken when building a
28148         full type name.
28149
28150 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28151
28152         * appdomain.c: fixed check for 'neutral' culture and removed warning.
28153         * reflection.c: fix bug when parsing a full type name and Version is not
28154         the last thing in the string.
28155
28156 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
28157
28158         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
28159         crashes when it is freed.
28160
28161 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28162
28163         * assembly.c: print the compat warning to stderr.
28164
28165 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
28166
28167         * assembly.c (mono_assembly_load_references): Add a compatibility
28168         hack to run old applications that might be still referencing the
28169         3300-based assemblies, only do this for System.xxx.
28170
28171 2004-05-01  Jackson Harper  <jackson@ximian.com>
28172
28173         * appdomain.c: If the culture is neutral we set it to "".
28174         
28175 2004-04-29  Jackson Harper  <jackson@ximian.com>
28176
28177         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
28178
28179 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
28180  
28181         * string-icalls.c: added low overhead function for copying chars
28182         * icall.c: added needed icall for the above function
28183  
28184 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28185
28186         * icall.c: fix return value of get_global_assembly_cache.  Implemented
28187         Environment.GetLogicalDrives.
28188
28189 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
28190
28191         * rand.c: try and talk to egd or prngd
28192         for random bytes if opening devices fail.
28193
28194 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
28195
28196         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
28197         alignment for the type using the native alignment of its members 
28198         instead of using klass->min_align.
28199
28200         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
28201
28202 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28203
28204         * file-io.c:
28205         * socket-io.c: added check for sys/aio.h.
28206
28207 2004-04-28  Dick Porter  <dick@ximian.com>
28208
28209         * threads.c: Don't abort a thread thats already aborting, when
28210         terminating everything.
28211
28212 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28213
28214         * icall.c: added 2 new async calls for Socket.
28215
28216         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
28217         IO on *nix systems.
28218
28219         * threadpool.c: removed unused variable.
28220
28221 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
28222
28223         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
28224
28225 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
28226
28227         * locales.c: put back string_invariant_tolower () and
28228         string_invariant_toupper ().
28229
28230 2004-04-26 David Waite <mass@akuma.org>
28231
28232         * file-io.h:
28233         * socket-io.h:
28234         * threads.h:
28235         * unicode.h: remove comma from end of enumeration declarations
28236
28237 2004-04-26 David Waite <mass@akuma.org>
28238
28239         * debug-mono-symfile.h:
28240         * decimal.c:
28241         * mono_debug.h:
28242         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
28243
28244
28245 2004-04-26  Jackson Harper  <jackson@ximian.com>
28246
28247         * appdomain.c: Increment version number.
28248         
28249 2004-04-26  Jackson Harper  <jackson@ximian.com>
28250
28251         * appdomain.c: Set assembly references public token value when
28252         PublicKeyToken is specified, not the hash_value. Free public token
28253         values when free assembly name data. Previously the public key
28254         token was hex decoded, however we are using hex encoded public key
28255         tokens, so this is not neccasary.
28256         * assembly.c: Lookup assemblies in the gac if their public token
28257         value is set. Add function to allow enabling user gac
28258         lookups. Specify whether or not the assembly was loaded from the
28259         GAC. Compare full assembly names when checking the cache for
28260         assemblies (Temporarily disabled see comment in code). Remove
28261         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
28262         specifies trace-loader they get extra info to stdout on the
28263         loading of assemblies.
28264         * image.h: Add a field for an assembly references public token
28265         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
28266         whether an assembly has been loaded from the GAC.
28267         * image.c: Remove a corlib -> mscorlib name mapping.
28268         * loader.h: Add function to enable/disable the user gac.
28269         * mono-config.c: Check if the usergac is enabled in the config
28270         file.
28271         * icall.c: New icall to determine whether or not an assembly has
28272         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
28273         * tabldefs.h: Add constant for assemblyref flag that specifies a
28274         full public key is used instead of a public token.
28275         * reflection.c: Remove mscorlib -> corlib mappings. Set
28276         PublicTokenValue instead of hash value. This value is a hex
28277         string so it does not need to be expanded.
28278
28279 2004-04-26  Martin Baulig  <martin@ximian.com>
28280
28281         * mono-debug-debugger.c (mono_debugger_initialize): Set
28282         `mono_debugger_initialized' before calling mono_debug_lock().
28283
28284 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
28285
28286         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
28287           InternalToUpper/InternalToLower.
28288         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
28289           removed invariant culture shortcut.  This is now done in managed code.
28290         * locales.c: (string_invariant_toupper/tolower) removed.
28291
28292 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28293
28294         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
28295         Added Poll internal call.
28296
28297         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
28298         call for Poll. Select was too heavy for polling a single socket.
28299
28300         * threadpool.[ch]: added mono_threadpool_cleanup.
28301         * threads.c: use it. Don't use Thread_Abort on windows.
28302
28303 2004-04-23  Martin Baulig  <martin@ximian.com>
28304
28305         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
28306
28307 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
28308
28309         * icall.c: Registred new icalls for key pair protection and added an
28310         icall for Environment.GetFolderPath on Windows.
28311         * security.c|h: Added new icalls for key pair protection.
28312
28313 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28314
28315         * socket-io.c: don't display the non-supported family warning for known
28316         families. Now this is not displayed on windows when checking support
28317         for IPv4/IPv6.
28318
28319 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28320
28321         * class.c: don't display the layout warning for static fields.
28322
28323 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
28324
28325         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
28326         * locales.c, locales.h: Added new icalls for culture-specific
28327         Char.ToLower and Char.ToUpper.
28328
28329 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28330
28331         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
28332         by David Waite.
28333
28334 2004-04-20  Martin Baulig  <martin@ximian.com>
28335
28336         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
28337         of the type name before passing it to mono_reflection_type_from_name().
28338
28339 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
28340
28341         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
28342         encodings here. Fixes #56965.
28343
28344 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
28345
28346         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
28347         fix test on strstr result not that I can see anything that
28348         relies on the result.
28349
28350 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
28351
28352         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
28353         Fixes #57081.
28354
28355         * marshal.c (mono_marshal_get_string_encoding): New helper function.
28356
28357         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
28358         function to determine which marshalling to use for strings. Fixes
28359         #56965.
28360
28361         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
28362
28363         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
28364
28365 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
28366
28367         * icall.c: #include mono-config.h
28368
28369 2004-04-15  Jackson Harper  <jackson@ximian.com>
28370
28371         * culture-info-tables.h: Fix date formats for en-US culture.
28372         
28373 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
28374
28375         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
28376         ThreadPool.SetMinThreads.
28377         * threadpool.c: Implemented ThreadPool.GetMinThreads and
28378         ThreadPool.SetMinThreads.
28379
28380 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
28381
28382         * mono-config.c: also load the .config file in the directory
28383         where the assembly was found.
28384
28385 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
28386
28387         * assembly.c: load per-assembly config files.
28388         * icall.c: decrapified code to get the config dir and moved to
28389         mono-config.c.
28390         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
28391         per-assembly config files. When doing a dll map lookup give precedence
28392         to the per-assembly data.
28393
28394 2004-04-14  Martin Baulig  <martin@ximian.com>
28395
28396         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
28397         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
28398         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
28399
28400         * mono-debugger-debugger.c: While the debugger is locked, remember
28401         whether the symbol tables have changes and send one single
28402         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
28403
28404 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
28405
28406         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
28407
28408         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
28409         function.
28410
28411         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
28412         account when marshalling string arrays. Fixes #56965.
28413
28414 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
28415
28416         * icall.c: Add new icalls mapping for security.
28417         * security.c|h: Add internal calls for WindowsIdentity,
28418         WindowsImpersonationContext and WindowsPrincipal.
28419
28420 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
28421
28422         * class.c: Added comment to ensure the System.MonoDummy class
28423         is removed when no longer necessary
28424
28425 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
28426
28427         * appdomain.c: Pass arguments to the bootstraping exceptions to
28428         minimize JITed methods at boot
28429
28430         * metadata.c (mono_exception_from_name_two_strings): Allow for the
28431         second string to be null.
28432
28433         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
28434         Change the protocol to minimize the JIT methods at startup.  Now
28435         it Returns the internal codepage, if the value of "int_code_page"
28436         is 1 at entry, and we can not compute a suitable code page
28437         number, returns the code page as a string.
28438
28439 2004-04-13  Jackson Harper  <jackson@ximian.com>
28440
28441         * culture-info-tables.h: Fix number of decimal digits for all
28442         english locales.
28443
28444 2004-04-13  Jackson Harper  <jackson@ximian.com>
28445
28446         * icall.c: Clairfy out of sync error message. It is not always
28447         your corlib that is out of sync.
28448
28449 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
28450
28451         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
28452         properties when only the set accessor is overriden. Fixes #55874.
28453
28454 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
28455
28456         * assembly.c (mono_assembly_load_references): Make this thread safe.
28457         Fixes #56327.
28458
28459 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
28460
28461         * monosn.c: Add missing initialization calls.
28462
28463 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
28464
28465         * locales.c:
28466         ves_icall_System_Globalization_CultureInfo_construct_number_format
28467         Fix g_assert so it compiles on fussier compilers re int/ptr
28468         mismatch
28469
28470 2004-04-08  Dick Porter  <dick@ximian.com>
28471
28472         * socket-io.h:
28473         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
28474         53992.  Also rearrange the code so that the internal calls return
28475         an error value and exceptions are thrown from managed code.
28476
28477         * icall.c: Add type info to the socket icalls.
28478
28479 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28480
28481         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
28482         owes me a beer.
28483
28484 2004-04-07  Martin Baulig  <martin@ximian.com>
28485
28486         * class.c (mono_class_from_generic_parameter): Don't default
28487         `klass->parent' to `mono_defaults.object_type'.
28488
28489 2004-04-07  Martin Baulig  <martin@ximian.com>
28490
28491         * reflection.c (mono_reflection_initialize_generic_parameter): Set
28492         `param->pklass->reflection_info'.       
28493
28494 2004-04-07  Jackson Harper  <jackson@ximian.com>
28495
28496         * culture-info-tables.h: Fix date separator symbol.
28497         
28498 2004-04-07  Martin Baulig  <martin@ximian.com>
28499
28500         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
28501         from System.Type to System.MonoType.
28502
28503 2004-04-07  Martin Baulig  <martin@ximian.com>
28504
28505         * reflection.h
28506         (MonoReflectionGenericParam): Added `has_reference_type' and
28507         `has_value_type' fields.
28508
28509         * reflection.c (mono_image_get_generic_param_info): Encode the
28510         correct flags if we have the `class' or `struct' constraint.
28511
28512 2004-04-07  Martin Baulig  <martin@ximian.com>
28513
28514         * reflection.h
28515         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
28516
28517 2004-04-07  Jackson Harper  <jackson@ximian.com>
28518
28519         * appdomain.c: Revert extra patches, just wanted to bump the
28520         version number.
28521         
28522 2004-04-07  Jackson Harper  <jackson@ximian.com>
28523
28524         * Makefile.am: Add culture-info private headers.
28525         * icall.c: Add new icalls for contructing locales.
28526         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
28527         * locales.h: Declare new culture info construction methods.
28528         * object.h: Add new fields used to avoid the CultureMap to
28529         MonoCultureInfo.
28530         * culture-info.h: Definition of structs used in the culture info
28531         tables.
28532         * culture-info-tables.h: Autogenerated tables that contain culture
28533         info data. This file was generated with the locale-builder tool.
28534         * appdomain.c: Incement corlib version number.
28535         
28536 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
28537
28538         * appdomain.c: (mono_runtime_init) move mono_thread_init
28539         to before mono_object_new calls so critical sections
28540         are initialized before use.
28541
28542 2004-04-07  Martin Baulig  <martin@ximian.com>
28543
28544         * icall.c
28545         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
28546         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
28547         (ves_icall_MonoGenericParam_initialize): Removed.
28548         (monogenericparam_icalls): Removed.
28549         (generictypeparambuilder_icalls): Added new table for
28550         System.Reflection.Emit.GenericTypeParameterBuilder.
28551
28552         * reflection.c
28553         (mono_reflection_define_generic_parameter): Removed.
28554         (mono_reflection_initialize_generic_parameter): This is now called
28555         from GenericTypeParameterBuilder's .ctor.
28556
28557 2004-04-06  Martin Baulig  <martin@ximian.com>
28558
28559         * class.c (mono_class_init): Don't inflate nested classes in a
28560         generic instance.
28561         (mono_type_get_name_recurse): Include the generic arguments for
28562         generic instances and generic type declarations.
28563         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
28564         (_mono_class_get_instantiation_name): Removed.
28565         (mono_class_create_generic): Always use `gklass->name' as our name.
28566
28567         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
28568
28569         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
28570         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
28571         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
28572         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
28573         closed generic methods here.
28574
28575         * reflection.c
28576         (mono_reflection_generic_inst_get_nested_types): Removed.
28577         (inflate_mono_method): Copy the generic parameters from the
28578         MonoMethodHeader into out MonoGenericMethod.
28579
28580 2004-04-06  Martin Baulig  <martin@ximian.com>
28581
28582         * row-indexes.h
28583         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
28584
28585         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
28586
28587         * reflection.c (build_compressed_metadata): If we have any entries
28588         in the GenericParam, MethodSpec or GenericParamConstraint tables,
28589         set the header version to 1.1.
28590
28591 2004-04-06  Martin Baulig  <martin@ximian.com>
28592
28593         * class.c (mono_class_init): If we're a generic instance,
28594         initialize our nested classes, too.
28595         (_mono_class_get_instantiation_name): Deal with the new `!%d'
28596         suffix. 
28597
28598 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28599
28600         * process.c: quote the argument passed to the shell on windows.
28601
28602 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
28603
28604         * threads.c (mono_alloc_special_static_data): Allow this to be
28605         called during startup.
28606
28607 2004-04-02  Martin Baulig  <martin@ximian.com>
28608
28609         * icall.c
28610         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
28611
28612 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
28613
28614         * icall.c: Fix build.
28615
28616 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
28617
28618         * Makefile.am: Added security.c|h.
28619         * icall.c: Added icall for get_UserName;
28620         * security.c: New file for security related icalls. Added function
28621         get_UserName for System.Environment (fix #56144).
28622         * security.h: New. Header file for security.c
28623
28624 2004-04-02  Dick Porter  <dick@ximian.com>
28625
28626         * icall.c: Deleted the icalls that were obsoleted some time ago
28627         by the ICU string code, and which were mixed into the icall
28628         rearranging.  Fixes bug 55969.
28629
28630         * string-icalls.h: 
28631         * string-icalls.c: Deleted the code that those icalls reference.
28632
28633 2004-04-01  Martin Baulig  <martin@ximian.com>
28634
28635         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
28636
28637         * class.c (mono_class_from_generic_parameter): Don't set 
28638         TYPE_ATTRIBUTE_INTERFACE.
28639         (my_mono_class_from_generic_parameter): Likewise.
28640
28641 2004-04-01  Martin Baulig  <martin@ximian.com>
28642
28643         * loader.c (find_method): Added an optional `MonoClass *ic'
28644         argument to search in a specific interface.
28645         (mono_get_method_constrained): New public function.
28646
28647 2004-04-01  Martin Baulig  <martin@ximian.com>
28648
28649         * reflection.c (mono_image_get_generic_field_token): Use the
28650         `handleref' cache here.
28651
28652 2004-04-01  Martin Baulig  <martin@ximian.com>
28653
28654         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
28655
28656         * reflection.c (create_generic_typespec): Use the `typespec' hash
28657         here, not the `typeref' one.    
28658
28659 2004-04-01  Martin Baulig  <martin@ximian.com>
28660
28661         * class.c (mono_class_inflate_generic_type): Moved the
28662         functionality into a new static inflate_generic_type() which
28663         returns NULL if it didn't do anything.  Only increment the
28664         `mono_stats.inflated_type_count' if we actually inflated
28665         something.
28666         (mono_class_get_full): Check the classes type to see whether we
28667         need to inflate it; also inflate MONO_TYPE_(M)VAR.
28668
28669 2004-04-01  Jackson Harper  <jackson@ximian.com>
28670
28671         * reflection.c: Set culture for assembly references.
28672         
28673 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
28674
28675         * reflection.[ch], icall.[ch], Fix support for pinning variables.
28676
28677 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28678
28679         * assembly.c:
28680         (do_mono_assembly_open): the critical section also covers
28681         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
28682
28683 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28684
28685         * threads.c:
28686         (mono_manage_threads): abort the background threads when finishing.
28687         Fixes bug #47232.
28688
28689 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28690
28691         * gc.c: only close the done_event handle if there was no timeout.
28692         C-ified comments.
28693
28694 2004-03-30  Martin Baulig  <martin@ximian.com>
28695
28696         * icall.c (icall_entries): It's called "System.Activator", not
28697         "System.Activation".    
28698
28699 2004-03-30  Martin Baulig  <martin@ximian.com>
28700
28701         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
28702         (mono_class_create_from_typespec): Likewise.
28703
28704 2004-03-30  Martin Baulig  <martin@ximian.com>
28705
28706         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
28707         `has_ctor_constraint' and `initialized'.
28708
28709 2004-03-30  Martin Baulig  <martin@ximian.com>
28710
28711         * reflection.c (encode_new_constraint): New static function to add
28712         the constructor constraint attribute to a type parameter.
28713         (encode_constraints): Call encode_new_constraint() if necessary.
28714
28715         * reflection.h
28716         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
28717
28718         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
28719         
28720 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
28721
28722         * reflection.c, icall.c: add support for pinning variables. 
28723
28724 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
28725
28726         * marshal.c (mono_marshal_get_managed_wrapper):
28727         init bool local with zero rather than null.
28728
28729 2004-03-29  Martin Baulig  <martin@ximian.com>
28730
28731         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
28732         the "official" behavior here.
28733         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
28734
28735 2004-03-29  Martin Baulig  <martin@ximian.com>
28736
28737         * icall.c: Reflect latest API changes.
28738
28739 2004-03-29  Martin Baulig  <martin@ximian.com>
28740
28741         * loader.c (mono_get_method_from_token): Also call
28742         mono_metadata_load_generic_params () for abstract and interface
28743         methods; replace the type arguments in the method signature with
28744         the ones which are loaded from the metadata.
28745
28746 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
28747
28748         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
28749         of the lock is not the current thread. MS.NET don't do it, in spite of
28750         what the documentation says. See bug #56157.
28751
28752 2004-03-28  Martin Baulig  <martin@ximian.com>
28753
28754         * class.c (mono_class_init): Don't call init_properties() and
28755         init_events() for generic instances; set `prop->parent' when
28756         inflating properties.
28757
28758         * reflection.c (mono_generic_inst_get_object): Call
28759         `mono_class_init (ginst->klass)'.
28760         (mono_type_get_object): Only create a MonoGenericInst if your
28761         generic type is a TypeBuilder.
28762         (do_mono_reflection_bind_generic_parameters): Only set
28763         `ginst->is_dynamic' if our generic type is a TypeBuilder.
28764
28765 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
28766
28767         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
28768         Fixes #56091.
28769
28770 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28771
28772         * icall.c: added Kill_internal icall.
28773         * process.[ch]: added Kill_internal icall.
28774
28775 2004-03-25  Martin Baulig  <martin@ximian.com>
28776
28777         * class.h (MonoStats): Added `generic_instance_count',
28778         `inflated_method_count', `inflated_type_count' and
28779         `generics_metadata_size'.       
28780
28781 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28782
28783         * reflection.c: no warnings now.
28784
28785 2004-03-25  Martin Baulig  <martin@ximian.com>
28786
28787         * class.c (mono_class_get_full): New public function; does a
28788         mono_class_get(), but also takes a `MonoGenericContext *'.
28789
28790         * loader.c (mono_field_from_memberref): Renamed to
28791         `field_from_memberref', made static and added `MonoGenericContext *'
28792         argument.
28793         (mono_field_from_token): Added `MonoGenericInst *' argument.
28794         (method_from_memberef): Likewise.
28795         (mono_get_method_from_token): Likewise.
28796         (mono_get_method_full): New public function; does a
28797         mono_get_method(), but also takes a `MonoGenericContext *'.
28798
28799         * verify.c (mono_method_verify): Get the method's generic context
28800         and pass it to mono_field_from_token(), mono_get_method_full() and
28801         mono_class_get_full().
28802
28803 2004-03-25  Martin Baulig  <martin@ximian.com>
28804
28805         * class.c (mono_class_inflate_generic_type): Take a
28806         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
28807         `MonoGenericMethod *'.
28808
28809 2004-03-25  Martin Baulig  <martin@ximian.com>
28810
28811         * loader.h (MonoMethodInflated): Store the MonoGenericContext
28812         instead of the MonoGenericMethod here.
28813
28814 2004-03-25  Martin Baulig  <martin@ximian.com>
28815
28816         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
28817         each time we create a new MonoGenericInst, we also create a new
28818         context which points back to us.
28819
28820         * class.c (inflate_method): Use `ginst->context' instead of
28821         creating a new context.
28822
28823         * loader.c (method_from_memberref): Use
28824         `klass->generic_inst->context' instead of creating a new context.
28825
28826 2004-03-25  Martin Baulig  <martin@ximian.com>
28827
28828         * class.h (MonoGenericContext): New struct.
28829         (MonoGenericMethod): Removed `generic_inst'.
28830
28831         * class.c (mono_class_inflate_generic_method): Take a
28832         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
28833
28834 2004-03-25  Martin Baulig  <martin@ximian.com>
28835
28836         * loader.h (MonoMethodInflated): New typedef.
28837
28838         * metadata.h (MonoMethodSignature): Removed `gen_method', make
28839         `generic_param_count' consume just 30 bits, added `is_inflated'
28840         and `has_type_parameters' flags (one bit each).
28841
28842         * class.c (mono_class_inflate_generic_method): Create a
28843         MonoMethodInflated instead of a MonoMethodNormal and set
28844         `is_inflated' in the method signature.
28845
28846         * class.h (MonoGenericMethod): Removed `generic_method'.
28847
28848 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
28849
28850         * image.c: Make sure the name of a MonoImage is always an absolute path.
28851           This fixes bug #54415.
28852
28853 2004-03-24  Martin Baulig  <martin@ximian.com>
28854
28855         * class.c (mono_class_setup_vtable): If we're a generic instance,
28856         use our generic type's vtable size.
28857
28858 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
28859
28860         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
28861         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
28862         problems.
28863
28864 2004-03-23  Martin Baulig  <martin@ximian.com>
28865
28866         * class.h (MonoDynamicGenericInst): Added `int count_events' and
28867         `MonoEvent *events'.
28868
28869         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
28870         (typebuilder_icalls): Added "get_event_info"; calls
28871         mono_reflection_event_builder_get_event_info(). 
28872
28873         * reflection.c (mono_reflection_generic_inst_initialize): Added
28874         `MonoArray *events'.
28875         (mono_reflection_event_builder_get_event_info): New function.
28876
28877 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
28878
28879         * object.h: add mono_type_initialization_init
28880
28881         * object.c (mono_runtime_class_init): 
28882         implement class constructor synchronization rules
28883         to cope with threading issues.  
28884         add mono_type_initialization_init
28885
28886         * appdomain.c (mono_runtime_init): call 
28887         mono_type_initialization_init
28888
28889         * class.h: removing initializing field from MonoVTable
28890
28891 2004-03-23  Martin Baulig  <martin@ximian.com>
28892
28893         * class.c (my_mono_class_from_generic_parameter): Use
28894         `param->name' if it's not NULL. 
28895
28896 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
28897
28898         * class.c: do not insert non-virtual methods in the vtable.
28899         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
28900         that means the method is non-virtual. This never would have
28901         happened before.
28902
28903 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
28904
28905         * profiler.c: Added lock for accessing coverage_hash.
28906
28907 2004-03-22  Martin Baulig  <martin@ximian.com>
28908
28909         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
28910         `method->method->signature->generic_param_count != 0' to make it
28911         work for interface methods.
28912
28913 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28914
28915         * process.c: quote the string passed to the shell using g_shell_quote.
28916
28917 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28918
28919         * threads.c:
28920         (mono_threads_manage): don't remove the finalizer thread and self
28921         from the threads hash table so that mono_thread_manage can be called
28922         more than once.
28923
28924 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28925
28926         * process.c: quote the arguments when UseShellExecute is true. Fixes
28927         bug #55790.
28928
28929 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28930
28931         * threads.c: set mono_thread_detach as a cleanup routine for every
28932         thread. This way it's always executed upon thread termination, either
28933         aborted or finished normally. No more xsp hangs!
28934
28935 2004-03-17  Martin Baulig  <martin@ximian.com>
28936
28937         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
28938         `int count_nested' and a `MonoType **nested'.
28939
28940         * reflection.c (mono_reflection_bind_generic_parameters): Moved
28941         most of the functionality into a new static
28942         do_mono_reflection_bind_generic_parameters() and don't take a
28943         `MonoType *nested_in' argument any more.  Don't compute nested
28944         types here.
28945         (mono_reflection_generic_inst_get_nested_types): New public method
28946         to get nested types.
28947
28948         * class.c (mono_class_create_generic): Set `klass->nested_in' if
28949         we're a nested class.
28950
28951         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
28952         mono_reflection_generic_inst_get_nested_types() to compute the
28953         nested types.
28954
28955 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
28956
28957         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
28958         descriptive error message under windows.
28959         
28960 2004-03-17  Martin Baulig  <martin@ximian.com>
28961
28962         * class.c (dup_type): Added `const MonoType *original' argument;
28963         copy the attrs from the original type.
28964
28965 2004-03-17  Martin Baulig  <martin@ximian.com>
28966
28967         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
28968         `m->generic_inst_cache' here.
28969
28970 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
28971
28972         * exception.h exception.c: Add stack_overflow_exception.
28973
28974 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28975
28976         * threadpool.c:
28977         (overlapped_callback): call SetEvent *after* invoking the callback.
28978         No need to call CloseHandle.
28979
28980 2004-03-16  Martin Baulig  <martin@ximian.com>
28981
28982         * reflection.c (mono_image_get_fieldref_token): Take a
28983         `MonoReflectionField *' instead of a `MonoClassField *' and a
28984         `MonoClass *'; store the `MonoReflectionField *' in the hash.
28985
28986 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28987
28988         * appdomain.c: don't add the culture to the filename we're looking for
28989         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
28990
28991 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28992
28993         * locales.c: don't ignore symbols when doing case insensitive compares.
28994         Thanks Dick! Fixes bug #54046.
28995
28996         * threads.c: surround 'threads' usage with enter/leave in
28997         mono_thread_manage.
28998
28999 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
29000
29001         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
29002         implicitly marshalled as [Out]. Fixes #55450.
29003
29004         (mono_marshal_get_runtime_invoke): Zero out the result if there is
29005         an exception.
29006
29007 2004-03-16  Martin Baulig  <martin@ximian.com>
29008
29009         * class.c (mono_class_from_generic_parameter): Use the actual
29010         parameter name. 
29011
29012 2004-03-16  Martin Baulig  <martin@ximian.com>
29013
29014         * reflection.c (type_get_signature_size): New static function.
29015         Compues the size of the type in a method signature.
29016         (method_get_signature_size): New static function; calls
29017         type_get_signature_size() to compute the actual size of the
29018         method's signature.
29019         (method_encode_signature): Use method_get_signature_size() to get
29020         the signature's size rather than using `nparams * 10'.
29021
29022 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29023
29024         * file-io.h: define here WapiOverlapped on windows. I don't want the
29025         regular OVERLAPPED one.
29026
29027         * file-io.c:
29028         * threadpool.c: somehow, BindIoCompletionCallback is not found.
29029         Disabling AIO on windows.
29030
29031 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29032
29033         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
29034         bug #55385.
29035
29036 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29037
29038         * appdomain.c: upgraded corlib version.
29039
29040         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
29041         and BeginWrite. Allow opening files for asynchrnous operations.
29042
29043         * file-io.h: new struct that maps FileStreamAsyncResult.
29044         * icall.c: added new icalls.
29045         * process.[ch]: support setting child process environment variables
29046         and use the SHELL or COMSPEC when UseShellExecute is true.
29047
29048         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
29049         callback for async. IO is here and also BindHandle.
29050
29051         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
29052         from here.
29053
29054 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
29055
29056         * reflection.c (create_custom_attr): Allow len == 0.
29057
29058         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
29059         computation on big-endian machines.
29060
29061 2004-03-13  Martin Baulig  <martin@ximian.com>
29062
29063         * class.h (MonoGenericInst): Added `int count_ifaces'.
29064
29065         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
29066         `ginst->count_ifaces' instead `klass->interface_count' since we
29067         may get called before the vtable is created.
29068
29069         * loader.c (mono_method_get_param_names): If we're a generic
29070         instance, return and don't initialize the class.
29071
29072         * reflection.c (mono_reflection_setup_generic_class): Don't call
29073         ensure_runtime_vtable().
29074         (mono_reflection_bind_generic_parameters): Set
29075         `ginst->count_ifaces'.
29076
29077 2004-03-11  Jackson Harper <jackson@ximian.com>
29078
29079         * icall.c:
29080         * unicode.c:
29081         * unicode.h: Remove unused System.Char icalls.
29082         
29083 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
29084
29085         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
29086         code when we P/Invoke the first library in Windows.Forms, instead
29087         of when we first open the assembly.
29088
29089         * assembly.c: Drop the lookup from here.
29090
29091 2004-03-10  Martin Baulig  <martin@ximian.com>
29092
29093         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
29094         class for properties, fields and events.  Finally fixes #54945.
29095
29096 2004-03-10  Martin Baulig  <martin@ximian.com>
29097
29098         * metadata.c (mono_metadata_class_equal): New static function;
29099         checks whether two generic instances or two generic parameters are
29100         equal.
29101         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
29102         compare classes.        
29103
29104 2004-03-10  Martin Baulig  <martin@ximian.com>
29105
29106         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
29107
29108         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
29109         argument and write it into the `reflection_info' field.
29110
29111         * icall.c
29112         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
29113         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
29114
29115 2004-03-09  Jackson Harper  <jackson@ximian.com>
29116
29117         * char-conversions.h: use 8 bits for numeric data its all we need
29118         * icall.c: numeric data is only 8 bits now.
29119
29120 2004-03-09  Martin Baulig  <martin@ximian.com>
29121
29122         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
29123
29124         * class.c (init_properties, init_events): Initialize the new
29125         `parent' field.
29126
29127         * reflection.c (typebuilder_setup_properties): Likewise.
29128         (typebuilder_setup_events): Likewise.
29129
29130         * reflection.h (MonoEventInfo): Replaced `parent with
29131         `declaring_type' and `reflected_type'.
29132
29133         * icall.c (ves_icall_get_property_info): Distinguish between
29134         declaring and reflected type.
29135         (ves_icall_get_event_info): Likewise.
29136
29137 2004-03-09  Martin Baulig  <martin@ximian.com>
29138
29139         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
29140         (ves_icall_Type_GetField): Correctly set field->klass.
29141
29142 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
29143
29144         * loader.h: Fix warning.
29145
29146 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
29147
29148         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
29149         library routine if present.  Notice that it will still continue
29150         executing even if its missing, for those working on the Gtk#
29151         edition of Windows.Forms.
29152
29153         * assembly.c (do_mono_assembly_open): If loading the
29154         System.Windows.Forms call mono_loader_wini_init.
29155
29156 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
29157
29158         * class.h: Added MonoRemoteClass struct.
29159         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
29160         function for MonoStrings.
29161         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
29162         Added internal call for getting the proxy type.
29163         * marshal.c: Get the type of transparent proxies from its remote_class.
29164         Added methods that generate the IL for type checks and casts:
29165         mono_marshal_get_isinst, mono_marshal_get_castclass, 
29166         mono_marshal_get_proxy_cancast.
29167         * marshal.h: Declaration of the previous new methods.
29168         * object.c: Added new moethods for creating and updating MonoRemoteClass
29169         instances: mono_remote_class, mono_upgrade_remote_class, 
29170         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
29171         * verify.c: FIx transparent_proxy_fields layout.
29172         * appdomain.c: Bump corlib version.
29173
29174 2004-03-04  Jackson Harper  <jackson@ximian.com>
29175
29176         * icall.c: Add icall to access char conversion tables.
29177         * char-conversions.h: Character conversion tables.
29178         * Makefile.am: Add char-conversions.h private header file.
29179         
29180 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
29181
29182         * appdomain.c (unload_thread_main): Increase unloading timeout to
29183         10 sec as a temporary workaround for Nant problems.
29184
29185 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
29186
29187         * gc.c: Add checks for GC_enable and GC_disable.
29188
29189         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
29190         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
29191         (bug #54988).
29192         
29193 2004-02-27  Martin Baulig  <martin@ximian.com>
29194
29195         * reflection.c (mono_reflection_bind_generic_parameters): Take a
29196         `MonoReflectionType *' instead of a `MonoType *'.
29197
29198 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
29199
29200         * gc.c (run_finalize): Avoid finalizing the object representing the
29201         finalizer thread.
29202         (finalizer_thread): Fix warning.
29203
29204 2004-02-25  Martin Baulig  <martin@ximian.com>
29205
29206         * class.c (_mono_class_get_instantiation_name): Added `int offset'
29207         argument for nested types.
29208         (mono_class_create_generic): Added support for nested generictypes.
29209
29210         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
29211         `GList *nested'.
29212
29213         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
29214
29215         * reflection.c (method_encode_signature): Increase the minimum
29216         value of `size' from 10 to 11.
29217         (mono_reflection_bind_generic_parameters): Take `int type_argc'
29218         and `MonoType **types' arguments instead of the `MonoArray
29219         *types'; added `MonoType *nested_in'.  Recursively instantiate
29220         nested classes. 
29221
29222 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
29223
29224         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
29225         stack_overflow_ex members which are used by exception handling.
29226
29227         * appdomain.c (mono_runtime_init): Initialize the new members.
29228
29229         * gc.c (mono_gc_enable): New helper function.
29230         * gc.c (mono_gc_disable): New helper function.
29231
29232 2004-02-23  Martin Baulig  <martin@ximian.com>
29233
29234         * icall.c: I must have been really stupid - make it actually work
29235         this time ;-)
29236
29237 2004-02-23  Martin Baulig  <martin@ximian.com>
29238
29239         * loader.c (method_from_memberref): Only inflate the method if
29240         it's in another klass.
29241
29242 2004-02-23  Martin Baulig  <martin@ximian.com>
29243
29244         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
29245         (mono_class_init): If we're a generic instance and an interface,
29246         compute `class->interface_id'; also create `class->interfaces'
29247         here and inflate them.
29248
29249         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
29250         `ginst->is_open'.
29251         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
29252
29253         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
29254
29255 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
29256
29257         * reflection.c (method_encode_code): Improved the error message
29258         generated by the exception.
29259
29260 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29261
29262         * icall.c: Martin did not do what he said in the ChangeLog for
29263         2004-02-18, but put back the changes for properties and events.
29264         Commenting those changes out again and adding comment to bug #54518.
29265         
29266         * process.c: removed warning.
29267
29268 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
29269
29270         * marshal.c (emit_struct_conv): Print an error message instead of
29271         asserting when a type does not have the StructLayout attribute.
29272
29273 2004-02-20  Martin Baulig  <martin@ximian.com>
29274
29275         * reflection.c (mono_type_get_object): Also use the cache for
29276         generic instances.
29277         (mono_reflection_bind_generic_parameters): Always compute
29278         `ginst->ifaces'.        
29279
29280 2004-02-20  Martin Baulig  <martin@ximian.com>
29281
29282         * class.h (MonoGenericMethod): Removed `klass'.
29283
29284         * class.c (mono_class_inflate_generic_method): Added `MonoClass
29285         *klass' argument.
29286
29287 2004-02-20  Martin Baulig  <martin@ximian.com>
29288
29289         * reflection.c (method_encode_methodspec): Actually use the
29290         uninflated signature for the memberref.
29291
29292 2004-02-20  Martin Baulig  <martin@ximian.com>
29293
29294         * class.h (MonoGenericMethod): Removed `declaring'.
29295
29296         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
29297         is NULL, compute it here.
29298
29299 2004-02-20  Martin Baulig  <martin@ximian.com>
29300
29301         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
29302
29303         * metadata.c (mono_metadata_generic_inst_hash): New method.
29304         (mono_metadata_generic_inst_equal): New method.
29305
29306         * reflection.c (mono_reflection_bind_generic_parameters): Use the
29307         `klass->image->generic_inst_cache' cache to avoid creating
29308         duplicate MonoGenericInst's.
29309
29310         * class.c (mono_class_inflate_generic_type): Use the cache.
29311
29312 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
29313
29314         * object.c: fixed gc descriptor calculation for embedded valuetypes.
29315
29316 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29317
29318         * icall.c: added Socket.WSAIoctl icall.
29319
29320         * socket-io.[ch]: implemented
29321         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
29322
29323 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
29324
29325         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
29326
29327 2004-02-18  Urs C Muff  <umuff@quark.com>
29328
29329         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
29330         this work on PPC and other big-endian architectures.
29331
29332         * debug-mono-symfile.h: Prepended the names of all the `guint32'
29333         fields with an underscore to make sure they're only accessed by
29334         the read32() macro.
29335
29336 2004-02-18  Martin Baulig  <martin@ximian.com>
29337
29338         * icall.c: Put the klass->refclass changes back for methods and
29339         fields, but not for properties and events.  We're currently not
29340         distinguishing between DeclaringType and ReflectedType for
29341         properties and events, that's what caused the regressions.
29342
29343 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29344
29345         * object.c:
29346         (mono_async_result_new): the handle can be NULL.
29347
29348         * threadpool.c: Use an event instead of a semaphore, don't initialize
29349         it until needed. This saves quite a few semaphores from being created
29350         when using the threadpool.
29351
29352 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
29353
29354         * object.c (mono_string_is_interned_lookup): Fix interning of long
29355         strings. Fixes #54473.
29356
29357         * domain.c (ldstr_equal): Optimize if the two strings are equal.
29358
29359         * icall.c: Revert the klass->refclass changes since they introduce
29360         regressions (bug #54518).
29361
29362 2004-02-18  Martin Baulig  <martin@ximian.com>
29363
29364         * class.c (mono_class_init): If we're a generic instance and don't
29365         come from a TypeBuilder, inflate our members here.
29366         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
29367         (mono_class_create_generic): New public method.
29368         (mono_class_initialize_generic): Removed.
29369         (get_instantiation_name): Renamed to
29370         _mono_class_get_instantiation_name() and made it public.
29371
29372 2004-02-18  Martin Baulig  <martin@ximian.com>
29373
29374         * class.c (mono_class_inflate_generic_type): Clear the new
29375         instance's `nginst->klass' when inflating a generic instance.
29376         (mono_class_is_subclass_of): Added (basic) support for generic
29377         instances.
29378
29379 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
29380
29381         * appdomain.h, domain.c: use a MonoCodeManager instead of a
29382         MonoMempool to hold compiled native code.
29383
29384 2004-02-17  Martin Baulig  <martin@ximian.com>
29385
29386         * class.h (MonoDynamicGenericInst): Added `count_properties' and
29387         `properties'.
29388
29389         * reflection.c (mono_reflection_generic_inst_initialize): Added
29390         `MonoArray *properties' argument.
29391
29392         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
29393
29394 2004-02-17  Martin Baulig  <martin@ximian.com>
29395
29396         * icall.c (ves_icall_Type_GetFields): Renamed to
29397         ves_icall_Type_GetFields_internal() and added a
29398         `MonoReflectionType *rtype' argument; pass it to
29399         mono_field_get_object() to set the field's "reflected" type.
29400         (ves_icall_Type_GetConstructors): Likewise.
29401         (ves_icall_Type_GetEvents): Likewise.
29402         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
29403         argument; pass it to mono_method_get_object() to set the method's
29404         "reflected" type.       
29405
29406 2004-02-17  Martin Baulig  <martin@ximian.com>
29407
29408         * class.h (MonoDynamicGenericInst): New type.
29409         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
29410
29411         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
29412         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
29413         (ves_icall_MonoGenericInst_GetFields): New interncall.
29414
29415         * class.c (mono_class_from_generic): Don't call
29416         mono_class_initialize_generic() if this is a dynamic instance;
29417         ie. it's being created from a TypeBuilder.
29418         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
29419         `class->byval_arg.type'.
29420
29421         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
29422         to `inflate_method' and made static.
29423         (mono_reflection_inflate_field): Removed.
29424         (mono_reflection_generic_inst_initialize): New public method.
29425
29426         * reflection.h (MonoReflectionGenericInst): Removed `methods',
29427         `ctors' and `fields'; added `initialized'.
29428
29429 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
29430
29431         * debug-helpers.c (mono_method_full_name): Fix output for empty
29432         namespaces.
29433
29434 2004-02-12  Martin Baulig  <martin@ximian.com>
29435
29436         * class.h (MonoClassField): Added `MonoType *generic_type'.
29437
29438         * reflection.c (mono_image_get_fieldref_token): Added support for
29439         instantiated generic types.
29440         (field_encode_inflated_field): Removed.
29441         (mono_image_get_inflated_field_token): Removed.
29442         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
29443
29444         * reflection.h (MonoReflectionInflatedField): Removed.
29445
29446 2004-02-12  Martin Baulig  <martin@ximian.com>
29447
29448         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
29449         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
29450
29451         * reflection.c (mono_image_get_methodspec_token): Take a
29452         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
29453         (mono_image_create_token): Check whether we have a
29454         `method->signature->gen_method' and call
29455         mono_image_get_methodspec_token() if appropriate.
29456         (inflated_method_get_object): Removed.
29457         (mono_reflection_bind_generic_method_parameters): Return a
29458         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
29459         (mono_reflection_inflate_method_or_ctor): Likewise.
29460
29461         * reflection.h (MonoReflectionInflatedMethod): Removed.
29462
29463 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
29464
29465         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
29466         for custom valuetype marshalling.
29467
29468         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
29469
29470 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29471
29472         * icall.c: fixed WSAGetLastError_internal name.
29473
29474 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
29475
29476         * threads.c (mono_thread_attach): Allow this to be called multiple
29477         times for a thread.
29478         
29479         * threads.c (build_wait_tids): Do not wait for ourselves.
29480
29481         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
29482         appdomain list is empty.
29483
29484         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
29485         memory returned by mono_string_builder_to_utf16, since it points into
29486         managed memory. Thanks to Bernie Solomon for noticing this.
29487
29488         * icall.c: Add AppDomainSetup icalls.
29489
29490         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
29491
29492         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
29493         types.
29494
29495         * reflection.c (reflection_methodbuilder_to_mono_method): Save
29496         custom attributes to the method_aux struct. Also fix array indexes etc.
29497
29498         * loader.c (mono_method_get_param_names): Make dynamic case work again.
29499         
29500 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
29501
29502         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
29503         (both static and runtime) and reduce startup time.
29504
29505 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
29506
29507         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
29508         AsAny marshalling conversion instead of crashing.
29509
29510         * marshal.c: Fix warnings.
29511
29512 2004-02-09  Martin Baulig  <martin@ximian.com>
29513
29514         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
29515
29516         * reflection.h (MonoReflectionInflatedMethod): Removed the
29517         `declaring' field, it's now in the unmanaged MonoGenericMethod.
29518
29519         * reflection.c (method_encode_methodspec): Removed the `method'
29520         argument; we get it from `gmethod->declaring'.
29521         (inflated_method_get_object): Removed the `declaring' argument.
29522
29523 2004-02-09  Martin Baulig  <martin@ximian.com>
29524
29525         * class.h (MonoGenericMethod): New type.
29526         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
29527         `generic_method'.
29528
29529         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
29530         a `MonoGenericMethod *gen_method' one.
29531
29532         * class.c (mono_class_inflate_generic_type): Take an additional
29533         `MonoGenericMethod * argument.  This is only non-NULL if we're
29534         inflating types for a generic method.   
29535         (mono_class_inflate_generic_signature): Renamed to
29536         inflate_generic_signature() and made static; take a
29537         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
29538         (inflate_generic_header): Take a `MonoGenericMethod *' argument
29539         instead of a `MonoGenericInst *' one.
29540         (mono_class_inflate_generic_method): Likewise.
29541
29542         * reflection.c (encode_generic_method_sig): Take a
29543         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
29544         (method_encode_methodspec): Likewise.
29545         (inflated_method_get_object): Likewise. 
29546
29547         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
29548         field with a `MonoGenericMethod *gmethod' one.  
29549
29550 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
29551
29552         * class.h (mono_class_has_parent): add parens to expansion
29553         so you can ! this.
29554
29555 2004-02-08  Martin Baulig  <martin@ximian.com>
29556
29557         * image.h (MonoImage): Removed `generics_cache'.
29558
29559         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
29560         instead of a `MonoType *' argument; removed the `inflate_methods'
29561         argument.  Don't inflate methods here.
29562
29563         * loader.c (find_method): If it's a generic instance, call
29564         mono_class_init() on the `sclass->generic_inst->generic_type'.
29565
29566         * metadata.c (mono_type_size): Make this work on uninitialized
29567         generic instances; call it on the `ginst->generic_type's class.
29568
29569         * reflection.c (mono_reflection_bind_generic_parameters): Call
29570         mono_class_from_generic() to create the `ginst->klass'.
29571
29572 2004-02-08  Martin Baulig  <martin@ximian.com>
29573
29574         * class.h (MonoClass): Changed type of `generic_inst' from
29575         `MonoType *' to `MonoGenericInst *'.
29576
29577 2004-02-08  Martin Baulig  <martin@ximian.com>
29578
29579         * icall.c (ves_icall_Type_BindGenericParameters): Just call
29580         mono_type_get_object(), this is now creating a `MonoGenericInst'
29581         for MONO_TYPE_GENERICINST.
29582         (ves_icall_MonoGenericInst_GetParentType): Likewise.
29583         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
29584
29585         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
29586         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
29587         (inflated_method_get_object): Added `MonoClass *refclass' argument.
29588         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
29589         and reflected type.
29590
29591         * reflection.h (MonoReflectionInflatedMethod): Removed
29592         `declaring_type' and `reflected_type'.
29593
29594 2004-02-08  Martin Baulig  <martin@ximian.com>
29595
29596         * class.h (MonoGenericInst): Added `MonoType *parent' and
29597         `MonoType **ifaces'.
29598
29599         * reflection.h (MonoReflectionGenericInst): Removed `klass',
29600         `parent' and `interfaces'.
29601
29602         * reflection.c (mono_reflection_bind_generic_parameters): Take a
29603         `MonoType *' argument and return a `MonoType *'.
29604
29605         * icall.c
29606         (ves_icall_MonoGenericInst_GetParentType): New interncall.
29607         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
29608
29609 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
29610
29611         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
29612         valuetype marshalling.
29613
29614 2004-02-06  Martin Baulig  <martin@ximian.com>
29615
29616         * class.c
29617         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
29618         (my_mono_class_from_generic_parameter): Likewise.
29619
29620 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
29621
29622         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
29623         contents of the symbol files lazily.
29624
29625         * object.h (MonoThread): Add 'name' and 'name_len' fields.
29626
29627         * threads.h threads.c icall.c: New icalls for getting and setting the
29628         threads name.
29629
29630 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
29631
29632         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
29633         Raise an exception when the domain is not found.
29634
29635 2004-02-03  Martin Baulig  <martin@ximian.com>
29636
29637         * reflection.c (mono_image_get_methodspec_token): Use the
29638         uninflated signature; fixes gen-33.
29639
29640 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
29641
29642         * gc.c threads.c: Make the finalizer thread a normal managed thread so
29643         the finalizer code can use thread functionality.
29644
29645         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
29646         the finalizer thread.
29647
29648         * threads.c: Make some functions more robust.
29649
29650         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
29651
29652         * metadata.h: Add new marshalling conventions.
29653
29654         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
29655         stringbuilder marshalling. Fixes #53700.
29656
29657         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
29658
29659         * reflection.c (mono_image_get_type_info): Save declarative security
29660         info.
29661
29662         * reflection.c (mono_image_get_field_info): Handle uninitialized 
29663         unmanaged fields as well.
29664
29665         * appdomain.c: Bump corlib version.
29666
29667 2004-02-01  Martin Baulig  <martin@ximian.com>
29668
29669         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
29670         method type arguments.  
29671
29672 2004-01-30  Duncan Mak  <duncan@ximian.com>
29673
29674         * marshal.h: Add prototype for
29675         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
29676         and
29677         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
29678         fix the build.
29679
29680 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
29681
29682         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
29683         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
29684
29685 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
29686
29687         * marshal.c (mono_marshal_get_native_wrapper): Add support for
29688         custom marshalling of valuetypes.
29689
29690         * marshal.c: Fix some warnings.
29691
29692 2004-01-29  Martin Baulig  <martin@ximian.com>
29693
29694         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
29695         for generic method parameters.
29696
29697         * reflection.c (method_encode_methodspec): Write the uninflated
29698         signature into the methodspec table.
29699         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
29700         is always the uninflated method.
29701         (reflection_methodbuilder_to_mono_method): Copy the generic
29702         parameters from the MethodBuilder into `header->gen_params'.
29703
29704 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
29705
29706         * class.c (mono_class_from_generic_parameter): Fix warning.
29707
29708 2004-01-27  Martin Baulig  <martin@ximian.com>
29709
29710         * class.c (mono_class_from_generic_parameter): Don't create
29711         `klass->methods' here.  
29712
29713 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
29714
29715         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
29716         extension since it does not work with libraries named lib<FOO>.dll.so.
29717
29718 2004-01-25  Martin Baulig  <martin@ximian.com>
29719
29720         * class.c (mono_class_inflate_generic_type): Added support for
29721         MONO_TYPE_GENERICINST.
29722
29723         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
29724         inflate methods on open constructed types.      
29725
29726 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29727
29728         * object.c: fire ProcessExit event in the root AppDomain after running
29729         Main. Fixes bug #53299.
29730
29731 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
29732
29733         * socket-io.c: include the new socket-wrappers.h header.
29734         Use the wrappers instead of the unix socket functions to make the code
29735         more clear.
29736
29737 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
29738
29739         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
29740
29741         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
29742         Fixes #22532.
29743
29744 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
29745
29746         * reflection.c (mono_image_create_pefile): Handle the case when the
29747         entry point is not a MethodBuilder.
29748
29749         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
29750         field to ReflectionMethod since it is not allways a builder.
29751
29752         * reflection.c (type_get_fully_qualified_name): New helper function to
29753         return the fully qualified name of a type.
29754
29755         * reflection.c (encode_marshal_blob): Always emit the fully qualified
29756         type name for custom marshallers.
29757
29758         * reflection.c (mono_marshal_spec_from_builder): Ditto.
29759
29760         * class.c (mono_class_setup_vtable): If a parent class already 
29761         implements an interface, use the implementing methods from that class.
29762         Fixes #53148.
29763
29764 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29765
29766         * threadpool.c: just return instead of ExitThread to allow for thread
29767         clean up earlier.
29768
29769 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
29770
29771         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
29772         when closing resource modules.
29773
29774         * reflection.c (mono_image_create_pefile): Handle the case when the
29775         entry point is not a MethodBuilder.
29776
29777         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
29778         field to ReflectionMethod since it is not allways a builder.
29779
29780 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
29781
29782         * marshal.c (mono_marshal_get_managed_wrapper): 
29783         mono_marshal_alloc takes native int so CONV_I
29784         the arg for 64bits.
29785
29786 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
29787
29788         * reflection.c (fixup_cattrs): New function to fixup the methoddef
29789         tokens in the cattr table. Fixes #53108.
29790
29791 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29792
29793         * loader.c: don't trim ".dll" before looking up in the config file.
29794         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
29795
29796 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
29797
29798         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
29799         Return the module which contains the resource as well.
29800         (ves_icall_System_Reflection_Module_Close): New icall.
29801
29802         * appdomain.c: Bump corlib version number.
29803
29804         * image.c (mono_image_addref): New public function.
29805
29806         * assembly.c: Call mono_image_addref.
29807
29808         * reflection.c (mono_module_get_object): Increase reference count of 
29809         the image.
29810
29811         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
29812         Fixes #22532.
29813
29814         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
29815         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
29816         proper exceptions on DllImport problems.
29817
29818 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
29819
29820         * class.c, metadata.c: eliminate CSIZE macro.
29821
29822 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
29823
29824         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
29825         * object.h: Added async_callback field in MonoAsyncResult.
29826         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
29827         * verify.c: Added async_callback in MonoAsyncResult layout.
29828
29829 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
29830
29831         * reflection.c (mono_reflection_get_custom_attrs): Add support
29832         for Modules.
29833
29834 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
29835
29836         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
29837         marshalling.
29838         (mono_marshal_method_from_wrapper): Add null pointer check.
29839
29840 2004-01-16  Martin Baulig  <martin@ximian.com>
29841
29842         * debug-mono-symfile.h: Set version number to 36 and reflect
29843         latest symbol writer changes.
29844
29845 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
29846
29847         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
29848         multi-dimensional arrays.
29849         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
29850         (mono_class_from_mono_type): Use bounded_array_class_get.
29851         
29852         * class.c (mono_bounded_array_class_get): New function which takes
29853         a 'bounded' bool argument to distinguish vectors from one dimensional
29854         arrays.
29855
29856         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
29857         bounded_array_class_get if the array has bounds.
29858
29859         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
29860         Search modules loaded using AssemblyBuilder:AddModule as well.
29861
29862 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29863
29864         * appdomain.c: increased corlib version.
29865         * filewatcher.c: removed g_print.
29866         * icall.c:
29867         (get_property_info): only allocate what is actually requested.
29868         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
29869
29870 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29871
29872         * Makefile.am: added filewatcher.[ch]
29873         * filewatcher.[ch]: FileSystemWatcher runtime support.
29874         * icall.c: added new FSW icalls.
29875
29876 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
29877
29878         * string-icalls.c: fix stringbuilder regression as suggested by
29879         Iain McCoy <iain@mccoy.id.au>.
29880
29881 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
29882
29883         * process.c (process_read_stringtable_block): Recognize '007f' as
29884         a language neutral stringtable block.
29885
29886 2004-01-12  Patrik Torstensson
29887
29888         * object.h (MonoStringBuilder) : Changed layout to support our
29889         new stringbuilder class.
29890         * marshal.c: Change marshalling to support the new layout of 
29891         string builder.
29892         * appdomain.c: increased version number because new layout of
29893         string builder.
29894
29895 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
29896
29897         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
29898         assembly name as an string instead of an AssemblyName, since it is
29899         easier to extract info from it.
29900
29901         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
29902         the culture subdirectories too. Fixes #52231.
29903
29904 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29905
29906         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
29907         It takes 2 new parameters with an optional name for the method to look
29908         for and case ignoring info.
29909
29910         * threadpool.c: removed unused variable.
29911
29912 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29913
29914         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
29915         It takes 2 new parameters with an optional name for the property to look
29916         for and case ignoring info.
29917         Fixes bug #52753.
29918
29919 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
29920
29921         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
29922         Fix #52451.
29923
29924 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29925
29926         * appdomain.c:
29927         * assembly.c: escape the uri before passing it to g_filename_from_uri.
29928         Fixes bug #52630.
29929
29930 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
29931
29932         * reflection.c: Add support for more than one unmanaged resource.
29933
29934         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
29935         in field->def_value, as done in all other cases.
29936
29937         * reflection.c (mono_reflection_get_custom_attrs): Add support for
29938         TypeBuilders.
29939
29940         * reflection.c (mono_reflection_create_runtime_class): Remove 
29941         errorneous assignment to klass->element_class, since it is already
29942         done in mono_reflection_setup_internal_class.
29943
29944 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29945
29946         * gc.c: added missing LeaveCriticalSection.
29947         * icall.c: indented a couple of lines.
29948         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
29949         if we call EndInvoke inside a callback. Fixes bug #52601.
29950
29951 2004-01-07  Martin Baulig  <martin@ximian.com>
29952
29953         * mono-debug-debugger.h
29954         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
29955
29956 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
29957
29958         * appdomain.c: Use messages in NotImplementedException.
29959
29960         * exception.c (mono_get_exception_not_implemented): Now this takes
29961         a message argument.
29962
29963         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
29964         exception instead of g_asserting an aborting when something is not
29965         implemented.
29966
29967         Add some inline docs.
29968
29969 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
29970
29971         * reflection.h: Update after changes to object layout.
29972
29973         * reflection.c: Implement saving of unmanaged aka win32 resources.
29974
29975         * appdomain.c: Bump version number.
29976
29977         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
29978         Handle missing domains gracefully.
29979
29980 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
29981
29982         * file-io.c : On Windows, there are much more invalid_path_chars.
29983
29984 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
29985
29986         * class.h, object.c: prepare for GetType () speedup.
29987
29988 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
29989
29990         * profiler.c: workaround for --profile null reference exception on
29991           cygwin. Patch by Patrik Torstensson.
29992
29993 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
29994
29995         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
29996         make work for unaligned access.
29997
29998 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
29999
30000         * class.c: small cleanup (class->fields [i] -> field).
30001         * image.c: check address of metadata is valid.
30002
30003 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
30004
30005         * assembly.h assembly.c (mono_assembly_loaded): New public function to
30006         search the list of loaded assemblies.
30007
30008         * reflection.c (mono_reflection_type_from_name): Use 
30009         mono_assembly_loaded instead of mono_image_loaded.
30010
30011         * reflection.c: Fix warnings.
30012
30013 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
30014
30015         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
30016         is dynamic. This is needed since an assembly can contain both dynamic and
30017         non-dynamic images.
30018
30019         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
30020         assembly->dynamic.
30021
30022         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
30023
30024         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
30025         to store modules loaded using AddModule.
30026
30027         * reflection.c (mono_image_fill_file_table): Generalize this so it works
30028         on Modules.
30029
30030         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
30031
30032         * reflection.c (mono_image_fill_export_table_from_module): New function to
30033         fill out the EXPORTEDTYPES table from a module.
30034
30035         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
30036         into a separate function. Also handle loaded non-dynamic modules.
30037
30038         * reflection.c (mono_image_basic_init): Fix memory allocation.
30039
30040         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
30041
30042         * assembly.c (mono_assembly_load_references): Make this public.
30043
30044 2003-12-19  Martin Baulig  <martin@ximian.com>
30045
30046         * class.c (mono_class_initialize_generic): Made this static, take
30047         a `MonoGenericInst *' instead of a `MonoClass *'.
30048         (mono_class_from_generic): Call mono_class_initialize_generic()
30049         unless we're already initialized or being called from
30050         do_mono_metadata_parse_generic_inst().
30051
30052         * class.h (MonoGenericInst): Added `initialized' and
30053         `init_pending' flags.
30054
30055         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
30056         `mono_class_init (gklass)' or mono_class_initialize_generic()
30057         here; set `generic_inst->init_pending' while parsing the
30058         `type_argv'.
30059
30060 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
30061
30062         * locales.c: include string.h for memxxx prototypes
30063
30064 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
30065
30066         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
30067         constructor when accessing literal fields.
30068
30069 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
30070
30071         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
30072
30073         * reflection.c (assembly_add_resource_manifest): New function to fill
30074         the MANIFESTRESOURCE table.
30075
30076         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
30077
30078         * reflection.h: Update to changes in class layout.
30079
30080         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
30081         Reenable call to mono_runtime_is_shutting_down ().
30082
30083         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
30084         determine if the runtime is shutting down.
30085
30086 2003-12-16  Jackson Harper <jackson@ximian.com>
30087
30088         * icall.c: comment out call to mono_runtime_is_shutting_down to
30089         fix build.
30090         
30091 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
30092
30093         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
30094         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
30095
30096 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
30097
30098         * reflection.c: move definition of swap_with_size
30099         to before its first call
30100
30101 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
30102
30103         * appdomain.c (mono_runtime_is_shutting_down): New public function.
30104
30105         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
30106         icall.
30107
30108         * object.c: Fix warnings.
30109
30110         * icall.c (ves_icall_Type_Get...): Only consider inherited static
30111         members if FlattenHierarchy is set.
30112
30113         * reflection.c (mono_image_add_decl_security): New function to emit
30114         declarative security.
30115
30116         * reflection.h reflection.c: Add support for declarative security.
30117
30118         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
30119         
30120 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
30121
30122         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
30123         
30124         * appdomain.c verify.c: Moved corlib version checking into its own
30125         function in appdomain.c since it needs to create vtables etc.
30126
30127 2003-12-13  Patrik Torstensson <p@rxc.se>
30128
30129         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
30130         instead of unwrapped server.
30131
30132 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
30133
30134         * verify.c (check_corlib): Fix field index.
30135
30136 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
30137
30138         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
30139         GetGacPath icall.
30140
30141 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
30142
30143         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
30144         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
30145         cope with sizeof(size_t) != sizeof(guint32).
30146
30147 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30148
30149         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
30150         in case of failure.
30151
30152 2003-12-10  Mark Crichton <crichton@gimp.org>
30153
30154         * icall.c: removed the GetNonZeroBytes.  We now handle this case
30155         in managed code.
30156
30157         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
30158
30159 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
30160
30161         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
30162         marked as deleted.
30163
30164 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
30165
30166         * verify.c (check_corlib): Handle the case when the version field is 
30167         initialized by a static constructor.
30168
30169 2003-12-08  Patrik Torstensson  <p@rxc.se>
30170
30171     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
30172
30173 2003-12-08  Martin Baulig  <martin@ximian.com>
30174
30175         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
30176         a MonoReflectionGenericParameter, also take the parameter index
30177         and name as arguments.
30178         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
30179         (ves_icall_MonoGenericParam_initialize): New interncall.
30180         (ves_icall_Type_make_byref_type): New interncall.
30181
30182         * reflection.h (MonoReflectionGenericParam): Derive from
30183         MonoReflectionType, not just from MonoObject.  Added `refobj' and
30184         `index' fields.
30185
30186         * reflection.c (mono_reflection_define_generic_parameter): Create
30187         and return a new MonoReflectionGenericParam; don't initialize the
30188         constraints here.
30189         (mono_reflection_initialize_generic_parameter): New public method;
30190         initializes the constraints and creates the `param->pklass'.
30191
30192 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
30193
30194         * reflection.h reflection.c: Use the new fields 'num_types', 
30195         'num_fields' and 'num_methods' to track the number of types etc.
30196
30197         * verify.c (check_corlib): Check corlib version number.
30198
30199 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
30200
30201         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
30202         function works on all methods.
30203
30204 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
30205
30206         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
30207         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
30208         the custom_type_info flag of the transparent proxy.
30209         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
30210         objects that supports IRemotingTypeInfo.
30211         * object.h: Added custom_type_info field in transparent proxy.
30212
30213 2003-12-06  Martin Baulig  <martin@ximian.com>
30214
30215         * class.c (mono_class_create_from_generic): Removed.
30216         (mono_class_from_generic): Check `ginst->klass' before doing
30217         anything else.  This is important to fully support "recursive"
30218         generic types.
30219
30220         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
30221         empty `generic_inst->klass' before doing anything else.
30222
30223 2003-12-06  Dick Porter  <dick@ximian.com>
30224
30225         * verify.c: 
30226         * object.h:
30227         * icall.c:
30228         * locales.c: Use C structs to access class fields.  Don't do a
30229         conversion between MonoString and UChar because both are
30230         platform-endian UTF-16.  Compare now takes startindex and count
30231         parameters.  Add a char overload for IndexOf.  Speed up the
30232         invariant string IndexOf.
30233
30234 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
30235
30236         * Makefile.am (monosn_LDADD): Fix parallel build.
30237
30238 2003-12-04  Martin Baulig  <martin@ximian.com>
30239
30240         * icall.c
30241         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
30242         (ves_icall_Type_make_array_type): New interncall.       
30243
30244 2003-12-04  Martin Baulig  <martin@ximian.com>
30245
30246         * locales.c: also change it in the !HAVE_ICU case.
30247
30248 2003-12-04  Dick Porter  <dick@ximian.com>
30249
30250         * icall.c:
30251         * locales.c: construct_compareinfo is now in CompareInfo, not
30252         CultureInfo.
30253
30254 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
30255
30256         * image.c (mono_image_load_file_for_image): Cache loaded images in the
30257         image->files array.
30258
30259         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
30260         table as well.
30261
30262         * assembly.c (mono_assembly_load_references): Only load references
30263         once.
30264
30265         * class.c (mono_class_from_name): Avoid linear search of the 
30266         EXPORTEDTYPE table.
30267
30268         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
30269
30270 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
30271
30272         * image.h (MonoImage): Add 'field_cache' field.
30273
30274         * loader.c (mono_field_from_token): Cache field lookups.
30275         
30276         * reflection.c (mono_module_get_object): Fix name property.
30277
30278         * icall.c (ves_icall_get_enum_info): Update after changes to 
30279         mono_metadata_get_constant_index ().
30280
30281         * icall.c: Get rid of get_type_info icall, use a separate icall for
30282         each type property to avoid needless memory allocations. Fixes #51514.
30283
30284         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
30285         to avoid needless binary searches.
30286
30287         * class.c (class_compute_field_layout): Move the initialization of
30288         field->def_value to mono_class_vtable ().
30289
30290         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
30291         non-corlib types.
30292
30293         * object.c (mono_object_allocate): Make it inline.
30294
30295         * object.c (mono_object_allocate_spec): Make it inline.
30296         
30297 2003-12-02  Dick Porter  <dick@ximian.com>
30298
30299         * locales.c (create_NumberFormat): NumberFormatInfo construction.
30300         Patch by Mohammad DAMT (mdamt@cdl2000.com).
30301
30302 2003-12-01  Dick Porter  <dick@ximian.com>
30303
30304         * threads.c: Fix signature and call in CreateMutex and
30305         CreateEvent.
30306
30307 2003-12-01  Dick Porter  <dick@ximian.com>
30308
30309         * icall.c: 
30310         * locales.c: Implement string compares and searching
30311
30312         * object.h: Add extra Thread field
30313
30314 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
30315
30316         * reflection.c (fixup_method): Add support for MonoCMethod.
30317
30318 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
30319
30320         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
30321
30322         * reflection.c (assembly_name_to_aname): Allow extra characters in
30323         assembly names. Fixes #51468.
30324
30325 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
30326
30327         * exception.c (mono_exception_from_name_domain): New helper function.
30328
30329         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
30330         exception object in the correct domain.
30331
30332         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
30333         formatting + make a copy a the input data.
30334
30335         * loader.c (mono_get_method_from_token): Methods which contain
30336         native code do not have entries in the ImplMap.
30337
30338         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
30339         Thanks to Gonzalo for spotting this.
30340         
30341         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
30342         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
30343
30344         * assembly.h (mono_assembly_load_from): Split the second part of 
30345         assembly loading into a new public function.
30346
30347         * exception.h (mono_get_exception_bad_image_format): New function.
30348
30349 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
30350
30351         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30352         Enumerate all modules inside a dynamic assembly. Fixes #51293.
30353         
30354         * icall.c: Add new icall for creating dynamic methods.
30355
30356         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
30357
30358         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
30359
30360         * reflection.c (mono_reflection_create_dynamic_method): New icall to
30361         create a dynamic method.
30362
30363         * reflection.c (resolve_object): New helper function.
30364
30365         * reflection.c: Generalize ReflectionMethodBuilder and the functions
30366         which manipulate it so they can also work on dynamic methods.
30367
30368         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
30369         creating the MonoReflectionMethodAux structure if it is not needed.
30370         
30371         * reflection.h verify.c: Update after changes to object layout.
30372
30373         * reflection.c (method_builder_encode_signature): Fix compilation on
30374         gcc 2.95.x.
30375
30376 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
30377
30378         * appdomain.h: Added support for context static fields. Added static_data
30379           field to MonoAppContext and renamed thread_static_fields to a more
30380           generic special_static_fields in MonoAppDomain, since it can now contain
30381           context static fields.
30382         * domain.c: Updated hashtable name.
30383         * object.c: Replaced field_is_thread_static() for a more generic
30384           field_is_special_static() which also checks for context static attribute.
30385           In mono_class_vtable(), added support for static context fields.
30386         * threads.c: Changed methods that manage thread static fields to more
30387           generic methods so they can be reused both for thread and context static
30388           data.
30389         * threads.h: Declared some new methods.
30390
30391 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
30392
30393         * reflection.h: Update after changes to the managed types.
30394
30395         * reflection.c (encode_custom_modifiers): New helper function.
30396
30397         * reflection.c (method_encode_signature): Emit custom modifiers.
30398
30399         * reflection.c (field_encode_signature): Emit custom modifiers.
30400
30401 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
30402
30403         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
30404
30405         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
30406         implementation.
30407
30408         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
30409         icall.
30410
30411         * object.c (mono_field_get_value_object): New function.
30412
30413         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
30414         specific.
30415
30416 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
30417
30418         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
30419         return a preallocated out-of-memory exception instance.
30420
30421         * object.c (out_of_memory): Use the new function.
30422
30423         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
30424         flag is before the custom modifiers. Fixes #49802.
30425
30426 2003-11-16  Martin Baulig  <martin@ximian.com>
30427
30428         * class.c (mono_class_is_open_constructed_type): Implemented the
30429         MONO_TYPE_GENERICINST case.
30430
30431 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
30432
30433         * assembly.c (mono_assembly_fill_assembly_name): New function to
30434         fill out the MonoAssemblyName structure.
30435         (mono_assembly_open): Use the new function.
30436
30437         * icall.c (fill_reflection_assembly_name): New helper function.
30438
30439         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
30440         new function.
30441
30442         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
30443
30444 2003-11-15  Martin Baulig  <martin@ximian.com>
30445
30446         * class.c (mono_class_is_open_constructed_type): New public
30447         function; checks whether a type is an open constructed type,
30448         ie. whether it still contains type parameters.
30449         (mono_class_inflate_generic_type): If we're a type parameter and
30450         the inflated type is also a MONO_TYPE_(M)VAR, return the original
30451         type.
30452
30453         * class.h (MonoGenericInst): Added `guint32 is_open'.
30454
30455         * loader.c (method_from_methodspec): Check whether we're an open
30456         or closed constructed type and set `ginst->is_open'.
30457
30458         * reflection.c (mono_reflection_bind_generic_parameters): Check
30459         whether we're an open or closed constructed type and set
30460         `ginst->is_open'.
30461         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
30462         from open constructed types.
30463
30464 2003-11-15  Martin Baulig  <martin@ximian.com>
30465
30466         * reflection.c (mono_reflection_bind_generic_parameters): If we're
30467         a generic instance (instead of a generic type declaration) with
30468         unbound generic parameters, bind them to our actual types.
30469
30470 2003-11-14  Martin Baulig  <martin@ximian.com>
30471
30472         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
30473
30474         * reflection.c (mono_reflection_bind_generic_parameters): If we're
30475         an interface type, populate `res->interfaces' with instantiated
30476         versions of all the interfaces we inherit.
30477
30478 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
30479
30480         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
30481         when MONO_PATH is set but doesn't contain the install dir.
30482
30483 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30484
30485         * icall.c:
30486         (ves_icall_Type_GetInterfaces): don't return an interface twice when
30487         it's also implemented in base classes. Fixes bug #50927.
30488
30489 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
30490
30491         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
30492         if this method is called from a finalizer. Fixes #50913.
30493
30494 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
30495
30496         * threads.c: Implement VolatileRead/VolatileWrite
30497
30498         * icall.c: Add new icalls for VolatileRead/VolatileWrite
30499
30500 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30501
30502         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
30503         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
30504         2.95.3.
30505
30506         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
30507         from Peter Ross (pro@missioncriticalit.com).
30508         
30509 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
30510
30511         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
30512
30513 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30514
30515         * assembly.c (mono_assembly_load_references): Disable check because it
30516         triggers on older corlibs which lots of people have.
30517
30518 2003-11-12  Jackson Harper  <jackson@ximian.com>
30519
30520         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
30521         load corlib.dll if mscorlib.dll is not found.
30522         * assembly.h: Remove corlib name define.
30523         * class.c:
30524         * domain.c:
30525         * image.c: Change corlib name to mscorlib.
30526         
30527 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30528
30529         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
30530
30531 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
30532
30533         * appdomain.h: Added loader_optimization here to sync with the C#
30534         code, and add disallow_binding_redirects field.
30535
30536 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
30537
30538         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
30539
30540         * reflection.c (mono_image_build_metadata): Fix crash on modules
30541         with no types.
30542
30543         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
30544
30545         * icall.c (ves_icall_get_method_info): Return callingConvention as
30546         well.
30547
30548         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
30549         namespaces from the EXPORTEDTYPE table as well.
30550
30551         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
30552         from all modules inside the assembly.
30553         
30554 2003-11-11  Martin Baulig  <martin@ximian.com>
30555
30556         * reflection.c (mono_reflection_bind_generic_parameters): Make
30557         this work for interfaces.
30558
30559 2003-11-11  Martin Baulig  <martin@ximian.com>
30560
30561         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
30562
30563 2003-11-11  Martin Baulig  <martin@ximian.com>
30564
30565         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
30566         "MonoInflatedMethod" and "MonoInflatedCtor".
30567
30568 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
30569
30570         * reflection.c (resolution_scope_from_image): Use the assembly table
30571         from the manifest module, since other modules don't have it.
30572
30573         * debug-helpers.c (mono_type_full_name): New helper function.
30574
30575         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
30576
30577         * image.c (mono_image_load_file_for_image): New public function which
30578         is a replacement for the load_file_for_image in class.c.
30579
30580         * assembly.c (mono_assembly_load_module): A wrapper for the function
30581         above which does assembly association and reference loading too.
30582
30583         * class.c (mono_class_from_name): Call mono_assembly_load_module.
30584
30585 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30586
30587         * appdomain.c: not all of the attributes for the full assembly name
30588         are required and the order doesn't matter. Fixes bug #50787.
30589
30590 2003-11-10  Dick Porter  <dick@ximian.com>
30591
30592         * locales.c: Use platform-endian UTF16
30593
30594 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
30595
30596         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
30597         
30598 2003-11-10  Martin Baulig  <martin@ximian.com>
30599
30600         * metadata.c
30601         (mono_metadata_load_generic_params): Make this actually work.
30602
30603         * reflection.c (mono_reflection_bind_generic_parameters): If our
30604         parent is a generic instance, pass all the `types' to it, no
30605         matter whether it has the same number of type parameters or not.
30606
30607 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
30608
30609         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
30610
30611         * assembly.c (mono_assembly_load_references): Move the image<->assembly
30612         assignment code to this function so it gets called recursively for all
30613         modules.
30614
30615         * image.c (load_modules): Remove the assembly assignment since it is
30616         now done by mono_assembly_load_references.
30617         
30618         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30619         Add 'module' argument.
30620         (mono_module_get_types): New helper function.
30621         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
30622
30623 2003-11-08  Martin Baulig  <martin@ximian.com>
30624
30625         * class.c (mono_class_inflate_generic_method): Interface method
30626         don't have a header.
30627
30628         * reflection.c (mono_image_get_methodspec_token): Take an
30629         additional `MonoGenericInst *' argument instead of reading it from
30630         the header; this is necessary to support interfaces.
30631         (mono_image_create_token): Pass the `MonoGenericInst *' from the
30632         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
30633         (inflated_method_get_object): Take an additional `MonoGenericInst *'
30634         argument.
30635
30636         * reflection.h (MonoReflectionInflatedMethod): Added
30637         `MonoGenericInst *ginst'.
30638
30639 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
30640
30641         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
30642
30643 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
30644
30645         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
30646
30647 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
30648
30649         * reflection.c 
30650         (reflection_methodbuilder_from_method_builder):
30651         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
30652         initialize a ReflectionMethodBuilder structure.
30653         (mono_image_get_methodbuilder_token):
30654         (mono_image_get_ctorbuilder_token): New functions to emit memberref
30655         tokens which point to types in another module inside the same assembly.
30656
30657         * reflection.c: Use the new helper functions.
30658         
30659         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
30660
30661         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
30662         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
30663
30664         * reflection.c (resolution_scope_from_image): Emit a moduleref if
30665         neccesary.
30666
30667         * reflection.c (mono_image_build_metadata): Emit metadata only for the
30668         current module. Emit the manifest only for the main module.
30669
30670         * reflection.c (mono_image_create_token): Add assertion when a 
30671         memberref needs to be created.
30672
30673         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
30674
30675         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
30676         larger buffer for the custom attribute blob. Fixes #50637.
30677         
30678 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30679
30680         * threadpool.c: notify listener on async processing handles after
30681         invoking the async callback. Thanks to Zoltan.
30682
30683 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30684
30685         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
30686         avoid code duplication.
30687
30688         * reflection.h (MonoDynamicImage): New type which is currently unused,
30689         but will be used through the ref.emit code in place of 
30690         MonoDynamicAssembly.
30691
30692         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
30693         object layout.
30694
30695         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
30696         a MonoDynamicImage instead of just a MonoImage.
30697         
30698         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
30699         icalls to ModuleBuilder but keep their semantics, so they will work
30700         with moduleb->assemblyb. This will change later.
30701         
30702 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30703
30704         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
30705         object layout.
30706
30707         * reflection.c (mono_image_build_metadata): Avoid creation of a default
30708         main module, since it is now done by the managed code.
30709
30710 2003-11-03  Martin Baulig  <martin@ximian.com>
30711
30712         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
30713         `ginst->klass' here.
30714         (method_encode_methodspec): Don't use the `ginst->generic_method's
30715         klass if it's a generic instance, use `ginst->klass' in this case.
30716
30717 2003-11-03  Martin Baulig  <martin@ximian.com>
30718
30719         * reflection.c (mono_image_get_generic_method_param_info):
30720         Removed, use mono_image_get_generic_param_info() instead.
30721         (mono_image_get_type_info): Write the GenericParam table before
30722         the Method table.  This is neccessary because in the GenericParam
30723         table, type parameters of the class (ie. '!0' etc.) must come
30724         before the ones from its generic methods (ie. '!!0' etc).
30725
30726 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30727
30728         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
30729
30730 2003-11-02  Martin Baulig  <martin@ximian.com>
30731
30732         * reflection.c (create_generic_typespec): Take a
30733         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
30734         the generic parameters from it.
30735
30736 2003-11-02  Martin Baulig  <martin@ximian.com>
30737
30738         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
30739         instead of a `MonoClassField *' since we just need the type.
30740         (create_generic_typespec): New static function.  Creates a
30741         TypeSpec token for a generic type declaration.
30742         (mono_image_get_generic_field_token): New static function.
30743         (mono_image_create_token): If we're a FieldBuilder in a generic
30744         type declaration, call mono_image_get_generic_field_token() to get
30745         the token.
30746
30747 2003-11-02  Martin Baulig  <martin@ximian.com>
30748
30749         * reflection.h
30750         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
30751         `MonoReflectionGenericInst *declaring_type' and
30752         `MonoReflectionGenericInst *reflected_type' fields.
30753
30754         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
30755         `MonoReflectionGenericInst *declaring_type' and a
30756         `MonoReflectionGenericInst *reflected_type' argument instead of a
30757         single `MonoReflectionGenericInst *type' one.  Set
30758         `res->declaring_type' and `res->reflected_type' from them.
30759         (mono_reflection_inflate_field): Likewise.      
30760
30761 2003-11-02  Martin Baulig  <martin@ximian.com>
30762
30763         * class.c (mono_class_setup_vtable): Don't store generic methods
30764         in the vtable.  
30765
30766 2003-11-02  Martin Baulig  <martin@ximian.com>
30767
30768         * reflection.h (MonoReflectionGenericInst): Added
30769         `MonoReflectionType *declaring_type'.
30770
30771         * reflection.c (mono_reflection_bind_generic_parameters): Use
30772         `if (tb->parent)' instead of `klass->parent'.
30773
30774 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
30775
30776         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
30777         with an empty ASSEMBLY table.
30778
30779         * reflection.c (mono_image_build_metadata): Avoid using the same loop
30780         variable in the inner and outer loops.
30781
30782 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
30783
30784         * metadata.h (mono_metadata_make_token): Put parentheses around macro
30785         argument.
30786
30787         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
30788         
30789         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
30790         icalls. Instead, do everything in managed code. This is needed since
30791         it is hard to restore the original domain etc. in unmanaged code in the
30792         presence of undeniable exceptions.
30793
30794         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
30795         New icalls to push and pop appdomain refs.
30796
30797 2003-10-31  Martin Baulig  <martin@ximian.com>
30798
30799         * class.c (inflate_generic_type): Renamed to
30800         mono_class_inflate_generic_type() and made it public.
30801
30802         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
30803         New interncall.
30804
30805         * loader.c (mono_field_from_memberref): Also set the retklass for
30806         typespecs.
30807
30808         * fielder.c (mono_image_get_inflated_field_token): New static
30809         method; creates a metadata token for an inflated field.
30810         (mono_image_create_token, fixup_method): Added support for
30811         "MonoInflatedField".
30812         (fieldbuilder_to_mono_class_field): New static function.
30813         (mono_reflection_inflate_field): New public function.
30814
30815         * reflection.h
30816         (MonoReflectionGenericInst): Added `MonoArray *fields'.
30817         (MonoReflectionInflatedField): New typedef.     
30818
30819 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
30820
30821         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
30822         for Solaris and other platforms without s6_addr16
30823
30824 2003-10-30  Martin Baulig  <martin@ximian.com>
30825
30826         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
30827         argument instead of two.
30828         (mono_class_inflate_generic_signature): Likewise.
30829         (inflate_generic_header): Likewise.
30830         (mono_class_inflate_generic_method): Likewise.  In addition, if
30831         `ginst->klass' is set, it becomes the new `method->klass'.
30832
30833         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
30834         field.
30835
30836         * reflection.c (encode_generic_method_sig): Write a 0xa as the
30837         first byte. [FIXME]
30838         (method_encode_methodspec): If we have generic parameters, create
30839         a MethodSpec instead of a MethodRef.
30840         (fixup_method): Added support for "MonoInflatedMethod" and
30841         "MonoInflatedCtor".
30842         (mono_image_create_token): Added support for "MonoInflatedMethod"
30843         and "MonoInflatedCtor".
30844         (inflated_method_get_object): New static function; returns a
30845         managed "System.Reflection.MonoInflatedMethod" object.
30846         (mono_reflection_bind_generic_method_parameters): Return a
30847         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
30848         (mono_reflection_inflate_method_or_ctor): Likewise.
30849         (mono_image_get_generic_method_param_info): Initialize unused
30850         fields to zero.
30851         (mono_image_get_generic_param_info): Likewise.
30852
30853         * reflection.h (MonoReflectionInflatedMethod): New public
30854         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
30855         "S.R.MonoInflatedCtor" classes.
30856
30857         * loader.c (method_from_memberref): If we're a TypeSpec and it
30858         resolves to a generic instance, inflate the method.
30859
30860 2003-10-28  Dick Porter  <dick@ximian.com>
30861
30862         * object.c (mono_runtime_run_main): Convert command-line arguments
30863         into utf8, falling back to the user's locale encoding to do so.
30864
30865 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
30866
30867         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
30868         at this time.
30869
30870         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
30871
30872         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
30873         up icalls at method definition time. Partially fixes #33569.
30874
30875 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
30876
30877         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
30878         marshalling of arrays. Fixes #50116.
30879
30880         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
30881
30882         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
30883         points to a vtable in the dying appdomain.
30884
30885         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
30886         listeners into unmanaged code inside the lock.
30887
30888         * object.c (mono_class_vtable): Turn off typed allocation in non-root
30889         domains and add some comments.
30890
30891 2003-10-25  Martin Baulig  <martin@ximian.com>
30892
30893         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
30894
30895         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
30896
30897         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
30898         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
30899         currently parsing.  Create the generic class and store it in
30900         `generic_inst->klass' before parsing the type arguments.  This is
30901         required to support "recursive" definitions; see mcs/tests/gen-23.cs
30902         for an example.
30903         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
30904         to support recursive typespec entries.
30905
30906         * class.c (mono_class_setup_parent): If our parent is a generic
30907         instance, we may get called before it has its name set.
30908         (mono_class_from_generic): Splitted into
30909         mono_class_create_from_generic() and mono_class_initialize_generic().
30910
30911 2003-10-25  Martin Baulig  <martin@ximian.com>
30912
30913         * icall.c (ves_icall_Type_BindGenericParameters): Return a
30914         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
30915         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
30916         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
30917
30918         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
30919         (create_typespec): Likewise.
30920         (mono_reflection_bind_generic_parameters): Return a
30921         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
30922         (mono_reflection_inflate_method_or_ctor): New public function.
30923
30924         * reflection.h (MonoReflectionGenericInst): New typedef.        
30925
30926 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
30927
30928         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
30929         inside the domain lock. Fixes #49993.
30930         
30931         * object.c (mono_class_vtable): When typed allocation is used, 
30932         allocate vtables in the GC heap instead of in the mempool, since the
30933         vtables contain GC descriptors which are used by the collector even
30934         after the domain owning the mempool is unloaded.
30935
30936         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
30937
30938         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
30939         reflect what it does. Also invalidate mempools instead of freeing
30940         them if a define is set.
30941
30942         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
30943         of the appdomain.
30944         
30945         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
30946         hold the finalizable objects in this domain.
30947
30948         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
30949         appdomain.
30950
30951         * appdomain.c (mono_domain_set): New function to set the current
30952         appdomain, but only if it is not being unloaded.
30953
30954         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
30955         appdomain which is being unloaded.
30956         
30957         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
30958         unloading of the root appdomain.
30959
30960         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
30961         icall to execute a method in another appdomain. Intended as a 
30962         replacement for InternalSetDomain, which can confuse the code 
30963         generation in the JIT.
30964
30965         * appdomain.c (mono_domain_is_unloading): New function to determine
30966         whenever an appdomain is unloading.
30967
30968         * appdomain.c (mono_domain_unload): New function to correctly unload
30969         an appdomain.
30970
30971         * assembly.c (mono_assembly_load_references): Check that an assembly
30972         does not references itself.
30973
30974         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
30975         domain manually, it asks the finalizer thread to do it, then waits for
30976         the result. Also added a timeout.
30977
30978         * icall.c: Register the new icalls.
30979
30980         * threads.h threads.c: Export the mono_gc_stop_world and 
30981         mono_gc_start_world functions.
30982         
30983         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
30984         function to fill out the mempool with 0x2a.
30985
30986 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
30987
30988         * reflection.h (MonoReflectionMethodAux): New structure to store
30989         information which is rarely used, thus is not in the MonoMethod
30990         structure.
30991
30992         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
30993         store the aux info.
30994
30995         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
30996         and marshalling info into the aux structure.
30997
30998         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
30999         from the aux structure.
31000
31001         * loader.c (mono_method_get_param_names): Retrieve the param names from
31002         the aux structure.
31003         
31004 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
31005
31006         * exception.h exception.c: Add AppDomainUnloadedException && fix 
31007         warning.
31008
31009 2003-10-21  Dick Porter  <dick@ximian.com>
31010
31011         * socket-io.c
31012         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
31013         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
31014
31015 2003-10-21  Martin Baulig  <martin@ximian.com>
31016
31017         * reflection.c (mono_reflection_bind_generic_parameters):
31018         `klass->parent' is NULL for interfaces.
31019
31020 2003-10-21  Martin Baulig  <martin@ximian.com>
31021
31022         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
31023
31024 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
31025
31026         * exception.c (mono_exception_from_name_msg): New helper function for
31027         creating exceptions and initializing their message field.
31028
31029         * exception.c: Simplify functions using the new helper.
31030
31031         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
31032         New function.
31033
31034         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
31035         mono_raise_exception, since otherwise gcc doesn't generate the function
31036         epilog for raise_exception, confusing the stack unwinding in the JIT.
31037         Fixes #45043.
31038
31039         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
31040         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
31041         Fixes #49499.
31042
31043 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31044
31045         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
31046         utf8.
31047
31048 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
31049
31050         * icall.c: Removed GetUninitializedObject method because
31051           AllocateUninitializedClassInstance does the same.
31052
31053 2003-10-18  Martin Baulig  <martin@ximian.com>
31054
31055         * class.c (inflate_generic_signature): Renamed to
31056         mono_class_inflate_generic_signature() and made it public.
31057         (my_mono_class_from_generic_parameter): New static function; if we
31058         don't already have the generic parameter's MonoClass, create a
31059         very simple one which is just used internally in the runtime and
31060         not passed back to managed code.
31061
31062         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
31063
31064         * metadata.h (MonoMethodSignature): Moved the
31065         `MonoGenericParam *gen_params' to the MonoMethodHeader.
31066         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
31067
31068         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
31069         ves_icall_MonoMethod_GetGenericArguments(); this is now an
31070         interncall on the MonoMethod class, not on MethodInfo.
31071         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
31072         calling mono_reflection_bind_generic_method_parameters() directly.
31073
31074         * loader.c (mono_method_get_signature): If this is a MethodSpec;
31075         return the already computed `method->signature'.
31076         (method_from_methodspec): New static function to load a method
31077         from a MethodSpec entry.
31078         (mono_get_method_from_token): Call the new method_from_methodspec()
31079         for MethodSpec tokens.  
31080         (mono_get_method_from_token): If we're a generic method, load the
31081         type parameters.
31082
31083         * reflection.c (mono_image_get_memberref_token): Allow
31084         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
31085         table.
31086         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
31087         (mono_image_create_token): First check whether it's a generic
31088         method (so we'd need to create a MethodSpec), then do the other
31089         two alternatives.
31090         (mono_reflection_bind_generic_method_parameters): Return a
31091         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
31092         called directly from the interncall.
31093
31094 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
31095
31096         * reflection.c (load_public_key): Move loading of the public key
31097         into managed code.
31098
31099         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
31100
31101         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
31102         fields.
31103
31104         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
31105         culture, hash_alg and public_key. Fixes #49555.
31106
31107 2003-10-17  Martin Baulig  <martin@ximian.com>
31108
31109         * class.h (MonoGenericInst): Moved this declaration here and added
31110         `MonoMethod *generic_method'.
31111
31112         * icall.c
31113         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
31114         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
31115
31116         * metadata.c (mono_metadata_type_equal): Two types of
31117         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
31118         index; ie. don't compare the address of the `MonoGenericParam'
31119         structure.
31120         (mono_metadata_load_generic_params): Removed the `MonoMethod
31121         *method' argument.
31122
31123         * metadata.h (MonoGenericInst): Moved declaration to class.h.
31124         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
31125
31126         * reflection.c (method_encode_signature): Encode the number of
31127         generic parameters.
31128         (encode_generic_method_sig): New static function.
31129         (method_encode_methodspec): New static function; creates an entry
31130         in the MethodSpec table for a generic method.
31131         (mono_image_get_methodspec_token): New static function.
31132         (mono_image_create_token): Call mono_image_get_methodspec_token()
31133         for generic methods.
31134         (mono_reflection_bind_generic_method_parameters): New public
31135         function.  Instantiates a generic method.
31136
31137 2003-10-16  Martin Baulig  <martin@ximian.com>
31138
31139         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
31140         *gen_params' here from MonoMethodHeader.
31141
31142         * metadata.c (mono_metadata_parse_method_signature): If we have
31143         generic parameters, initialize `method->gen_params' and then set
31144         the correct `type->data.generic_param' in all the parameters.
31145
31146 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
31147
31148         * threads.c (mono_threads_get_default_stacksize): New function to 
31149         return the default stacksize.
31150
31151         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
31152         termination of the finalizer thread, since the previous method had
31153         race conditions. Fixes #49628.
31154
31155         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
31156         as for the other managed threads.
31157
31158 2003-10-16  Martin Baulig  <martin@ximian.com>
31159
31160         * class.c (inflate_generic_signature): Copy `generic_param_count'
31161         and `gen_params'.
31162
31163         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
31164         New interncall.
31165
31166         * metadata.c (mono_metadata_parse_method_signature): Actually set
31167         the `method->generic_param_count' here.
31168         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
31169
31170 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
31171
31172         * object.h: Add a new field to TypedRef to simplify the implementation
31173         of the REFANY opcodes in the JIT.
31174
31175         * icall.c: Make use of the new field.
31176
31177         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
31178         dynamically.
31179
31180 2003-10-15  Martin Baulig  <martin@ximian.com>
31181
31182         * class.c (mono_class_from_gen_param): Renamed to
31183         mono_class_from_generic_parameter() and moved most of the
31184         functionality from mono_reflection_define_generic_parameter()
31185         here; ie. we create a "real" class here.
31186         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
31187         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
31188         previously been called.
31189
31190         * class.h (MonoGenericParam): Moved the declaration of this struct
31191         here from metadata.h and added `MonoMethod *method'.
31192
31193         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
31194         interncall.
31195
31196         * loader.c (mono_get_method_from_token): If we have any generic
31197         parameters, call mono_metadata_load_generic_params() to read them
31198         from the MONO_TABLE_GENERICPAR.
31199
31200         * metadata.c (mono_metadata_load_generic_params): Added
31201         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
31202
31203         * metadata.h (MonoMethodSignature): Replaced
31204         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
31205         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
31206
31207         * reflection.c (mono_reflection_define_generic_parameter): Moved
31208         most of the functionality into the new
31209         mono_class_from_generic_parameter(); set the `method' field if
31210         we're a method parameter.       
31211
31212 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
31213
31214         * marshal.c (emit_struct_conv): if native size is 0
31215         emit no code.
31216
31217 2003-10-14  Martin Baulig  <martin@ximian.com>
31218
31219         * icall.c: The generics API has changed in the spec since it was
31220         added to System.Type; these modifications make it match the spec
31221         again.
31222         (ves_icall_Type_GetGenericParameters): Renamed to
31223         `ves_icall_Type_GetGenericArguments'.
31224         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
31225         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
31226         `ves_icall_MonoType_get_HasGenericArguments'.
31227         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
31228         `ves_icall_MonoType_get_IsGenericParameter'.
31229         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
31230         this is no interncall anymore.
31231         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
31232         `ves_icall_TypeBuilder_get_IsGenericParameter'.
31233
31234 2003-10-14  Martin Baulig  <martin@ximian.com>
31235
31236         * reflection.c (mono_reflection_bind_generic_parameters): Also
31237         inflate generic methods if we're reading the class from IL.
31238
31239 2003-10-13  Martin Baulig  <martin@ximian.com>
31240
31241         * reflection.c (mono_reflection_define_generic_parameter): This
31242         method isn't called directly from the icall anymore; take a
31243         `MonoReflectionAssemblyBuilder *' so we can use this for type and
31244         method generic parameters.
31245         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
31246         (method_builder_encode_signature): Encode generic parameters.
31247         (mono_image_get_method_info): Write generic params to the
31248         MONO_TABLE_GENERICPARAM table.
31249
31250         * reflection.h (MonoReflectionMethodBuilder): Added
31251         `MonoArray *generic_params'.
31252
31253         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
31254
31255         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
31256         wrapper for mono_reflection_define_generic_parameter().
31257         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
31258
31259 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
31260
31261         * marshal.h: Add missing function to fix build.
31262
31263         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
31264         the SetLastError pinvoke attribute.
31265
31266         * marshal.c (mono_marshal_set_last_error): New helper function called
31267         by the generated code.
31268         
31269         * marshal.c (mono_mb_emit_branch): New helper function.
31270
31271         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
31272
31273         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
31274         classes as parameters and return values of delegates. Fixes #29256. 
31275
31276 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
31277
31278         * locales.c: use gint32 in non HAVE_ICU case
31279
31280 2003-10-11  Martin Baulig  <martin@ximian.com>
31281
31282         * mono-debug.c (mono_debug_add_method): Added a workaround for
31283         bug #48591.
31284
31285 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
31286
31287         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
31288         delegates passed to native code must use the STDCALL calling 
31289         convention. Fixes #35987.
31290
31291 2003-10-10  Martin Baulig  <martin@ximian.com>
31292
31293         * class.c (inflate_generic_type): If we're inflating for a generic
31294         type instance (and not for a generic method), return
31295         MONO_TYPE_MVAR unchanged.
31296
31297 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31298
31299         * string-icalls.c: Join ignores null strings in the source array.
31300         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
31301         * threads.c: GetAvailableTheads is slightly more accurate.
31302
31303 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
31304
31305         * threads.h threads.c : add mono_threads_set_default_stacksize
31306         and pass default to CreateThread calls.
31307
31308 2003-10-09  Dick Porter  <dick@ximian.com>
31309
31310         * icall.c:
31311         * locales.h:
31312         * locales.c: Internal calls for constructing CultureInfo and
31313         related objects from libicu (if its available.)
31314
31315 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
31316
31317         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
31318
31319 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31320
31321         * threadpool.c: added an argument to async_invoke_thread that is the
31322         item to process, pass the MonoAsyncResult to the thread start function
31323         when creating a new thread. This way we don't need to acquire any lock
31324         when we're creating a new thread. Readded a semaphore for faster
31325         response times (instead of that Sleep i added).
31326
31327 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
31328
31329         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
31330         get daylight change dates better on Windows, fix handling
31331         of platforms without tm_gmtoff.
31332
31333 2003-10-06  Martin Baulig  <martin@ximian.com>
31334
31335         * class.c (inflate_generic_method): Renamed to
31336         mono_class_inflate_generic_method() and made public.
31337         (mono_class_init): Don't inflate the generic methods here.
31338         (mono_class_from_generic): Added `gboolean inflate_methods'
31339         argument.  Inflate the methods here.
31340
31341         * loader.c (mono_method_get_param_names): Ignore instances of
31342         generic types for the moment.
31343
31344         * reflection.c (fixup_method): Added support for inflated methods.
31345         (mono_image_create_token): Use mono_image_get_methodref_token()
31346         for inflated methods.
31347         (mono_custom_attrs_from_param): Ignore instances of generic types
31348         for the moment.
31349         (mono_reflection_bind_generic_parameters): New public function.
31350         Moved all the functionality from
31351         ves_icall_Type_BindGenericParameters() here and added support for
31352         dynamic types.
31353         (mono_reflection_define_generic_parameter): Initialize
31354         `klass->methods' here.
31355
31356         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
31357         functionality into mono_reflection_define_generic_parameter().
31358         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
31359         TypeBuilder, return that TypeBuilder.
31360
31361 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31362
31363         * appdomain.c: removed mono_delegate_semaphore.
31364
31365         * threadpool.c:
31366         (mono_thread_pool_add): moved hash table creation inside and the thread 
31367         creation outside of the critical region.
31368         (mono_thread_pool_finish): removed obsolete code.
31369         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
31370         continue or exit the thread depending on the queue.
31371
31372 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
31373
31374         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
31375         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
31376         handle more bool marshalling options
31377
31378 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
31379
31380         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
31381         arrays of structs. Also add a more descriptive error message when
31382         a structure member is marshalled as LPArray.
31383
31384 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
31385
31386         * marshal.c (mono_marshal_get_native_wrapper): Add support for
31387         marshalling arrays of complex types. Fixes #29098. Also remove an
31388         usused and incomplete function.
31389
31390 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
31391
31392         * gc.c: report heap_size - free_bytes as total memory allocated
31393         (bug#49362).
31394
31395 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
31396
31397         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
31398         fix timezone handling problems on Windows.
31399         
31400         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
31401         asserts when the year is outside the range handled by ms the functions.
31402
31403         * class.c (setup_interface_offsets): If the class is an interface,
31404         fill out its interface_offsets slot.
31405
31406 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31407
31408         * threadpool.c: mark threadpool threads as background.
31409
31410 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
31411
31412         * decimal.c - define DECINLINE to nothing if not using GCC
31413
31414 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
31415
31416         * assembly.c: More refcount fixes.
31417
31418 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31419
31420         * string-icalls.c: if we're not trimming, return the same string.
31421         When not splitting, don't create a new string.
31422
31423 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31424
31425         * image.c:
31426         (mono_image_open): increment the ref_count inside the critical section.
31427
31428 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
31429
31430         * image.c (mono_image_open): Fix reference counting bug.
31431
31432 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
31433
31434         * marshal.c (mono_marshal_type_size) struct alignment changed for 
31435         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
31436         64bits. Avoid leak in mono_marshal_get_native_wrapper when
31437         mono_lookup_pinvoke_call throws.        
31438
31439 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
31440
31441         * reflection.c (mono_reflection_parse_type): Fix #49114.
31442
31443         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
31444         temporary workaround for cygwin header problem.
31445
31446         * object.c (mono_object_isinst): Synchronize this with the code
31447         generated by the JIT for casts.
31448
31449 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
31450
31451         * reflection.c (encode_type): Fix #38332.
31452
31453 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
31454
31455         * marshal.c (mono_marshal_method_from_wrapper): New function to return
31456         the original method from the wrapper method.
31457
31458 2003-09-25  Martin Baulig  <martin@ximian.com>
31459
31460         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
31461         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
31462         (ves_icall_Type_get_IsGenericInstance): New interncall.
31463
31464 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
31465
31466         * object.c: fix cast warning in big endian code.
31467
31468 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
31469
31470         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
31471         
31472 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31473
31474         * assembly.c: don't call check_env from mono_assembly_load. It's
31475         already done once in mono_assemblies_init and may cause headaches when
31476         multiple threads are loading assemblies.
31477
31478 2003-09-19  Martin Baulig  <martin@ximian.com>
31479
31480         * reflection.c (mono_reflection_define_generic_parameter): Don't
31481         allocate `klass->methods', set `klass->flags' to
31482         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
31483
31484 2003-09-18  Martin Baulig  <martin@ximian.com>
31485
31486         * class.c (mono_class_init): Don't create `class->methods' if it's
31487         already initialized.
31488
31489         * metadata.c (mono_metadata_load_generic_params): Make this
31490         actually work.
31491
31492         * reflection.c (mono_reflection_define_generic_parameter): Set
31493         parent class and interfaces from the constraints.
31494
31495         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
31496         to keep this struct in sync with the declaration in TypeBuilder.cs.
31497
31498 2003-09-17  Martin Baulig  <martin@ximian.com>
31499
31500         * metadata.h (MonoType): Replaced the data's `int type_param'
31501         field with `MonoGenericParam *generic_param'.
31502         (MonoGenericParam): Added `MonoClass *klass'.
31503
31504         * class.c (mono_class_from_gen_param): Removed the
31505         `MonoImage *image' and `int type_num' arguments.
31506
31507         * metadata.c (mono_metadata_parse_generic_param): New static
31508         method; creates a MonoGenericParam which just contains the index.
31509         (do_mono_metadata_parse_type): Call
31510         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
31511         MONO_TYPE_MVAR.
31512
31513         * reflection.c (mono_image_typedef_or_ref): Generic type
31514         parameters may be in the same assembly, but never use a typedef
31515         for them.
31516         (mono_reflection_define_generic_parameter): We're now creating a
31517         "real" class for the type parameter; it's now safe to call
31518         mono_class_from_mono_type() on the class'es type, it'll do the
31519         right thing.
31520
31521 2003-09-16  Martin Baulig  <martin@ximian.com>
31522
31523         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
31524         `symfile->range_entry_size' and `symfile->class_entry_size' here;
31525         the `symfile' data structure must be fully initialized before it
31526         gets added to the table.
31527
31528 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
31529
31530         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
31531
31532         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
31533         class init trampolines.
31534
31535 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
31536
31537         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
31538         to the built-in profiler to turn off time and allocation profiling
31539         respectively.
31540
31541 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
31542
31543         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
31544         g_direct_equal.
31545
31546         * debug-helpers.c (mono_method_full_name): Print the wrapper type
31547         in human readable form.
31548
31549 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
31550
31551         * reflection.c icall.c: Fixed warnings.
31552
31553         * image.c (load_class_names): Use a temporary hash table to hold the
31554         namespaces in order to avoid doing many string comparisons.
31555
31556         * image.h: Fix typo.
31557
31558         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
31559         Pass NULL instead of g_direct_equal to the GHashTable constructor 
31560         since the NULL case is short-circuited inside g_hash_table_lookup, 
31561         leading to better performance.  
31562
31563         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
31564         obtain the first custom attribute for a given index. Depends on the
31565         CustomAttribute table being sorted by the parent field.
31566
31567         * reflection.c (mono_custom_attrs_from_index): Use the new function 
31568         for better performance.
31569
31570 2003-09-07  Martin Baulig  <martin@ximian.com>
31571
31572         * class.c (mono_class_init): If we're a generic instance, inflate
31573         all our methods instead of loading them from the image.
31574         (mono_class_from_generic): Set `class->methods = gklass->methods'.
31575
31576 2003-09-07  Martin Baulig  <martin@ximian.com>
31577
31578         * mono-debug-debugger.c: Added support for constructors.
31579
31580 2003-09-06  Martin Baulig  <martin@ximian.com>
31581
31582         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
31583         New interncall.
31584
31585         * reflection.c (mono_reflection_setup_generic_class): Call
31586         ensure_runtime_vtable() to create the vtable.
31587
31588 2003-09-05  Martin Baulig  <martin@ximian.com>
31589
31590         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
31591         MONO_TYPE_MVAR.
31592
31593 2003-09-04  Martin Baulig  <martin@ximian.com>
31594
31595         * reflection.c (mono_reflection_define_generic_parameter): Generic
31596         parameters start with zero.
31597
31598 2003-09-04  Martin Baulig  <martin@ximian.com>
31599
31600         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
31601
31602         * reflection.h (MonoReflectionGenericParam): New typedef.
31603         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
31604         the generic parameters from the managed TypeBuilder.
31605
31606         * reflection.c (mono_reflection_define_generic_parameter): New function.
31607         (mono_reflection_create_runtime_class): Encode generic parameters.
31608         (mono_reflection_setup_generic_class): New function; this is
31609         called after adding adding all generic params to the TypeBuilder.
31610         (encode_type): Added MONO_TYPE_VAR.
31611
31612 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
31613
31614         * class.h class.c (mono_class_needs_cctor_run): Moved this method
31615         here from the JIT.
31616
31617         * assembly.h assembly.c: Moved the AOT loading code into an assembly
31618         load hook.
31619
31620 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
31621
31622         * reflection.h reflection.c class.h class.c: Delete duplicate 
31623         definition of mono_type_get_name () from reflection.c and export the
31624         one in class.c.
31625
31626         * class.c: Class loading fixes from Bernie Solomon 
31627         (bernard@ugsolutions.com).
31628
31629         * reflection.c: Endianness fixes from Bernie Solomon 
31630         (bernard@ugsolutions.com).
31631         
31632 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
31633
31634         * assembly.h assembly.c: Define a file format version for AOT
31635         libraries.
31636         
31637         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
31638
31639         * appdomain.h (MonoJitInfo): New field to determine whenever the
31640         code is domain neutral.
31641         
31642 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
31643
31644         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
31645
31646 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
31647
31648         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
31649         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
31650         Avoid caching the result since strings must be domain specific. Fixes
31651         #48050.
31652
31653 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
31654
31655         * marshal.c (mono_marshal_init): Make this callable multiple times
31656         since it is hard to find a correct place to call it.
31657
31658         * object.c (mono_runtime_class_init): Execute static constructors in
31659         the correct appdomain.
31660
31661         * image.c (build_guid_table): Handle the case when multiple images have
31662         the same GUID.
31663
31664 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31665
31666         * icall.c: added a couple of icalls for System.Web.
31667
31668 2003-08-28  Martin Baulig  <martin@ximian.com>
31669
31670         * icall.c (ves_icall_Type_BindGenericParameters): Use
31671         `klass->generic_inst' instead of `&klass->byval_arg' in the
31672         mono_type_get_object() call.  The returned type must be
31673         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
31674
31675 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
31676
31677         * NOTES: New file.
31678
31679         * object.c (mono_class_proxy_vtable): Make it thread safe.
31680
31681         * pedump.c: Fix warning.
31682
31683         * object.c appdomain.h: Get rid of metadata_section. 
31684         It is no longer needed and it was causing deadlocks with domain->lock.
31685
31686         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
31687
31688 2003-08-26  Martin Baulig  <martin@ximian.com>
31689
31690         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
31691
31692 2003-08-26  Martin Baulig  <martin@ximian.com>
31693
31694         * pedump.c (main): Call mono_metadata_init(),
31695         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
31696         and mono_loader_init().
31697
31698 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
31699
31700         * loader.h: Add missing include to fix build.
31701
31702         * image.h: mono_image_load_references is no more.
31703
31704         * assembly.c: Reworked assembly loading to make it really thread safe.
31705         After these changes, the assembly returned by mono_assembly_open is
31706         fully initialized, i.e. all its references assemblies are loaded.
31707
31708         * assembly.c (mono_image_load_references): Renamed to 
31709         mono_assembly_load_references, and made private, since clients no
31710         longer need to call it.
31711
31712         * class.c: Removed calls to mono_assembly_load_references, since it was
31713         a source of deadlocks.
31714
31715         * loader.h loader.c class.h class.c: Protect data structures using a 
31716         new lock, the loader lock.
31717
31718         * class.c (mono_class_setup_vtable): Create temporary hash tables and
31719         GPtrArrays only when needed.
31720
31721         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
31722         into empty structures by mcs. Fixes pinvoke7.cs.
31723         
31724         * domain.c (mono_init): Call a new initialization function.
31725
31726         * appdomain.c (mono_runtime_init): Call the new initializer function
31727         of the marshal module.
31728
31729         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
31730         inserted into empty structures by mcs. Fixes pinvoke7.cs.
31731
31732         * marshal.h marshal.c: Added locks around the wrapper caches to make
31733         this module thread safe.
31734
31735         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
31736         this argument. Fixes pinvoke1.exe.
31737
31738 2003-08-25  Lluis Sanchez <lluis@ximian.com>
31739
31740         * object.h: Added call_type field to MonoMethodMessage and the corresponding
31741         enumeration of values. Removed fields to store remote call output values in
31742         MonoAsyncResult. Not needed any more.
31743         * object.c: Initialize call_type and async_result fields in mono_message_init.
31744         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
31745         dispatching the message.
31746         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
31747         async call to finish. To do it use a message with EndInvoke call type.
31748
31749 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
31750
31751         * loader.h loader.c (mono_method_hash_marhal_info): New function which
31752         determines whenever a method has marshalling info.
31753
31754 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31755
31756         * assembly.c: fix the build on windows.
31757
31758 2003-08-22 Lluis Sanchez <lluis@ximian.com>
31759
31760         * object.cs: Fixed bug #47785.
31761
31762 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
31763
31764         * string-icalls.c (StringReplace): If their are no occurances of
31765         the old string found return a reference to the supplied
31766         string. This saves some memory and matches MS behavoir.
31767         
31768 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31769
31770         * socket-io.c: fixed compilation for systems that define AF_INET6
31771         and don't define SOL_IP/SOL_IPV6.
31772
31773 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
31774
31775         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
31776         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
31777
31778         * rawbuffer.c rawbuffer.h: Make this module thread safe.
31779
31780         * domain.c: Make this module thread safe.
31781
31782         * domain.c (mono_init): Call new initialization function.
31783
31784         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
31785         reference types too. Fixes #38812.
31786
31787         * image.c (mono_image_init): Fixed warnings.
31788
31789         * class.c (mono_class_from_typeref): Handle assembly load failure
31790         correctly.
31791
31792         * appdomain.c (add_assemblies_to_domain): Handle the case when
31793         the references of an assembly are not yet loaded.
31794
31795         * metadata.c image.c assembly.c: Moved initialization of global
31796         variables to a separate function called at startup since lazy 
31797         initialization of these variables is not thread safe.
31798         
31799         * image.c assembly.c: Made this module thread safe by adding locks in 
31800         the appropriate places.
31801
31802         * domain.c (mono_init): Call the new initialization functions of the
31803         three modules.
31804
31805 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
31806
31807         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
31808           make a direct call. It is proxy's work to make the call asynchronous.
31809           mono_delegate_end_invoke(): If the targe is a proxy, just collect
31810           the return values.
31811         * object.cs: mono_method_call_message_new(): read AsyncResult and
31812           state object from parameters list, if this info is requested.
31813         * object.h: Added fields to store remote call output values in
31814           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
31815
31816 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
31817
31818         * object.h: add needed fields to MonoThread.
31819         * threads.c, threads.h: allow registering a function to cleanup data
31820         allocated per thread by the JIT.
31821
31822 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
31823
31824         * loader.h: portability fix by Bernie Solomon
31825         * <bernard@ugsolutions.com>.
31826
31827 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
31828
31829         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
31830         return a MonoArray. This simplifies the code and also ensures that
31831         the cache allways contains an object reference as a value.
31832
31833         * icall.c (ves_icall_get_parameter_info): Simplified using the new
31834         function.
31835
31836 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31837
31838         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
31839         fixes a problem with byte ordering when getting the address family for
31840         a socket.
31841
31842 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
31843
31844         * .cvsignore: Added monosn.
31845
31846         * reflection.h reflection.c loader.c: Added support for parameter
31847         marshalling to dynamically created types. Fixes #47295.
31848
31849 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
31850
31851         * rand.c: remove useless warnings.
31852
31853 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
31854
31855         * class.c: implemented ldtoken for methods and fieldrefs.
31856
31857 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31858
31859         * threadpool.c: when mono_async_invoke was called, no one took care of
31860         monitoring the queue. So if the method invoked took some time and we
31861         got new async invoke requests after 500 ms (the thread created waited
31862         that long in WaitForSingleObject), the new async invoke was not called
31863         until the previous one finished.
31864
31865         This is fixed now. Thanks to Totte for helping with it.
31866
31867 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31868
31869         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
31870
31871 2003-08-11  Martin Baulig  <martin@ximian.com>
31872
31873         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
31874
31875 2003-08-06  Martin Baulig  <martin@ximian.com>
31876
31877         * mono-debug-debugger.c: Added support for static fields,
31878         properties and methods.
31879
31880 2003-08-06  Martin Baulig  <martin@ximian.com>
31881
31882         * mono-debug-debugger.c: Don't store the MonoString's vtable to
31883         make this work for applications with multiple application domains.
31884
31885 2003-08-04  Martin Baulig  <martin@ximian.com>
31886
31887         * mono-debug-debugger.c: Completely reworked the type support; the
31888         most important thing is that we're now just using one single
31889         `MonoType' instance per type.
31890
31891 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
31892
31893         * mono-endian.h, mono-endian.c, icall.c: Added icall
31894         ves_icall_System_Double_AssertEndianity to assert double word endianity
31895         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
31896
31897 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
31898
31899         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
31900         support, icalls and fixes.
31901
31902 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
31903
31904         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
31905         classes that are a punctuation character in .NET is not the same a
31906         g_unichar_ispunct.
31907
31908 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
31909
31910         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
31911
31912 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
31913
31914         * icall.c: Add new MemCopy internalcall.
31915         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
31916         Simplified code; It is not necessary to handle all the cases here,
31917         as the C# code takes care of it.  Only handle the case of the name
31918         resource embedded into the assembly.
31919
31920         Changed signature to return the data pointer and the size of the
31921         data. 
31922
31923 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
31924
31925         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
31926         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
31927
31928 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
31929
31930         * socket-io.c: ignore EINTR error in select.
31931
31932 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
31933
31934         * class.h, class.c: removed unused subclasses field in MonoClass.
31935
31936 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
31937
31938         * icall.c: improve fix of get_base_definition(). If the parent class
31939           doesn't have the mehod, look at the parent of the parent.
31940         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
31941           to check if a parameter is an in or out parameter
31942           (PARAM_ATTRIBUTE_IN is not set by default).
31943           mono_method_return_message_restore(): Use mono_class_value_size to
31944           get the size of a value type. mono_type_stack_size (parameterType)
31945           does not return the correct value if parameterType is byRef.
31946           mono_load_remote_field(), mono_load_remote_field_new(),
31947           mono_store_remote_field(), mono_store_remote_field_new():
31948           raise exception if the remote call returns an exception.
31949
31950 2003-07-28  Martin Baulig  <martin@ximian.com>
31951
31952         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
31953         method.  This is a wrapper around mono_runtime_invoke() which
31954         boxes the instance object if neccessary.
31955
31956 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
31957
31958         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
31959         metadata.h, row-indexes.h, verify.c: first cut of generics support.
31960
31961 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
31962
31963         * icall.c: disable mcs bug workaround.
31964
31965 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
31966
31967         * object.c (mono_runtime_class_init): Take the metadata_section
31968         mutex before obtaining the domain mutex.
31969
31970         * appdomain.h: Added definition of metadata_section mutex here. 
31971
31972         * object.c: define metadata_mutex here.
31973
31974 2003-07-24  Ravi Pratap  <ravi@ximian.com>
31975
31976         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
31977         fixed.
31978
31979 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
31980
31981         * reflection.c: Fix bug #46669
31982
31983 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31984
31985         * exception.c:
31986         * exception.h:
31987         * icall.c:
31988         * object.h: fill in the type name for TypeLoadException.
31989
31990 2003-07-23  Ravi Pratap  <ravi@ximian.com>
31991
31992         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
31993         relationship between TypeBuilders while compiling corlib) and bug
31994         45993 (Array types returned from the runtime while compiling
31995         corlib were from the loaded corlib).
31996
31997 2003-07-22  Martin Baulig  <martin@ximian.com>
31998
31999         * mono-debug-debugger.c: Reworked the type support a bit more;
32000         distinguish between types and classes.
32001
32002 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
32003
32004         * icall.c: add IsArrayImpl icall.
32005
32006 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
32007
32008         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
32009         initializing real_size only once. Also fix bug #46602.
32010
32011 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
32012
32013         * object.c: Renamed mono_metadata_section to metadata_section.
32014
32015 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
32016
32017         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
32018           empty array if the type is an array. Fixed.
32019           ves_icall_MonoMethod_get_base_definition: if the base method
32020           is abstract, get the MethodInfo from the list of methods of
32021           the class.
32022         * reflection.c: ParameterInfo.PositionImpl should be zero-based
32023           and it was 1-based. Fixed in mono_param_get_objects.
32024
32025 2003-07-20  Martin Baulig  <martin@ximian.com>
32026
32027         * mono-debug.h: Set version number to 31.
32028         (mono_debug_init): Added `MonoDomain *' argument.
32029
32030         * mono-debug-debugger.c: Reworked the type support; explicitly
32031         tell the debugger about builtin types; pass the `klass' address to
32032         the debugger.
32033
32034 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
32035
32036         * image.c: Allow new metadata tables to be loaded without a
32037         warning. Also update the warning message to give the new constant value.
32038                 
32039 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
32040
32041         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
32042         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
32043         array type representation changes.
32044
32045 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
32046
32047         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
32048         on Environment.Exit () call.
32049
32050 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
32051
32052         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
32053         requires a matching corlib.
32054
32055 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
32056
32057         * Changelog: My editor decided to add a CR to each line. Sorry about that.
32058           Committed again without the CRs.
32059         
32060 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
32061
32062         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
32063           getting it from the "this" socket instance. Did not work
32064           if the socket is a subclass of Socket.
32065           Also fixed bug #35371.
32066
32067 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
32068
32069         * metadata.c: fixed size for TypedByRef.
32070         * loader.c: when searching for a method, consider the vararg amrker.
32071         * unicode.c, decimal.c: constify some arrays.
32072
32073 2003-07-15  Dick Porter  <dick@ximian.com>
32074
32075         * socket-io.c: Fixed compilation for gcc < 3.2.
32076
32077         Fixed compilation for machines that don't have AF_INET6 (thanks to
32078         Bernie Solomon <bernard@ugsolutions.com> for that part.)
32079
32080         Fixed compile warnings.
32081         
32082         Fixed formatting and line endings.
32083
32084 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
32085
32086         * socket-io.h:
32087         * socket-io.c: Added IPv6 support.
32088
32089 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
32090
32091         * class.c (mono_class_is_assignable_from): New function to implement
32092         the is_assignable_from logic. Used by mono_object_isinst, 
32093         Type::IsAssignableFrom () and the interpreter.
32094
32095         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
32096         Object, even interfaces.
32097         
32098         * object.c (mono_object_isinst): Implement in terms of 
32099         is_assignable_from.
32100
32101         * icall.c (ves_icall_type_is_assignable_from): New icall.
32102
32103 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
32104
32105         * domain.c (foreach_domain): fix compiler warning.
32106
32107 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
32108
32109         * image.c (load_metadata_ptrs): use g_strndup because strndup is
32110         not available on all plattforms
32111
32112 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
32113
32114         * image.h image.c: Store the metadata version string in MonoImage.
32115         * icall.c: New icall to retrieve the image version.
32116         * reflection.c (create_dynamic_image): Fill in the image version field
32117         * reflection.c (build_compressed_metadata): Use the image version
32118         from the image structure.
32119
32120 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32121
32122         * appdomain.c: modified comment.
32123         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
32124         That will be its last iteration when mono_gc_cleanup is called from
32125         mono_runtime_cleanup and before the domain is unloaded.
32126
32127         Fixes bug #45962.
32128
32129 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
32130
32131         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
32132         attributes.
32133
32134 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32135
32136         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
32137         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
32138         Bernie Solomon <bernard@ugsolutions.com>.
32139
32140 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
32141
32142         * object.c, object.h: provide mono_object_new_fast() for faster
32143         allocation in some special cases.
32144
32145 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
32146
32147         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
32148         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
32149
32150 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
32151
32152         * threadpool.c: fix leaks.
32153
32154 2003-07-01  Dick Porter  <dick@ximian.com>
32155
32156         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
32157         using MonoGHashTables.  Fixes threadpool bug posted to list.
32158
32159 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
32160
32161         * image.h, image.c: added support to load an assembly from a byte array.
32162         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
32163         assembly bundle support.
32164
32165 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
32166
32167         * threadpool.c (mono_thread_pool_add): keep a reference to the
32168         AsyncResult to prevent GC
32169
32170 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
32171
32172         * class.c: leak fix.
32173
32174 2003-06-25  Dick Porter  <dick@ximian.com>
32175
32176         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
32177         for the async object, the WaitHandle object will close the handle.
32178         Fixes bug 45321.
32179
32180 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
32181
32182         * class.c: in mono_array_class_get (), lookup from the hash with the
32183         same type we insert: this works around a bug in
32184         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
32185         lluis. The real fix will have to wait for after the release.
32186
32187 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
32188
32189         * icall.c: fix memory leak when getting type members.
32190
32191 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
32192
32193         * reflection.c: added more pubtoken special cases.
32194
32195 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
32196
32197         * class.c: handle field offset correctly when class size
32198         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
32199
32200 2003-06-20  Martin Baulig  <martin@ximian.com>
32201
32202         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
32203         *image' field.
32204
32205 2003-06-20  Martin Baulig  <martin@ximian.com>
32206
32207         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
32208
32209 2003-06-20  Martin Baulig  <martin@ximian.com>
32210
32211         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
32212         just distinguish between variables in registers and variables at
32213         an offset relative to a register.
32214
32215 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32216
32217         * icall.c: #ifdef out latest changes until mcs is fixed.
32218
32219 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
32220
32221         * icall.c: return members in metadata order.
32222
32223 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
32224
32225         * icall.c: avoid infinite loop in GetTimeZoneData.
32226
32227 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
32228
32229         * icall.c: added Marshal.Prelink/All icalls.
32230
32231 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
32232
32233         * object.c, object.h: fix warnings and do some overflow checking
32234         when creating arrays.
32235
32236 2003-06-17  Dick Porter  <dick@ximian.com>
32237
32238         * file-io.h:
32239         * file-io.c: File attributes need to be tweaked slightly when
32240         passed from the managed to the w32 world.
32241
32242 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
32243         * profiler.h profiler-private.h profiler.c: Rework last patch
32244         based on suggestion by Paolo.
32245         
32246 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
32247
32248         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
32249         instruction level coverage data collection.
32250         * profiler.h profiler.c (: Added new callback function which can be
32251         used by the profiler to limit which functions should have coverage
32252         instrumentation.
32253         * profiler.c (mono_profiler_load): Call g_module_build_path to
32254         generate the file name of the profiler library.
32255
32256 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
32257
32258         * profiler.c, profiler.h, profiler-private.h: added basic block 
32259         coverage profiling API.
32260
32261 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
32262
32263         * reflection.c (mono_reflection_create_runtime_class): Add support
32264         for events in dynamically generated code.
32265
32266         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
32267         not allocated.
32268
32269 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
32270
32271         * icall.c: when getting timezone info, return reasonable values if we
32272         can't get the actual data.
32273
32274 2003-06-14  Dick Porter  <dick@ximian.com>
32275
32276         * threads.c (start_wrapper): Remove the reference to the thread
32277         object in the TLS data, so the thread object can be finalized.
32278         This won't be reached if the thread threw an uncaught exception,
32279         so those thread handles will stay referenced :-( (This is due to
32280         missing support for scanning thread-specific data in the Boehm GC
32281         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
32282
32283 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
32284
32285         * reflection.c: ensure streams and tables are first allocated with
32286         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
32287
32288 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32289
32290         * icall.c: fixed GetElementType for byrefs (bug# 44792).
32291
32292 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
32293
32294         * reflection.c (mono_reflection_create_runtime_class): Add support for
32295         properties to dynamically created classes.
32296         * reflection.c: Fix a few places where non-MonoObjects were inserted
32297         into the tokens hashtable.
32298
32299 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32300
32301         * object.c: some support to handle out of memory exceptions.
32302
32303 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
32304
32305         * marshal.c (mono_marshal_get_native_wrapper): support reference
32306         return types
32307
32308 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
32309
32310         * object.h, object.c: more portability stuff from Bernie Solomon.
32311         Unexport mono_object_allocate(). Added mono_object_unbox ().
32312         Set exitcode when an unhandled exception is thrown.
32313
32314 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
32315
32316         * marshal.c (mono_marshal_get_native_wrapper): use custom
32317         marshaler for return types.
32318
32319 2003-06-10  Dick Porter  <dick@ximian.com>
32320
32321         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
32322         ip_mreq is available
32323
32324 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
32325
32326         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
32327         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
32328         by Bernie Solomon <bernard@ugsolutions.com>.
32329
32330 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
32331
32332         * gc.c (mono_gc_init): Avoid error message on shutdown when
32333         GC_DONT_GC=1 is used.
32334
32335         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
32336         New icall to return the GUID of a module.
32337
32338 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
32339
32340         * class.c: ensure instance size always includes the parent's size
32341         even whem class size is set explicitly (fixes bug#44294).
32342
32343 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
32344
32345         * profiler.h, profiler.c: made the simple profiler thread-safe,
32346         get more accurate timing info. Allow the loading of an
32347         externally-developed profiler module.
32348
32349 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
32350
32351         * marshal.c (mono_marshal_get_native_wrapper): improved
32352         class/byref arguments.
32353         (mono_marshal_get_native_wrapper): better string marshaling support.
32354
32355 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
32356
32357         * class.c: ensure .pack and .size are handled correctly and
32358         simplified layout of static fields.
32359
32360 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
32361
32362         * appdomain.c
32363         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
32364
32365         * loader.c (mono_lookup_pinvoke_call): look for modules in the
32366         current directory (fix bug 44008)
32367
32368 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
32369
32370         * marshal.c (mono_marshal_get_native_wrapper): started support for
32371         custom marshalers.
32372         (mono_delegate_to_ftnptr): consider marshalling specifications
32373
32374 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
32375
32376         * reflection.c, reflection.h: emit custom marshal info.
32377
32378 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32379
32380         * object.c: free the GError.
32381         * icall.c: added CloseEvent_internal.
32382         * threads.[ch]:
32383         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
32384         call.
32385
32386 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
32387
32388         * loader.c (mono_method_get_signature): Add support for dynamic
32389         assemblies.
32390
32391 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
32392
32393         * reflection.c: fixed bug #43905.
32394
32395 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
32396
32397         * class.c, domain.c, icall.c, metadata.h, object.h: support for
32398         handling TypedReference and ArgIterator.
32399         * loader.c, loader.h: added function to get signature at call site.
32400
32401 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32402
32403         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
32404         data readonly. Buglets and warning fixes. Some MethodSpec support.
32405
32406 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
32407
32408         * class.h, class.c, object.c: remove relative numbering support.
32409
32410 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
32411
32412         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
32413         free the string, until we get a chance to fix Gtk#
32414
32415 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32416
32417         * marshal.c: revert last patch.
32418
32419 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
32420
32421         * icall.c: updates for new mono_class_vtable() not calling
32422         the type constructor anymore.
32423
32424 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
32425
32426         * object.h, object.c: separate vtable creation from type
32427         initialization. Make running the .cctor thread safe.
32428
32429 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
32430
32431         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
32432
32433 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
32434
32435         * loader.c (mono_get_method): consider calling convention
32436
32437 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
32438
32439         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
32440         to return the invisible global type for a module.
32441
32442         * reflection.c (mono_image_build_metadata): Emit global fields too.
32443
32444 2003-05-20  Peter Williams  <peterw@ximian.com>
32445
32446         * loader.c (mono_lookup_internal_call): Add a few newlines.
32447
32448 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
32449
32450         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
32451         literal strings.
32452
32453         * appdomain.c (set_domain_search_path): Recalculate search path when
32454         AppDomainSetup.PrivateBinPath changes.
32455
32456         * object.c (mono_class_compute_gc_descriptor): It turns out some
32457         parts of the class libs (like System.Thread) holds pointers to
32458         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
32459         to treat native int a pointer type here.
32460         
32461 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
32462
32463         * appdomain.h, domain.c: add hashtable for jump target resolution.
32464
32465 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
32466
32467         * reflection.h reflection.c icall.c: Added new icalls 
32468         GetManifestResourceInfoInternal, GetModulesInternal and support
32469         infrastructure.
32470
32471 2003-05-16  Dick Porter  <dick@ximian.com>
32472
32473         * icall.c:
32474         * file-io.h:
32475         * file-io.c: Implement System.IO.MonoIO::GetTempPath
32476
32477 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
32478
32479         * object.c: mono_store_remote_field: little fix to previous patch.
32480
32481 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
32482
32483         * class.c: add constructors to array classes.
32484         * icall.c: special case array construction for InternalInvoke (),
32485
32486 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
32487
32488         * class.h class.c reflection.c object.c: Added support for field
32489         defaults in dynamically generated classes.
32490
32491 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
32492
32493         * reflection.c: properly encode charset for ddlimport.
32494
32495 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
32496
32497         * threads.c: allow compiling without GC.
32498
32499 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
32500
32501         * appdomain.h, object.c, object.h, threads.c, threads.h: added
32502         handling of thread static data.
32503
32504 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
32505
32506         * reflection.h, reflection.c: added mono_custom_attrs_free ().
32507
32508 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
32509
32510         * class.c (mono_array_class_get): always set the serializable flags
32511         (mono_array_class_get): always set the SEALED attribute for array types
32512
32513 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
32514
32515         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
32516         attributes (fix for bug 42021).
32517
32518 2003-05-12  Dick Porter  <dick@ximian.com>
32519
32520         * gc.c: Don't run finalizers when the finalizer thread is
32521         finishing up, because the default domain has already been
32522         destroyed.
32523
32524 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
32525
32526         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
32527         value is null, we should throw an exception.   This is slightly
32528         different than the other conventions used for the constructor.
32529
32530 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32531
32532         * socket-io.c: fixed windows build.
32533
32534 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32535
32536         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
32537
32538 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
32539
32540         * object.c (mono_string_new_wrapper): Compatibility fix for MS
32541         compilers.
32542
32543 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
32544
32545         * class.c (mono_class_layout_fields): Add experimental GC aware
32546         auto layout facility. Requires class library changes to work correctly.
32547
32548         (mono_class_setup_vtable): Avoid overriding explicit interface
32549         method implementations. Fixes iface3.exe test.
32550
32551         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
32552         object reference.
32553         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
32554         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
32555
32556         * metadata.h: Add new type classification macro which determines
32557         whenever the type holds an object reference.
32558
32559 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
32560
32561         * marshal.c (mono_marshal_get_native_wrapper): cleanups
32562
32563 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
32564
32565         * gc.c (finalizer_thread): Work around a GC bug.
32566
32567 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
32568
32569         * marshal.c (emit_struct_conv): allow unions
32570
32571         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
32572
32573 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
32574
32575         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
32576
32577 2003-05-06  Martin Baulig  <martin@ximian.com>
32578
32579         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
32580
32581 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32582
32583         * socket-io.c:
32584         (Select_internal): allow NULLs, don't create arrays if not needed.
32585         Coupled with Socket.cs changes.
32586
32587         * threadpool.c:
32588         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
32589         register a finalizer for it that will close the semaphore handle. This
32590         fixes the leak and make Lupus' test run with > 4080 loops.
32591
32592 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
32593
32594         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
32595         Jerome Laban (bug #42287)
32596
32597 2003-05-02  Martin Baulig  <martin@ximian.com>
32598
32599         * debug-mono-symfile.h
32600         (MonoSymbolFile): Moved declaration into mono-debug.h.
32601         (MonoDebugMethodJitInfo): Likewise.
32602         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
32603         argument.
32604         (_mono_debug_address_from_il_offset): Take a
32605         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
32606
32607         * mono-debug.h
32608         (MonoDebugDomainData): New struct.
32609         (mono_debug_get_domain_data): New function.
32610         (mono_debug_add_method): Take an additional `MonoDomain *'
32611         argument.
32612         (mono_debug_source_location_from_address): Likewise.
32613         (mono_debug_il_offset_from_address): Likewise.
32614         (mono_debug_address_from_il_offset): Likewise.
32615
32616 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
32617
32618         * reflection.c: one more check for null type in custom attrs.
32619
32620 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32621
32622         * reflection.c: avoid warning (comparison is always false due to limited
32623         range of data type).
32624
32625 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32626
32627         * icall.c: throw an exception in Type.GetField if the argument 'name'
32628         is NULL.
32629
32630 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
32631
32632         * reflection.c: fixed handling of enums in named arguments to custom
32633         attributes (bug #42123).
32634
32635 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
32636
32637         * reflection.c: use the right array element type and handle
32638         a null for a Type argument, too.
32639
32640 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
32641
32642         * reflection.c: handle arrays as arguments to custom attributes.
32643
32644 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
32645
32646         * reflection.c: handle a string value in a custom attr
32647         ctor that takes an object.
32648
32649 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
32650
32651         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
32652         (fix bug #42063)
32653
32654 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
32655
32656         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
32657
32658 2003-04-27  Martin Baulig  <martin@ximian.com>
32659
32660         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
32661         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
32662         MONO_DEBUGGER_EVENT_BREAKPOINT.
32663         (mono_breakpoint_trampoline_code): Removed.
32664         (mono_debugger_event_handler): The last argument is now a
32665         `guint32'.
32666         (mono_debugger_insert_breakpoint_full): Removed the
32667         `use_trampoline' argument.
32668         (mono_debugger_method_has_breakpoint): Likewise.
32669         (mono_debugger_trampoline_breakpoint_callback): Renamed to
32670         mono_debugger_breakpoint_callback(); take the method and
32671         breakpoint number as arguments.
32672
32673 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
32674
32675         * metadata.c: fix off by one when loading parameters attributes.
32676
32677 2003-04-24  Martin Baulig  <martin@ximian.com>
32678
32679         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
32680
32681 2003-04-24  Martin Baulig  <martin@ximian.com>
32682
32683         * mono-debug-debugger.c: Moved all code which interacts with the
32684         Mono Debugger here.
32685
32686         * debug-mono-symfile.c: This code now just deals with the symbol
32687         file itself, the debugger code is now in mono-debug-debugger.c.
32688
32689 2003-04-23  Martin Baulig  <martin@ximian.com>
32690
32691         * mono-debug.c (mono_debug_source_location_from_il_offset):
32692         New method; like mono_debug_source_location_from_address(), but
32693         takes an IL offset instead of a machine address.
32694
32695 2003-04-23  Martin Baulig  <martin@ximian.com>
32696
32697         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
32698         `line' field; this is now computed by the debugger.
32699
32700 2003-04-23  Martin Baulig  <martin@ximian.com>
32701
32702         * mono-debug.[ch]: New files.  This is the new debugging interface.
32703
32704         * mono-debug-debugger.[ch]: New files.  Moved all code which
32705         interacts with the Mono Debugger here.
32706
32707 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
32708
32709         * domain.c (mono_init): initialize mono_defaults.monitor_class
32710
32711 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
32712
32713         * reflection.c (method_encode_code): Add a spicy exception to help
32714         future compiler authors.
32715
32716 2003-04-21  Martin Baulig  <martin@ximian.com>
32717
32718         * icall.c
32719         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
32720         Make this work with relative pathnames; g_filename_to_uri() needs
32721         an absolute filename.
32722
32723 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
32724
32725         * icall.c: Track name changes in Object and ValueType.
32726
32727 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
32728
32729         * metadata.c (mono_type_stack_size): size should be a multiple of
32730         sizeof (gpointer)
32731
32732 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32733
32734         * gc.c:
32735         (internal_domain_finalize): moved into mono_domain_finalize. No need
32736         to create another thread because the finalizers will be run in the
32737         finalizer thread.
32738         
32739         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
32740         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
32741         to be run (MS does this too).
32742
32743 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
32744
32745         * object.c (mono_class_compute_gc_descriptor): Update comment.
32746
32747         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
32748
32749         * image.h: Add synchronized wrapper cache.
32750
32751         * image.c (do_mono_image_open): Initialize cache.
32752
32753         * reflection.c (create_dynamic_mono_image): Initialize cache.
32754
32755 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32756
32757         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
32758         ves_icall_System_Buffer_ByteLengthInternal.
32759
32760 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32761
32762         * reflection.c: setup klass->nested_in earlier. Allow
32763         a dash in the assembly name.
32764
32765 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
32766
32767         * metadata.c (mono_type_to_unmanaged): dont access
32768         type->data.klass for MONO_TYPE_OBJECT
32769         (mono_type_to_unmanaged): consider System.Delegate class
32770
32771 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
32772
32773         * class.c: just setup supertypes in the proper place instead of
32774         initializing the full element class for arrays.
32775
32776 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
32777
32778         * class.c: ensure the element class of arrays is initialized.
32779         Setup the supertype info for array classes, too.
32780
32781 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
32782
32783         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
32784
32785 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32786
32787         * Makefile.am: re-added -m option when running cygpath. This way,
32788         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
32789         separator.
32790         * mono-config.c: same codepath for locating mono config file for WIN32
32791         and the rest.
32792         * assembly.c: if mono_assembly_setrootdir is called, don't override
32793         the value set.
32794
32795 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32796
32797         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
32798         MONO_ASSEMBLIES variable.
32799
32800 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
32801
32802         * icall.c: added Assembly::GetNamespaces() icall.
32803
32804 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32805
32806         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
32807
32808 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
32809
32810         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
32811         * object.c: fixed bug in the construction of vtable for proxies
32812
32813 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
32814
32815         * object.c (mono_array_new): Mark mono_array_new as an icall.
32816
32817 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32818
32819         * class.c: fixed test for public method when overriding interfaces.
32820         Closes bug #40970.
32821
32822 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
32823
32824         * appdomain.h, domain.c: added mono_domain_foreach() to
32825         be able to access the currently loaded appdomains.
32826         * object.c: make string interning work across sppdomains.
32827         Mark some functions for use as icalls.
32828
32829 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
32830
32831         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
32832
32833         * reflection.h reflection.c: Allocate long living data using 
32834         GC_MALLOC_ATOMIC so the collector does not need to scan it.
32835
32836         * reflection.c: Double the allocation size in streams instead of
32837         increasing it, to prevent unneccesary copying on large assemblies.
32838         
32839         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
32840         creation if the assembly does not have the Run flag set.
32841
32842 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
32843
32844         * class.h: avoid the C++ keywords in header files (Jerome Laban
32845         spotted and fixed this).
32846
32847 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32848
32849         * object.c:
32850         (mono_unhandled_exception): fill in the arguments for the
32851         UnhandledException event. Only trigger that event for the default
32852         domain (as MS does).
32853
32854 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
32855
32856         * object.c: Improve typed allocation stuff based on suggestions from
32857         Paolo. Also turn it on if the GC library supports it.
32858
32859 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
32860
32861         * object.c object.h class.h: Added experimental typed allocation
32862         facility using the interfaces in gc_gcj.h.
32863
32864         * os/gc_wrapper.h: Added new include files.
32865         
32866 2003-04-03  Martin Baulig  <martin@ximian.com>
32867
32868         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
32869         which is not yet enabled by default.
32870
32871         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
32872         functions.
32873         (mono_gc_lock, mono_gc_unlock): New static functions.
32874
32875         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
32876         functions; stop/start the world for the garbage collector.  This
32877         is using the windows API; we need to complete the SuspendThread()/
32878         ResumeThread() implementation in the io-layer to make this work on Unix.
32879         (mono_gc_push_all_stacks): New public function; tells the garbage
32880         collector about the stack pointers from all managed threads.
32881
32882 2003-04-03  Martin Baulig  <martin@ximian.com>
32883
32884         * object.h (MonoThread): Added `gpointer stack_ptr'.
32885
32886         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
32887
32888 2003-04-03  Martin Baulig  <martin@ximian.com>
32889
32890         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
32891
32892 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
32893
32894         * reflection.c (typebuilder_setup_fields): Initialize field.first and
32895         field.last.
32896
32897 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
32898
32899         * loader.c (mono_lookup_internal_call): Report the corlib that is
32900         out of sync.
32901
32902 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
32903
32904         * icall.c (ves_icall_type_GetTypeCode): fixed check for
32905         System.DBNull (it's class not valuetype).
32906
32907 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
32908
32909         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
32910         if the array method was already assigned a token (fixes bug#40646).
32911
32912 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
32913
32914         * reflection.c (mono_reflection_get_type): Attempt type resolve even
32915         if no assembly is given.
32916
32917 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
32918
32919         * metadata.h: Added the new tables.
32920
32921         * row-indexes.h: Added definitions for new tables.
32922
32923         * metadata.c: Add schemas for new tables, and add support for
32924         computing the sizes of them.
32925
32926         * class.c: Update for handling the new type cases.
32927
32928 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
32929
32930         * metadata.h (MONO_TYPE_IS_VOID): new macro
32931
32932 2003-03-31  Martin Baulig  <martin@ximian.com>
32933
32934         * threads.h (MonoThreadCallbacks): Added `thread_created'.
32935
32936         * threads.c (mono_thread_new_init): Call `thread_created' in the
32937         mono_thread_callbacks.
32938
32939 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
32940
32941         * loader.h: added marshalbyrefobject_class to mono_defaults
32942         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
32943         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
32944           generation of output parameters.
32945           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
32946         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
32947           contextbound and the target object belongs to the context of the caller.
32948         * object.h: added context and unwrapped_server variables in MonoRealProxy.
32949         * object.c: Implemented support for interfaces and abstract classes
32950           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
32951           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
32952
32953 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
32954
32955         * class.h class.c (mono_class_is_subclass_of): New function.
32956         
32957         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
32958         routines for most common case (calls from ArrayList::ToArray).
32959
32960         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
32961         routine so programs which call Environment::Exit() can be profiled.
32962
32963         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
32964         Added MONO_ARCH_SAVE_REGS.
32965
32966         * icall.c (ves_icall_type_is_subtype_of): Use new function.
32967
32968 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
32969
32970         * blob.h: Add a couple of new MonoType types definitions.
32971
32972         * tabledefs.h: Add a couple of new call convs.
32973
32974 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
32975
32976         * reflection.h (MonoReflectionDynamicAssembly): track changes in
32977         the layout of the class.
32978
32979         * reflection.c (alloc_table): double the size on overflow to avoid
32980         unnecessary copying.
32981
32982         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
32983         avoid filling out metadata tables and blobs. Also set mb->ilgen to
32984         null so it can be garbage collected.
32985         
32986 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
32987
32988         * reflection.c (mono_reflection_get_type): Return the resolved type
32989         only if it is in the assembly we searched.
32990
32991         * reflection.c (ensure_runtime_vtable): Initialize method slots.
32992
32993         * class.c (mono_class_setup_vtable): Set the slot of the overriding
32994         method.
32995
32996 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32997
32998         * appdomain.c:
32999         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
33000         the right one is 'file:///blah', but MS allows it.
33001         * assembly.c:
33002         (mono_assembly_open): allow 'file://blah'
33003
33004         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
33005
33006 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
33007
33008         * socket-io.c: fixes bug #40310.
33009
33010 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
33011
33012         * reflection.c (mono_reflection_parse_type): handle deeply nested
33013         types correctly.
33014
33015         * reflection.c (mono_image_create_token): Use unique token values
33016         since they will be put into a hash table.
33017
33018         * class.c (mono_class_setup_vtable): If a method occurs in more than
33019         one place in the vtable, and it gets overriden, then change the
33020         other occurances too.
33021
33022         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
33023         object as return type.
33024
33025 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33026
33027         * icall.c: Deleted "ToString" implementation for double and float
33028         because they are full implemented in managed code.
33029
33030 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33031
33032         * reflection.c, reflection.h: implemented and exported functions
33033         to retrieve info about custom attributes.
33034
33035 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33036
33037         * appdomain.c: moved Uri handling to assembly.c
33038         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
33039         work when using a file Uri in *nix and windows.
33040
33041         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
33042         GetReferencedAssemblies.
33043
33044 2003-03-18  Dick Porter  <dick@ximian.com>
33045
33046         * icall.c: Rename a couple of internal calls
33047
33048         * threads.c: Set the thread state to Stopped when a thread exits.
33049         Fixes bug 39377.
33050
33051 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
33052
33053         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
33054         New icall.
33055
33056         * object.c (mono_class_vtable): fix warning.
33057
33058 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
33059
33060         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
33061
33062         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
33063         memory.
33064         (method_encode_clauses): Create exception info structures in the right
33065         order.
33066         (mono_reflection_setup_internal_class): Initialize supertypes field.
33067
33068         * class.c object.c: Handle interfaces which implement other interfaces 
33069         correctly.
33070
33071         * class.h class.c: Move the supertypes array initialization code into 
33072         a separate function so it can be used for dynamic types too. Also call
33073         it earlier, in mono_class_init(), since it can be used before the
33074         type is initialized.
33075
33076 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33077
33078         * Makefile.am:
33079         * assembly.c:
33080         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
33081
33082         * appdomain.c:
33083         * appdomain.h:
33084         * marshal.c:
33085         * object.c: remove warnings.
33086
33087 2003-03-13  Martin Baulig  <martin@ximian.com>
33088
33089         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
33090         (MonoDebugLexicalBlockEntry): New types.
33091
33092         * debug-mono-symfile.c
33093         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
33094
33095 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33096
33097         * process.c: ret can be any non-zero value accroding to MS doc.
33098
33099 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
33100
33101         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
33102         fixing a warning for a miss-used prototype, would have cause
33103         random memory corruption.
33104
33105 2003-03-07  Martin Baulig  <martin@ximian.com>
33106
33107         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
33108         getting really annoying ....
33109
33110 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
33111
33112         * reflection.c (fixup_method): added support for array methods.
33113
33114 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
33115
33116         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
33117         (pointed out by Michael Adams).
33118
33119 2003-03-04  Dick Porter  <dick@ximian.com>
33120
33121         * icall.c: Temporarily reverted the Double and Single ToString()
33122         change, because it broke nunit.
33123
33124 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
33125
33126         * object.h, threads.h: make include files compatible with C++
33127         (patch by Jerome Laban <jlaban@wanadoo.fr>).
33128
33129 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33130
33131         * icall.c: Erased ToString helper functions for Double and Single.
33132         Now, that implementations ar all in managed code (Double and Single
33133         Formatters).
33134
33135 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
33136
33137         * appdomain.c: Added method for initializing the default context of
33138         a domain. Added internal call for getting the default context.
33139         * appdomain.h: Added context variable in MonoDomain struct.
33140         * domain.c: mono_domain_set also sets the default context of the domain
33141         * icall.c: Mapped internal method InternalGetDefaultContext.
33142         * object.c: mono_object_get_virtual_method returns always a remoting
33143         wrapper if the object is a transparent proxy.
33144         mono_runtime_invoke_array: when creating an object by calling the
33145         constructor, if the created object is a proxy, then the constructor should
33146         be called using the a remoting wrapper.
33147
33148 2003-03-03  Dick Porter  <dick@ximian.com>
33149
33150         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
33151         variable so it compiles on solaris.  Problem spotted by
33152         Christopher Taylor <ct@cs.clemson.edu>
33153
33154 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33155
33156         * appdomain.c:
33157         (get_info_from_assembly_name): don't leak value.
33158
33159         * icall.c:
33160         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
33161         result.
33162
33163 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
33164
33165         * assembly.c: export mono_image_load_references ().
33166         * class.c: handle function pointers. mono_class_from_name() now
33167         supports nested type names directly.
33168
33169 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
33170
33171         * reflection.h reflection.c: Encode already created dynamic methods 
33172         and fields correctly as a DEF instead of a REF.
33173
33174         * reflection.c: Get rid of the force_ref argument to 
33175         mono_image_typedef_or_ref since it was wrong in the first place.
33176
33177         * string-icalls.c: add error checking to string constructors according
33178         to the MSDN docs.
33179
33180         * reflection.c: Emit types in the order their TypeBuilders were 
33181         created. Previously, a new table index was assigned to each type before
33182         the tables were emitted. This was wrong because the signature blob
33183         might already refer to a type by its original table index.
33184
33185 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
33186
33187         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
33188         change.
33189         
33190 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33191
33192         * Makefile.am: make assemblies dir have \ instead of / on windows.
33193
33194 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
33195
33196         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
33197         iterate over the NESTEDCLASS table using a linear search since the
33198         table is not guaranteed to be sorted by the secondary key.
33199
33200         * class.c (mono_class_create_from_typedef): fixed up call to
33201         mono_metadata_nesting_typedef.
33202         
33203 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
33204
33205         * marshal.c (mono_string_to_byvalstr): clear the memory as
33206         suggested by Jerome Laban <jlaban@wanadoo.fr>
33207
33208 2003-02-26  Dick Porter  <dick@ximian.com>
33209
33210         * process.c: Cope with padding in .rsrc blocks
33211
33212 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
33213
33214         * metadata.h: reverted the filter_len change, it breaks reflection
33215         
33216 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
33217
33218         * metadata.h: added a new field to store the filter_len
33219         
33220
33221 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
33222
33223         * reflection.c: handle custom attributes for types and members
33224         created with Reflection.Emit (bug#38422).
33225
33226 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
33227
33228         * reflection.c: define RTSpecialName automatically for constructors for
33229         compatibility with MS.NET.
33230
33231         * reflection.c (mono_reflection_create_runtime_class): initialize
33232         nested_in field of dynamically created classes.
33233
33234 2003-02-22  Martin Baulig  <martin@ximian.com>
33235
33236         * debug-mono-symfile.h: Incremented version number.
33237
33238 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
33239
33240         * object.h icall.c process.c: fix warnings.
33241
33242 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
33243
33244         * appdomain.h appdomain.c:
33245         (mono_domain_try_type_resolve): split the 
33246         name_or_tb argument into a name and a tb argument.
33247         (mono_domain_has_type_resolve): new function to check whenever the
33248         application has registered a TypeResolve event handler.
33249         
33250         * icall.c reflection.h reflection.c: move the type resolve logic into
33251         mono_reflection_get_type () so it will be invoked when 
33252         Assembly::GetType () is called.
33253
33254         * reflection.c:
33255         (mono_reflection_get_type): renamed to get_type_internal.
33256         (mono_reflection_get_type): fixed type name generation so it works 
33257         for nested types too.
33258         (mono_reflection_get_type): call has_type_resolve () to avoid the 
33259         costly type name generation if there is no resolve event handler.
33260
33261 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33262
33263         * class.c, image.c: load exported types from file references.
33264
33265 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
33266
33267         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
33268           used to cache the managed methods used to create proxies and make 
33269           remote invocation of methods.
33270         * class.h: Added in MonoVTable a flag to indicate that a class needs 
33271           to be remotely created.
33272         * object.c: Modified the method mono_class_vtable(). It now initializes 
33273           the remote flag of the vtable. Modified mono_object_new_specific(), 
33274           so now it checks the remote flag.
33275         * icall.c: Added a couple of internal methods, one for enabling instance 
33276           creation interception for a type, and one for creating objects bypassing
33277           the remote check.
33278
33279 2003-02-18  Martin Baulig  <martin@ximian.com>
33280
33281         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
33282         New interncall to get a method's metadata token.
33283
33284         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
33285         New interncall for the debugger.
33286
33287 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
33288
33289         * class.c (mono_class_setup_vtable): allocate supertype array
33290
33291 2003-02-18  Martin Baulig  <martin@ximian.com>
33292
33293         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
33294
33295 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33296
33297         * reflection.c:
33298         (assembly_name_to_aname): jump over unknown properties (i've found
33299         something like: 'type, assembly, version=xxx, custom=null, public...',
33300         so now will ignore custom=null and still get the rest of the values).
33301
33302 2003-02-17  Dick Porter  <dick@ximian.com>
33303
33304         * threads.c: Have Thread.Start() wait for a semaphore to signal
33305         that the thread has set up all its local data.  This fixes bug
33306         34323, where Abort() raced the new thread's TLS data.
33307
33308         Also removes the handle_store() call from start_wrapper, because
33309         threads are now always created suspended and there is no longer a
33310         race between the parent and child threads to store the info.
33311
33312 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
33313
33314         * image.c: explain the #- heap issue in a message, hopefully
33315         avoiding FAQs on mono-list.
33316
33317 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33318
33319         * icall.c:
33320         (GetEntryAssembly): if the domain has not invoked
33321         AppDomain.ExecuteAssembly yet, return the assembly of the default
33322         AppDomain.
33323
33324 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
33325
33326         * class.c (mono_ldtoken): make it work in dynamic assemblies.
33327
33328 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
33329
33330         * metadata.c, reflection.c: simple speedup to type hash
33331         and equals code.
33332
33333 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
33334
33335         * image.c, image.h, class.c, assembly.c: move module loading
33336         to MonoImage. When loading metadata, consider alignemnet from
33337         the start of metadata, not from the metadata address in memory.
33338
33339 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
33340
33341         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
33342         AssemblyBuilder objects. Factored out custom attribute creation into
33343         a separate function.
33344         (create_custom_attr): new function to create custom attributes.
33345
33346 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
33347
33348         * Makefile.am: Got tired of typing the full pathname to pedump.
33349         Until there is another option, am installing this.
33350
33351 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
33352
33353         * class.c (class_compute_field_layout): always set field->parent 
33354         (mono_ldtoken): use mono_defaults.fieldhandle_class;
33355
33356 2003-02-11  Dick Porter  <dick@ximian.com>
33357
33358         * threads-types.h:
33359         * monitor.c: Rewrote Monitor, making lock much faster and
33360         Pulse/Wait work as specified.  Also uses much fewer handles, and only
33361         creates them as needed.
33362
33363         * exception.c: Added SynchronizationLockException
33364
33365         * threads.c: Deleted old Monitor implementation.  The new one is
33366         in a new file.
33367
33368 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
33369
33370         * class.c: handled TypedReference type code. Set the correct size for
33371         class data. Setup interface_offsets for interface classes, too.
33372
33373 2003-02-09  Martin Baulig  <martin@ximian.com>
33374
33375         * debug-mono-symfile.h: Reflect latest symbol writer changes.
33376
33377 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
33378
33379         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
33380         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
33381         * object.c: fixed mono_object_get_virtual_method () for interfaces.
33382         * verify.c: check for code that runs after the end of the method.
33383
33384 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33385
33386         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
33387         "System.Math::Round2".
33388         * sysmath.h: Added Floor, Round and Round2 definitions.
33389         * sysmath.c: Modified certain functions that were not 100% compliant
33390         with MS.NET (math precision) and added the implementation of Floor,
33391         Round and Round2.
33392
33393 2003-02-07  Martin Baulig  <martin@ximian.com>
33394
33395         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
33396
33397 2003-02-07  Martin Baulig  <martin@ximian.com>
33398
33399         * debug-mono-symfile.c: Reflected latest symwriter changes.
33400         (mono_debug_create_mono_symbol_file): Removed.
33401         (mono_debug_open_mono_symbol_file): Take an argument which
33402         specifies whether to create a dynamic symbol file.
33403
33404 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
33405
33406         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
33407
33408 2003-02-05  Martin Baulig  <martin@ximian.com>
33409
33410         * reflection.c (mono_image_build_metadata): Make this public,
33411         protect it against being called multiple times, don't create
33412         resources and don't build the compressed metadata here.
33413         (mono_image_create_pefile): Do this here.
33414
33415         * icall.c
33416         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
33417
33418 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33419
33420         * socket-io.c: fixed bug #36322.
33421
33422 2003-02-06  Piers Haken <piersh@friskit.com>
33423
33424         * appdomain.[ch]:
33425         * class.h:
33426         * debug-mono-symfile.c:
33427         * icall.c:
33428         * loader.c:
33429         * mono-config.c:
33430         * monosn.c:
33431         * reflection.c:
33432         * socket-io.c: warning cleanups
33433
33434 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
33435
33436         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
33437         function. works like remoting invoke, but does a check for the Proxy first.
33438
33439 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
33440
33441         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
33442
33443 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
33444
33445         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
33446         array of pointers.
33447         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
33448         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
33449
33450         * object.c (mono_store_remote_field_new): used by the new jit
33451         instead of mono_store_remote_field
33452         (mono_load_remote_field_new): used by the new jit
33453         instead of mono_load_remote_field
33454
33455 2003-02-05  Patrik Torstensson
33456
33457         * appdomain.c: changed unload to take the domain id instead
33458         of domain
33459         
33460         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
33461
33462
33463 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33464
33465         * appdomain.c: don't look for assemblies in ApplicationBase if
33466         PrivateBinPathProbe is set.
33467
33468 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33469
33470         * object.c: make the first argument in main_args contain the absolute
33471         path to the assembly. Fixes bug #37511.
33472
33473 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33474
33475         * icall.c: get correct UTC offset for countries not using daylight
33476         time saving. Fixes bug #30030.
33477
33478 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33479
33480         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
33481         and 1 are the family).
33482
33483 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
33484
33485         * icall.c (ves_icall_InternalExecute): removed wrong assertion
33486
33487         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
33488
33489 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
33490
33491         * reflection.c: added support for SignatureHelper tokens, which is
33492         needed by the Calli opcode.
33493
33494         * reflection.h: track changes to SignatureHelper class.
33495
33496         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
33497
33498 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33499
33500         * appdomain.c: fixed loading assemblies from PrivateBinPath.
33501
33502 2003-02-03  Patrik Torstensson
33503         * appdomain.[c|h], domain.c : 
33504          - Added support for getting a domain via domain id
33505          - Support for setting and getting domain from System.AppDomain 
33506            (used in cross appdomain channel)
33507          - Added support for get/set for a MonoAppContext on a thread 
33508            (Context class in System.Runtime.Remoting.Contexts),
33509          - Removed hack in Get/SetData and ExecuteAssembly.
33510         
33511         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
33512         the managed world to get control when a proxy is created.
33513
33514         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
33515         
33516 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
33517
33518         * icall.c
33519         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
33520         Populate the codebase field as well.
33521
33522 2003-02-02  Martin Baulig  <martin@ximian.com>
33523
33524         * debug-mono-symfile.c
33525         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
33526         (mono_debug_symfile_add_method): Allow interncalls.
33527
33528 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33529
33530         * icall.c: throw parse exception if strtod fails or the string is empty.
33531
33532 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
33533
33534         * marshal.c: handle object type separately from defined
33535         class types.
33536
33537 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
33538
33539         * marshal.c: handle NATIVE_LPSTR for strings when it's
33540         explicitly specified.
33541
33542 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
33543
33544         * reflection.c, reflection.h, icall.c: setup the reflection
33545         handle cache for ModuleBuilders and AssemblyBuilders.
33546
33547 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
33548
33549         * reflection.c (reflection_methodbuilder_to_mono_method): set
33550         pinvoke flag
33551
33552 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33553
33554         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
33555
33556 2003-01-29  Dick Porter  <dick@ximian.com>
33557
33558         * threads.c: No need for the fake_thread kludge now that Thread
33559         doesn't run a class constructor
33560         
33561 2003-01-29  Dick Porter  <dick@ximian.com>
33562
33563         * threads.c: Use g_direct_hash instead of the rather bogus
33564         g_int_hash
33565
33566 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
33567
33568         * marshal.c (mono_marshal_get_native_wrapper): add check for null
33569         (fix pinvoke12.exe)
33570         (mono_marshal_get_struct_to_ptr): generate valid IL code
33571         (mono_marshal_get_ptr_to_struct): generate valid IL code
33572         (*): correctly set sig->pinvoke, we need to memdup the signature
33573         to do that
33574
33575 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33576
33577         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
33578         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
33579
33580 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
33581
33582         * profiler.c: provide more callers information.
33583
33584 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
33585
33586         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
33587
33588         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
33589
33590         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
33591
33592 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33593
33594         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
33595         exception instead of going into an infinite loop on dates which it 
33596         can't yet handle.
33597
33598         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
33599         out-of-range exception if needed.
33600
33601         * class.c (mono_class_setup_vtable): allow a virtual method to provide
33602         an implementation for an interface method and to override an inherited
33603         method at the same time. 
33604         Imagine a scenario when a virtual method is used to override a
33605         virtual abstract method in a parent class, and this same method 
33606         provides an implementation for an method inherited from an interface. 
33607         In this case, the interface resolution code will set im->slot, which 
33608         means that the virtual method override pass will skip this method 
33609         which means a pointer to the abstract method inherited from the parent
33610         will remain in the vtable of this non-abstract class.
33611
33612         * class.c: (mono_class_setup_vtable): continue search for a real 
33613         method if only an abstract method is found.     
33614
33615 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
33616
33617         * reflection.c: add size to encoding for ByValStr and ByValArray
33618         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
33619
33620 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33621
33622         * class.c (mono_class_setup_vtable): pass the override info as an
33623         argument.
33624
33625         * class.c (mono_class_setup_vtable): set the slot of overriding methods
33626         correctly.
33627         
33628         * reflection.c (ensure_runtime_vtable); add support for method 
33629         overrides.
33630         
33631 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33632
33633         * reflection.c (resolution_scope_from_image): Hack to work to work with
33634         dynamic assemblies.
33635
33636         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
33637         added a 'force_ref' argument to force this function to allways return 
33638         a TypeRef. This is needed by mono_image_get_memberref_token ().
33639         
33640 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33641
33642         * reflection.c (mono_image_get_type_info): interfaces really don't have
33643         a parent.
33644
33645         * reflection.c (mono_image_basic_init): fill out missing fields of
33646         image structure.
33647
33648         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
33649         dynamic assemblies. This is required so dynamic assemblies show up in
33650         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
33651         Type::GetType() etc. This is consistent with MS behaviour.
33652
33653         * image.c image.h reflection.c: add newly created classes to the name 
33654         cache so mono_class_get () will find them.      
33655
33656 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33657
33658         First part of changes to get IKVM.NET running under mono.
33659         
33660         * appdomain.h, appdomain.c: added new function 
33661         mono_domain_try_type_resolve() which will emit TypeResolve events. 
33662         This function will call AppDomain::DoTypeResolve to do the actual work.
33663
33664         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
33665         moved existing code dealing with dynamic tokens to a new function 
33666         called mono_reflection_lookup_dynamic_token (). This function will 
33667         raise TypeResolve events when appropriate. Since reflection.c is not 
33668         part of libmetadata, a new hook function called 
33669         mono_lookup_dynamic_token() is added to class.c which will call this.
33670
33671         * assembly.h assembly.c: make the invoke_load_hook function public,
33672         so it can be called for dynamic assemblies.
33673
33674         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
33675
33676         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
33677         type isn't found.
33678
33679         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
33680         MonoGHashTable, since it contains pointers to objects which the GC 
33681         needs to track.
33682
33683         * assembly.c (search_loaded): remove unused variable.
33684         
33685 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
33686
33687         * object.c: fixed issue exposed by gcc-generated IL programs
33688         that use RVA data for pointers.
33689
33690 2003-01-25  Martin Baulig  <martin@ximian.com>
33691
33692         * threads.c (start_wrapper): Moved the initialization of
33693         `start_func' above the mono_new_thread_init() call to which we
33694         pass it as argument.
33695
33696 2003-01-24  Martin Baulig  <martin@ximian.com>
33697
33698         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
33699         the MonoThread pointer.
33700
33701 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
33702
33703         * icall.c: Rename `PowImpl' to Pow.
33704
33705 2003-01-23  Dick Porter  <dick@ximian.com>
33706
33707         * threads.c (start_wrapper): Create a Thread object if needed, so
33708         the Main() thread can do the class initialisation in a subthread
33709         that has been set up to allow managed code execution.
33710
33711         Pass the thread ID instead of the MonoThread pointer to the thread
33712         start and attach callbacks.  This change is required, because the
33713         jit thread start callback must be called _before_ the Thread
33714         object can be created.
33715         
33716         (mono_thread_init): Removed much object creation code that is no
33717         longer needed.  No managed code is called from here now.
33718
33719         * object.c (mono_runtime_exec_managed_code): Create a subthread
33720         for Main, and call back to the runtime to use it.
33721         Set the exit code when Main exits.
33722
33723         * gc.c: Make sure domain finalisation happens in a subthread.
33724         Re-enable threaded GC, fixing bug 31333 (again).
33725
33726         * environment.c: System.Environment internall calls (so far just
33727         ExitCode is here, the others are still in icall.c)
33728
33729         * appdomain.c (mono_runtime_cleanup): All threads running managed
33730         code should have finished before mono_runtime_cleanup() is
33731         reached, so no need to clean up threads.
33732
33733 2003-01-22  Martin Baulig  <martin@ximian.com>
33734
33735         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
33736         `gpointer func' arguments.      
33737         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
33738         but added `MonoThread *thread' argument.
33739         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
33740
33741         * threads.c (mono_new_thread_init): Added `gpointer func' argument
33742         and pass it to the mono_thread_start_cb callback.
33743         (mono_install_thread_callbacks): New public function to install a
33744         set of callbacks which are set by the debugger.
33745         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
33746
33747 2003-01-22  Martin Baulig  <martin@ximian.com>
33748
33749         * Makefile.am: Install debug-mono-symfile.h.
33750
33751 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
33752
33753         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
33754
33755 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
33756
33757         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
33758         * class.c (mono_ptr_class_get): correctly set access levels of pointers
33759         (mono_array_class_get): correctly set access levels of arrays
33760
33761 2003-01-20      Patrik Torstensson
33762         * image.h (MonoAssemblyName): changed major, minor, build, revision
33763         from signed to unsigned.
33764
33765 2003-01-20  sean kasun <skasun@azstarnet.com>
33766
33767         * reflection.c (load_cattr_value): Now this handles
33768         MONO_TYPE_SZARRAY.  Fixes bug #35629
33769
33770 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
33771
33772         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
33773         integer value
33774
33775 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33776
33777         * decimal.c: fixed bug #26056.
33778
33779 2003-01-17  Martin Baulig  <martin@ximian.com>
33780
33781         * gc.c: Raise an ExecutionEngineException instead of using g_error().
33782
33783 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33784
33785         * exception.[ch]:
33786         (mono_get_exception_type_initialization): new function.
33787
33788         * object.c: throw a TypeInitializationException when an exception is
33789         thrown invoking the class constructor.
33790
33791 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33792
33793         * reflection.c: fixed attribute reading.
33794
33795 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33796
33797         * icall.c:
33798         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
33799         provided, look for the type in the calling assembly and then in
33800         mscorlib; if the assembly name is provided, only try that one.
33801
33802 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
33803
33804         * object.c: register the vtable before there is a chance it's
33805         queried again recursively.
33806
33807 2003-01-13  Duncan Mak  <duncan@ximian.com>
33808
33809         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
33810         gc-internal.h. 
33811         
33812 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
33813
33814         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
33815
33816 2003-01-11  Martin Baulig  <martin@ximian.com>
33817
33818         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
33819         this to 20 for the release.
33820
33821 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
33822
33823         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
33824
33825         * loader.c (mono_method_get_marshal_info): bug fix
33826
33827         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
33828         structures with explicit layout
33829
33830 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
33831
33832         * profiler.c: made the output more readable (and sorted). 
33833         Added caller information for the allocation profiler.
33834
33835 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
33836
33837         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
33838
33839 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33840
33841         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
33842         to get value types.
33843         
33844 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
33845
33846         * object.c, profiler.h, profiler.c, profiler-private.h:
33847         Added object allocation profiler.
33848
33849 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
33850
33851         * reflection.h, reflection.c: handle global methods.
33852         Compress blob entries.
33853
33854 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
33855
33856         * marshal.c: fix compilation.
33857
33858 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
33859
33860         * loader.c (mono_method_get_marshal_info): impl.
33861
33862         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
33863
33864 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33865
33866         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
33867         for reference types.
33868
33869 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
33870
33871         * loader.c: fixed off by one error in loaded parameter names.
33872
33873 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
33874
33875         * marshal.c (mono_marshal_get_icall_wrapper): like
33876         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
33877         instead of a MonoMethod.
33878
33879 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33880
33881         * decimal.c: fixed bug #36537.
33882
33883 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
33884
33885         * marshal.c: throw a missing method exception if a
33886         P/Invoke method is not found.
33887
33888 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
33889
33890         * icall.c: allow a null this for constructors.
33891
33892 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
33893
33894         * icall.c: raise the proper exceptions if the arguments to the
33895         internal Invoke are incorrect.
33896
33897 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
33898
33899         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
33900
33901 2003-01-03  Martin Baulig  <martin@ximian.com>
33902
33903         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
33904
33905 2002-12-31  Martin Baulig  <martin@ximian.com>
33906
33907         * debug-mono-symfile.c: Completely rewrote the type section.
33908         Instead of using individual malloc()ed fields, we use one big
33909         continuous memory area and offsets into this area.
33910         See the comments in the source code for details.
33911
33912 2002-12-30  Martin Baulig  <martin@ximian.com>
33913
33914         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
33915
33916 2002-12-30  Martin Baulig  <martin@ximian.com>
33917
33918         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
33919         line number table in this data blob instead of using an external
33920         pointer.
33921
33922 2002-12-28  Martin Baulig  <martin@ximian.com>
33923
33924         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
33925
33926 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
33927
33928         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
33929         as a boxed return type.
33930
33931 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
33932
33933         * appdomain.c
33934         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
33935         g_build_filename to properly get separators on the filename created.
33936
33937         * object.h: Small change, introduce MonoMarshalByRefObject to
33938         track the layout of that structure in the C# universe as we make
33939         changes there.
33940
33941 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
33942
33943         * object.c: removed assert to allow static fields on interfaces.
33944         * loader.c: a TypeSpec may be used for any type, not just arrays.
33945
33946 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
33947
33948         * class.c, class.h: added mono_class_array_element_size ().
33949         Ignore static methods in interfaces.
33950
33951 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33952
33953         * threads.c: fixed the build under cygwin.
33954
33955 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
33956
33957         * reflection.c: handle nullref constants. Allocate keys for
33958         reflection handles with the GC.
33959
33960 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
33961
33962         * threads.c, threads.h: added mono_thread_get_abort_signal()
33963         to get a suitable signal for thread abort.
33964
33965 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
33966
33967         * metadata.c: fix handling of ExportedType table.
33968
33969 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33970
33971         * icall.c: added WriteWindowsDebugString internal call.
33972
33973 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33974
33975         * reflection.h: added fields to match C# implementation.
33976
33977 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33978
33979         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
33980
33981 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
33982
33983         * gc.h, gc-internal.h: Rename header for GC internal calls to
33984         gc-internal.h from gc.h as to not clash with Boehm GC having its
33985         header installed as <gc.h> in outside include paths.
33986         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
33987         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
33988
33989 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33990
33991         * icall.c: assign minor, build and revision in FillName.
33992
33993 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
33994
33995         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
33996         Added support for running code generated by Reflection.Emit.
33997
33998 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33999
34000         * appdomain.c: check for NULL argument in LoadFrom.
34001
34002 2002-12-10  Dick Porter  <dick@ximian.com>
34003
34004         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
34005
34006 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34007
34008         * appdomain.c: fix buglet when building exe file name.  Handle full
34009         assembly name (needed after latest changes to AssemblyName).
34010         * image.c:
34011         (mono_image_close): free some hashtables.
34012
34013 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
34014
34015         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
34016         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
34017         on some systems (redhat 7.3) 
34018
34019 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
34020
34021         * threads.c: delete the critical section of a sync block,
34022         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
34023
34024 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
34025
34026         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
34027
34028 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34029
34030         * appdomain.[ch]: handle the assembly preload event to try loading the
34031         assemblies using the paths we have in the current domain.
34032
34033         * assembly.[ch]: created an assembly preload hook that is called to try
34034         loading the assembly by other means that the ones provided here.
34035
34036         * domain.c: initialize the domain search path.
34037
34038         From now on, assemblies (TODO: except corlib and System) are loaded
34039         according to these rules when using mono_assembly_load ():
34040
34041                 1. It tries to load the assembly from the ApplicationBase
34042                 of the current domain appending .dll and .exe (TODO: have to
34043                 try loading from name/name.dll and name/name.exe).
34044
34045                 2. It tries the search path specified in PrivateBinPath for the
34046                 current domain (if any).
34047
34048                 3. Previous behavior.
34049
34050 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
34051
34052         * icall.c: implemented GetInterfaceMap() related icall.
34053         * domain.c, loader.h: load MethodInfo in mono_defaults.
34054
34055 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
34056
34057         * gc.c: disable the finalizer thread for now, untill all the issues
34058         with it are resolved.
34059
34060 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
34061
34062         * string-icalls.c: handle embedded nulls in string ctor when the
34063         length is specified.
34064
34065 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
34066
34067         * class.c: look for explicit interface implementation in parent
34068         classes, too.
34069
34070 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
34071
34072         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
34073
34074 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
34075
34076         * gc.c: protect handles with a critical section.
34077
34078 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34079
34080         * icall.c:
34081         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
34082         parameters. If no assembly specified, try getting the type from all
34083         the assemblies in the current domain, else, load the assembly and get
34084         the type from it.
34085
34086 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34087
34088         * marshal.c: applied patch from Aleksey Demakov that fixes
34089         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
34090
34091 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34092
34093         * icall.c: fixed get_location.
34094
34095 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
34096
34097         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
34098         declarations to make it work with older gcc. 
34099
34100         * loader.c (mono_get_method): set signature->pinvoke for native calls
34101
34102 2002-11-20  Dick Porter  <dick@ximian.com>
34103
34104         * threads.c (mono_thread_init): Set the main thread's handle
34105
34106 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
34107
34108         * gc.c: allow compilation without GC support. Changed to match the
34109         mono coding style.
34110
34111 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
34112
34113         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
34114
34115 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
34116
34117         * reflection.c: set a public key token on the core assemblies.
34118
34119 2002-11-18  Dick Porter  <dick@ximian.com>
34120
34121         * threads.c: Split out some thread initialisation so that other
34122         files can set the start callback function.
34123
34124         * gc.c: Run finalisers in a separate thread, to avoid stack
34125         overflow.  Fixes bug 31333.
34126
34127         * appdomain.c: Set up GC finalisation thread.
34128
34129         * reflection.c: 
34130         * object.c: 
34131         * domain.c: Use gc.h macros for GC_malloc
34132         
34133 2002-11-15  Dick Porter  <dick@ximian.com>
34134
34135         * threadpool.c: 
34136         * threads.c:
34137         * appdomain.c: Removed mono_runtime_init_with_attach(),
34138         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
34139         merging the extra parameter with the existing function.  Removed
34140         unneeded code in mono_thread_attach().
34141
34142 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
34143
34144         * image.c (mono_image_loaded_by_guid): a method to get loaded
34145         images by guid. 
34146         (load_metadata_ptrs): we store the guid as string.
34147
34148 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
34149
34150         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
34151
34152         * metadata.c (mono_guid_to_string): imported method form Zoltan
34153         Varga (slightly modified)
34154
34155         * assembly.c (mono_assembly_open): load precompiled code
34156
34157         * loader.h (MonoMethod): we store the method token for use in the
34158         aot compiler. 
34159
34160 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34161
34162         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
34163         the hook function called when an assembly is loaded.
34164         
34165         * domain.c: Modified file.
34166         (mono_domain_assembly_load): removed hash table insertion of assemblies.
34167
34168         Fixes bug #33196.
34169
34170 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
34171
34172         * reflection.c: Map PEFileKind to the value expected by the WinNT
34173         image loader. 
34174
34175 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34176
34177         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
34178         Read until the buffer is filled completely.
34179
34180 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34181
34182         * icall.c: implemented MonoType.InternalGetEvent ().
34183
34184 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34185
34186         * appdomain.c: implemented InitAppDomainSetup. Delayed
34187         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
34188         the entry_assembly.
34189
34190         * assembly.c: base_dir is now an absolute path ending with
34191         G_DIR_SEPARATOR.
34192
34193         * icall.c: modified get_location according to the above changes.
34194
34195         * object.c: init AppDomain.SetupInformation for the default domain after
34196         we have the entry assembly.
34197
34198         * domain.c: when unloading a domain, setup = NULL.
34199
34200 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
34201
34202         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
34203
34204 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
34205
34206         * object.h, object.c: introduced mono_object_get_virtual_method ()
34207         to lookup the method invoked on an object when a callvirt is done on
34208         a method.
34209         * icall.c: make MethodInfo::Invoke() always do a virtual call.
34210
34211 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34212
34213         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
34214         current domain when loaded an assembly and failed to load it.
34215
34216         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
34217
34218 2002-10-31  Dick Porter  <dick@ximian.com>
34219
34220         * icall.c: 
34221         * file-io.h: 
34222         * file-io.c: Return the error status in a parameter, as the
34223         GetLastError() value has long since been blown away if we try and
34224         look it up in a subsequent internal call invocation.  Delete the
34225         GetLastError() internal call, because it's useless.
34226
34227 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
34228
34229         * class.[ch]: added cast_class to fix bug 29517
34230
34231 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
34232
34233         * marshal.c: create valid IL code in the filter clause:
34234         the new JIT is less forgiving:-)
34235
34236 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34237
34238         * icall.c: removed get_property internal call.
34239
34240 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
34241
34242         * appdomain.h domain.c: Added an ID to appdomains.
34243         
34244         * threads.c threads.h icall.c: Implement icall
34245         Thread:GetDomainID(), and remove unused icall 
34246         CurrentThreadDomain_internal.
34247
34248 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34249
34250         * icall.c: Don't recurse through the base types in GetConstructor.
34251         Fixes bug #32063. 
34252
34253 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
34254
34255         * mempool.h, mempool.c: added mono_mempool_empty() and
34256         mono_mempool_stats().
34257
34258 2002-10-23  Dick Porter  <dick@ximian.com>
34259
34260         * file-io.c: 
34261         * file-io.h: 
34262         * icall.c: Added MonoIO.GetFileType internal call
34263
34264 2002-10-17  Dick Porter  <dick@ximian.com>
34265
34266         * appdomain.c (mono_runtime_cleanup): Don't signal the async
34267         delegate semaphore before waiting for all threads to finish,
34268         because new threads can also call async delegates.  Fixes bug
34269         32004.
34270
34271         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
34272         of 3 seconds, in case another async job is queued.  (This part is
34273         needed because the bug fix reintroduced the 3s exit lag.)  This
34274         makes the mono_runtime_shutdown flag superfluous.
34275
34276 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
34277
34278         * reflection.c: include ehader size in method section headers.
34279         Really check for suplicated modules entries.
34280
34281 2002-10-17  Martin Baulig  <martin@gnome.org>
34282
34283         * debug-mono-symfile.c: Added back support for locals.
34284
34285 2002-10-14  Martin Baulig  <martin@gnome.org>
34286
34287         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
34288         MONO_TYPE_VOID.
34289
34290 2002-10-14  Martin Baulig  <martin@gnome.org>
34291
34292         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
34293         mono_class_get() instead of looking in the class cache. 
34294
34295 2002-10-13  Martin Baulig  <martin@gnome.org>
34296
34297         * debug-mono-symfile.c: Set version number to 28, include the
34298         signature in method names.
34299
34300 2002-10-13  Martin Baulig  <martin@gnome.org>
34301
34302         * debug-mono-symfile.h: Set version number to 27.
34303
34304 2002-10-11  Martin Baulig  <martin@gnome.org>
34305
34306         * gc.c: Don't register/unregister NULL pointers as disappearing links.
34307
34308 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
34309
34310         * metadata.c, metadata.h: added helper function to allocate signatures.
34311
34312 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34313
34314         * icall.c: added internal call to get the location of machine.config.
34315
34316 2002-10-08  Martin Baulig  <martin@gnome.org>
34317
34318         * debug-mono-symfile.c: Ignore classes with a pending init for the
34319         moment.
34320
34321 2002-10-03  Dick Porter  <dick@ximian.com>
34322
34323         * threads.c: Freebsd pthread_t is a pointer
34324
34325 2002-10-03  Dick Porter  <dick@ximian.com>
34326
34327         * socket-io.c: Implemented GetHostName_internal
34328
34329 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34330
34331         * mono-config.c:
34332         (mono_config_parse_file): don't leak the text.
34333
34334 2002-10-02  Martin Baulig  <martin@gnome.org>
34335
34336         * debug-mono-symfile.c: Added support for methods.
34337
34338 2002-10-01  Martin Baulig  <martin@gnome.org>
34339
34340         * debug-mono-symfile.c: Don't emit methods and line numbers for
34341         the dynamic symbol file, just write the type table.  We can easily
34342         have an external helper program which creates a symbol file for an
34343         IL file.        
34344
34345 2002-10-01  Dick Porter  <dick@ximian.com>
34346
34347         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
34348         Only add the handle to the cleanup array when we're about to
34349         launch the thread.  Bug 31425 deadlocked when the test was run on
34350         mono under w32.
34351
34352 2002-10-01  Martin Baulig  <martin@gnome.org>
34353
34354         * debug-mono-symfile.c: Added support for properties.
34355
34356 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
34357
34358         * reflection.c: unaligned store fix from Mark Crichton
34359         <crichton@gimp.org>.
34360
34361 2002-09-27  Martin Baulig  <martin@gnome.org>
34362
34363         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
34364         New interncall.
34365
34366 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
34367
34368         * assembly.h, assembly.c: use a sane API to hook into the assembly
34369         loading process instead of a useless special-purpouse hack
34370         (ngen needs a hook, too, for example).
34371
34372 2002-09-27  Dick Porter  <dick@ximian.com>
34373
34374         * threads.c (mono_thread_init): Call GetCurrentProcess() so
34375         io-layer can set up some process handle info.  Not needed on w32,
34376         but doesn't hurt either.
34377
34378         * process.c: Pass the program name in the second parameter to
34379         CreateProcess, so the path is searched.  Include the working
34380         directory. Implemented process name, process enumeration, and some
34381         process detail internal calls.
34382         
34383         * icall.c: Added internal calls for process lookup, and some
34384         process details
34385
34386 2002-09-26  Martin Baulig  <martin@gnome.org>
34387
34388         * assembly.c (mono_install_open_assembly_hook): New global
34389         function to install a function to be invoked each time a new
34390         assembly is loaded.
34391         (mono_assembly_open): Run this callback function if set.
34392
34393         * debug-mono-symfile.c: Put back line numbers for the dynamic
34394         symbol file and also record the .il file as source file.  This
34395         allows us to install the temporary symbol file as `file.dbg' just
34396         like a compiler-generated one.
34397
34398 2002-09-26  Nick Zigarovich <nick@chemlab.org>
34399
34400         * Corrected typo in gc.c (BOHEM vs BOEHM).
34401
34402 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34403
34404         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
34405         GetProperties. Also avoid calling g_slist_length in GetProperties and
34406         GetMethods.
34407
34408 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
34409
34410         * reflection.c: avoid unaligned stores (bug spotted by
34411         Mark Crichton  <crichton@gimp.org>).
34412
34413 2002-09-25  Martin Baulig  <martin@gnome.org>
34414
34415         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
34416         instead of guint64 for addresses and added prologue/epilogue info.
34417
34418 2002-09-25  Martin Baulig  <martin@gnome.org>
34419
34420         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
34421         store line number info.  For the dynamic symbol file, we only need
34422         to provide the JIT generated dynamic line number info for the dynamic
34423         symbol file.
34424
34425 2002-09-25  Martin Baulig  <martin@gnome.org>
34426
34427         * debug-mono-symfile.h: Incremented version number.
34428
34429 2002-09-24  Martin Baulig  <martin@gnome.org>
34430
34431         * class.c (mono_debugger_class_init_func): New global function
34432         pointer variable.
34433         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
34434         call it.
34435
34436         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
34437         function.  This is called via the mono_debugger_class_init_func
34438         hook to add all types to the dynamic type table.
34439         (ves_icall_MonoDebugger_GetType): New interncall to get a class
34440         from its metadata token.
34441
34442         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
34443         New interncall for the debugger.
34444
34445 2002-09-24  Nick Drochak <ndrochak@gol.com>
34446
34447         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
34448         before using it in case it is null.
34449         
34450 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
34451
34452         * metadata.c: allow custom modifiers in local var signatures
34453         (bug spotted by Zoltan Varga).
34454
34455 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
34456
34457         * class.c: deal with the <Module> class that may have a NULL vtable.
34458         Eliminate warnings.
34459
34460 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34461
34462         * image.c, image.h: more strong name helpers.
34463         * monosn.c: more work: convert pem keys to cryptoapi format.
34464
34465 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
34466
34467         * string-icalls.c: speedup IndexOf.
34468
34469 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34470
34471         * icall.c: updates from Zoltan.2.Varga@nokia.com.
34472
34473 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
34474
34475         * icall.c: cleanup: use mono_object_domain ().
34476
34477 2002-09-23  Martin Baulig  <martin@gnome.org>
34478
34479         * debug-mono-symfile.c: Improved type support.
34480
34481 2002-09-22  Martin Baulig  <martin@gnome.org>
34482
34483         * debug-mono-symfile.c: Added support for reference types and strings.
34484
34485 2002-09-22  Martin Baulig  <martin@gnome.org>
34486
34487         * debug-mono-symfile.c: Started to work on the type table.
34488
34489 2002-09-21  Martin Baulig  <martin@gnome.org>
34490
34491         * debug-mono-symfile.c: Largely reworked the symbol table format.
34492         The symbol table is now incrementally updated each time a new
34493         method is added.  We're now also using our own magic and version
34494         so that you don't need to recompile all your classes if the
34495         dynamic table changes.
34496         (mono_debug_update_mono_symbol_file): Removed.
34497         (mono_debug_symfile_add_method): New function to add a method.
34498
34499 2002-09-21  Martin Baulig  <martin@gnome.org>
34500
34501         * icall.c
34502         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
34503         New interncall.
34504
34505         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
34506         New interncall to get a method from its metadata token.
34507
34508 2002-09-21  Martin Baulig  <martin@gnome.org>
34509
34510         * debug-mono-symfile.c: Create type table.
34511
34512 2002-09-20  Martin Baulig  <martin@gnome.org>
34513
34514         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
34515
34516 2002-09-20  Martin Baulig  <martin@gnome.org>
34517
34518         * debug-mono-symfile.c: Provide information about params and locals.
34519
34520 2002-09-20  Martin Baulig  <martin@gnome.org>
34521
34522         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
34523         New interncall.
34524
34525         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
34526         interncall to get a method from its metadata token.
34527
34528 2002-09-20  Martin Baulig  <martin@gnome.org>
34529
34530         * debug-mono-symfile.c: Added a few checks for method->header
34531         being non-NULL.  This should never happen, but for the moment
34532         let's use a g_warning() rather than a g_assert().
34533
34534 2002-09-19  Mark Crichton  <crichton@gimp.org>
34535
34536         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
34537         even if support for it isn't present.  Added an #ifdef to fix this.
34538
34539         * socket-io.c: Added checks back for Solaris support.
34540
34541 2002-09-19  Martin Baulig  <martin@gnome.org>
34542
34543         * debug-mono-symfile.c (read_string, write_string): Reflect latest
34544         changes in the symbol file format.
34545
34546 2002-09-18  Martin Baulig  <martin@gnome.org>
34547
34548         * debug-mono-symfile.c: Set version number to 21.
34549
34550 2002-09-18  Dick Porter  <dick@ximian.com>
34551
34552         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
34553         on netbsd.  Fixes bug 30051.
34554
34555 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34556
34557         * reflection.c:
34558         (set_version_from_string): little fix.
34559
34560 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34561
34562         * monosn.c, Makefile.am: added strong name utility.
34563         * reflection.h, reflection.c: implemented delayed signing,
34564         locale, version and hash id assembly attributes.
34565
34566 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
34567
34568         * loader.c, metadata.c: load param attributes in signatures.
34569
34570 2002-09-16  Martin Baulig  <martin@gnome.org>
34571
34572         * debug-mono-symfile.c: Added string table with all method names.
34573
34574 2002-09-14  Martin Baulig  <martin@gnome.org>
34575
34576         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
34577         fast method lookup.
34578
34579 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
34580
34581         * reflection.c: record the public key token of referenced assemblies.
34582
34583 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
34584
34585         * image.c, image.h: added functions to get the strong name and the
34586         public key of an assembly.
34587         * pedump.c: use them.
34588
34589 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
34590
34591         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
34592
34593 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
34594
34595         * marshal.c (mono_marshal_get_managed_wrapper): Added
34596         MONO_TYPE_BOOLEAN 
34597
34598 2002-09-11  Martin Baulig  <martin@gnome.org>
34599
34600         * gc.c: Call GC_unregister_disappearing_link() on all links when
34601         finalizing them, this is necessary to aviod a crash in boehm's
34602         finalize handler.
34603
34604 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34605
34606         * gc.c: handle GetTarget for finalized objects spotted and fixed by
34607         nick@chemlab.org.
34608
34609 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
34610
34611         * icall.c: implemented MonoType::Module.
34612         * reflection.c, reflection.h: mono_module_get_object () from
34613         Tomi Pakarinen <tomi.pakarinen@welho.com>.
34614
34615 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
34616
34617         * icall.c: ignore overridden methods in GetMethods ().
34618         Fix for FieldInfo::SetValue().
34619         * object.c: handle float/double in runtime invoke.
34620
34621 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
34622
34623         * object.c: allow a constructor to be called again on an object.
34624
34625 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34626
34627         * class.h, class.c: move field layout code to it's own function and
34628         export it. Get an interface id earlier. Move fields in MonoClass
34629         so they are more cache friendly and align the bitfields.
34630         * loader.c: temporary handle get_param_names() for a runtime method.
34631         * reflection.c, reflection.h: more code to handle runtime creation of
34632         types.
34633
34634 2002-09-09  Martin Baulig  <martin@gnome.org>
34635
34636         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
34637         signature with the pinvoke field being set for the actual call.
34638
34639 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
34640
34641         * icall.c: removed some unused icalls. Start of map of glib charsets
34642         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
34643
34644 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
34645
34646         * debug-helpers.c: break infinite loop (found and fixed by
34647         Holger Arnold <harnold@gmx.de>).
34648
34649 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
34650
34651         * icall.c: target may be null in create_delegate.
34652
34653 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34654
34655         * marshal.c: handle a boolean return type.
34656
34657 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34658
34659         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
34660
34661 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
34662
34663         * gc.c: fix weakreferences.
34664
34665 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
34666
34667         * icall.c: added icall to get default codepage.
34668
34669 2002-09-03  Dick Porter  <dick@ximian.com>
34670
34671         * threads.h: 
34672         * threads.c: Use MonoThread instead of MonoObject where
34673         apropriate.
34674
34675         Store running thread objects in a hash table, so that we have all
34676         the info to hand when waiting for them to finish
34677         (means we don't need OpenThread() any more, so mingw builds should
34678         be fully functional again.)
34679
34680         * verify.c:
34681         * object.h: Added thread ID to MonoThread
34682
34683 2002-09-03  Martin Baulig  <martin@gnome.org>
34684
34685         * icall.c (System.Reflection.Assembly::get_location): New interncall.
34686
34687 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34688
34689         * icall.c: fixed leak in get_temp_path. Thanks lupus.
34690
34691 2002-09-03  Martin Baulig  <martin@gnome.org>
34692
34693         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
34694         argument to store the end address of the disassembled instruction.
34695
34696         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
34697         here from debug-symfile.h.
34698         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
34699         JIT into this struct.
34700         (MonoSymbolFile): Added `char *image_file' field.
34701         (MonoDebugGetMethodFunc): Removed.
34702         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
34703         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
34704         (mono_debug_find_method): New method.
34705
34706         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
34707         create a full symbol file.
34708         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
34709         and static symbol files.
34710         (mono_debug_find_method): The symbol file keeps an internal method hash,
34711         call this to get a MonoDebugMethodInfo from a MonoMethod.
34712
34713         * debug-symfile.[ch]: Removed.
34714
34715 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
34716
34717         * image.c (do_mono_image_open): Remove linker version check.
34718
34719 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
34720
34721         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
34722         wrappers for instance methods.
34723         
34724 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34725
34726         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
34727
34728 2002-08-28  Dick Porter  <dick@ximian.com>
34729
34730         * Makefile.am: Export HOST_CC for w32 builds
34731
34732 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
34733
34734         * file-io.c process.c: MonoString are null terminated, no
34735         need for mono_string_to_utf16() anymore.
34736
34737 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
34738
34739         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
34740
34741 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
34742
34743         * icall.c, reflection.h: speedup System.MonoType.
34744
34745 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
34746
34747         * reflection.c: allow null as the value of a string argument in
34748         custom attributes constructors.
34749
34750 2002-08-27  Martin Baulig  <martin@gnome.org>
34751
34752         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
34753         `trampoline_address' field.
34754
34755 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
34756
34757         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
34758         check (fixes bug #29486) 
34759
34760 2002-08-27  Martin Baulig  <martin@gnome.org>
34761
34762         * debug-mono-symfile.c: Changed the file format in a way that allows us
34763         open it read-only and to use a specially malloced area for all the
34764         dynamic data.  We can now also generate a symbol file on-the-fly if we're
34765         debugging IL code and there is no MCS generated symbol file for it.
34766
34767 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
34768
34769         * object.c: added a define for a good string and array
34770         creation speedup (not enabled by default because we need to deal with
34771         the synch stuff).
34772
34773 2002-08-26  Martin Baulig  <martin@gnome.org>
34774
34775         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
34776         function to create a dynamic symbol file.  This is used by the
34777         debugger to create a symbol file for IL code on-the-fly.
34778
34779 2002-08-26  Martin Baulig  <martin@gnome.org>
34780
34781         * loader.c (mono_lookup_pinvoke_call): Include the error message
34782         from g_module_error() in the error message.
34783
34784 2002-08-24  Martin Baulig  <martin@gnome.org>
34785
34786         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
34787         function to update the symbol file.  The symbol file is mmap()ed
34788         writable, but private.  This allows us to install the symbol file
34789         together with the assembly.
34790
34791 2002-08-24  Martin Baulig  <martin@gnome.org>
34792
34793         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
34794         but they can read the new symbol file format which mcs is now creating.
34795
34796         * debug-symfile.c (mono_debug_find_source_location): Moved to
34797         debug-mono-symfile.c; this is now operating on the new symbol file.
34798
34799 2002-08-23  Martin Baulig  <martin@gnome.org>
34800
34801         * debug-helpers.c (mono_method_desc_from_method): New function to get
34802         a MonoMethodDesc from a MonoMethod.
34803
34804 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
34805
34806         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
34807         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
34808
34809 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
34810
34811         * string-icalls.[ch]: make helper methods static.
34812
34813 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34814
34815         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
34816         types to it and to SetValueInternal.
34817
34818         * object.c: Moved handle_enum label to its proper place. This was the
34819         f... bug! ;-)
34820
34821         This time i compiled mcs and gtk-sharp and they both work.
34822
34823 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34824
34825         * icall.c: reverted partially my previous patch until 
34826         object.c:set_value handles enums correcly.
34827
34828 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34829
34830         * icall.c:
34831         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
34832         (ves_icall_System_Environment_get_MachineName): removed warning when
34833         compiling under cygwin.
34834
34835 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
34836
34837         * object.c: fixed field_get_value() for reference types.
34838
34839 2002-08-22  Dick Porter  <dick@ximian.com>
34840
34841         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
34842         Don't free a buffer while it's still needed.  Patch from Jonathan
34843         Liger <Jonathan.liger@wanadoo.fr>
34844
34845 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
34846
34847         * icall.c (ves_icall_System_Environment_get_Platform): Add new
34848         internal call.
34849
34850 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
34851
34852         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
34853         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
34854
34855         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
34856         we call unmanaged code which throws exceptions.
34857
34858 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34859
34860         * appdomain.h: added per-domain entry_assembly.
34861         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
34862         arguments.
34863         * icall.c: Assembly::GetEntryAssembly icall.
34864         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
34865         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
34866
34867 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
34868
34869         * appdomain.h, gc.c: added mono_domain_finalize ().
34870
34871 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34872
34873         * object.c:
34874         (mono_print_unhandled_exception): changed g_warning by g_printerr
34875         because g_log has a 1024 characters limit (yeah, i got a big stack
34876         trace). Don't print exception name, that should be in ToString 
34877         returned string.
34878
34879 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34880
34881         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
34882         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
34883
34884 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34885
34886         * object.c:
34887         (mono_print_unhandled_exception): after previous commit, i realized
34888         that MS calls ToString on the exception. I changed this function to
34889         do that. This way we get stack_trace for free.
34890
34891 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34892
34893         * object.c:
34894         (mono_print_unhandled_exception): invoke Message property instead of
34895         getting 'message' field from Exception. Don't allocate memory for
34896         'trace' and 'message' if not needed.
34897
34898 2002-08-18  Dick Porter  <dick@ximian.com>
34899
34900         * unicode.c: Fix asserts to match Encoder.cs checks
34901
34902 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
34903
34904         * marshal.c: fix unaligned store issue and a few wrong
34905         opcode argument types.
34906
34907 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34908
34909         * icall.c: added GetUninitializedObjectInternal internal call.
34910
34911 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
34912
34913         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
34914         to the right domain.
34915
34916 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
34917
34918         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
34919
34920         * class.c (class_compute_field_layout): set blittable to false for Strings
34921
34922         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
34923
34924 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
34925
34926         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
34927         first chunk of code to create types at runtime. Code to
34928         handle ReflectedType/DeclaringType. Make reflection handles
34929         domain specific.
34930
34931 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
34932
34933         * class.c: set correct name in arrays.
34934
34935 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
34936
34937         * appdomain.c (mono_domain_transfer_object): make it work with
34938         valuetypes. bug fixes.
34939
34940 2002-08-12  Dick Porter  <dick@ximian.com>
34941
34942         * object.h: Rename some parameters to avoid c++ keywords (Patch
34943         from Joseph Wenninger <kde@jowenn.at>)
34944
34945 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
34946
34947         * icall.c: added icall to implement Assembly.GetFile*.
34948
34949 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
34950
34951         * reflection.h, reflection.c: code to embed managed resources.
34952
34953 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
34954
34955         * class.c: move all the type size stuff into
34956         class_compute_field_layout().
34957
34958 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34959
34960         * class.c: ensure enums have always the correct instance size.
34961         * unicode.c: remove wrong assert.
34962
34963 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
34964
34965         * assembly.c: fix mem corruption issue.
34966         * image.h, image.c: added mono_image_get_resource () to access
34967         managed resources.
34968         * icall.c: implemented Assembly.EntryPoint property and some
34969         Managed Resources related internalcalls.
34970
34971
34972 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
34973
34974         * image.c, image.h: impemented mono_image_get_entry_point ().
34975         * appdomain.c: use mono_image_get_entry_point.
34976
34977 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
34978
34979         * reflection.c: support the object type argument when loading
34980         custom attributes.
34981
34982 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
34983
34984         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
34985         String as return type.
34986
34987 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
34988
34989         * reflection.c: fix encoding of named args for custom attrs to match
34990         the ms implementation. Read them back when instantiating custom
34991         attributes.
34992
34993 2002-08-02  Radek Doulik  <rodo@ximian.com>
34994
34995         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
34996         by Dietmar as quick fix
34997         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
34998         16 as stack size, used on more places as quick fix before Dietmar
34999         will fix it properly
35000
35001 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
35002
35003         * object.h, object.c: added accessors for fields and properties.
35004
35005 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
35006
35007         * class.c, class.h: made mono_class_get_field_from_name ()
35008         loop on parent types.
35009         Added mono_class_get_property_from_name ().
35010
35011 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35012
35013         * class.c, class.h: move the code to setup the type vtable in its own
35014         function so that it can be reused also for types created at runtime.
35015         Eliminate the "class" identifier from the header file.
35016         * reflection.c: setup the vtable for enums so that we can create
35017         objects for use in SetConstant ().
35018
35019 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
35020
35021         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
35022         instead of the delegate itself as this pointer (bug #28383)
35023
35024 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
35025
35026         * marshal.c (mono_marshal_get_managed_wrapper): added return type
35027         conversions.
35028
35029 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35030
35031         * loader.c: don't set the pinvoke bit on icalls.
35032
35033 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
35034
35035         * debug-helpers.c (mono_method_full_name): only print a number to
35036         indicate wrapper type (so that the output is more readable in traces).
35037
35038 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
35039
35040         * class.c (mono_class_init): include method override patch from Paolo
35041
35042 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
35043
35044         * icall.c: fixed GetTypeCode().
35045
35046 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
35047
35048         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
35049         use real delegate invoke function to make it work with multicast
35050         delegates (fix bug# 28291).
35051
35052 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35053
35054         * object.c: load constant strings.
35055
35056 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35057
35058         * reflection.c: no magic numbers.
35059         * tabledefs.h: security action enum.
35060
35061 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35062
35063         * assembly.c: fix possible memory corruption.
35064
35065 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
35066
35067         * reflection.h, reflection.c: added support for linking resources.
35068         * verify.c: check we have an updated corlib.
35069
35070 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
35071
35072         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
35073         string arrays.
35074         (mono_marshal_string_array): null terminate unmanaged string arrays.
35075         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
35076
35077 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35078
35079         * icall.c: Type.GetType () can now return also types from the
35080         calling assembly.
35081
35082 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
35083
35084         * loader.h, loader.c: stack walking support.
35085         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
35086         GetCallingAssembly.
35087
35088 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
35089
35090         * marshal.c: added optimisations for blittable types 
35091
35092         * class.c (mono_array_class_get): do not set blittable attribute on arrays
35093         (mono_class_setup_mono_type): set blittable attribute for single
35094         and double.
35095
35096         * marshal.c (mono_string_utf8_to_builder): impl.
35097         (mono_string_builder_to_utf8): impl.
35098         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
35099
35100 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
35101
35102         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
35103         (mono_marshal_get_managed_wrapper): impl. byref types
35104
35105 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35106
35107         * icall.c:
35108         (search_method): don't display debug message. 
35109
35110 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
35111
35112         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
35113
35114 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
35115
35116         * appdomain.c: set the missing filename when throwing exception.
35117
35118 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
35119
35120         * metadata.c (mono_type_size): code cleanup
35121         (mono_type_stack_size): removed some test code
35122
35123 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
35124
35125         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
35126         mono_get_exception_file_not_found now.
35127
35128         * exception.c (mono_exception_from_name_two_strings): New version
35129         that will call a constructor with two string arguments. 
35130         (mono_get_exception_file_not_found): New helper routine, used to
35131         report file-not-found errors.
35132
35133 2002-07-20  Dick Porter  <dick@ximian.com>
35134
35135         * process.h:
35136         * process.c: Pass file handles to CreateProcess
35137         
35138         * icall.c:
35139         * file-io.h:
35140         * file-io.c: Implemented CreatePipe
35141
35142 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
35143
35144         * metadata.c (mono_get_param_info): set alignment for value types
35145
35146 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35147
35148         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
35149         Constify mono_domain_assembly_open().
35150         * loader.c: handle null namespace in icalls.
35151
35152 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
35153
35154         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
35155         (emit_str_to_ptr_conv): marshal object as structs
35156
35157         * metadata.c (mono_type_to_unmanaged): marshal object as structs
35158
35159         * marshal.c (mono_marshal_get_runtime_invoke): support value types
35160
35161 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
35162
35163         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
35164         (mono_marshal_get_native_wrapper): we an now return value types
35165
35166 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35167
35168         * verify.c: more checks implemented.
35169
35170 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
35171
35172         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
35173         (fix bug #27695)
35174         (mono_marshal_get_native_wrapper): allow byref arguments
35175         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
35176         impl. PtrToStringXXX methods
35177         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
35178         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
35179         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
35180         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
35181         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
35182
35183 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35184
35185         * reflection.c: fix buglet in parsing an assembly name.
35186
35187 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
35188
35189         * marshal.c (emit_ptr_to_str_conv): first impl.
35190
35191 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
35192
35193         * object.c, class.h: cache the vtable in the class as suggested by
35194         vargaz@freemail.hu (Zoltan Varga).
35195
35196 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35197
35198         * class.h, loader.c: added mono_field_from_token().
35199         * verify.c: first cut of type checking code.
35200
35201 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
35202
35203         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
35204
35205 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
35206
35207         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
35208         (fix bug #27782)
35209         (mono_marshal_get_remoting_invoke): impl.
35210         (mono_delegate_begin_invoke): impl.
35211         (mono_mb_emit_save_args): impl.
35212         (mono_delegate_end_invoke): impl.
35213         (mono_marshal_get_delegate_begin_invoke):
35214         (mono_marshal_get_delegate_end_invoke):
35215         (mono_marshal_get_delegate_invoke): generate a special name for
35216         those methods (including the signature) and associate them whith
35217         the delegate class. 
35218
35219 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
35220
35221         * reflection.[ch]: 
35222         (mono_reflection_type_from_name): now it has a MonoImage parameter
35223         which is used as the default image to search the type in. If the image
35224         is NULL or getting the type from it fails, it defaults to corlib.
35225
35226         * icall.c: changed 1 call to mono_reflection_type_from_name to match
35227         new parameter.
35228
35229 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35230
35231         * reflection.c: update the parameter table index.
35232
35233 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35234
35235         * domain.c: don't include the mark byte in the string hash.
35236
35237 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35238
35239         * icall.cs: icall for Type.GetTypeCode ().
35240         * verify: a couple of fixes and disabled local initialization checks.
35241
35242 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
35243
35244         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
35245
35246         * debug-helpers.c (mono_method_full_name): print the type of the
35247         runtime wrapper
35248
35249         * metadata.c (mono_signature_hash): a hash function for signatures
35250         (mono_signature_hash): better hash algorithm
35251
35252         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
35253
35254         * debug-helpers.c (mono_method_full_name): this can now generate
35255         method names with signatures
35256
35257         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
35258         method dont have this pointers.
35259
35260 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
35261
35262         * reflection.c: fixup typebuilder tokens.
35263         * image.c: fix buglet.
35264         * marshal.h: remove whitespace.
35265         * metadata.h, metadata.c: reinstate code that was removed.
35266         * verify.c: handle catch directives and fix another couple of bugs.
35267
35268 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
35269
35270         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
35271         (mono_marshal_get_native_wrapper): make it comp. with the old code
35272         (mono_marshal_get_native_wrapper): support boolean
35273         (mono_marshal_get_managed_wrapper): support more types
35274
35275 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
35276
35277         * class.c (class_compute_field_layout): compute class->blittable attribute.
35278
35279 2002-07-09  Dick Porter  <dick@ximian.com>
35280
35281         * threads.c: Make the thread cleaning up cope with threads that
35282         call ExitThread()
35283
35284 2002-07-08  Radek Doulik  <rodo@ximian.com>
35285
35286         * reflection.c (method_encode_code): use non-translated values to
35287         compute finally_start, this fixes exception handling on ppc, yay!
35288
35289         * decimal.h (struct signscale): fix endianess
35290
35291 2002-07-07  Radek Doulik  <rodo@ximian.com>
35292
35293         * reflection.c: swap box_val and not val
35294
35295 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
35296
35297         * reflection.c, reflection.h: handle full assembly info in type name.
35298         Handle Type arguments when loading custom attributes.
35299         * icall.c: updated to use new mono_reflection_type_from_name () method.
35300
35301 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35302
35303         * loader.c:
35304         (method_from_memberref): also print assembly name when method not found.
35305
35306 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35307
35308         * icall.c:
35309         (ves_icall_TypeGetProperties): fixed bug #27473. 
35310
35311 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35312
35313         * reflection.c: display image name and token when cannot find the
35314         .ctor for an attribute.
35315
35316 2002-07-05  Martin Baulig  <martin@gnome.org>
35317
35318         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
35319
35320 2002-07-04  Dick Porter  <dick@ximian.com>
35321
35322         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
35323         compile on mingw.  This will cause mingw builds to not wait for
35324         subthreads to terminate after the main thread does.  I've lodged a
35325         bug with the mingw developers for them to wrap OpenThread().
35326
35327 2002-07-03  Dick Porter  <dick@ximian.com>
35328
35329         * threads.c: Store thread IDs instead of handles, because
35330         GetCurrentThread() returns a pseudohandle and therefore stores
35331         useless values.  mono_thread_cleanup() continues checking the
35332         array of threads until it is empty, to cope with subthreads
35333         spawning new threads after the main thread has finished.
35334
35335         * profiler.h:
35336         * profiler.c:
35337         * profiler-private.h: Pass the thread ID to thread profiler
35338         functions, instead of a handle
35339
35340 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35341
35342         * verify.c: fixes to make it more usable.
35343         * pedump.c: added --verify code to verify IL code in an assembly.
35344
35345 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35346
35347         * reflection.c: turn errors into warnings to allow compiling corlib.
35348
35349 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
35350
35351         * reflection.c: add special cases to compile corlib.
35352
35353 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35354
35355         * reflection.c: handle properties with only a set method.
35356
35357 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35358
35359         * opcodes.h: add enum with opcodes in opval order.
35360
35361 2002-07-01  Dick Porter  <dick@ximian.com>
35362         
35363         * object.h:
35364         * object.c (mono_runtime_run_main): Removed unneeded argument
35365
35366 2002-06-28  Martin Baulig  <martin@gnome.org>
35367
35368         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
35369
35370 2002-06-27  Dick Porter  <dick@ximian.com>
35371
35372         * threads.c: Store the handle in both the parent thread and in the
35373         subthread, to minimise the time between starting a new thread and
35374         storing its ID.
35375
35376 2002-06-26  Dick Porter  <dick@ximian.com>
35377
35378         * appdomain.c (mono_runtime_cleanup): Close the socket library
35379         after all the threads have finished, not before
35380
35381 2002-06-26  Martin Baulig  <martin@gnome.org>
35382
35383         * debug-symfile.c (mono_debug_find_source_location): Added
35384         `guint32 *line_number' argument.  If it's not NULL, store the line number
35385         there and return the file name without the line number.
35386
35387 2002-06-25  Dick Porter  <dick@ximian.com>
35388
35389         * icall.c:
35390         * process.h:
35391         * process.c: Process forking and other support functions
35392
35393 2002-06-25  Dick Porter  <dick@ximian.com>
35394
35395         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
35396         things dont happen when the image is closed.
35397         (mono_image_lookup_resource): Walk the resource section looking
35398         for a particular entry
35399
35400         * cil-coff.h: PE resource section decoding
35401
35402 2002-06-25  Dick Porter  <dick@ximian.com>
35403         
35404         * assembly.h:
35405         * assembly.c: 
35406         (mono_assembly_foreach): Accessor functions to walk the list of
35407         loaded assemblies
35408         (mono_assembly_set_main):
35409         (mono_assembly_get_main): Process methods need to know which
35410         assembly is the "main" one
35411
35412         * object.c (mono_runtime_run_main): Record the main assembly
35413
35414         * debug-helpers.c: Fix typo
35415
35416 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
35417
35418         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
35419         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
35420
35421 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35422
35423         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
35424
35425 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
35426
35427         * image.c (do_mono_image_open): Initialize reference count,
35428         otherwise we leak the MonoImage.
35429
35430 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
35431
35432         * reflection.c: small tweak to handle self-hosting.
35433
35434 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
35435
35436         * reflection.c: fix type name parse code.
35437
35438 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35439
35440         * reflection.c: break out of the loop.
35441         * image.c: special case corlib.
35442
35443 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35444
35445         * reflection.c: add all the custom attrs at the end to ensure the
35446         ctors have been properly initialized when the attributes are defined
35447         in the current assembly.
35448
35449 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35450
35451         * reflection.c: handle correctly multiple-nested types.
35452
35453 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
35454
35455         * row-indexes.h: fix typos.
35456         * reflection.c: adjust for typos and fix method_def_or_ref
35457         encoding in MethodImpl table.
35458
35459 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35460
35461         * reflection.c: fix entry point patching (thanks Serge!).
35462
35463 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
35464
35465         * verify.c: add check for System.Exception
35466
35467 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35468
35469         * image.c, class.c: minifix for code just c&p'ed.
35470         * reflection.c: warning fix.
35471         * object.h, loader.h, domain.c: load also StringBuilder.
35472
35473 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35474
35475         * marshal.h, marshal.c: some support code to handle complex marshaling.
35476
35477 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35478
35479         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
35480         Better signatures with vtable error dump.
35481
35482 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
35483
35484         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
35485
35486 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
35487
35488         * icall.c (ves_icall_Type_GetField): impl.
35489
35490 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35491
35492         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
35493         to retrieve a marshal description blob for a field or param.
35494
35495 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
35496
35497         * reflection.h, reflection.c: change order of nested type emission
35498         to avoid table corruption. The NestedTypes table is sorted.
35499         * icall.c: change order of GetConstructor results to workaround mcs bug.
35500
35501 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35502
35503         * reflection.h, reflection.c: handle field and param marshal
35504         information.
35505
35506 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35507
35508         * icall.c, marshal.c marshal.h: more Marshal class implementation.
35509
35510 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35511
35512         * reflection.c: fix call convention.
35513
35514 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35515
35516         * reflection.h, reflection.c: mono_image_get_memberref_token()
35517         takes a type instead of a class, now. Added
35518         mono_image_get_array_token() to create tokens for the special
35519         multi-dim array methods.
35520
35521 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
35522
35523         * assembly.c: handle modules (no assembly table). Split
35524         loading references in its own function.
35525         * class.c: handle moduleref resolution scope.
35526         * image.c, image.h: cache module name in image.
35527
35528 2002-06-07  Martin Baulig  <martin@gnome.org>
35529
35530         * reflection.c (mono_image_get_type_info): Only add a class layout entry
35531         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
35532
35533 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35534
35535         * icall.c: more signature fixes that used uint instead of int.
35536
35537 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35538
35539         * reflection.c: fixed signature of field refs.
35540
35541 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35542
35543         * class.c, reflection.c: handle typerefs of nested types
35544         (both on read and when writing files).
35545
35546 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
35547
35548         * icall.c: fix method signatures that tried to workaround the previous
35549         typo, d'oh!
35550
35551 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
35552
35553         * debug-helpers.c: fix typo.
35554
35555 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
35556
35557         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
35558         rewrote the PE/COFF writing code (our programs are understood by the
35559         ms runtime, now).
35560
35561 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
35562
35563         * gc.c, gc.h, icall.c: weakreference support.
35564
35565 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35566
35567         * Makefile.am, mono-config.c: use $(sysconfdir).
35568
35569 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35570
35571         * icall.c: changed default precision of Double.ToString() to 15.
35572         Fixed memory leak. Unified with Single.ToString.
35573
35574 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
35575
35576         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
35577
35578 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
35579
35580         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
35581         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
35582         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
35583         and myself.
35584
35585 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35586
35587         * debug-symfile.c, sysmath.c: yet more compilation fixes.
35588
35589 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35590
35591         * reflection.c, socket-io.c: more compilation fixes.
35592
35593 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35594
35595         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
35596         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
35597         unicode.c: warning and compiler compatibility fixes.
35598
35599 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
35600
35601         * class.h, metadata.c: fixed warnings/compilation errors.
35602
35603 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35604
35605         * Makefile.am, mono-config.c, mono-config.h: configuration file
35606         support routines.
35607         * loader.c, loader.h: make Dll mapping configurable at runtime in the
35608         config file. Export methods to insert and lookup mappings.
35609
35610 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
35611
35612         * reflection.c: handle types and boxed objects in custom attr
35613         constructors.
35614
35615 2002-05-30  Martin Baulig  <martin@gnome.org>
35616
35617         * debug-symfile.c
35618         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
35619
35620 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
35621
35622         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
35623         to lookup the implmap row for a P/Invoke method.
35624         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
35625         P/Invoke method from the runtime on an as needed basis.
35626
35627 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
35628
35629         * metadata.c (mono_metadata_parse_signature): impl.
35630
35631 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35632
35633         * class.c: handle .pack directive.
35634
35635 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
35636
35637         * object.c: initialize static fields with RVA data.
35638
35639 2002-05-25  Martin Baulig  <martin@gnome.org>
35640
35641         * debug-symfile.c
35642         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
35643
35644 2002-05-24  Martin Baulig  <martin@gnome.org>
35645
35646         * debug-symfile.c
35647         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
35648         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
35649         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
35650
35651 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
35652
35653         * object.c: special case string ctros in invoke.
35654         * gc.c: silly whitespace changes.
35655
35656 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
35657
35658         * threadpool.[ch]: impl. a threadpool that can
35659         be used by mint and mono.
35660
35661 2002-05-22  Martin Baulig  <martin@gnome.org>
35662
35663         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
35664         The first argument is now a `MonoReflectionModuleBuilder *', the return
35665         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
35666         `methods' field to get the method builder.  The `token' argument is the
35667         unfixed token.
35668
35669         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
35670         invalid characters instead of g_assert_not_reached()ing.  This seems
35671         to be the behaviour of mscorlib.
35672
35673 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
35674
35675         * object.c (mono_runtime_invoke_array): applied patch from Rachel
35676         Hestilow to fix bug #25104
35677
35678 2002-05-21  Martin Baulig  <martin@gnome.org>
35679
35680         * debug-symfile.c (mono_debug_find_source_location): New function.
35681         Looks up an IL offset in the line number table and returns the source
35682         location as a string.
35683
35684 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35685
35686         * icall.c:
35687         (mono_double_ToStringImpl): changed %f by %g until we have something
35688         better.
35689
35690 2002-05-21  Nick Drochak  <ndrochak@gol.com>
35691
35692         * icall.c : Use different name for Math.Pow's icall.  Needed to check
35693         parameters first in C#.
35694
35695 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35696
35697         * icall.c, reflection.h: added icall to get info about an event.
35698
35699 2002-05-20  Radek Doulik  <rodo@ximian.com>
35700
35701         * object.c (mono_value_box): don't use memcpy for boxing on BIG
35702         endian
35703         (mono_value_box): don't use memcpy for small sizes on
35704         architectures with unaligned access
35705
35706 2002-05-20  Martin Baulig  <martin@gnome.org>
35707
35708         * reflection.c (mono_reflection_setup_internal_class): Don't crash
35709         if `tb->parent == NULL'.
35710         (mono_reflection_create_internal_class): New function.  This is
35711         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
35712         for enum types.
35713
35714         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
35715         New interncall.
35716
35717 2002-05-19  Martin Baulig  <martin@gnome.org>
35718
35719         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
35720         argument to get the length, don't default to the array length.
35721
35722 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
35723
35724         * assembly.c (mono_assembly_setrootdir): New function used to
35725         override the MONO_ASSEMBLIES directory.
35726
35727 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
35728
35729         * icall.c: ValueType_GetHashCode() initialize local var.
35730
35731 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35732
35733         * reflection.c: sort custom attributes table.
35734
35735 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
35736
35737         * reflection.c: support named args in custom attributes (write support).
35738
35739 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
35740
35741         * reflection.c: fix finally position calculation.
35742
35743 2002-05-15  Radek Doulik  <rodo@ximian.com>
35744
35745         * reflection.c: fixed endianess at many places
35746
35747         * icall.c (ves_icall_InitializeArray): comment out debug msg
35748
35749 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
35750
35751         * object.c (mono_unhandled_exception): new function to handle
35752         unhandled exceptions.
35753         (mono_unhandled_exception): call the UnhandledException event.
35754         (mono_runtime_delegate_invoke): impl.
35755
35756 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
35757
35758         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
35759         returns the RVA, not the direct pointer to the data. Handle the case
35760         when the class size is fixed.
35761
35762 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
35763
35764         * reflection.c: fix some endianess issues.
35765
35766 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
35767
35768         * object.c (mono_runtime_invoke): is now able to catch exceptions.
35769
35770         * threads.c (mono_thread_init): added a callback which is invoked
35771         at thread start.
35772
35773 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
35774         
35775         * icall.c: make GetHashCode return non-negative values.
35776
35777 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
35778
35779         * object.c, icall.c, gc.c: revert to address-based hashcode.
35780
35781 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
35782
35783         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
35784
35785 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35786
35787         * icall.c, class.c: special case <Module>.
35788
35789 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
35790
35791         * icall.c: fix bug in GetNow().
35792
35793 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
35794
35795         * object.c (mono_runtime_class_init): make sure that we call all
35796         static class constructors.
35797
35798 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
35799
35800         * reflection.c: sort methodsemantics table.
35801
35802 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
35803
35804         * reflection.h, reflection.c: honour init locals setting.
35805
35806 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
35807
35808         * icall.c: copied Double ToStringImpl for Single ToStringImpl
35809
35810 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
35811
35812         * reflection.c: support ContructorBuilders in attribute blob creation.
35813
35814 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35815
35816         * reflection.c: some changes to build a binary that can be run
35817         directly in windows.
35818
35819 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
35820
35821         * loader.c: print a big message when an icall can't be found.
35822
35823 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35824
35825         * string-icalls.c: fix bug 24248.
35826
35827 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
35828
35829         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
35830         icall.c, reflection.h: separate assembly loading by pathname and by
35831         assembly name. Use the MONO_PATH env var to search for assemblies.
35832
35833 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35834
35835         * assembly.c, image.h: add some support for assemblies
35836         with multiple modules.
35837         * class.c, class.h: export mono_class_from_typeref().
35838         * loader.c: remove duplicated code and use mono_class_from_typeref(),
35839         instead.
35840
35841 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35842
35843         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
35844         documentation says (the ECMA one is correct).
35845
35846 2002-05-02  Dick Porter  <dick@ximian.com>
35847
35848         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
35849         Don't name the synchronisation mutex.
35850
35851 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
35852
35853         * rand.c
35854         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
35855         Make the prototypes match.
35856         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
35857         Same.
35858
35859         * icall.c
35860         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
35861         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
35862         all systems have tm.tm_zone, so use strftime() with %Z to print
35863         the timezone abreviation into a temp string.
35864
35865         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
35866         rather than mono_array_addr() on a MonoString on Big Endian
35867         machines.
35868
35869 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
35870
35871         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
35872         fix bug 24041
35873
35874 2002-04-30  Dick Porter  <dick@ximian.com>
35875
35876         * socket-io.c: Cope with SOCKET being an integer rather than a
35877         pointer now.
35878
35879         * threads.c: Added Thread_free_internal, to deal with thread
35880         handle cleanup.  Moved calls to handle_store() and handle_remove()
35881         to start_wrapper(), so each can only be called once.  Allocate
35882         synchronisation blocks with GC_malloc(), and use GC finalisation
35883         to close the handles.
35884
35885         * icall.c: added System.Threading.Thread::Thread_free_internal
35886
35887 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35888
35889         * icall.c: support Environment.Exit, CommandLineArgs().
35890
35891 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35892
35893         * object.c, object.h: added mono_runtime_run_main () and
35894         mono_runtime_get_main_args () for use in System.Environment.
35895
35896 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35897
35898         * gc.c: fix thinko, enable actual finalization since the jit is now
35899         fixed.
35900
35901 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35902
35903         * gc.c, object.c: take into account that an object may be offset wrt the address
35904         returned by GC_malloc().
35905
35906 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
35907
35908         * image.c: handle files without entries in the assembly table (modules).
35909
35910 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
35911
35912         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
35913         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
35914         allowed to be null when it's System.Object class setup.
35915
35916 2002-04-27  Martin Baulig  <martin@gnome.org>
35917
35918         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
35919         if `tb->parent == NULL' rather than crashing.
35920
35921 2002-04-28  Nick Drochak  <ndrochak@gol.com>
35922
35923         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
35924         calling acos() where asin() should have been called.
35925
35926 2002-04-26  Martin Baulig  <martin@gnome.org>
35927
35928         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
35929         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
35930         there's a subdirectory called `System', but we don't want to read that
35931         subdirectory as an assembly.
35932
35933 2002-04-25  Martin Baulig  <martin@gnome.org>
35934
35935         * debug-symfile.c: Reflect latest MonoString changes.
35936
35937 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
35938
35939         * rand.c, rand.h: instance method icalls need to have an explicit
35940         this pointer as first argument in the C implementation.
35941
35942 2002-04-25  Nick Drochak <ndrochak@gol.com>
35943
35944         * icall.c: Fix typo in map for GetNonZeroBytes
35945
35946 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
35947
35948         * string-icalls.c : String does now passes unit tests without any 
35949         errors, the following changes has been made:
35950         
35951         Implemented replace methods.
35952         Renaming of methods to (try) follow the standard.
35953         Fixed compare ordinal
35954         Made all memory allocated directly to function instead of via icall function.
35955         Small performance fix in is_in_array function
35956                         
35957  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
35958
35959         c (mono_string_Internal_ctor_charp_int_int):
35960         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
35961         sindex < 0, throw ArgumentOutOfRangeException instead of
35962         ArgumentNullException.
35963
35964         Added new check for length == 0, however
35965         I need to make it return String.Empty from the C code.
35966         
35967         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
35968         that calculate the length for us here.
35969         
35970         (mono_string_Internal_ctor_sbytep_int_int): Replaced
35971         mono_string_new_utf16 with mono_string_new, since value is utf8.
35972
35973 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35974
35975         * object.c: register the object for finalization if needed.
35976         Allocate one more char in the string for the terminating 0 char.
35977
35978 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35979
35980         * class.c, class.h, image.c: check if a type implemenst a destructor.
35981         Use the proper key for array class lookups.
35982         * icall.c: register the icalls in the System.GC class.
35983         * gc.c, gc.h: GC-related functions and icalls.
35984
35985 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35986
35987         * icall.c:
35988         * socket-io.c:
35989         * unicode.c: free some strings gotten from mono_string_to_utf8 and
35990         changed a couple of free () by g_free ().
35991
35992         * decimal.c: one-liner in the comments for decimal2string ().
35993
35994 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
35995
35996         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
35997
35998 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
35999
36000         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
36001         * object.c (mono_runtime_invoke_array) : handle null in params
36002
36003 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
36004
36005         * string-icalls.c: fixed bug in split (one off bug)
36006
36007 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
36008
36009         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
36010         * icalls.c: added String::Equals as internal method
36011
36012 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
36013
36014         * threads.c: fixed bug in the double interlocked functions
36015
36016 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
36017
36018         * threads.c: implemented all of the new interlocked icalls.
36019         * string-icalls.c: fix a bug in insert.
36020         * icalls.c: added the icalls for interlocked, removed old string functions.
36021         
36022 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
36023
36024         * loader.c: fix off-by-one error when reading argument names.
36025
36026 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36027
36028         * profiler.c: win32 counter implementation (untested).
36029         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
36030         (the latter needs testing and more complete impl. from win32 folks).
36031
36032 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
36033
36034         * object.c: mono_array_new_full workaround mono_array_class_get
36035         problem.
36036
36037 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36038
36039         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
36040         * object.h (mono_string_chars): Changed casting type.
36041
36042 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36043
36044         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
36045                            method signatures to use gunichar2 instead of gint16.
36046
36047 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
36048
36049         * object.h, object.c: domain-specific versions of mono_object_new and
36050         mono_array_new.
36051
36052 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
36053
36054         * object.c: changed String layout
36055
36056         * string-icalls.c (mono_string_Internal_ctor_chara): added
36057         internal string constructors.
36058
36059 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
36060
36061         * threads.c: pass 'this' to the thread start routine.
36062
36063 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36064
36065         * string-icalls.c: fix IndexOf and LastIndexOf. Now
36066         InternalCompareStr don't call twice mono_string_cmp_char for the last
36067         character. Improved performance in mono_string_cmp_char.
36068
36069 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
36070
36071         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
36072         code into its own library: libmonoruntime.
36073
36074 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
36075
36076         * object.h, object.c: changed array format so that szarrays do not
36077         require a bounds structure.
36078         * icall.c, appdomain.c: support for new szarray format.
36079
36080 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
36081
36082         * metadata.c: compare also the retuns type when comparing signatures:
36083         we didn't do this as an optimization since really overloaded methods
36084         must differ also in the arguments, but this doesn't work with
36085         low-level IL code (or when using explicit conversion operators: see
36086         bug#23498 for an example).
36087
36088 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
36089
36090         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
36091
36092 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
36093
36094         * icall.c: make MonoType::GetElementType its own icall.
36095
36096 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
36097
36098         * icall.c: remove MonoMethod_get_Name().
36099         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
36100         object.
36101
36102 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36103
36104         * string-icalls.c: optimized a few methods.
36105
36106 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36107
36108         * icall.c: added all new string internal calls
36109         * string-icalls.c: added, new string internal call implementation.
36110         * object.c: added mono_string_new_size for allocating a string a size
36111
36112 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
36113
36114         * object.c (mono_object_isinst): use the same code as in the
36115         optimized x86 version.
36116
36117 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
36118
36119         * profiler.c: TSC-based timer code (faster and more accurate).
36120         Not hooked up in configure, yet (set USE_X86TSC to 1).
36121
36122 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
36123
36124         * profiler.c, profiler.h: track time spent compiling methods.
36125         * threads.c: track thread creation/destruction.
36126
36127 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
36128
36129         * profiler.c, profiler.h, profiler-private.h: profiling interface
36130         and sample implementation. Moved here so that it can be used also by
36131         the jit.
36132
36133 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
36134
36135         * reflection.c, reflection.h: keep types and other handles separate in
36136         the hash tables for referred tokens. Add guid for modules.
36137
36138 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
36139
36140         * assembly.c: fix bugs found with valgrind.
36141         * metadata.h, metadata.c: added mono_metadata_guid_heap().
36142
36143 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
36144
36145         * threads: added icall support for getting current domain for
36146                    the thread.
36147  
36148 2002-04-13  Martin Baulig  <martin@gnome.org>
36149
36150         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
36151         (MonoDebugVarInfo): Added `index' field for register based addresses.
36152         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
36153         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
36154         `MonoDebugVarInfo *params' and `guint32 this_offset' with
36155         `MonoDebugVarInfo *this_var'.
36156
36157         * debug-symfile.c (relocate_variable): New static function to write
36158         a location description for a local variable or method parameter.
36159
36160 2002-04-12  Martin Baulig  <martin@gnome.org>
36161
36162         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
36163         stack offset and begin/end scope address of a local variable.
36164         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
36165         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
36166         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
36167
36168         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
36169         Added new relocation types for start/end scope of a local variable.
36170
36171 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
36172
36173         * object.h: add mono_object_domain() macro.
36174         * reflection.c: handle typespecs.
36175         * icall.c: MonoMethod::get_Name() implementation.
36176
36177 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36178
36179         * icall.c: String::GetHashCode() icall implementation.
36180
36181 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
36182
36183         * icall.c: String::IndexOfAny icall.
36184         * object.c, object.h: make array->max_length more useful.
36185         Intrduced mono_object_class() and mono_string_length() macros.
36186
36187 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36188
36189         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
36190         instead of g_unichar_isdigit.
36191
36192 2002-04-11  Nick Drochak  <ndrochak@gol.com>
36193
36194         * icall.c: Implement a simple Double.ToString().
36195
36196 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
36197
36198         * appdomain.h: only io-layer.h is supposed to be included.
36199         * icall.c: explicitly import environ. Fix warning.
36200
36201 2002-04-10  Nick Drochak  <ndrochak@gol.com>
36202
36203         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
36204                 return true even if it's not Daylight Savings time.
36205                 Only return false for the case where the function isn't
36206                 implemented for a plaform (read Windows).
36207
36208 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
36209
36210         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
36211         data with a mutex.
36212
36213 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
36214
36215         * mempool.c (mono_mempool_alloc): only use g_malloc when
36216         absolutely necessary.
36217
36218 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
36219
36220         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
36221
36222         * class.c (mono_class_vtable): use domain mempool to allocate vtable
36223         (mono_class_proxy_vtable): use domain mempool
36224
36225 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
36226
36227         * appdomain.h, appdomain.c: split initialization that requires the
36228         execution engine support into mono_runtime_init().
36229
36230 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
36231
36232         * class.c (mono_class_init): don't include vtable inside MonoClass
36233         to save some memory, gather some statistics.
36234         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
36235
36236 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
36237
36238         * icall.c: internalcall implementation for ValueType.Equals().
36239
36240 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
36241
36242         * object.c (mono_message_init): moved 
36243         (mono_runtime_exec_main): new arch. independent impl.
36244         (mono_runtime_invoke_array): new method - like
36245         mono_runtime_invoke, but you can pass an array of objects.
36246         (mono_remoting_invoke): new arch. independent impl.
36247         (mono_message_invoke): new arch. independent impl.
36248         (mono_runtime_class_init): new arch. independent impl.
36249         (mono_runtime_object_init): new arch. independent impl.
36250
36251 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36252
36253         * metadata.c, object.c, reflection.c: documented the exported
36254         functions.
36255
36256 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
36257
36258         * icall.c: simpler code to pass the assembly builder data to corlib.
36259         Implement GetNestedTypes() internalcall.
36260
36261 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
36262
36263         * class.c: warn if a type can't be loaded.
36264
36265 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
36266
36267         * image.h: typedef MonoImageOpenStatus
36268         * types.h: removed unused file
36269         
36270 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
36271
36272         * icall.c: Enum_ToObject accepts enum value arguments.
36273
36274 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
36275
36276         * class.c: move initialization of properties, events and nested
36277         classes, so that they happen for interfaces, too.
36278
36279 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
36280
36281         * icall.c: cleanup some ugly casts in Array_SetValue*.
36282
36283 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
36284
36285         * icall.c: the values array fro enums is of the correct type, now.
36286         Implement (correctly) getFullName instead of assQualifiedName for
36287         MonoType.
36288         * reflection.h, reflection.c: added mono_type_get_name ().
36289
36290 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
36291
36292         * assembly.c, image.h: for each MonoImage, record from wich assembly
36293         it was loaded.
36294         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
36295         Make Type.Assembly work.
36296
36297 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
36298
36299         * debug-symfile.h: use char* instead of gpointer to avoid
36300         unnecessary casts.
36301
36302         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
36303
36304         * icall.c (ves_icall_InternalExecute): impl. FielSetter
36305         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
36306
36307 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
36308
36309         * icall.c (mono_message_init): impl. (code cleanup)
36310         (ves_icall_InternalExecute): impl. FieldGetter
36311
36312         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
36313         defined we call all (non-static)methods through the vtable. 
36314
36315 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
36316
36317         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
36318         finalizer even though the memory is still referenced (and the chunk of
36319         memory is not freed).
36320
36321 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
36322
36323         * assembly.c: fix brokeness.
36324
36325 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
36326
36327         * class.c: kill some warnings. Check explicit interface method
36328         implementation also without considering the namespace.
36329         Load also literal strings in static class data.
36330
36331 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
36332
36333         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
36334         (default_assembly_name_resolver): Make the resolver take the
36335         "base" directory where the assembly was originally defined, so we
36336         can load DLLs that are in the same directory as the assembly that
36337         is being referenced.
36338
36339 2002-03-28  Dick Porter  <dick@ximian.com>
36340
36341         * file-io.h: 
36342         * file-io.c:
36343         * socket-io.c: 
36344         * unicode.h: 
36345         * unicode.c: Warning cleanups
36346
36347 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
36348
36349         * object.h, reflection.h: use the correct type instead of MonoObject.
36350
36351 2002-03-28  Martin Baulig  <martin@gnome.org>
36352
36353         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
36354         (mono_debug_update_symbol_file): Initialize classes if necessary.
36355
36356 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
36357
36358         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
36359         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
36360
36361 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
36362
36363         * assembly.h: fix function prototype.
36364         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
36365         * mono-endian.h: use const cast.
36366
36367 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
36368
36369         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
36370
36371 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
36372
36373         * loader.c: don't assert when a typeref can't be loaded, give
36374         a chance to the runtime to trow an exception instead.
36375         * loader.h: fix warning.
36376
36377 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
36378
36379         * class.c (mono_class_proxy_vtable): added proxy support
36380
36381 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
36382
36383         * icall.c: removed last of PAL calls, added System.Environment
36384         * file-io.h, file-io.c: MonoIO implementation
36385         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
36386
36387 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
36388
36389         * appdomain.c: do not use the byte marker in ldstr table lookup.
36390         * debug-helpers.c: allow two ':' to separate class and method name.
36391         * object.c: allocate arrays bounds with the GC, too.
36392         * verify: add a few more checks.
36393
36394 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
36395
36396         * reflection.c: output also literal strings. Allocate parameter data
36397         with GC_malloc() (thanks, Martin, for catching this!).
36398
36399 2002-03-26  Martin Baulig  <martin@gnome.org>
36400
36401         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
36402         include the `this' offset in the `param_offsets'.
36403
36404 2002-03-25  Martin Baulig  <martin@gnome.org>
36405
36406         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
36407         mono_debug_get_class() function to get the classes. Added new
36408         relocation types for arrays and strings.
36409         (mono_debug_get_class): New static function to search in all
36410         referenced assemblies for a metadata token.
36411
36412         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
36413
36414 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
36415
36416         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
36417         hold gc-allocated objects. Make the string heap a stream like the
36418         others. Removed duplicated code when writing stream info.
36419         Added asserts to catch possible buffer overflows. Set the sorted map
36420         for tables that need sorting. Added some documentation.
36421
36422 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
36423
36424         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
36425         for interned strings and vtables.
36426
36427 2002-03-24  Martin Baulig  <martin@gnome.org>
36428
36429         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
36430         it in the array since it was created with g_slist_prepend().
36431
36432 2002-03-24  Martin Baulig  <martin@gnome.org>
36433
36434         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
36435         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
36436         (mono_debug_method_from_token): Renamed to
36437         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
36438         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
36439
36440         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
36441         relocation types.
36442
36443         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
36444
36445 2002-03-24  Martin Baulig  <martin@gnome.org>
36446
36447         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
36448         (mono_debug_method_from_token): New func.
36449
36450         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
36451         New interncall, calls mono_debug_local_type_from_signature().
36452         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
36453         calls mono_debug_method_from_token().
36454
36455 2002-03-23  Martin Baulig  <martin@gnome.org>
36456
36457         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
36458         specifies the number of bytes to be converted, not the array size.
36459         Return the number of chars, not the number of bytes.
36460         (ves_icall_iconv_get_chars): The `byteCount' argument
36461         specifies the number of bytes to be converted, not the array size.
36462
36463 2002-03-23  Martin Baulig  <martin@gnome.org>
36464
36465         * reflection.h (MonoReflectionSigHelper): New type.
36466
36467         * reflection.c (mono_reflection_sighelper_get_signature_local),
36468         (mono_reflection_sighelper_get_signature_local): New functions.
36469
36470         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
36471         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
36472         interncalls.
36473
36474 2002-03-23  Martin Baulig  <martin@gnome.org>
36475
36476         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
36477         is_writeable is set.
36478         (mono_raw_buffer_update): New function to write the modified map
36479         back to disk.
36480
36481         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
36482
36483         * debug-symfile.c (mono_debug_update_symbol_file): Call
36484         mono_raw_buffer_update() when done writing.
36485
36486 2002-03-23  Martin Baulig  <martin@gnome.org>
36487
36488         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
36489
36490         * debug-symfile.c: Added support for arguments and local variables.
36491
36492 2002-03-23  Dick Porter  <dick@ximian.com>
36493
36494         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
36495         protected by ifdefs, hence breaking the w32 build.
36496
36497 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36498
36499         * object.c: implement is_interned() the right way.
36500
36501 2002-03-21  Martin Baulig  <martin@gnome.org>
36502
36503         * debug-symfile.[ch]: New files to handle debugging information
36504         files. There's also support to dynamically update these symbol
36505         files to include machine dependent information.
36506
36507 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
36508
36509         * threads.c (mono_thread_create): new function to create thread
36510         from C
36511
36512 2002-03-20  Martin Baulig  <martin@gnome.org>
36513
36514         * icall.c (ves_icall_InternalInvoke): Create a new object if the
36515         method is a constructor.
36516         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
36517         points to ves_icall_InternalInvoke().
36518
36519 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
36520
36521         * file-io.c: Flush shouldn't throw exceptions.
36522
36523 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
36524
36525         * file-io.c: FileStream flush support; FileSetLength now
36526         restores file pointer.
36527
36528 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
36529
36530         * class.c: set image for pointer classes.
36531
36532 2002/03/19  Nick Drochak <ndrochak@gol.com>
36533
36534         * sysmath.c: Forgot one.
36535
36536 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
36537
36538         * sysmath.c: Avoid redefining existing names.
36539
36540 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
36541
36542         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
36543         handled by runtime as icall rather than dllimport from libm.so
36544         * file-io.c, file-io.h: fixed handle argument type.
36545
36546 2002-03-18  Dick Porter  <dick@ximian.com>
36547
36548         * reflection.c (mono_image_get_type_info): rename interface to
36549         iface, because of "#define interface struct" on windows.
36550
36551 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
36552
36553         * class.c, class.h: rename and export mono_ptr_class_get().
36554         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
36555         * reflection.c, reflection.h, icall.c: better/saner type name
36556         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
36557         method signatures.
36558
36559 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
36560
36561         * class.c (mono_class_init): removed hardcoded GHC_SLOT
36562
36563         * icall.c (ves_icall_InternalInvoke): impl.
36564
36565 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
36566
36567         * reflection.c: output the interface map table, too.
36568
36569 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
36570
36571         * class.c (class_compute_field_layout): separate computation of 
36572         static field layout
36573
36574 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
36575
36576         * icall.c: added System.Buffer support.
36577         * file-io.c: moved file icalls from PAL to FileStream.
36578
36579 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
36580
36581         * icall.c (ves_icall_System_Object_GetHashCode): impl.
36582
36583 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
36584
36585         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
36586
36587 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
36588
36589         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
36590
36591 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
36592
36593         * debug-helpers.{c,h}: moved here from monograph some useful functions
36594         to locate a method by name/signature in a class or image. Included
36595         also a small and flexible IL disassembler.
36596
36597 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36598
36599         * reflection.c: fixup tokens in methods with small header size, too.
36600
36601 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
36602
36603         * object.c (mono_string_to_utf8): remove assert(!error), instead
36604         print a warning. 
36605
36606 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
36607
36608         * icall.c: update to the new mono_Array_class_get interface.
36609
36610 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
36611
36612         * appdomain.c, object.c: Boehm-GC enable.
36613         * icall.c: make get_data_chunk() support split data requests.
36614         Ensure a class is initialized in more cases. Return only the first
36615         property found in GetProperties() or the compiler gets confused. 
36616         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
36617         * reflection.h, reflection.c: add fixup mechanism for field and method
36618         tokens. Initialize assembly->typeref in a single place. Output
36619         properties after events. Support custom attributes for events, too.
36620         Typo fix for paramter custom attrs.
36621
36622 2002-03-07  Martin Baulig  <martin@gnome.org>
36623
36624         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
36625
36626 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
36627
36628         * class.c (mono_array_class_get): fix. for multi. dim. arrays
36629
36630 2002-03-06  Martin Baulig  <martin@gnome.org>
36631
36632         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
36633         non-zero lower bounds. See testcases #F10-#F13.
36634
36635 2002-03-05  Martin Baulig  <martin@gnome.org>
36636
36637         * exception.c (mono_get_exception_argument_out_of_range): New exception.
36638
36639         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
36640         ves_icall_System_Array_GetValue(), only calculate the absolute array position
36641         here.
36642         (ves_icall_System_Array_SetValue): Likewise.
36643         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
36644         as argument and does the actual work. This function is used when copying a
36645         multi-dimensional array.
36646         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
36647         now do all the widening conversions of value types.
36648         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
36649
36650 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36651
36652         * class.c: remove some magic numbers and use the smbolic names,
36653         instead. Added init_events() to load event info at class init time.
36654         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
36655         and mono_metadata_methods_from_event().
36656         * reflection.h, reflection.c: added support for writing out the evnets
36657         related information.
36658
36659 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
36660
36661         * reflection.h, icall.c: use a different method (GetInterfaces)
36662         to gather interface info and add isbyref, isprimitive and
36663         ispointer to the ves_icall_get_type_info() return value.
36664
36665 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
36666
36667         * class.h: stared adding support for events.
36668         * icall.c: split find_members implementation. Added debug icall to get
36669         the address of an object.
36670         * reflection.c: handle TypeBuilders in mono_type_get_object().
36671
36672 2002-03-01  Martin Baulig  <martin@gnome.org>
36673
36674         * icall.c (ves_icall_System_Array_GetLength): This must throw an
36675         ArgumentOutOfRangeException(), not an ArgumentException().
36676         (ves_icall_System_Array_GetLowerBound): Likewise.
36677         (ves_icall_System_Array_GetValue): Improved argument checking.
36678         (ves_icall_System_Array_SetValue): Improved argument checking.
36679
36680 2002-03-01  Martin Baulig  <martin@gnome.org>
36681
36682         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
36683         called with invalid arguments rather than just dying with g_assert().
36684         (ves_icall_System_Array_SetValue): Likewise.
36685         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
36686         raise a NotImplementedException instead.
36687         (ves_icall_System_Array_GetLength): Added argument checking.
36688         (ves_icall_System_Array_GetLowerBound): Added argument checking.
36689
36690 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
36691
36692         * object.h (mono_assert): new macros mono_assert and
36693         mono_assert_not_reached
36694
36695 2002-02-28  Martin Baulig  <martin@gnome.org>
36696
36697         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
36698         and "System::String::IsInterned" to "System::String::_IsInterned".
36699
36700 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
36701
36702         * icall.c: remove hacks for typebuilder. Added icall to create a
36703         modified type from a tybebuilder.
36704         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
36705         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
36706         to create a backing MonoClass for a TypeBuilder.
36707
36708 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36709
36710         * class.c, class.h: more refactoring of class init.
36711         Export mono_class_setup_mono_type() and mono_class_setup_parent().
36712
36713 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
36714
36715         * marshal.c, marshal.h: start of marshaling interface.
36716
36717 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
36718
36719         * icall.c: fix order in assembly qualified name icall.
36720
36721 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
36722
36723         * class.c: do not free str, since we store it in the hash table.
36724         * reflection.h: add label field to MonoILExceptionInfo.
36725         * reflection.c: handle references to more than one assembly. Handle
36726         case when there isn't a module created in the assembly.
36727
36728 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
36729
36730         * class.c: Fix typo. Start refactoring of class init code.
36731
36732 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
36733
36734         * appdomain.c: exit with 1 on error.
36735         * class.c: we already have the name in MonoClassField.
36736         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
36737         MonoStreamHeader instead of an offset of image->raw_metadata.
36738
36739 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
36740
36741         * appdomain.c (mono_init): Be even more descriptive about the error.
36742
36743 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
36744
36745         * appdomain.c: give the user an informative message when corlib can't
36746         be loaded.
36747
36748 2002-02-26  Martin Baulig  <martin@gnome.org>
36749
36750         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
36751         New icall to get the time zone data.
36752
36753 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36754
36755         * reflection.c: set virtual and raw size of section correctly.
36756         * threads.c: transfer domain information to newly created threads.
36757
36758 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
36759
36760         * class.c: when instancing a class in a domain, load the default
36761         vaules for static fields from the constant table. Fix System.Enum to
36762         not be an enum.
36763         * icall.c: implement Object::GetType() internalcall. Implemented
36764         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
36765         Fixed checking of binding flags in find_members().
36766         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
36767         * reflection.c: handle enumerations when writing to the constant
36768         table. Use a different object cache for types.
36769
36770
36771 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
36772
36773         * object.c (mono_object_isinst): fix for arrays
36774
36775         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
36776
36777 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
36778
36779         * object.c: don't use mprotect ()  and fix intern pool hash table
36780         lookup for big endian systems.
36781
36782 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36783
36784         * icall.c: change type_is_subtype_of () signature.
36785
36786 2002-02-21  Mark Crichton  <crichton@gimp.org>
36787
36788         * rand.c, rand.h: Added random number generator for
36789         System.Security.Cryptography classes.
36790
36791         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
36792
36793         * icall.c: Added System.Security.Cryptography calls.
36794
36795 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
36796
36797         * class.c, icall.c, metadata.c: better support for pointer types.
36798         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
36799         * reflection.c: Add support for getting custom attrs for properties
36800         and simplify some code.
36801
36802 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36803
36804         * icall.c: change getToken () and add custom attribute GetBlob()helper
36805         method.
36806         * reflection.h: add custom attrs array to the reflection builder structures.
36807         * reflection.c: encode and emit custom attributes for all the relevant
36808         reflection objects. Cache fieldref and methodref tokens. Change
36809         mono_image_create_token() interface to take a MonoDynamicAssembly.
36810         More complete custom attributes decoder. Load custom attributes for
36811         Assembly, Field, Method and Constructor objects, too. Make the
36812         returned array an Attribute[] one, not object[]. Added
36813         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
36814         custom attribute constructor.
36815
36816 2002-02-20  Dick Porter  <dick@ximian.com>
36817
36818         * icall.c:
36819         * rawbuffer.c:
36820         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
36821         problem code out for now).
36822
36823 2002-02-19  Radek Doulik  <rodo@ximian.com>
36824
36825         * object.c (mono_ldstr): use hash table to avoid multiple swapping
36826
36827 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
36828
36829         * icall.c: register the GetCustomAttributes method.
36830         * object.c, object.h: add mono_string_new_len ().
36831         * reflection.h, reflection.c: added mono_runtime_invoke(),
36832         mono_install_runtime_invoke(). Added
36833         mono_reflection_get_custom_attrs () to load custom attributes and
36834         create the attribute objects.
36835
36836 2002-02-19  Dick Porter  <dick@ximian.com>
36837         * threads-dummy-types.c:
36838         * threads-dummy-types.h:
36839         * threads-dummy.c:
36840         * threads-dummy.h:
36841         * threads-pthread-types.c:
36842         * threads-pthread-types.h:
36843         * threads-pthread.c:
36844         * threads-pthread.h:  Deleted obsolete files
36845
36846 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
36847
36848         * class.c (mono_class_vtable): runtime init the class when we
36849         allocate static class data.
36850
36851         * icall.c (ves_icall_System_Array_SetValue): check for null values.
36852
36853         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
36854         and String - but we will need generic marshalling support in the
36855         future. 
36856         (mono_init): set the domain name in a ms compatible way
36857
36858         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
36859         String[].
36860
36861 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
36862
36863         * object.c (mono_array_clone): use alloca() instead of g_malloc  
36864         for sizes
36865
36866         * appdomain.c (mono_domain_unload): impl.
36867
36868 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
36869
36870         * appdomain.c, object.c: fix intern pool implementation.
36871         * class.c: fix alignment code.
36872
36873 2002-02-16  Radek Doulik  <rodo@ximian.com>
36874
36875         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
36876         and s2 > s1, just copy lower bytes to be compatible with little
36877         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
36878         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
36879
36880         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
36881         force big_endian to be 1 for big endian machines 
36882         (ves_icall_iconv_new_decoder): ditto
36883
36884 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
36885
36886         * socket-io.c (convert_sockopt_level_and_name): If the system
36887         doesn't define SOL_IP or SOL_TCP, get them by hand using
36888         getprotobyname() and caching the values (because this could be a
36889         slow operation).
36890         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
36891         Use the appropriate struct when the system does support it. Ie,
36892         not all systems have struct ip_mreqn so use struct ip_mreq when
36893         appropriate.
36894
36895 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
36896
36897         * reflection.c: handle finally clauses.
36898
36899 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
36900
36901         * socket-io.c: use g_snprintf() instead of snprintf.
36902
36903 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
36904
36905         * reflection.c (mono_param_get_objects): Cast second argument to
36906         mono_method_get_param_names to a const char** to silence the
36907         compiler warning.
36908
36909         * appdomain.c (mono_domain_assembly_open): Put parens around the
36910         truth statement in the for-loop.
36911
36912         * unicode.c (iconv_convert): Got rid of a compiler warning about
36913         int i being unused when the system has a new iconv.
36914         (iconv_get_length): Same.
36915
36916         * image.c (load_class_names): Cast the second argument to
36917         g_hash_table_insert() to char* to hush compiler warnings about the
36918         arg being a const.
36919         (mono_image_open): Same here.
36920
36921         * socket-io.c: Don't conditionally include sys/filio.h or
36922         sys/sockio.h here anymore since we now get them from
36923         io-layer/io-layer.h
36924         (inet_pton): If the system doesn't support inet_aton, implement
36925         using inet_addr and also #define INADDR_NONE if it isn't defined
36926         by the system.
36927
36928 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
36929
36930         * metadata.c, metadata.h: added function to get packing and size info
36931         of a typedef.
36932         * reflection.h, reflection.c: handle field RVA data. Save info about
36933         the table layout if needed. Assign typedef indexes to all the types
36934         before dumping the info about them to avoid forward reference problems.
36935
36936 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
36937
36938         * socket-io.c (convert_sockopt_level_and_name): ifdef
36939         SO_ACCEPTCONN because it is not defined on my system (old debian)
36940
36941 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
36942
36943         * opcode.c: use stddef.h to get NULL.
36944
36945 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
36946
36947         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
36948         for FIONBIO, FIONREAD and SIOCATMARK.
36949         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
36950         define INADDR_NONE and besides, inet_addr() is deprecated and
36951         should not be used. Use inet_pton() instead - it also has the
36952         added bonus that it can easily handle IPv6 addresses as well.
36953         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
36954
36955 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
36956
36957         * decimal.c: remove _MSC_VER conditional.
36958
36959 2002-02-13  Dick Porter  <dick@ximian.com>
36960
36961         * socket-io.c: 
36962         * icall.c: Internal calls for Blocking, Select, Shutdown,
36963         GetSocketOption and SetSocketOption
36964
36965 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36966
36967         * assembly.cs: better resolver: use it instead of some kludgy
36968         code.
36969
36970 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
36971
36972         * reflection.c: the best way to speed-up the compiler is to avoid
36973         infinite loops.
36974
36975 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
36976
36977         * class.c (mono_class_vtable): changed the object layout
36978         (obj->vtable->class). 
36979         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
36980
36981 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36982
36983         * assembly.c: look for assemblies in the assembly dir, too.
36984
36985 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
36986
36987         * class.c: fix thinko in mono_class_from_type().
36988
36989 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36990
36991         * exception.h, exception.c: added TypeLoadException.
36992         * object.h, object.c: added mono_array_clone ().
36993         * icall.c: handle throwOnError in AssemblyGetType().
36994         Added Array.Clone().
36995         * opcode.h, opcode.c: use a single value for the opcode val.
36996         Compile fix for non-gcc compilers.
36997
36998 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
36999
37000         * opcodes.c, opcodes.h: export interesting info about opcodes.
37001
37002 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
37003
37004         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
37005         icalls. 
37006
37007         * class.c (class_compute_field_layout): set element_class for enums
37008         (mono_class_create_from_typedef): set element_class for normal classes
37009
37010         * icall.c (ves_icall_System_Enum_get_value): impl.
37011
37012         * class.c (mono_class_create_from_typedef): do not set valuetype
37013         flag for System.ValueType and System.Enum
37014
37015 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
37016
37017         * unicode.c (iconv_convert): fix big endian problem.
37018
37019 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
37020
37021         * class.c: add asserts if we are ever going to scribble over memory.
37022         * socket-io.c: not all systems have AF_IRDA defined.
37023
37024 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
37025
37026         * class.c (class_compute_field_layout): do not consider static
37027         fields to compute alignment
37028
37029 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
37030
37031         * appdomain.c (mono_appdomain_get): impl.
37032         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
37033
37034 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
37035
37036         * icall.c: ignore "file://" prefix when loading an assembly.
37037
37038 2002-01-23  Dick Porter  <dick@ximian.com>
37039
37040         * socket-io.c:
37041         * icall.c:
37042         * Makefile.am: Added socket support
37043
37044 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
37045
37046         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
37047         code back.  This should return the assemblies that are loaded by
37048         the runtime on behalf of an application domain. 
37049
37050         The current implementation is still broken, it just returns every
37051         assembly loaded, but until we get real applications domain this
37052         will do.
37053
37054 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
37055
37056         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
37057         AppDomain object.
37058
37059 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
37060
37061         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
37062         the mono_class_from_name lookup.
37063         (ves_icall_get_parameter_info): ditto.
37064         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
37065         method.
37066         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
37067
37068 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
37069
37070         * class.c: load also nested classes on class init.
37071         System.ValueType instance methods gets passed boxed
37072         values, unless methods in derived classed that get a pointer to the
37073         data.
37074         * icall.c: use better name parsing code in GetType().
37075         * image.c, image.h: add mono_image_loaded ().
37076         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
37077         * reflection.c, reflection.h: added mono_reflection_parse_type().
37078
37079 2002-01-22  Veronica De Santis <veron78@interfree.it>
37080
37081         * icall.c : Added mapping of internal calls for Manual and Auto reset events
37082         * threads.c : Added the implementation of internal calls for events
37083         * threads.h : Added prototypes of internal calls for events
37084         
37085 2002-01-21  Radek Doulik  <rodo@ximian.com>
37086
37087         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
37088
37089 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
37090
37091         * class.c (mono_class_init): set min_align to 1 (instead of 0)
37092         (mono_class_value_size): use min_align
37093
37094 2002-01-20  Dick Porter  <dick@ximian.com>
37095
37096         * threads.h:
37097         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
37098         so it compiles on w32.
37099
37100 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
37101
37102         * metadata.c (mono_type_stack_size): impl.
37103
37104         * class.c (mono_class_get_field): impl. memberref token
37105
37106 2002-01-16 Veronica De Santis <veron78@@interfree.it>
37107
37108         * icall.h : Added the internal calls mapping for CreateMutex_internal
37109                     and ReleaseMutex_internal.
37110         * threads.h : Added the prototype of mutexes internal calls.
37111         * threads.c : Added the implementations of mutexes internal calls.
37112
37113 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
37114
37115         * metaparse.h: removed unused file.
37116         * reflection.c, reflection.h: added stream_data_align () function 
37117         to align data in streams and keep stream aligned. Add support for
37118         exception support in method headers.
37119
37120 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
37121
37122         * unicode.c: make iconv_convert () return the number of bytess written
37123         in the output buffer.
37124
37125 2002-01-15  Dick Porter  <dick@ximian.com>
37126         * threads.c: Make the runtime's idea of infinite timeouts coincide
37127         with the class library's
37128
37129         Fix a particularly egregious bug in mono_thread_cleanup(). That
37130         code was so utterly bogus it must have been written on a Monday.
37131
37132 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
37133
37134         * reflection.h: add subtypes field to TypeBuilder.
37135         * reflection.c: encode constants for literal fields.
37136         Handle subtypes. Fix user string token (and add a zero byte)
37137         at the end.
37138         
37139 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
37140
37141         * class.c (mono_class_init): bug fix: assign slot numbers for
37142         abstract methods.
37143
37144 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
37145
37146         * reflection.c: don't try to output a code RVA for abstract methods.
37147         Small fixes for method header format. Output parameter info to the
37148         ParamDef table. Save method overriding info to MethodImpl table.
37149         Fix property support. Allow typedef.extends to be a type in the
37150         building assembly.
37151         * verify.c: fix off-by-one error.
37152
37153 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
37154
37155         * class.c: fix mono_class_from_mono_type () for szarray types.
37156         Remove unused cache check in mono_class_from_type_spec().
37157         * icall.c: *type_from_name () functions handle simple arrays and byref.
37158         * reflection.c: handle byref and szarray types. Handle methods without
37159         body (gets P/Invoke compilation working). Handle types and fields in
37160         get_token ().
37161         * reflection.h: add rank to MonoTypeInfo.
37162
37163 2002-01-10  Dick Porter  <dick@ximian.com>
37164
37165         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
37166         internal calls
37167
37168 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
37169
37170         * icall.c: initialize class in type_from_handle ().
37171         Loop also in parent classes for get_method ().
37172         * reflection.c: properly encode class and valuetype types.
37173         Start on encoding TypeBuilder types. Handle fieldrefs.
37174         Use correct length when registering a user string.
37175         Handle ConstructorBuilder and MonoMethod in get_token ().
37176         Make mono_type_get_object () aware of cached types.
37177         * object.c: back out change to mono_string_new ().
37178
37179 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
37180         * object.c: mono_string_new should return a NULL when the string 
37181         passed in is NULL -- not try to deference it.
37182         
37183 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
37184
37185         * icall.c: hack to make IsSubType work for TypeBuilders.
37186         * reflection.c: emit constructors before methods.
37187         Retrieve param names in mono_param_get_objects().
37188
37189 2002/01/05  Nick Drochak  <ndrochak@gol.com>
37190
37191         * Makefile.am: fix list of headers and sources so automake 1.5
37192         doesn't complain. Removed \# at end of list.
37193
37194 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
37195
37196         * reflection.c: get token for a method ref. Set return type of
37197         constructor to void.
37198         * loader.c: debug message.
37199         * class.c: typo fix.
37200
37201 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
37202
37203         * icall.c: fix array init with rank > 1. FindMembers
37204         loops in parent class as well.
37205         * image.c: do not insert nested types in name cache.
37206         * reflection.c: warning fix.
37207         * reflection.h: add override method (for interface impl).
37208
37209 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
37210
37211         * metadata.c: fix customattr decoding.
37212
37213 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
37214
37215         * rawbuffer.cs: Added native Win32 implementation, avoids using
37216         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
37217
37218 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
37219
37220         * class.c: make the low-level routines handle the cache.
37221
37222 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
37223
37224         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
37225
37226 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
37227
37228         * class.c: fix mono_array_element_size() for objects.
37229         * class.h, class.c: add properties to MonoClass and load them
37230         at init time.
37231         * icall.c: check with isinst() when assigning a value to an array
37232         instead of requiring the classes to match exactly.
37233         Implemented icall for System.Type::GetType().
37234         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
37235         enums. Handle bindingflags when looking for methods and fields.
37236         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
37237         and mono_metadata_methods_from_property().
37238         * reflection.h, reflection.c: added structures for propreties,
37239         parameters and enums. Implemented mono_property_get_object() and
37240         mono_param_get_objects().
37241
37242 2001-12-18  Dick Porter  <dick@ximian.com>
37243
37244         * file-io.c: Use mono_string_to_utf16() instead of
37245         mono_string_chars()
37246
37247         * object.c: Added mono_string_to_utf16(), which copies the non
37248         NULL-terminated MonoString into a new double-null-terminated
37249         buffer.
37250
37251 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
37252
37253         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
37254
37255 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
37256
37257         * file-io.c: raise exceptions if handle is invalid.
37258
37259 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
37260
37261         * assembly.c: yet another check for mscorlib.
37262         * class.c, class.h: load nesting info for classes.
37263         * icall.c: many new functions to support the Reflection classes.
37264         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
37265         * reflection.h, reflection.c: mono_image_create_token(),
37266         mono_assembly_get_object(), mono_type_get_object(),
37267         mono_method_get_object(), mono_field_get_object(): methods to return
37268         objects that parallel the C representation of assemblies, types,
37269         methods, fields.
37270
37271 2001-12-11  Dick Porter  <dick@ximian.com>
37272
37273         * icall.c:
37274         * file-io.c: Internal calls for file IO.
37275
37276 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
37277
37278         * tabledefs.h: missing FileAttributes.
37279         * verify.h, verify.c: use is_valid_string () to simplify and check for
37280         valid strings more correctly. Fix warnings and speeling.
37281         Check more tables: Filed, File, ModuleRef, StandAloneSig.
37282         Check code: branches, maxstack, method calls.
37283
37284 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
37285
37286         * object.c (mono_object_allocate): removed static, so that the jit
37287         can allocate value types.
37288
37289         * icall.c (ves_icall_System_DateTime_GetNow): impl.
37290
37291 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37292
37293         * class.c: init enum types right away and register the
37294         token->MonoClass map in mono_class_create_from_typedef ().
37295         * verify.h, verify.c: first cut of the verifier.
37296         * pedump.c: add --verify switch to verify metadata tables.
37297         * tabledefs.h: add some missing enums.
37298
37299 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
37300
37301         * class.c (mono_install_runtime_class_init): impl.
37302         (mono_class_init): renamed mono_class_metadata_init to
37303         mono_class_init, also removed the metadata_inited flag
37304
37305         * object.c (mono_object_isinst): use faster algorithm
37306
37307 2001-11-30  Radek Doulik  <rodo@ximian.com>
37308
37309         * mono-endian.h: reverted last change
37310         added function prototypes
37311
37312         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
37313         add mono-endian.c back
37314
37315         * mono-endian.c: returned back, as Paolo pointed out, it's needed
37316         for unaligned access, I've mistaked it with endianess. I am
37317         sorry.
37318         (mono_read16): fix reverted endianess
37319         (mono_read64): ditto
37320         (mono_read32): ditto
37321
37322 2001-11-30  Dick Porter  <dick@ximian.com>
37323
37324         * exception.c: Implement mono_exception_from_name()
37325
37326 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
37327
37328         * metadata.h, metadata.c: remove params_size and locals_size and their
37329         calculation from the metadata code: they are only usefult to the
37330         interp.
37331
37332 2001-11-29  Radek Doulik  <rodo@ximian.com>
37333
37334         * object.c (mono_ldstr): swap bytes here, it's probably not the
37335         best place, but works for me now, I'll redo it once I know mono
37336         better, also note that I add PROT_WRITE and don't reset back, also
37337         note that it's only affects big endians, so x86 should be OK
37338
37339         * mono-endian.h (read16): use just glib macros for both endians
37340
37341         * mono-endian.c: removed as glib macros are used in in
37342         mono-endian.h so we don't need to care about endianess for read
37343         macros as glib does that for us already
37344
37345 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
37346
37347         * class.h, class.h: take minimum alignment into consideration so
37348         that the fields of a class remain aligned also when in an array.
37349
37350 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37351
37352         * loader.h, loader.c: add mono_method_get_param_names().
37353         * class.c: 0-init class fields.
37354
37355 2001-11-26  Dick Porter  <dick@ximian.com>
37356
37357         * icall.c:
37358         * threads-types.h:
37359         * threads.c: New file that handles System.Threading on all platforms
37360
37361         * object.c: 
37362         * object.h: Remove the synchronisation struct from MonoObject,
37363         replace it with a pointer that gets initialised on demand
37364
37365         * Makefile.am: Replace all the system-specific threading code with
37366         a single file that uses the new wrapper library
37367
37368 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
37369
37370         * class.c, class.h: add mono_install_trampoline() so that the runtime
37371         can register a function to create a trampoline: removes the ugly
37372         requirement that a runtime needed to export arch_create_jit_trampoline.
37373         * object.h, object.c: added mono_install_handler() so that the runtime
37374         can install an handler for exceptions generated in C code (with
37375         mono_raise_exception()). Added C struct for System.Delegate.
37376         * pedump.c: removed arch_create_jit_trampoline.
37377         * reflection.c: some cleanups to allow registering user strings and
37378         later getting a token for methodrefs and fieldrefs before the assembly
37379         is built.
37380         * row-indexes.h: updates and fixes from the new ECMA specs.
37381
37382 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
37383
37384         * class.h, class.c: add enum_basetype field to MonoClass.
37385         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
37386         to get index in the constant table reated to a field, param or
37387         property.
37388         * reflection.h, reflection.c: handle constructors. Set public-key and
37389         version number of the built assembly to 0.
37390         * row-indexes.h: update from new ECMA spec.
37391
37392 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
37393
37394         * class.h, class.c: add a max_interface_id to MonoClass.
37395         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
37396         since it's used to do that. Added mono_type_type_from_obj().
37397         Make GetType() return NULL instead of segfaulting if the type was not
37398         found. Handle simple arrays in assQualifiedName.
37399         * object.h: add a struct to represent an Exception.
37400         * reflection.c: output call convention in method signature.
37401         Add code to support P/Invoke methods and fixed offsets for fields.
37402
37403 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
37404
37405         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
37406         the value.
37407         * icall.c: use mono_array_addr instead of array->vector: fixes the
37408         reflection image writing.
37409         * reflection.c: init call convention byte to 0 in method signature.
37410         Encode the property signature. Don't output property-related methods
37411         twice. Really process the properties for a type (don't cast a field to
37412         a property, my mom always told me that).
37413         Fix 64 bit issues in pointer alignment in a different and more
37414         readable way.
37415
37416 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
37417
37418         * loader.h: Removed type class from MonoDefaults, added monotype
37419
37420         * loader.c: Loaded MonoType, removed loading of Type
37421
37422         * icall.c (my_mono_new_object): Now returns a System.MonoType,
37423         and fills in System.Type._impl with a RuntimeTypeHandle rather
37424         than the actual MonoClass *
37425
37426         (ves_icall_type_from_handle): change from type_class to
37427         monotype_class
37428
37429         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
37430         implemented
37431
37432         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
37433         implemented
37434
37435         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
37436
37437         (ves_icall_System_Reflection_Assembly_GetType): implemented
37438
37439         (ves_icall_System_MonoType_assQualifiedName): implemented
37440
37441         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
37442
37443 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
37444
37445         * assembly.c (mono_assembly_open): Implement a cache for the
37446         assemblies. 
37447
37448         (mono_assembly_close): only destroy the assembly when the last
37449         reference is gone.
37450         
37451 2001-11-09  Dick Porter  <dick@ximian.com>
37452
37453         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
37454
37455 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
37456
37457         * class.c (mono_class_metadata_init): bug fix: compute the right slot
37458
37459 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
37460
37461         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
37462         from Martin Weindel.
37463         * object.h: add mono_string_chars ().
37464
37465 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
37466
37467         * reflection.c (build_compressed_metadata): Eliminates warnings
37468         and uses 64-bit clean code.
37469
37470         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
37471         (mono_type_equal): Change signature to eliminate warnings.
37472
37473 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37474
37475         * icall.c, loader.c: remove the internalcall array constructors.
37476         Changes to match the new MonoArray structure.
37477         * object.h, object.c: an array object doesn't allocate an extra
37478         vector. Add mono_array_new_full () to create jagged arrays easily.
37479
37480 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
37481
37482         * metadata.h, metadata.c: add mono_metadata_field_info () to
37483         retreive all the info about a field from vairous tables.
37484         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
37485         * class.h, class.c: augment MonoClassField with more info.
37486         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
37487         policy and load a field's RVA if needed.
37488
37489 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
37490
37491         * class.c (mono_class_metadata_init): create a trampoline for all
37492         virtual functions instead of actually compiling them.
37493
37494 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
37495
37496         * class.h, class.c: include name in MonoClassField.
37497         * class.c: fix fundamental type of System.Object and System.String.
37498         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
37499         tokens in ldtoken.
37500         * icall.c: remove internalcalls for the Reflection stuff that is now
37501         done in C# code.
37502         * loader.c: mono_field_from_memberref () implementation.
37503         * mono-endian.c: thinko (s/struct/union/g).
37504         * object.c, object.h: make the mono_string_* prototypes actually use
37505         MonoString instead of MonoObject.
37506         * reflection.c, reflection.h: updates for changes in the reflection
37507         code in corlib: we use C structures that map to the actual C# classes.
37508         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
37509         fat method header if needed and use the info from the ILGenerator for
37510         methods. Handle fields in types. Misc fixes.
37511
37512 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
37513
37514         * class.c (mono_class_metadata_init): bug fix: always allocate
37515         space for static class data
37516
37517 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
37518
37519         * class.c (mono_compute_relative_numbering): use relative
37520         numbering to support fast runtime type checks.
37521
37522 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
37523
37524         * class.c (mono_class_create_from_typeref): added debugging output
37525         to print class name when MonoDummy is returned instead of real class
37526
37527 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
37528
37529         * class.c (mono_class_metadata_init): interface offset table now
37530         contains pointers into the vtable - this is more efficient for the jit
37531
37532 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
37533
37534         * class.c (mono_class_metadata_init): use a temporary vtable (the
37535         old algorithm only worked for the interpreter, but not for the jit)
37536
37537 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
37538
37539         * loader.c (method_from_memberref): use mono_class_get to get the
37540         class of an array instead of using System.Array directly.
37541         (mono_get_method): also add MEMBERREF methods to the method cache
37542         which usefull for arrays.
37543
37544 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
37545
37546         * pedump.c (arch_compile_method): added to compute vtable entry
37547
37548         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
37549         number of interfaces.
37550         
37551         * class.h: merged MonoArrayClass into MonoClass
37552
37553         * class.c (mono_class_create_from_typedef): compute the vtable size and
37554         allocate space to include the vtable inside MonoClass
37555         (mono_class_metadata_init): initialize the vtable
37556
37557 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
37558
37559         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
37560         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
37561         * image.c: endian fixes by Laurent Rioux.
37562         * object.h, object.c: rename MonoStringObject to MonoString and
37563         MonoArrayObject to MonoArray. Change some function names to conform to
37564         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
37565         guint16* as first argument, so don't use char*.
37566         Provide macros to do the interesting things on arrays in a portable way.
37567         * threads-pthread.c: updates for the API changes and #include <sched.h>
37568         (required for sched_yield()).
37569         * icall.c: updates for the API changes above.
37570         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
37571         platforms that need them.
37572
37573 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
37574
37575         * class.c: set the correct type for all the fundamental
37576         type when loading the class.
37577
37578 2001-10-05  Dick Porter  <dick@ximian.com>
37579
37580         * threads-pthread.c (pthread_mutex_timedlock): Simple
37581         compatibility version for C libraries that lack this call.
37582
37583 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37584
37585         * class.c: MonoTypes stored in MonoClass are stored as
37586         fundamental MonoTypes when the class represents a
37587         fundamental type (System.Int32, ...).
37588         The TypeHandle return by ldtoken is a MonoType*.
37589         * icall.c: ves_icall_get_data_chunk () write out all the
37590         PE/COFF stuff. Implement ves_icall_define_method (),
37591         ves_icall_set_method_body (), ves_icall_type_from_handle ().
37592         * image.c: properly skip unknown streams.
37593         * loader.h, loader.c: add type_class to mono_defaults.
37594         * metadata.c, metadata.h: export compute_size () as
37595         mono_metadata_compute_size () with a better interface.
37596         Typo and C&P fixes.
37597         * pedump.c: don't try to print the entry point RVA if there is no entry point.
37598         * reflection.c, reflection.h: many cleanups, fixes, output method
37599         signatures and headers, typedef and typeref info, compress the metadata
37600         tables, output all the heap streams, cli header etc.
37601         * row-indexes.h: typo fixes.
37602
37603 2001-10-04  Dick Porter  <dick@ximian.com>
37604
37605         * object.h: Add a synchronisation mutex struct to MonoObject
37606
37607         * object.c (mono_new_object): Initialise the object
37608         synchronisation mutexes
37609
37610         * icall.c: System.Threading.Monitor internal calls
37611         
37612         * threads-pthread.h:
37613         * threads-pthread.c: System.Threading.Monitor internal calls
37614
37615         * threads-types.h: New file, includes the system-specific thread
37616         structures
37617         
37618         * threads-pthread-types.h:
37619         * threads-pthread-types.c: New files, handle pthread-specific
37620         synchronisation types
37621
37622         * threads-dummy-types.h: 
37623         * threads-dummy-types.c: New files of dummy support for
37624         thread-specific types
37625
37626         * metadata.c:
37627         * image.c:
37628         * pedump.c: include mono-endian.h not endian.h
37629         
37630         * Makefile.am: More threads files.
37631         Name mono-endian.h not endian.h
37632
37633 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
37634
37635         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
37636         stuff and implement a few more bits.
37637         * icall.c: a field needs to be dereferenced twice. Do not use the same
37638         name for two variables in the same scope.
37639         * image.c, image.h: cleanups.
37640
37641 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
37642
37643         * class.c (mono_class_metadata_init): bug fix: compute the right size
37644
37645 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
37646
37647         * icall.c: implemented some of the Reflection internalcalls.
37648         * image.c, image.h: start writing out the PE/COFF image.
37649         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
37650         that does the reverse than decode_blob_size ().
37651         * object.c: use mono_metadata_encode_value (). Move here
37652         temporary implementation of mono_string_to_utf8 ().
37653         * rawbuffer.c: make malloc_map static.
37654
37655 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37656
37657         * metadata.c: fix type comparison for arrays.
37658         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
37659         Added a couple of new classes to monodefaults.
37660         * icall.c: added a couple of Reflection-related internalcalls.
37661         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
37662         Added a byval_arg MonoType to MonoClass.
37663
37664 2001-09-28  Dick Porter  <dick@ximian.com>
37665
37666         * icall.c:
37667         * threads-pthread.h: 
37668         * threads-pthread.c: Implemented internal calls for
37669         LocalDataStoreSlot operations.  Applied mutexes around all shared
37670         data.  Reworked the thread creation and Start() operations to
37671         avoid a race condition.
37672         
37673         * threads-dummy.h:
37674         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
37675
37676 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
37677
37678         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
37679
37680 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
37681
37682         * class.c, loader.c: warn and return NULL instead of erroring out.
37683         * icall.c: added System.AppDomain::getCurDomain().
37684         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
37685
37686 2001-09-25  Dick Porter  <dick@ximian.com>
37687
37688         * threads-pthread.h:
37689         * threads-pthread.c: Implemented timed thread joining and added
37690         System.Threading.Thread::Join_internal internal call
37691
37692         * icall.c: Added System.Threading.Thread::Join_internal internal call
37693
37694         * threads-dummy.h:
37695         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
37696
37697 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
37698
37699         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
37700         mono_string_intern () to implement the semantics of the ldstr opcode
37701         and the interning of System.Strings.
37702         * icall.c: provide hooks to make String::IsIntern and String::Intern
37703         internalcalls.
37704
37705 2001-09-23  Dick Porter  <dick@ximian.com>
37706
37707         * threads-dummy.c: 
37708         * threads-dummy.h: New files of dummy threading routines
37709
37710         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
37711         support code based on system specifics
37712
37713         Rename PTHREAD_LIBS to THREAD_LIBS
37714         
37715 2001-09-23  Dick Porter  <dick@ximian.com>
37716
37717         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
37718         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
37719         internal calls.
37720         (mono_thread_init): Set up a Thread object instance to return when
37721         the main thread calls Thread.CurrentThread
37722         (mono_thread_cleanup): Wait for all subthreads to exit
37723
37724         * icall.c: New internal calls for System.Threading.Thread::Sleep
37725         (including Schedule) and CurrentThread
37726
37727         * threads.h: New file, to insulate thread-specific stuff from the
37728         rest of the code
37729
37730 2001-09-21  Dick Porter  <dick@ximian.com>
37731
37732         * threads-pthread.h: 
37733         * threads-pthread.c: New file, for handling pthreads-style
37734         threading support.  Start() now starts a new thread and executes
37735         the ThreadStart delegate instance.
37736
37737         * icall.c: Added the internalcall for
37738         System.Threading.Thread::Start_internal
37739
37740         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
37741
37742 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
37743
37744         * loader.c: work around the different signatures for delegates
37745         constructors csc generates in compiled code vs the ones compiled in mscorlib.
37746
37747 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
37748
37749         * class.h, class.c: add mono_class_get_field_from_name ().
37750         * *: Fix C comments and other ANSI C issues.
37751
37752 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
37753
37754         * endian.h, assembly.c: fix some endianness issues.
37755
37756 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
37757
37758         * loader.h, load.c: add delegate_class to mono_defaults.
37759         Handle runtime provided methods in mono_get_method ().
37760
37761 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
37762
37763         * loader.c (mono_get_method): use pinvoke for internal call
37764
37765         * icall.c: use pinvoke for internal call
37766
37767         * loader.c (method_from_memberref): set the method name
37768
37769 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
37770
37771         * metadata.c: help the compiler generate better code for
37772         mono_class_from_mono_type ().
37773
37774 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
37775
37776         * class.c (mono_class_metadata_init): delayed computing of the
37777         class size to mono_class_metadata_init ()
37778
37779 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
37780
37781         * class.c, class.h: add an interfaces member to MonoClass.
37782         * image.c, image.h: add assembly_name field to MonoImage
37783         from the assembly table.
37784         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
37785
37786 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
37787
37788         * class.c: Handle Array in mono_class_from_mono_type ().
37789         * metadata.c, pedump.c: some endian fixes.
37790
37791 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
37792
37793         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
37794         * metadata.c: fix small problem introduced with the latest commit.
37795
37796 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
37797
37798         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
37799         We don't need a MonoMetadata pointer anymore to compare signatures in
37800         mono_metadata_signature_equal (), update callers.
37801         Reduced memory usage an number of allocations for MonoMethodHeader and
37802         MonoMethodSignature.
37803
37804 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
37805
37806         * metadata.c: added compare for szarray.
37807
37808 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
37809
37810         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
37811         and add a couple more types to it and mono_defaults. Give an hint on
37812         classes that need implementing in our corlib and are referenced
37813         in mscorlib.
37814
37815 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
37816
37817         * class.h, class.c: keep track if a class is also an Enum.
37818         * loader.c: Implement a couple more types for use in libffi
37819         marshalling. Gives better diagnostics when failing to dlopen
37820         a library. Set method->klass for P/Invoke methods, too.
37821
37822 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
37823
37824         * class.c, class.h: add a MonoType this_arg to MonoClass that
37825         represents a pointer to an object of the class' type that
37826         can be used by the interpreter and later the type cache.
37827         Add best guess alignment info for valuetype objects.
37828
37829 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
37830
37831         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
37832         into MonoType: one less level of indirection and allocation and
37833         simplifies quite a bit of code. Added cache for MonoTypes that are
37834         used frequently, so that we don't need to allocate them all the time.
37835
37836 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
37837
37838         * class.c (mono_class_create_from_typedef): System.Enum is also a
37839         value type, although it does not derive from System.ValueType
37840         (maybe a bug in the ms compiler?)
37841
37842         * metadata.c (mono_type_size): return the right size for value types
37843
37844         * loader.c (mono_get_method): only initialize method header if not abstract
37845
37846         * class.c (mono_class_from_mono_type): use mono_default values. 
37847
37848 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
37849
37850         * *: use MonoClass pointers instead of <type_tokens>
37851         
37852         * class.h: new flag: metadata_inited.
37853
37854         * class.c (mono_class_metadata_init): impl.
37855         (mono_class_instance_size): impl.
37856         (mono_class_data_size): impl.
37857
37858 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37859
37860         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
37861         MonoClass now has the name and name_space fields. 
37862         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
37863         mono_get_method () takes and optional MonoClass as argument.
37864         Removed mono_typedef_from_name() and added mono_class_token_from_name()
37865         instead that takes advantage of a map from class names to typedef
37866         tokens in MonoImage.
37867
37868 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
37869
37870         * metadata.c: zero is not a valid alignment boundary.
37871         Merge MONO_TYPE_VOID in default decoding code.
37872
37873 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
37874
37875         * image.h: merged MonoMetadata into MonoImage
37876
37877         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
37878         identify the type of elements.
37879
37880 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
37881
37882         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
37883         * cil-coff.h: split MonoMSDOSHeader and add size info.
37884         * image.c: add some consistency checks.
37885         * metadata.c: fix row size computation: one programmer
37886         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
37887         add explanation for the locator routine.
37888         Fix decoding of size in method header.
37889         
37890 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
37891
37892         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
37893         (g_concat_dir_and_file): Bring g_concat_dir_and_file
37894         function from gnome-libs.  This uses the right path separator
37895         based on the OS, and also works around a bug in some systems where
37896         a double slash is not allowed. 
37897         (default_assembly_name_resolver): Use g_concat_dir_and_file
37898         (mono_assembly_open): ditto.
37899
37900 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
37901
37902         * metadata.c (mono_metadata_signature_equal): impl.
37903
37904         * *: void is now a realy MonoType (instead of using NULL)
37905         
37906         * metadata.c (do_mono_metadata_parse_type): use
37907         mono_metadata_parse_type to parse void value.
37908
37909 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
37910
37911         * metadata.c, metadata.h: in the signature and method header store
37912         only the space required for holding the loca vars and incoming arguments.
37913
37914 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
37915
37916         * metadata.c (do_mono_metadata_parse_type): treat void like any
37917         other type (instead of assigning NULL);
37918
37919 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
37920
37921         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
37922
37923 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
37924
37925         * image.c (do_mono_image_open): added a cache for arrays.
37926
37927 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
37928
37929         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
37930         decode a single column from a row in a metadata table and changes
37931         to take advantage of it in the typedef locator (gives a nice speed up).
37932         Store offset info for function params.
37933
37934 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
37935
37936         * image.h (MONO_IMAGE_IS_CORLIB): removed 
37937
37938 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
37939
37940         * assembly.c: how could mono_assembly_close () had ever worked?
37941         * metadata.c, metadata.h: provide offset info for local vars.
37942         Implement mono_type_size () to take care of alignment as well
37943         as size (it was mono_field_type_size in cli/class.c before).
37944
37945 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
37946
37947         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
37948
37949         * assembly.h (CORLIB_NAME): set to corlib.dll
37950
37951         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
37952
37953 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
37954
37955         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
37956         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
37957         tokentype.h: massive namespace cleanup.
37958
37959 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
37960
37961         * metadata.h, metadata.c: decode exception clauses when parsing method header.
37962
37963 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
37964
37965         * metadata.c (mono_metadata_free_type): added check for type !=
37966         NULL (void) before calling mono_metadata_free_type()
37967
37968 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
37969
37970         * metadata.h, row_indexes.h: added header with enumerations to use
37971         to index in the columns from tables in metadata and to decode coded
37972         tokens: we should start using this instead of embedding magic numbers
37973         all over the code.
37974
37975 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
37976
37977         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
37978         Move metadata_t info from cli_image_info_t to MonoImage, where
37979         it's easily accessible. Changed all the uses accordingly.
37980         Added the method and class caches to MonoImage.
37981         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
37982         and mono_metadata_decode_value () signature to be more consistent
37983         with the other parse functions (and simplify code). Taken advantage
37984         of zero-length array allocation with GCC. Removed reduntant (and
37985         wrong) MonoFieldType struct and use MonoParam instead. Changed
37986         mono_metadata_parse_field_type () to use common code for parsing.
37987         Added mono_metadata_typedef_from_field () and
37988         mono_metadata_typedef_from_method () to lookup a typedef index from a
37989         field or method token.
37990         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
37991
37992 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
37993
37994         * metadata.c (mono_metadata_parse_field_type): Implement. 
37995         (do_mono_metadata_parse_type): Split engine from
37996         mono_metadata_parse_type, so that we can create smaller structures
37997         for things that just have one pointer to the MonoType (look at
37998         the MonoFieldType)
37999
38000 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
38001
38002         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
38003         as Jan Gray found out, it is incorrect. 
38004
38005 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
38006
38007         * assembly.c: Implement asssembly loading.  This loads an image
38008         and loads all the referenced assemblies.  Come to think of it, we
38009         could always do lazy loading of the assemblies. 
38010
38011         * image.c (mono_image_open): Keep loaded images in a hashtable.
38012
38013         * image.h (MonoImage): Add reference count.
38014
38015 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
38016
38017         * assembly.c (mono_assembly_open): Keep track of the file name in
38018         case the assembly has no ASSEMBLY table.
38019
38020         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
38021         from get.c here.
38022
38023 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
38024
38025         * metadata.c, metadata.h: decode local vars in method header
38026         parse function. Change callers accordingly.
38027
38028 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
38029
38030         * metadata.h, cil-coff.h: protect against multiple inclusion.
38031         Added some new structures to hold information decoded from metadata:
38032         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
38033         and relevant decoding/free functions.
38034         * metadata.c: implement decoding functions. Add warning for out of bounds
38035         index in mono_metadata_locate(). Implement mono_get_method () to retreive
38036         all the info about a method signature and invocation. Remove check on
38037         uninitialized local var in parse_mh() and fix memory leak.
38038
38039 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
38040
38041         * metadata.h: More macros.
38042
38043         * tokentype.h: New file.
38044
38045 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
38046
38047         * assembly.c: added a consistency check and initialize
38048         some structures with g_new0().
38049         * metadata.c: fixed a couple more bugs in table size computation
38050         and add other checks for out-of bound access to metadata.
38051
38052 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
38053
38054         * metatada.c: fix bugs computing table sizes. Spew a
38055         warning when index in string heap is out of bounds.
38056
38057 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
38058
38059         * metadata.h: Add a couple of macros to manipulate tokens. 
38060
38061 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
38062
38063         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
38064         cli_section_tables).
38065
38066 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
38067
38068         * metadata.c (mono_metadata_user_string): New function, provides
38069         access to the UserString heap. 
38070
38071 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
38072
38073         * metadata.c: Add inline documentation.
38074
38075 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
38076
38077         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
38078         files. 
38079
38080 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
38081
38082         * typeattr.h: New file, TypeAttribute flags. 
38083
38084 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
38085
38086         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
38087         mono_assembly_ensure_section): Section loading code.
38088         (load_section_tables): Load the sections.
38089
38090         * mono/metadata/metadata.c (mono_metadata_locate_token,
38091         mono_metadata_locate): Functions to locate the information
38092         definition given a token or a table and an index.
38093         (mono_metadata_compute_table_bases): New.
38094         (compute_size): New function to compute the sizes of the various
38095         tables.
38096
38097         * mono/metadata/metadata.h: Finish listing the different index
38098         types. 
38099
38100         * mono/metadata/pedump.c: Improve to dump new information.
38101
38102 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
38103
38104         * mono/metadata/metadata.c: Entered all the tables matching
38105         Beta2. 
38106
38107         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2